196ea585ac01931fb8b5b2d14509c2b222f7c7e2.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  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.CdCasService;
  18. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  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. /**
  37. *
  38. * 成都 单点登录
  39. * @author lxf
  40. * @date 2022/12/08 18:00
  41. */
  42. @Service
  43. @Transactional
  44. public class CdCasServiceImpl implements CdCasService {
  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 BisInspPersOrgService persOrgService;
  57. @Autowired
  58. private UserRoleService userRoleService;
  59. private Logger logger = LoggerFactory.getLogger(getClass());
  60. @Override
  61. public BisInspAllRlationPers validateUser(Map<String, Object> ssoUserMap) throws Exception {
  62. //用户编号
  63. String userCode = ssoUserMap.get("loginName").toString();
  64. // 真实姓名
  65. String trueName = ssoUserMap.get("userName").toString();
  66. String mobile = ssoUserMap.get("phone").toString();
  67. if (StringUtils.isNotBlank(userCode) && StringUtils.isNotBlank(mobile) && StringUtils.isNotBlank(trueName)) {
  68. BisInspAllRlationPersParam bisInspAllRlationPersParam = new BisInspAllRlationPersParam();
  69. bisInspAllRlationPersParam.setMobilenumb(mobile);
  70. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getBy(bisInspAllRlationPersParam);
  71. // 若本地用户无,则查询同步水管平台用户是否存在,不存在则请求水管平台接口同步用户,存在则添加本地用户数据
  72. if (bisInspAllRlationPers != null) {
  73. bisInspAllRlationPers.setOrgId("120");
  74. bisInspAllRlationPers.setOrgNm("成都市水务局");
  75. return bisInspAllRlationPers;
  76. } else {
  77. bisInspAllRlationPers = addBisInspAllRlationPers(userCode, mobile, trueName);
  78. return bisInspAllRlationPers;
  79. }
  80. } else {
  81. this.logger.info("请求水管用户接口异常 ==> 用户编码:" + userCode + "或手机号:" + mobile);
  82. throw new Exception("请求水管用户接口异常 ==> 用户编码:" + userCode + "或手机号:" + mobile);
  83. }
  84. }
  85. @Override
  86. public BisInspAllRlationPers validateTicket(BisInspAllRlationPers bisInspAllRlationPers, String uuid, HttpServletRequest request) {
  87. bisInspAllRlationPers = getBisInspAllRlations(bisInspAllRlationPers);
  88. BisInspAllRlationPers pers = new BisInspAllRlationPers();
  89. pers.setGuid(bisInspAllRlationPers.getGuid());
  90. pers.setLoginTm(new Date());
  91. if (StringUtils.isBlank(bisInspAllRlationPers.getPersType())) {
  92. bisInspAllRlationPers.setPersType("3");
  93. pers.setPersType("3");
  94. }
  95. bisInspAllRlationPersService.update(pers);
  96. bisInspAllRlationPers.setPwd(null);
  97. String accessToken = JWTTokenUtil.sign(bisInspAllRlationPersService.getLoginUser(bisInspAllRlationPers), bisInspAllRlationPers.getGuid());
  98. redisTemplate.opsForValue().set(uuid, accessToken, JWTTokenUtil.maxAge, TimeUnit.MILLISECONDS);
  99. redisTemplate.opsForValue().set(uuid + bisInspAllRlationPers.getGuid(), accessToken, JWTTokenUtil.refreshmaxAge, TimeUnit.MILLISECONDS);
  100. bisInspAllRlationPersService.sendChannel(uuid, bisInspAllRlationPers, request, PlusEnum.ADD.getNumber());
  101. bisInspAllRlationPers.setMobilenumb(UserMsgSectrityUtils.blurPhone(bisInspAllRlationPers.getMobilenumb()));
  102. return bisInspAllRlationPers;
  103. }
  104. /**
  105. * @Description 获取本系统
  106. * @Date 2020/7/14
  107. **/
  108. private BisInspAllRlationPers getBisInspAllRlations(BisInspAllRlationPers bisInspAllRlationPers) {
  109. BisInspOrg bisInspOrg = new BisInspOrg();
  110. if (StringUtils.isNotBlank(bisInspAllRlationPers.getOrgId())) {
  111. String orgId = bisInspAllRlationPers.getOrgId();
  112. bisInspOrg = olBisInspOrgService.getDefaultOrg(orgId);
  113. bisInspAllRlationPers.setDefaultOrg(bisInspOrg);
  114. BisInspOrgParam inspOrgParam = new BisInspOrgParam();
  115. inspOrgParam.setPersId(bisInspAllRlationPers.getGuid());
  116. List<BisInspOrg> inspOrgList = bisInspOrgDao.findPersOrgList(inspOrgParam);
  117. bisInspAllRlationPers.setAllOrg(inspOrgList);
  118. }
  119. if (StringUtils.isNotBlank(bisInspAllRlationPers.getGuid())) {
  120. List<BisInspAll> allNode = organizationTree.getAllNode(bisInspAllRlationPers.getGuid(), "", bisInspAllRlationPers.getOrgId(), "", "", "","","");
  121. if (allNode.size() > 0) {
  122. StringBuffer s = new StringBuffer();
  123. s.append("1");
  124. String sk = "0";
  125. String ry = "000";
  126. String sh = "0";
  127. String ogc = "0";
  128. String dxs = "0";
  129. String sz = "0";
  130. String sd = "0";
  131. for (BisInspAll b : allNode) {
  132. if ("001".equals(b.getId().substring(0, 3))) {
  133. sk = "1";
  134. }
  135. if ("002".equals(b.getId().substring(0, 3))) {
  136. ry = "111";
  137. }
  138. if ("003".equals(b.getId().substring(0, 3))) {
  139. sh = "1";
  140. }
  141. if ("004".equals(b.getId().substring(0, 3))) {
  142. ogc = "1";
  143. }
  144. if ("005".equals(b.getId().substring(0, 3))) {
  145. dxs = "1";
  146. }
  147. if ("006".equals(b.getId().substring(0, 3))) {
  148. sz = "1";
  149. }
  150. if ("011".equals(b.getId().substring(0, 3))) {
  151. sd = "1";
  152. }
  153. }
  154. s.append(sk).append(ry).append(sh).append(ogc).append(dxs).append(sz).append(sd);
  155. bisInspAllRlationPers.setJurisdiction(s.toString());
  156. } else {
  157. bisInspAllRlationPers.setJurisdiction("100000000");
  158. }
  159. bisInspAllRlationPers.setAllNode(allNode);
  160. }
  161. return bisInspAllRlationPers;
  162. }
  163. /**
  164. * @Description ,添加用户权限中角色信息,添加用户关联机构,添加用户任务列表
  165. **/
  166. public BisInspAllRlationPers addBisInspAllRlationPers(String userCode, String mobile, String trueName) {
  167. BisInspAllRlationPers bisInspAllRlationPers = new BisInspAllRlationPers();
  168. String uuid = UuidUtil.uuid(); // 生成uuid
  169. bisInspAllRlationPers.setGuid(uuid);
  170. bisInspAllRlationPers.setPersName(trueName);
  171. bisInspAllRlationPers.setMobilenumb(mobile);
  172. bisInspAllRlationPers.setOwnerSystem("DC_ALL");
  173. bisInspAllRlationPers.setPersType("1");
  174. bisInspAllRlationPers.setOrgId("120");
  175. bisInspAllRlationPers.setOrgNm("成都市水务局");
  176. addPreOrg(bisInspAllRlationPers);
  177. //添加本地用户信息
  178. bisInspAllRlationPersService.insert(bisInspAllRlationPers);
  179. // 人员角色表添加数据
  180. UserRole userRole = new UserRole();
  181. userRole.setUserId(uuid);
  182. // 成都市人员角色 id
  183. userRole.setRoleId("30195505f0d7476c9cf552d726c815bb");
  184. UserRoleParam userRoleParam = new UserRoleParam();
  185. userRoleParam.setRoleId(userRole.getRoleId());
  186. userRoleParam.setUserId(userRole.getUserId());
  187. if (null == userRoleService.getBy(userRoleParam)) {
  188. userRoleService.insert(userRole);
  189. }
  190. //人员机构对应表添加数据
  191. BisInspPersOrg inspPersOrg = new BisInspPersOrg();
  192. inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
  193. inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
  194. if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
  195. inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
  196. } else {
  197. inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
  198. }
  199. BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
  200. bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
  201. bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
  202. if (null == persOrgService.getBy(bisInspPersOrgParam)) {
  203. persOrgService.insert(inspPersOrg);
  204. }
  205. return bisInspAllRlationPers;
  206. }
  207. /**
  208. * @Description 本地用户行政区划分配
  209. **/
  210. private void addPreOrg(BisInspAllRlationPers bisInspAllRlationPers) {
  211. if (StringUtils.isNotBlank(bisInspAllRlationPers.getOrgId())) {
  212. OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(bisInspAllRlationPers.getOrgId());
  213. if (olBisInspOrg != null) {
  214. bisInspAllRlationPers.setOrgNm(olBisInspOrg.getOrgNm());
  215. bisInspAllRlationPers.setProvince(olBisInspOrg.getAdCode());
  216. }
  217. BisInspPersOrg inspPersOrg = new BisInspPersOrg();
  218. inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
  219. inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
  220. if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
  221. inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
  222. } else {
  223. inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
  224. }
  225. BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
  226. bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
  227. bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
  228. if (null == persOrgService.getBy(bisInspPersOrgParam)) {
  229. persOrgService.insert(inspPersOrg);
  230. }
  231. }
  232. }
  233. }