| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 |
- package cn.com.goldenwater.dcproj.service.impl.synchronous;
- import cn.com.goldenwater.dcproj.constValue.AdCodeLabel;
- import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersZjDao;
- import cn.com.goldenwater.dcproj.dao.BisInspOrgDao;
- import cn.com.goldenwater.dcproj.dao.RelOrgInspTypeDao;
- import cn.com.goldenwater.dcproj.model.BisInspAll;
- import cn.com.goldenwater.dcproj.model.BisInspAllRlation;
- import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
- import cn.com.goldenwater.dcproj.model.BisInspOrg;
- import cn.com.goldenwater.dcproj.model.BisInspPersOrg;
- import cn.com.goldenwater.dcproj.model.InspType;
- import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
- import cn.com.goldenwater.dcproj.model.RelOrgInspType;
- import cn.com.goldenwater.dcproj.model.UserRole;
- import cn.com.goldenwater.dcproj.param.BisInspAllRlationParam;
- import cn.com.goldenwater.dcproj.param.BisInspAllRlationPersParam;
- import cn.com.goldenwater.dcproj.param.BisInspOrgParam;
- import cn.com.goldenwater.dcproj.param.BisInspPersOrgParam;
- import cn.com.goldenwater.dcproj.param.RelOrgInspTypeParam;
- import cn.com.goldenwater.dcproj.param.UserRoleParam;
- import cn.com.goldenwater.dcproj.service.BisInspAllRlationPersService;
- import cn.com.goldenwater.dcproj.service.BisInspAllRlationService;
- import cn.com.goldenwater.dcproj.service.BisInspAllService;
- import cn.com.goldenwater.dcproj.service.BisInspPersOrgService;
- import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
- import cn.com.goldenwater.dcproj.service.SsoService;
- import cn.com.goldenwater.dcproj.service.UserRoleService;
- import cn.com.goldenwater.dcproj.service.impl.system.OrganizationTreeImpl;
- import cn.com.goldenwater.dcproj.utils.JWTTokenUtil;
- import cn.com.goldenwater.dcproj.utils.UserMsgSectrityUtils;
- import cn.com.goldenwater.id.util.UuidUtil;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.servlet.http.HttpServletRequest;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- /**
- * @Description 浙江水管理平台单点登陆对接
- * @date 2020-07-15
- */
- @Service
- @Transactional
- public class SsoServiceImpl implements SsoService {
- @Value("${watermanage.appsecret}")
- private String appsecret;
- @Autowired
- private BisInspAllRlationPersService bisInspAllRlationPersService;
- @Autowired
- private OrganizationTreeImpl organizationTree;
- @Autowired
- private RedisTemplate redisTemplate;
- @Autowired
- private OlBisInspOrgService olBisInspOrgService;
- @Autowired
- private BisInspOrgDao bisInspOrgDao;
- @Autowired
- private BisInspAllRlationPersZjDao bisInspAllRlationPersZjDao;
- @Autowired
- private BisInspPersOrgService persOrgService;
- @Autowired
- private UserRoleService userRoleService;
- @Autowired
- private BisInspAllRlationService rlationService;
- @Autowired
- private RelOrgInspTypeDao relOrgInspTypeDao;
- @Autowired
- private BisInspAllService bisInspAllService;
- private Logger logger = LoggerFactory.getLogger(getClass());
- /**
- * @param ssoUserMap 水管平台请求的参数
- * @Description 验证用户是都存在在本地用户中,若不存在则添加入库水管理平台同步本地用户以及水利监督本地用户
- **/
- @Override
- public BisInspAllRlationPers validateUser(Map<String, Object> ssoUserMap) throws Exception {
- // 用户编号
- String userCode = ssoUserMap.get("userCode").toString();
- // 真实姓名
- String trueName = ssoUserMap.get("trueName").toString();
- String mobile = ssoUserMap.get("mobile").toString();
- if (StringUtils.isNotBlank(userCode) && StringUtils.isNotBlank(mobile) && StringUtils.isNotBlank(trueName)) {
- BisInspAllRlationPersParam bisInspAllRlationPersParam = new BisInspAllRlationPersParam();
- bisInspAllRlationPersParam.setMobilenumb(mobile);
- BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getBy(bisInspAllRlationPersParam);
- // 若本地用户无,则查询同步水管平台用户是否存在,不存在则请求水管平台接口同步用户,存在则添加本地用户数据
- if (bisInspAllRlationPers != null) {
- bisInspAllRlationPers.setOrgId("036");
- bisInspAllRlationPers.setOrgNm("浙江省");
- return bisInspAllRlationPers;
- } else {
- // int persZjCount = bisInspAllRlationPersZjDao.selectCount(userCode);
- // if (persZjCount > 0) {
- // 同步过来得用户存在则添加本地用户
- // bisInspAllRlationPers= addBisInspAllRlationPers(userCode,mobile,trueName);
- // return bisInspAllRlationPers;
- // } else {
- // 无水管平台同步用户信息则添加同步用户,与本地用户信息
- // String watermanage_access_token = ssoHttpHelper.getAccessToken();
- //新增水管平台同步用户信息
- // ssoHttpHelper.getAuthedUsers(userCode, watermanage_access_token);
- bisInspAllRlationPers = addBisInspAllRlationPers(userCode, mobile, trueName);
- return bisInspAllRlationPers;
- // }
- }
- } else {
- this.logger.info("请求水管用户接口异常 ==> 用户编码:" + userCode + "或手机号:" + mobile);
- throw new Exception("请求水管用户接口异常 ==> 用户编码:" + userCode + "或手机号:" + mobile);
- }
- }
- @Override
- public BisInspAllRlationPers validateQhUser(Map<String, String> mapSso) throws Exception {
- if (StringUtils.isNotBlank(mapSso.get("userLoginName")) && StringUtils.isNotBlank(mapSso.get("userGuid")) && StringUtils.isNotBlank(mapSso.get("userMobile"))) {
- BisInspAllRlationPersParam bisInspAllRlationPersParam = new BisInspAllRlationPersParam();
- bisInspAllRlationPersParam.setMobilenumb(mapSso.get("userMobile"));
- BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getBy(bisInspAllRlationPersParam);
- if (bisInspAllRlationPers != null) {
- bisInspAllRlationPers.setOrgId("063");
- bisInspAllRlationPers.setOrgNm("青海省");
- return bisInspAllRlationPers;
- } else {
- bisInspAllRlationPers = addQhBisInspAllRlationPers(mapSso);
- return bisInspAllRlationPers;
- }
- } else {
- throw new Exception("解析青海用户信息错误");
- }
- }
- @Override
- public BisInspAllRlationPers validateXjbtUser(Map<String, String> mapSso) throws Exception {
- if (StringUtils.isNotBlank(mapSso.get("userMobile"))) {
- BisInspAllRlationPersParam bisInspAllRlationPersParam = new BisInspAllRlationPersParam();
- bisInspAllRlationPersParam.setMobilenumb(mapSso.get("userMobile"));
- BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getBy(bisInspAllRlationPersParam);
- if (bisInspAllRlationPers != null) {
- bisInspAllRlationPers.setOrgId("066");
- bisInspAllRlationPers.setOrgNm("新疆兵团");
- return bisInspAllRlationPers;
- } else {
- // bisInspAllRlationPers = addQhBisInspAllRlationPers(mapSso);
- return null;
- }
- } else {
- throw new Exception("解析青海用户信息错误");
- }
- }
- /**
- * @Description ,添加用户权限中角色信息,添加用户关联机构,添加用户任务列表
- **/
- public BisInspAllRlationPers addBisInspAllRlationPers(String userCode, String mobile, String trueName) {
- BisInspAllRlationPers bisInspAllRlationPers = new BisInspAllRlationPers();
- String uuid = UuidUtil.uuid(); // 生成uuid
- bisInspAllRlationPers.setGuid(uuid);
- bisInspAllRlationPers.setPersName(trueName);
- bisInspAllRlationPers.setMobilenumb(mobile);
- bisInspAllRlationPers.setOwnerSystem("DC_ALL");
- bisInspAllRlationPers.setPersType("1");
- bisInspAllRlationPers.setOrgId("036");
- bisInspAllRlationPers.setOrgNm("浙江省");
- addPreOrg(bisInspAllRlationPers);
- //添加本地用户信息
- bisInspAllRlationPersService.insert(bisInspAllRlationPers);
- // 人员角色表添加数据
- UserRole userRole = new UserRole();
- userRole.setUserId(uuid);
- userRole.setRoleId("fa7b471b6d9b4f1fb4d6bdfbae78d9a5");
- // userRole.setRoleId("074cc33485644b74a10f6e3cf6e7aeaf");
- UserRoleParam userRoleParam = new UserRoleParam();
- userRoleParam.setRoleId(userRole.getRoleId());
- userRoleParam.setUserId(userRole.getUserId());
- if (null == userRoleService.getBy(userRoleParam)) {
- userRoleService.insert(userRole);
- }
- //人员机构对应表添加数据
- BisInspPersOrg inspPersOrg = new BisInspPersOrg();
- inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
- inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
- if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
- inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
- } else {
- inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
- }
- BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
- bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
- bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
- if (null == persOrgService.getBy(bisInspPersOrgParam)) {
- persOrgService.insert(inspPersOrg);
- }
- //添加用户任务列表
- addPersTask(bisInspAllRlationPers);
- return bisInspAllRlationPers;
- }
- /**
- * @param mapSso
- * @Description ,添加用户权限中角色信息,添加用户关联机构,添加用户任务列表
- */
- public BisInspAllRlationPers addQhBisInspAllRlationPers(Map<String, String> mapSso) {
- BisInspAllRlationPers bisInspAllRlationPers = new BisInspAllRlationPers();
- String uuid = UuidUtil.uuid(); // 生成uuid
- bisInspAllRlationPers.setGuid(mapSso.get("userGuid"));
- bisInspAllRlationPers.setPersName(mapSso.get("userLoginName"));
- bisInspAllRlationPers.setMobilenumb(mapSso.get("userMobile"));
- bisInspAllRlationPers.setOwnerSystem("DC_ALL");
- bisInspAllRlationPers.setPersType("1");
- bisInspAllRlationPers.setOrgId("063");
- bisInspAllRlationPers.setOrgNm("青海省");
- addPreOrg(bisInspAllRlationPers);
- //添加本地用户信息
- bisInspAllRlationPersService.insert(bisInspAllRlationPers);
- // 人员角色表添加数据
- UserRole userRole = new UserRole();
- userRole.setUserId(mapSso.get("userGuid"));
- userRole.setRoleId("5e6a4bdf4960479d93d81e6f13232812");
- UserRoleParam userRoleParam = new UserRoleParam();
- userRoleParam.setRoleId(userRole.getRoleId());
- userRoleParam.setUserId(userRole.getUserId());
- if (null == userRoleService.getBy(userRoleParam)) {
- userRoleService.insert(userRole);
- }
- //人员机构对应表添加数据
- BisInspPersOrg inspPersOrg = new BisInspPersOrg();
- inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
- inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
- if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
- inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
- } else {
- inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
- }
- BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
- bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
- bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
- if (null == persOrgService.getBy(bisInspPersOrgParam)) {
- persOrgService.insert(inspPersOrg);
- }
- //添加用户任务列表
- addPersTask(bisInspAllRlationPers);
- return bisInspAllRlationPers;
- }
- /**
- * @Description ,添加用户任务列表,根据行政区划划分任列表
- **/
- public void addPersTask(BisInspAllRlationPers bisInspAllRlationPers) {
- RelOrgInspTypeParam relOrgInspTypeParam = new RelOrgInspTypeParam();
- relOrgInspTypeParam.setOrgId(bisInspAllRlationPers.getOrgId());
- List<RelOrgInspType> relOrgInspTypes = relOrgInspTypeDao.findList(relOrgInspTypeParam);
- List<InspType> inspTypeList = new ArrayList<>();
- for (RelOrgInspType relOrgInspType : relOrgInspTypes) {
- InspType inspType = new InspType();
- inspType.setCode(relOrgInspType.getInspType());
- inspType.setName(relOrgInspType.getInspName());
- inspType.setPersId(bisInspAllRlationPers.getGuid());
- inspType.setOrgId(bisInspAllRlationPers.getOrgId());
- inspTypeList.add(inspType);
- }
- // 1. 获取 OrgId、 persId、 province 删除所有 与用户-省关联的数据
- BisInspAllRlationParam bisInspAllRlationParam = new BisInspAllRlationParam();
- OlBisInspOrg bisInspOrg = null;
- InspType inspTypeOne = inspTypeList.get(0);
- bisInspAllRlationParam.setOrgId(inspTypeOne.getOrgId());
- bisInspAllRlationParam.setPersid(inspTypeOne.getPersId());
- bisInspOrg = olBisInspOrgService.get(inspTypeOne.getOrgId());
- bisInspAllRlationParam.setProvince(bisInspOrg.getRlcode());
- rlationService.deleteBy(bisInspAllRlationParam);
- // 2. 循环要添加的督查类别, 添加督查类别
- for (InspType inspType : inspTypeList) {
- BisInspAll rootBisInsp = bisInspAllService.get(inspType.getCode());
- // 如果没有这个督查类别就添加督查类别
- if (rootBisInsp == null) {
- rootBisInsp = new BisInspAll();
- rootBisInsp.setId(inspType.getCode());
- rootBisInsp.setPnm(inspType.getName());
- rootBisInsp.setPid("0");
- bisInspAllService.insert(rootBisInsp);
- }
- String orgId = inspType.getOrgId();
- if (inspType.getOrgId().length() == 2) {
- orgId = "0" + orgId;
- }
- // 添加 督查 BisInspAll tree
- String id = inspType.getCode() + orgId;
- BisInspAll inspAll = bisInspAllService.get(id);
- if (inspAll == null) {
- inspAll = new BisInspAll();
- inspAll.setOrgId(inspType.getOrgId());
- inspAll.setId(id);
- inspAll.setPnm(bisInspOrg.getOrgNm() + inspType.getName());
- inspAll.setPid(inspType.getCode());
- inspAll.setProvince(bisInspOrg.getRlcode());
- if (AdCodeLabel.PARENT_ADCODE.equals(bisInspOrg.getRlcode())) {
- inspAll.setProvince("");
- }
- bisInspAllService.insert(inspAll);
- }
- // 重点添加督查 BisInspAllRlation
- BisInspAllRlationParam rlationParam = new BisInspAllRlationParam();
- rlationParam.setPersid(inspType.getPersId());
- rlationParam.setId(id);
- rlationParam.setProvince(bisInspOrg.getRlcode());
- BisInspAllRlation allRlation = rlationService.getBy(rlationParam);
- if (allRlation == null) {
- allRlation = new BisInspAllRlation();
- allRlation.setAdCode(bisInspOrg.getRlcode());
- if (AdCodeLabel.PARENT_ADCODE.equals(bisInspOrg.getRlcode())) {
- allRlation.setAdCode("");
- }
- allRlation.setPersid(inspType.getPersId());
- allRlation.setId(id);
- BisInspAllRlationPers allRlationPers = bisInspAllRlationPersService.get(inspType.getPersId());
- if (allRlationPers != null) {
- allRlation.setPertype(allRlationPers.getPersType());
- }
- allRlation.setOrgId(orgId);
- allRlation.setType(String.valueOf(Integer.parseInt(inspType.getCode())));
- rlationService.insert(allRlation);
- }
- }
- }
- /**
- * @Description 本地用户行政区划分配
- **/
- private void addPreOrg(BisInspAllRlationPers bisInspAllRlationPers) {
- if (StringUtils.isNotBlank(bisInspAllRlationPers.getOrgId())) {
- OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(bisInspAllRlationPers.getOrgId());
- if (olBisInspOrg != null) {
- bisInspAllRlationPers.setOrgNm(olBisInspOrg.getOrgNm());
- bisInspAllRlationPers.setProvince(olBisInspOrg.getAdCode());
- }
- BisInspPersOrg inspPersOrg = new BisInspPersOrg();
- inspPersOrg.setOrgId(bisInspAllRlationPers.getOrgId());
- inspPersOrg.setPersId(bisInspAllRlationPers.getGuid());
- if (StringUtils.isNotBlank(bisInspAllRlationPers.getPersType())) {
- inspPersOrg.setUserType(bisInspAllRlationPers.getPersType());
- } else {
- inspPersOrg.setUserType(AdCodeLabel.GROUP_LEADER);
- }
- BisInspPersOrgParam bisInspPersOrgParam = new BisInspPersOrgParam();
- bisInspPersOrgParam.setPersId(inspPersOrg.getPersId());
- bisInspPersOrgParam.setOrgId(inspPersOrg.getOrgId());
- if (null == persOrgService.getBy(bisInspPersOrgParam)) {
- persOrgService.insert(inspPersOrg);
- }
- }
- }
- @Override
- public BisInspAllRlationPers validateTicket(BisInspAllRlationPers bisInspAllRlationPers, String uuid, HttpServletRequest request) {
- bisInspAllRlationPers = getBisInspAllRlations(bisInspAllRlationPers);
- BisInspAllRlationPers pers = new BisInspAllRlationPers();
- pers.setGuid(bisInspAllRlationPers.getGuid());
- pers.setLoginTm(new Date());
- if (StringUtils.isBlank(bisInspAllRlationPers.getPersType())) {
- bisInspAllRlationPers.setPersType("3");
- pers.setPersType("3");
- }
- bisInspAllRlationPersService.update(pers);
- bisInspAllRlationPers.setPwd(null);
- String accessToken = JWTTokenUtil.sign(bisInspAllRlationPersService.getLoginUser(bisInspAllRlationPers), bisInspAllRlationPers.getGuid());
- redisTemplate.opsForValue().set(uuid, accessToken, JWTTokenUtil.maxAge, TimeUnit.MILLISECONDS);
- redisTemplate.opsForValue().set(uuid + bisInspAllRlationPers.getGuid(), accessToken, JWTTokenUtil.refreshmaxAge, TimeUnit.MILLISECONDS);
- //bisInspAllRlationPersService.sendChannel(uuid, bisInspAllRlationPers, request, PlusEnum.ADD.getNumber());
- bisInspAllRlationPers.setMobilenumb(UserMsgSectrityUtils.blurPhone(bisInspAllRlationPers.getMobilenumb()));
- return bisInspAllRlationPers;
- }
- /**
- * @Description 获取本系统
- * @Date 2020/7/14
- **/
- private BisInspAllRlationPers getBisInspAllRlations(BisInspAllRlationPers bisInspAllRlationPers) {
- BisInspOrg bisInspOrg = new BisInspOrg();
- if (StringUtils.isNotBlank(bisInspAllRlationPers.getOrgId())) {
- String orgId = bisInspAllRlationPers.getOrgId();
- bisInspOrg = olBisInspOrgService.getDefaultOrg(orgId);
- bisInspAllRlationPers.setDefaultOrg(bisInspOrg);
- BisInspOrgParam inspOrgParam = new BisInspOrgParam();
- inspOrgParam.setPersId(bisInspAllRlationPers.getGuid());
- List<BisInspOrg> inspOrgList = bisInspOrgDao.findPersOrgList(inspOrgParam);
- bisInspAllRlationPers.setAllOrg(inspOrgList);
- }
- if (StringUtils.isNotBlank(bisInspAllRlationPers.getGuid())) {
- List<BisInspAll> allNode = organizationTree.getAllNode(bisInspAllRlationPers.getGuid(), "", bisInspAllRlationPers.getOrgId(), "", "", "","","");
- if (allNode.size() > 0) {
- StringBuffer s = new StringBuffer();
- s.append("1");
- String sk = "0";
- String ry = "000";
- String sh = "0";
- String ogc = "0";
- String dxs = "0";
- String sz = "0";
- String sd = "0";
- for (BisInspAll b : allNode) {
- if ("001".equals(b.getId().substring(0, 3))) {
- sk = "1";
- }
- if ("002".equals(b.getId().substring(0, 3))) {
- ry = "111";
- }
- if ("003".equals(b.getId().substring(0, 3))) {
- sh = "1";
- }
- if ("004".equals(b.getId().substring(0, 3))) {
- ogc = "1";
- }
- if ("005".equals(b.getId().substring(0, 3))) {
- dxs = "1";
- }
- if ("006".equals(b.getId().substring(0, 3))) {
- sz = "1";
- }
- if ("011".equals(b.getId().substring(0, 3))) {
- sd = "1";
- }
- }
- s.append(sk).append(ry).append(sh).append(ogc).append(dxs).append(sz).append(sd);
- bisInspAllRlationPers.setJurisdiction(s.toString());
- } else {
- bisInspAllRlationPers.setJurisdiction("100000000");
- }
- bisInspAllRlationPers.setAllNode(allNode);
- }
- return bisInspAllRlationPers;
- }
- }
|