1dc48407cc2f85f25a0756afb3b6877f5de2b811.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. package cn.com.goldenwater.dcproj.service.impl.synchronous;
  2. import cn.com.goldenwater.dcproj.constValue.AdCodeLabel;
  3. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersZjDao;
  4. import cn.com.goldenwater.dcproj.dao.BisInspOrgDao;
  5. import cn.com.goldenwater.dcproj.dao.RelOrgInspTypeDao;
  6. import cn.com.goldenwater.dcproj.model.BisInspAll;
  7. import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
  8. import cn.com.goldenwater.dcproj.model.BisInspOrg;
  9. import cn.com.goldenwater.dcproj.model.BisInspPersOrg;
  10. import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
  11. import cn.com.goldenwater.dcproj.model.UserRole;
  12. import cn.com.goldenwater.dcproj.param.BisInspAllRlationPersParam;
  13. import cn.com.goldenwater.dcproj.param.BisInspOrgParam;
  14. import cn.com.goldenwater.dcproj.param.BisInspPersOrgParam;
  15. import cn.com.goldenwater.dcproj.param.UserRoleParam;
  16. import cn.com.goldenwater.dcproj.service.BisInspAllRlationPersService;
  17. import cn.com.goldenwater.dcproj.service.BisInspAllRlationService;
  18. import cn.com.goldenwater.dcproj.service.BisInspAllService;
  19. import cn.com.goldenwater.dcproj.service.BisInspPersOrgService;
  20. import cn.com.goldenwater.dcproj.service.HnCasService;
  21. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  22. import cn.com.goldenwater.dcproj.service.UserRoleService;
  23. import cn.com.goldenwater.dcproj.service.impl.system.OrganizationTreeImpl;
  24. import cn.com.goldenwater.dcproj.utils.JWTTokenUtil;
  25. import cn.com.goldenwater.dcproj.utils.UserMsgSectrityUtils;
  26. import cn.com.goldenwater.id.util.UuidUtil;
  27. import org.apache.commons.lang3.StringUtils;
  28. import org.slf4j.Logger;
  29. import org.slf4j.LoggerFactory;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.beans.factory.annotation.Value;
  32. import org.springframework.data.redis.core.RedisTemplate;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import javax.servlet.http.HttpServletRequest;
  36. import java.util.Date;
  37. import java.util.List;
  38. import java.util.Map;
  39. import java.util.concurrent.TimeUnit;
  40. @Service
  41. @Transactional
  42. public class HnCasServiceImpl implements HnCasService {
  43. @Value("${watermanage.appsecret}")
  44. private String appsecret;
  45. @Autowired
  46. private BisInspAllRlationPersService bisInspAllRlationPersService;
  47. @Autowired
  48. private OrganizationTreeImpl organizationTree;
  49. @Autowired
  50. private RedisTemplate redisTemplate;
  51. @Autowired
  52. private OlBisInspOrgService olBisInspOrgService;
  53. @Autowired
  54. private BisInspOrgDao bisInspOrgDao;
  55. @Autowired
  56. private BisInspAllRlationPersZjDao bisInspAllRlationPersZjDao;
  57. @Autowired
  58. private BisInspPersOrgService persOrgService;
  59. @Autowired
  60. private UserRoleService userRoleService;
  61. @Autowired
  62. private BisInspAllRlationService rlationService;
  63. @Autowired
  64. private RelOrgInspTypeDao relOrgInspTypeDao;
  65. @Autowired
  66. private BisInspAllService bisInspAllService;
  67. private Logger logger = LoggerFactory.getLogger(getClass());
  68. @Override
  69. public BisInspAllRlationPers validateUser(Map<String, Object> ssoUserMap) throws Exception {
  70. //用户编号
  71. String userCode = ssoUserMap.get("userId").toString();
  72. // 真实姓名
  73. String trueName = ssoUserMap.get("userName").toString();
  74. String mobile = ssoUserMap.get("userId").toString();
  75. if (StringUtils.isNotBlank(userCode) && StringUtils.isNotBlank(mobile) && StringUtils.isNotBlank(trueName)) {
  76. BisInspAllRlationPersParam bisInspAllRlationPersParam = new BisInspAllRlationPersParam();
  77. bisInspAllRlationPersParam.setMobilenumb(mobile);
  78. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getBy(bisInspAllRlationPersParam);
  79. // 若本地用户无,则查询同步水管平台用户是否存在,不存在则请求水管平台接口同步用户,存在则添加本地用户数据
  80. if (bisInspAllRlationPers != null) {
  81. bisInspAllRlationPers.setOrgId("055");
  82. bisInspAllRlationPers.setOrgNm("海南省");
  83. return bisInspAllRlationPers;
  84. } else {
  85. bisInspAllRlationPers = addBisInspAllRlationPers(userCode, mobile, trueName);
  86. return bisInspAllRlationPers;
  87. // }
  88. }
  89. } else {
  90. this.logger.info("请求水管用户接口异常 ==> 用户编码:" + userCode + "或手机号:" + mobile);
  91. throw new Exception("请求水管用户接口异常 ==> 用户编码:" + userCode + "或手机号:" + mobile);
  92. }
  93. }
  94. @Override
  95. public BisInspAllRlationPers validateTicket(BisInspAllRlationPers bisInspAllRlationPers, String uuid, HttpServletRequest request) {
  96. bisInspAllRlationPers = getBisInspAllRlations(bisInspAllRlationPers);
  97. BisInspAllRlationPers pers = new BisInspAllRlationPers();
  98. pers.setGuid(bisInspAllRlationPers.getGuid());
  99. pers.setLoginTm(new Date());
  100. if (StringUtils.isBlank(bisInspAllRlationPers.getPersType())) {
  101. bisInspAllRlationPers.setPersType("3");
  102. pers.setPersType("3");
  103. }
  104. bisInspAllRlationPersService.update(pers);
  105. bisInspAllRlationPers.setPwd(null);
  106. String accessToken = JWTTokenUtil.sign(bisInspAllRlationPersService.getLoginUser(bisInspAllRlationPers), bisInspAllRlationPers.getGuid());
  107. redisTemplate.opsForValue().set(uuid, accessToken, JWTTokenUtil.maxAge, TimeUnit.MILLISECONDS);
  108. redisTemplate.opsForValue().set(uuid + bisInspAllRlationPers.getGuid(), accessToken, JWTTokenUtil.refreshmaxAge, TimeUnit.MILLISECONDS);
  109. //bisInspAllRlationPersService.sendChannel(uuid, bisInspAllRlationPers, request, PlusEnum.ADD.getNumber());
  110. bisInspAllRlationPers.setMobilenumb(UserMsgSectrityUtils.blurPhone(bisInspAllRlationPers.getMobilenumb()));
  111. return bisInspAllRlationPers;
  112. }
  113. /**
  114. * @Description 获取本系统
  115. * @Date 2020/7/14
  116. **/
  117. private BisInspAllRlationPers getBisInspAllRlations(BisInspAllRlationPers bisInspAllRlationPers) {
  118. BisInspOrg bisInspOrg = new BisInspOrg();
  119. if (StringUtils.isNotBlank(bisInspAllRlationPers.getOrgId())) {
  120. String orgId = bisInspAllRlationPers.getOrgId();
  121. bisInspOrg = olBisInspOrgService.getDefaultOrg(orgId);
  122. bisInspAllRlationPers.setDefaultOrg(bisInspOrg);
  123. BisInspOrgParam inspOrgParam = new BisInspOrgParam();
  124. inspOrgParam.setPersId(bisInspAllRlationPers.getGuid());
  125. List<BisInspOrg> inspOrgList = bisInspOrgDao.findPersOrgList(inspOrgParam);
  126. bisInspAllRlationPers.setAllOrg(inspOrgList);
  127. }
  128. if (StringUtils.isNotBlank(bisInspAllRlationPers.getGuid())) {
  129. List<BisInspAll> allNode = organizationTree.getAllNode(bisInspAllRlationPers.getGuid(), "", bisInspAllRlationPers.getOrgId(), "", "", "","","");
  130. if (allNode.size() > 0) {
  131. StringBuffer s = new StringBuffer();
  132. s.append("1");
  133. String sk = "0";
  134. String ry = "000";
  135. String sh = "0";
  136. String ogc = "0";
  137. String dxs = "0";
  138. String sz = "0";
  139. String sd = "0";
  140. for (BisInspAll b : allNode) {
  141. if ("001".equals(b.getId().substring(0, 3))) {
  142. sk = "1";
  143. }
  144. if ("002".equals(b.getId().substring(0, 3))) {
  145. ry = "111";
  146. }
  147. if ("003".equals(b.getId().substring(0, 3))) {
  148. sh = "1";
  149. }
  150. if ("004".equals(b.getId().substring(0, 3))) {
  151. ogc = "1";
  152. }
  153. if ("005".equals(b.getId().substring(0, 3))) {
  154. dxs = "1";
  155. }
  156. if ("006".equals(b.getId().substring(0, 3))) {
  157. sz = "1";
  158. }
  159. if ("011".equals(b.getId().substring(0, 3))) {
  160. sd = "1";
  161. }
  162. }
  163. s.append(sk).append(ry).append(sh).append(ogc).append(dxs).append(sz).append(sd);
  164. bisInspAllRlationPers.setJurisdiction(s.toString());
  165. } else {
  166. bisInspAllRlationPers.setJurisdiction("100000000");
  167. }
  168. bisInspAllRlationPers.setAllNode(allNode);
  169. }
  170. return bisInspAllRlationPers;
  171. }
  172. /**
  173. * @Description ,添加用户权限中角色信息,添加用户关联机构,添加用户任务列表
  174. **/
  175. public BisInspAllRlationPers addBisInspAllRlationPers(String userCode, String mobile, String trueName) {
  176. BisInspAllRlationPers bisInspAllRlationPers = new BisInspAllRlationPers();
  177. String uuid = UuidUtil.uuid(); // 生成uuid
  178. bisInspAllRlationPers.setGuid(uuid);
  179. bisInspAllRlationPers.setPersName(trueName);
  180. bisInspAllRlationPers.setMobilenumb(mobile);
  181. bisInspAllRlationPers.setOwnerSystem("DC_ALL");
  182. bisInspAllRlationPers.setPersType("1");
  183. bisInspAllRlationPers.setOrgId("055");
  184. bisInspAllRlationPers.setOrgNm("海南省");
  185. addPreOrg(bisInspAllRlationPers);
  186. //添加本地用户信息
  187. bisInspAllRlationPersService.insert(bisInspAllRlationPers);
  188. // 人员角色表添加数据
  189. UserRole userRole = new UserRole();
  190. userRole.setUserId(uuid);
  191. userRole.setRoleId("069758ff593241a493399cb87cff39e4");
  192. // userRole.setRoleId("074cc33485644b74a10f6e3cf6e7aeaf");
  193. UserRoleParam userRoleParam = new UserRoleParam();
  194. userRoleParam.setRoleId(userRole.getRoleId());
  195. userRoleParam.setUserId(userRole.getUserId());
  196. if (null == userRoleService.getBy(userRoleParam)) {
  197. userRoleService.insert(userRole);
  198. }
  199. //人员机构对应表添加数据
  200. BisInspPersOrg inspPersOrg = new BisInspPersOrg();
  201. inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
  202. inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
  203. if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
  204. inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
  205. } else {
  206. inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
  207. }
  208. BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
  209. bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
  210. bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
  211. if (null == persOrgService.getBy(bisInspPersOrgParam)) {
  212. persOrgService.insert(inspPersOrg);
  213. }
  214. return bisInspAllRlationPers;
  215. }
  216. /**
  217. * @Description 本地用户行政区划分配
  218. **/
  219. private void addPreOrg(BisInspAllRlationPers bisInspAllRlationPers) {
  220. if (StringUtils.isNotBlank(bisInspAllRlationPers.getOrgId())) {
  221. OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(bisInspAllRlationPers.getOrgId());
  222. if (olBisInspOrg != null) {
  223. bisInspAllRlationPers.setOrgNm(olBisInspOrg.getOrgNm());
  224. bisInspAllRlationPers.setProvince(olBisInspOrg.getAdCode());
  225. }
  226. BisInspPersOrg inspPersOrg = new BisInspPersOrg();
  227. inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
  228. inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
  229. if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
  230. inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
  231. } else {
  232. inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
  233. }
  234. BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
  235. bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
  236. bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
  237. if (null == persOrgService.getBy(bisInspPersOrgParam)) {
  238. persOrgService.insert(inspPersOrg);
  239. }
  240. }
  241. }
  242. }