PrivilegeServiceSMOImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. package com.java110.front.smo.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.java110.core.component.BaseComponentSMO;
  5. import com.java110.core.context.IPageData;
  6. import com.java110.core.smo.IGetCommunityStoreInfoSMO;
  7. import com.java110.front.smo.IPrivilegeServiceSMO;
  8. import com.java110.utils.constant.ServiceConstant;
  9. import com.java110.utils.util.Assert;
  10. import com.java110.utils.util.StringUtil;
  11. import com.java110.vo.ResultVo;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.http.HttpMethod;
  14. import org.springframework.http.HttpStatus;
  15. import org.springframework.http.ResponseEntity;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.web.client.RestTemplate;
  18. @Service("privilegeServiceSMOImpl")
  19. public class PrivilegeServiceSMOImpl extends BaseComponentSMO implements IPrivilegeServiceSMO {
  20. @Autowired
  21. private RestTemplate restTemplate;
  22. @Autowired
  23. private IGetCommunityStoreInfoSMO getCommunityStoreInfoSMOImpl;
  24. /**
  25. * 查询 权限组
  26. *
  27. * @param pd
  28. * @return
  29. */
  30. @Override
  31. public ResponseEntity<String> listPrivilegeGroup(IPageData pd) {
  32. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  33. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  34. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  35. return storeInfo;
  36. }
  37. // 商户返回信息
  38. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  39. String storeId = storeInfoObj.getString("storeId");
  40. String storeTypeCd = storeInfoObj.getString("storeTypeCd");
  41. //根据商户ID查询 权限组信息
  42. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, "",
  43. ServiceConstant.SERVICE_API_URL + "/api/query.store.privilegeGroup?storeId=" + storeId + "&storeTypeCd=" + storeTypeCd, HttpMethod.GET);
  44. if (privilegeGroup.getStatusCode() != HttpStatus.OK) {
  45. return privilegeGroup;
  46. }
  47. JSONObject privilegeGroupObj = JSONObject.parseObject(privilegeGroup.getBody().toString());
  48. Assert.jsonObjectHaveKey(privilegeGroupObj, "privilegeGroups", "查询菜单未返回privilegeGroups节点");
  49. JSONArray privilegeGroups = privilegeGroupObj.getJSONArray("privilegeGroups");
  50. return new ResponseEntity<String>(privilegeGroups.toJSONString(), HttpStatus.OK);
  51. }
  52. /**
  53. * 查询权限
  54. *
  55. * @param pd
  56. * @return
  57. */
  58. @Override
  59. public ResponseEntity<String> loadListPrivilege(IPageData pd) {
  60. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  61. Assert.jsonObjectHaveKey(privilegeInfoObj, "pgId", "请求报文中未包含pgId 节点");
  62. String pgId = privilegeInfoObj.getString("pgId");
  63. String name = privilegeInfoObj.getString("name");
  64. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, "",
  65. ServiceConstant.SERVICE_API_URL + "/api/query.privilege.byPgId?pgId=" + pgId + "&name=" + name, HttpMethod.GET);
  66. if (privilegeGroup.getStatusCode() != HttpStatus.OK) {
  67. return privilegeGroup;
  68. }
  69. JSONObject privilegeObj = JSONObject.parseObject(privilegeGroup.getBody().toString());
  70. Assert.jsonObjectHaveKey(privilegeObj, "privileges", "查询菜单未返回privileges节点");
  71. JSONArray privileges = privilegeObj.getJSONArray("privileges");
  72. return new ResponseEntity<String>(privileges.toJSONString(), HttpStatus.OK);
  73. }
  74. /**
  75. * 保存权限组
  76. *
  77. * @param pd
  78. * @return
  79. */
  80. @Override
  81. public ResponseEntity<String> savePrivilegeGroup(IPageData pd) {
  82. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  83. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  84. Assert.jsonObjectHaveKey(privilegeInfoObj, "name", "请求报文中未包含权限组名称 节点");
  85. Assert.jsonObjectHaveKey(privilegeInfoObj, "description", "请求报文中未包含权限组描述 节点");
  86. Assert.hasLength(privilegeInfoObj.getString("name"), "请求报文中权限组名称不能为空");
  87. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  88. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  89. return storeInfo;
  90. }
  91. // 商户返回信息
  92. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  93. String storeId = storeInfoObj.getString("storeId");
  94. String storeTypeCd = storeInfoObj.getString("storeTypeCd");
  95. privilegeInfoObj.put("storeId", storeId);
  96. privilegeInfoObj.put("storeTypeCd", storeTypeCd);
  97. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, privilegeInfoObj.toJSONString(),
  98. ServiceConstant.SERVICE_API_URL + "/api/save.privilegeGroup.info", HttpMethod.POST);
  99. return privilegeGroup;
  100. }
  101. /**
  102. * 保存权限组
  103. *
  104. * @param pd
  105. * @return
  106. */
  107. @Override
  108. public ResponseEntity<String> editPrivilegeGroup(IPageData pd) {
  109. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  110. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  111. Assert.jsonObjectHaveKey(privilegeInfoObj, "name", "请求报文中未包含权限组名称 节点");
  112. Assert.hasKeyAndValue(privilegeInfoObj, "pgId", "请求报文中未包含权限组ID 节点");
  113. Assert.jsonObjectHaveKey(privilegeInfoObj, "description", "请求报文中未包含权限组描述 节点");
  114. Assert.hasLength(privilegeInfoObj.getString("name"), "请求报文中权限组名称不能为空");
  115. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  116. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  117. return storeInfo;
  118. }
  119. // 商户返回信息
  120. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  121. String storeId = storeInfoObj.getString("storeId");
  122. String storeTypeCd = storeInfoObj.getString("storeTypeCd");
  123. privilegeInfoObj.put("storeId", storeId);
  124. privilegeInfoObj.put("storeTypeCd", storeTypeCd);
  125. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, privilegeInfoObj.toJSONString(),
  126. ServiceConstant.SERVICE_API_URL + "/api/edit.privilegeGroup.info", HttpMethod.POST);
  127. return privilegeGroup;
  128. }
  129. /**
  130. * 删除权限组
  131. *
  132. * @param pd
  133. * @return
  134. */
  135. @Override
  136. public ResponseEntity<String> deletePrivilegeGroup(IPageData pd) {
  137. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  138. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  139. Assert.jsonObjectHaveKey(privilegeInfoObj, "pgId", "请求报文中未包含权限组ID 节点");
  140. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  141. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  142. return storeInfo;
  143. }
  144. // 商户返回信息
  145. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  146. String storeId = storeInfoObj.getString("storeId");
  147. String storeTypeCd = storeInfoObj.getString("storeTypeCd");
  148. privilegeInfoObj.put("storeId", storeId);
  149. privilegeInfoObj.put("storeTypeCd", storeTypeCd);
  150. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, privilegeInfoObj.toJSONString(),
  151. ServiceConstant.SERVICE_API_URL + "/api/delete.privilegeGroup.info", HttpMethod.POST);
  152. return privilegeGroup;
  153. }
  154. @Override
  155. public ResponseEntity<String> listNoAddPrivilege(IPageData pd) {
  156. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  157. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  158. Assert.jsonObjectHaveKey(privilegeInfoObj, "pgId", "请求报文中未包含权限组ID 节点");
  159. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  160. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  161. return storeInfo;
  162. }
  163. // 商户返回信息
  164. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  165. String storeId = storeInfoObj.getString("storeId");
  166. String storeTypeCd = storeInfoObj.getString("storeTypeCd");
  167. String pgId = privilegeInfoObj.getString("pgId");
  168. String pName = privilegeInfoObj.getString("pName");
  169. ResponseEntity<String> privileges = super.callCenterService(restTemplate, pd, "",
  170. ServiceConstant.SERVICE_API_URL + "/api/query.privilegeGroup.noAddPrivilege?storeId=" + storeId + "&storeTypeCd=" + storeTypeCd + "&pgId=" + pgId + "&pName=" + pName, HttpMethod.GET);
  171. if (privileges.getStatusCode() != HttpStatus.OK) {
  172. return privileges;
  173. }
  174. JSONObject resultObj = JSONObject.parseObject(privileges.getBody().toString());
  175. JSONArray privilegeArrays = resultObj.getJSONArray("privileges");
  176. JSONObject privilegeObj = null;
  177. JSONArray tmpPrivilegeArrays = new JSONArray();
  178. for (int privilegeIndex = 0; privilegeIndex < privilegeArrays.size(); privilegeIndex++) {
  179. privilegeObj = privilegeArrays.getJSONObject(privilegeIndex);
  180. hasSameData(privilegeObj, tmpPrivilegeArrays);
  181. }
  182. return new ResponseEntity<String>(tmpPrivilegeArrays.toJSONString(), HttpStatus.OK);
  183. }
  184. private void hasSameData(JSONObject privilegeObj, JSONArray tmpPrivilegeArrays) {
  185. JSONObject tmpPrivilegeObj = null;
  186. for (int tmpPrivilegeIndex = 0; tmpPrivilegeIndex < tmpPrivilegeArrays.size(); tmpPrivilegeIndex++) {
  187. tmpPrivilegeObj = tmpPrivilegeArrays.getJSONObject(tmpPrivilegeIndex);
  188. if (privilegeObj.getString("pId").equals(tmpPrivilegeObj.getString("pId"))) {
  189. if (!StringUtil.isEmpty(privilegeObj.getString("pgId"))) {
  190. tmpPrivilegeArrays.remove(tmpPrivilegeIndex);
  191. tmpPrivilegeArrays.add(privilegeObj);
  192. }
  193. return;
  194. }
  195. }
  196. tmpPrivilegeArrays.add(privilegeObj);
  197. }
  198. @Override
  199. public ResponseEntity<String> addPrivilegeToPrivilegeGroup(IPageData pd) {
  200. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  201. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  202. Assert.jsonObjectHaveKey(privilegeInfoObj, "pgId", "请求报文中未包含权限组ID 节点");
  203. //Assert.jsonObjectHaveKey(privilegeInfoObj,"pId","请求报文中未包含权限ID 节点");
  204. if (!privilegeInfoObj.containsKey("pIds") || privilegeInfoObj.getJSONArray("pIds").size() < 1) {
  205. throw new IllegalArgumentException("请求报文中未包含权限");
  206. }
  207. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  208. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  209. return storeInfo;
  210. }
  211. // 商户返回信息
  212. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  213. String storeId = storeInfoObj.getString("storeId");
  214. privilegeInfoObj.put("storeId", storeId);
  215. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, privilegeInfoObj.toJSONString(),
  216. ServiceConstant.SERVICE_API_URL + "/api/add.privilege.PrivilegeGroup", HttpMethod.POST);
  217. return privilegeGroup;
  218. }
  219. /**
  220. * 删除权限
  221. *
  222. * @param pd
  223. * @return
  224. */
  225. @Override
  226. public ResponseEntity<String> deletePrivilegeFromPrivilegeGroup(IPageData pd) {
  227. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  228. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  229. Assert.jsonObjectHaveKey(privilegeInfoObj, "pgId", "请求报文中未包含权限组ID 节点");
  230. //Assert.jsonObjectHaveKey(privilegeInfoObj, "pId", "请求报文中未包含权限ID 节点");
  231. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  232. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  233. return storeInfo;
  234. }
  235. // 商户返回信息
  236. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  237. String storeId = storeInfoObj.getString("storeId");
  238. privilegeInfoObj.put("storeId", storeId);
  239. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, privilegeInfoObj.toJSONString(),
  240. ServiceConstant.SERVICE_API_URL + "/api/delete.privilege.PrivilegeGroup", HttpMethod.POST);
  241. return privilegeGroup;
  242. }
  243. /**
  244. * @param pd
  245. * @return
  246. */
  247. @Override
  248. public ResponseEntity<String> listStaffPrivileges(IPageData pd) {
  249. Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
  250. JSONObject privilegeInfoObj = JSONObject.parseObject(pd.getReqData());
  251. //Assert.jsonObjectHaveKey(privilegeInfoObj, "staffId", "请求报文中未包含员工ID 节点");
  252. if (!privilegeInfoObj.containsKey("staffId")) {
  253. privilegeInfoObj.put("staffId", pd.getUserId());
  254. }
  255. ResponseEntity<String> storeInfo = super.getStoreInfo(pd, restTemplate);
  256. if (storeInfo.getStatusCode() != HttpStatus.OK) {
  257. return storeInfo;
  258. }
  259. // 商户返回信息
  260. JSONObject storeInfoObj = JSONObject.parseObject(storeInfo.getBody());
  261. String storeId = storeInfoObj.getString("storeId");
  262. privilegeInfoObj.put("storeId", storeId);
  263. ResponseEntity<String> privilegeGroup = super.callCenterService(restTemplate, pd, "",
  264. ServiceConstant.SERVICE_API_URL + "/api/query.user.privilege?userId=" + privilegeInfoObj.getString("staffId") + "&domain=" + storeInfoObj.getString("storeTypeCd"), HttpMethod.GET);
  265. // ResultVo resultVo = getCommunityStoreInfoSMOImpl.getUserPrivileges(pd, privilegeInfoObj.getString("staffId"), storeInfoObj.getString("storeTypeCd"), restTemplate);
  266. // ResponseEntity<String> privilegeGroup = new ResponseEntity<>(resultVo.getMsg(), resultVo.getCode() == ResultVo.CODE_OK ? HttpStatus.OK : HttpStatus.BAD_REQUEST);
  267. if (privilegeGroup.getStatusCode() != HttpStatus.OK) {
  268. return privilegeGroup;
  269. }
  270. JSONObject resultObj = JSONObject.parseObject(privilegeGroup.getBody().toString());
  271. JSONArray privileges = resultObj.getJSONArray("privileges");
  272. JSONArray tmpPrivilegeArrays = new JSONArray();
  273. JSONObject privilegeObj = null;
  274. for (int privilegeIndex = 0; privilegeIndex < privileges.size(); privilegeIndex++) {
  275. privilegeObj = privileges.getJSONObject(privilegeIndex);
  276. hasSameData(privilegeObj, tmpPrivilegeArrays);
  277. }
  278. JSONObject resObj = new JSONObject();
  279. resObj.put("datas", privileges);
  280. return new ResponseEntity<String>(resObj.toJSONString(), HttpStatus.OK);
  281. }
  282. public RestTemplate getRestTemplate() {
  283. return restTemplate;
  284. }
  285. public void setRestTemplate(RestTemplate restTemplate) {
  286. this.restTemplate = restTemplate;
  287. }
  288. }