69d1638e72253e2cef31e4579fa1f4b040561e40.svn-base 11 KB

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