1bd181d8bd3044bbc392d4c4c1faafc7be363580.svn-base 11 KB

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