diff --git a/dxhy-admin/src/main/java/com/dxhy/admin/sys/entity/SaleTaxnoEntity.java b/dxhy-admin/src/main/java/com/dxhy/admin/sys/entity/SaleTaxnoEntity.java new file mode 100644 index 00000000..70608d9e --- /dev/null +++ b/dxhy-admin/src/main/java/com/dxhy/admin/sys/entity/SaleTaxnoEntity.java @@ -0,0 +1,28 @@ +package com.dxhy.admin.sys.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 系统用户 + * + * @author jiaohongyang + */ +@Data +public class SaleTaxnoEntity implements Serializable { + private static final long serialVersionUID = 1L; + + private String groupId; + private String groupName; + private String xhfNsrsbh; +} diff --git a/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/SysUserService.java b/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/SysUserService.java index af12fd60..590f4c2b 100644 --- a/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/SysUserService.java +++ b/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/SysUserService.java @@ -52,6 +52,8 @@ public interface SysUserService extends IService { */ void saveUser(SysUserEntity user); + void saveUser(SysUserEntity user,Map taxnos); + /** * 修改用户 * diff --git a/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SsoLoginServiceImpl.java b/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SsoLoginServiceImpl.java index 65efa7bc..9ccca63a 100644 --- a/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SsoLoginServiceImpl.java +++ b/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SsoLoginServiceImpl.java @@ -1,14 +1,12 @@ package com.dxhy.admin.sys.service.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import javax.annotation.Resource; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSON; @@ -32,6 +30,12 @@ import lombok.extern.slf4j.Slf4j; @Service("ssoLoginService") @Slf4j public class SsoLoginServiceImpl implements SsoLoginService { + + private static final String LOGGER_MSG = "(请求http访问)"; + + @Value("${sdny.xxUrl}") + private String xxUrl; + @Resource private SysUserService sysUserService; @Resource @@ -50,14 +54,19 @@ public class SsoLoginServiceImpl implements SsoLoginService { @Override public boolean saveUser(SsoUser user) { + String taxNoInfo = getTaxNoInfo(xxUrl, ""); + List taxnoList = JSONObject.parseArray(taxNoInfo,SaleTaxnoEntity.class); + Map taxnos = taxnoList.stream().collect(Collectors.toMap(SaleTaxnoEntity::getGroupId, SaleTaxnoEntity::getXhfNsrsbh)); + log.info("从销项获取的税号列表为:{}",taxnos); + if (user.getUserSource() == 1) { // 保存 机构信息 - boolean insertOrg = this.insertOrg(user); + boolean insertOrg = this.insertOrg(user,taxnos); // 保存角色信息 boolean insertRole = this.insertRole(user); // 保存用户信息 - boolean insertUser = this.insertUser(user); + boolean insertUser = this.insertUser(user,taxnos); log.info("insertOrg = {},insertRole={},insertUser",insertOrg,insertRole,insertUser); @@ -70,12 +79,12 @@ public class SsoLoginServiceImpl implements SsoLoginService { } - public boolean insertUser(SsoUser user) { + public boolean insertUser(SsoUser user,Map taxnos) { try { SysUserEntity userEntity = this.toUser(user); // 先删除用户信息,在新增 sysUserService.deleteUserBigb(userEntity.getUserId()); - sysUserService.saveUser(userEntity); + sysUserService.saveUser(userEntity,taxnos); return true; } catch (Exception e) { log.error("insertUser 报错信息为{}",e); @@ -110,9 +119,9 @@ public class SsoLoginServiceImpl implements SsoLoginService { * 用户信息 * @return 返回信息 */ - public boolean insertOrg(SsoUser user) { + public boolean insertOrg(SsoUser user,Map taxnos) { try { - List deptList = this.toDept(user); + List deptList = this.toDept(user,taxnos); if (deptList != null && deptList.size() > 0) { sysDeptService.saveDeptList(deptList); } @@ -125,7 +134,7 @@ public class SsoLoginServiceImpl implements SsoLoginService { } - public List toDept(SsoUser user) { + public List toDept(SsoUser user,Map taxnos) { List deptList = new ArrayList<>(); int deptSum = 0; SysDeptEntity dept; @@ -135,7 +144,12 @@ public class SsoLoginServiceImpl implements SsoLoginService { dept = new SysDeptEntity(); dept.setDeptId(entity.getDeptId()); dept.setParentId(entity.getParentId()); - dept.setTaxno(entity.getTaxpayerCode()); + if(StringUtils.isNotBlank(entity.getTaxpayerCode())){ + dept.setTaxno(entity.getTaxpayerCode()); + }else{ + dept.setTaxno(taxnos.get(entity.getDeptId())); + } + dept.setTaxname(entity.getName()); dept.setName(entity.getName()); dept.setLinkman(""); @@ -146,7 +160,7 @@ public class SsoLoginServiceImpl implements SsoLoginService { dept.setCompany(AdminConfig.company); dept.setOrgCode(entity.getEnterpriseNumbers()); String deptType = this.toDeptType(String.valueOf(entity.getDeptType()), - String.valueOf(entity.getParentId()), entity.getTaxpayerCode()); + String.valueOf(entity.getParentId()), entity.getTaxpayerCode()); dept.setDeptType(deptType); dept.setOrgType(this.toOrgType(dept.getDeptType(), String.valueOf(entity.getParentId()))); dept.setUpgradeStatus(AdminConfig.upgradeStatus); @@ -377,7 +391,7 @@ public class SsoLoginServiceImpl implements SsoLoginService { sysMenuEntity = new SysMenuEntity(); String systemSign = sysMenu.getSystemSign(); if ("JXXT".equals(systemSign) || "QYPC".equals(systemSign) || "GYL".equals(systemSign) - || "YWXT".equals(systemSign)) { + || "YWXT".equals(systemSign)) { if (StringUtils.isNotBlank(sysMenu.getUrl()) && StringUtils.isNotBlank(sysMenu.getName())) { sysMenuEntity.setMenuId(sysMenu.getMenuId()); sysMenuEntity.setParentId(sysMenu.getParentId()); @@ -406,7 +420,7 @@ public class SsoLoginServiceImpl implements SsoLoginService { } else if (1 == sysMenu.getType() || 2 == sysMenu.getType()) { String[] split = sysMenu.getUrl().split("/"); SysMenuEntity menu = - this.queryMenu("/" + split[split.length - 1], sysMenu.getType(), sysMenu.getSystemSign()); + this.queryMenu("/" + split[split.length - 1], sysMenu.getType(), sysMenu.getSystemSign()); if (menu != null) { sysMenuEntity.setComponent(menu.getComponent()); sysMenuEntity.setIcon(menu.getIcon()); @@ -520,7 +534,7 @@ public class SsoLoginServiceImpl implements SsoLoginService { return runMap; } AdminSsoConfigModel adminSsoConfigModel = - JSON.parseObject(sysConfigEntity.getParamValue(), AdminSsoConfigModel.class); + JSON.parseObject(sysConfigEntity.getParamValue(), AdminSsoConfigModel.class); String body = HttpRequest.post(adminSsoConfigModel.getQueryUserUrl()).header("token", token).execute().body(); log.info("获取用户信息:{}", body); SsoUserReModel ssoUserReModel = JSON.parseObject(body, SsoUserReModel.class); @@ -659,7 +673,7 @@ public class SsoLoginServiceImpl implements SsoLoginService { for (SsoUserTaxplayercodeDept sysDeptEntity : dept) { // 获取税号信息 SysDeptEntity deptEntity = - sysDeptService.queryDeptTaxno(configModel.getCompany(), sysDeptEntity.getTaxpayerCode()); + sysDeptService.queryDeptTaxno(configModel.getCompany(), sysDeptEntity.getTaxpayerCode()); if (deptEntity != null) { userOrg = new SysUserOrgEntity(); userOrg.setCompany(configModel.getCompany()); @@ -712,4 +726,12 @@ public class SsoLoginServiceImpl implements SsoLoginService { } } + + public String getTaxNoInfo(String url, String request) { + long startTime = System.currentTimeMillis(); + String body = HttpRequest.post(url).body(request).timeout(300000).execute().body(); + long endTime = System.currentTimeMillis(); + log.debug("{}以字符串调用post请求url:{},耗时:{}", LOGGER_MSG, url, endTime - startTime); + return body; + } } diff --git a/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SysUserServiceImpl.java b/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SysUserServiceImpl.java index b3ac2d73..c5f069b1 100644 --- a/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SysUserServiceImpl.java +++ b/dxhy-admin/src/main/java/com/dxhy/admin/sys/service/impl/SysUserServiceImpl.java @@ -113,6 +113,18 @@ public class SysUserServiceImpl extends ServiceImpl i this.uploadUser(user); } + @Override + public void saveUser(SysUserEntity user,Map taxnos) { + DynamicContextHolder.push(DbConstant.BASICS_WRITE); + user.setCreateTime(DateUtil.date()); + user.setUpdateTime(DateUtil.date()); + // 查询用户关联菜单信息 + Aops.getSelf(this).insertUser(user,taxnos); + this.insertRedis(user); + DynamicContextHolder.push(DbConstant.BASICS_READ); + this.uploadUser(user); + } + @Transactional(rollbackFor = Exception.class) public void insertUser(SysUserEntity user) { user.setCreateTime(new Date()); @@ -133,6 +145,32 @@ public class SysUserServiceImpl extends ServiceImpl i } + @Transactional(rollbackFor = Exception.class) + public void insertUser(SysUserEntity user,Map taxnos) { + user.setCreateTime(new Date()); + String salt = RandomStringUtils.randomAlphanumeric(20); + user.setSalt(salt); + user.setScanType("5"); + user.setPlpassword(Base64.encode(user.getPassword())); + user.setPassword(new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(user.getPassword())); + this.saveOrUpdate(user); + // 保存用户与角色关系 + sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList()); + // 保存客户信息,更新企业税号 + user.getUserOrgEntities().stream().forEach(userOrg -> { + if(StringUtils.isEmpty(userOrg.getTaxno())){ + userOrg.setTaxno(taxnos.get(userOrg.getDeptId())); + } + }); + // 获取关联 数据权限 + sysUserOrgService.saveOrUpdate(user.getUserId(), user.getUserOrgEntities()); + // 保存用户与业务单元关系 + if (user.getBusinessList() != null && user.getBusinessList().size() > 0) { + sysUserBusinessService.saveOrUpdate(user.getUserId(), user.getBusinessList()); + } + + } + @Override public void update(SysUserEntity user) { DynamicContextHolder.push(DbConstant.BASICS_WRITE);