27e3a6df7573c1ba50d219c06278077241b261d5.svn-base 11 KB

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