Parcourir la source

Merge remote-tracking branch 'origin/master'

wangyanygang il y a 4 ans
Parent
commit
7375571555

+ 4 - 0
common/src/main/java/com/huaxu/model/ResultStatus.java

@@ -100,10 +100,14 @@ public enum ResultStatus {
     ACCESS_DISABLED_ERROR(900013, "您的账号已被禁用,如有问题请联系管理员。"),
     PHONE_NUMBER_NOT_FOUND_WECHAT_ERROR(900014, "您微信绑定的手机号尚未注册,请使用平台注册账号进行登录。"),
 
+    TENANT_NAME_ALREADY_EXISTS(900015,"租户名称已存在"),
+
     EXSIT_IS_PARENT_ERROR(800001,"存在下级信息不能删除"),
+    EXSIT_IS_DICTCODE_ERROR(800002,"存在相同字典编码不能新增"),
 
     SYSTEM_ERROR(999999, "系统错误"),
     PARAM_ERROR(700001, "参数缺失"),
+
     ;
 
     private final int status;

+ 11 - 11
user_auth/src/main/java/com/huaxu/service/impl/UserServiceImpl.java

@@ -183,15 +183,14 @@ public class UserServiceImpl implements UserService {
         LoginUser loginUser = (LoginUser) oAuth2Authentication.getPrincipal();
         List<ProgramItem>programItems=new ArrayList<>();
 
-        Permission permission=new Permission();
-        permission.setPermissionType(2);
-       /* permission.setRoleState(-1);
-        if(permission.getRoleState()==-1){
+        Permission permission= findPermission(user);
+        if(permission==null||(permission!=null&&permission.getRoleState()==0)){
             return null;
-        }*/
+        }
+
         getDataPermission(permission.getPermissionType(),user,programItems);
         //角色必须是ROLE_开头,其余的是用户功能权限
-        /* List<Permission> permissionList =findPermission(user);
+        /*
         Integer permissionType = permissionList.get(0).getPermissionType();
         List<ProgramItem> programItemList = newArrayList();
         //获取数据权限
@@ -257,9 +256,7 @@ public class UserServiceImpl implements UserService {
     }
     private    Map<Integer, List<Org>> getAllOrgs(String orgType,String tenantId){
         Org org=new Org();
-        if(org.equals("department")){
-            org.setOrgType(orgType);
-        }
+        org.setOrgType(orgType);
         org.setTenantId(tenantId);
         List<Org> orgs = userMapper.findOrgs(org);
         Map<Integer, List<Org>> collect = orgs.stream().
@@ -279,10 +276,13 @@ public class UserServiceImpl implements UserService {
             });
         }
     }
-    private List<Permission>findPermission(User user){
+    private Permission findPermission(User user){
         List<Permission> permissionList = userMapper.findPermission(user);
+        if(permissionList.size()==0){
+            return null;
+        }
 
-        return permissionList;
+        return permissionList.get(0);
     }
     @Override
     public boolean logOut(String token) {

+ 4 - 4
user_auth/src/main/resources/mapper/UserMapper.xml

@@ -236,17 +236,17 @@
         </where>
     </select>
     <select id="findPermission" resultType="com.huaxu.model.Permission">
-        select e.NAME,e.MENU_IMAGE overIcon,e.LINK_PATH path,e.id,e.PARENT_MENU_ID parentId
-          e.PERMISSION_FLAG permission, c.PERMISSION_TYPE ,c.id roleId,c.ROLE_STATE roleState
+        select  c.PERMISSION_TYPE ,c.id roleId,c.ROLE_STATE roleState
           from uims_user a join uims_user_role b on a.id=b.USER_ID
         join uims_role c on b.ROLE_ID= c.ID
-        join uims_role_menu d on c.ID=d.ROLE_ID
-        join uims_menu e on e.id=d.MENU_ID
+        where a.STATUS !=-1 and b.status!=-1 and c.status!=-1
+        and a.id=#{id}
     </select>
     <select id="findOrgRole" resultType="com.huaxu.model.ProgramItem">
          select d.ORG_ID orgId,a.TENANT_ID  code from uims_user a join uims_user_role b on a.id=b.USER_ID
         join uims_role c on b.ROLE_ID= c.ID
         join uims_role_org d on c.ID=d.ROLE_ID
+        where a.id=#{id}
     </select>
     <select id="findOrgs" resultType="com.huaxu.entity.Org">
         select    ID, TENANT_ID, ORG_TYPE,

+ 4 - 0
user_center/src/main/java/com/huaxu/controller/DictController.java

@@ -58,6 +58,10 @@ public class DictController {
     @RequestMapping(value = "insert", method = RequestMethod.POST)
     @ApiOperation(value = "插入数据字典配置列表")
     public AjaxMessage<Integer> insert(@ApiParam(value = "数据字典配置", required = true) @RequestBody Dict dict) {
+        if(dictService.countByCodePid(dict)>0)
+        {
+            return new AjaxMessage<>(ResultStatus.EXSIT_IS_DICTCODE_ERROR);
+        }
         LoginUser currentUser = UserUtil.getCurrentUser();
         if(currentUser!=null) {
             dict.setCreateBy(currentUser.getUsername());

+ 11 - 5
user_center/src/main/java/com/huaxu/controller/TenantController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.common.FileUploadUtil;
 import com.huaxu.dto.TenantDto;
 import com.huaxu.entity.TenantEntity;
+import com.huaxu.entity.UserEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
@@ -37,8 +38,6 @@ public class TenantController {
      */
     @Autowired
     private TenantService tenantService;
-    @Autowired
-    private UserService userService;
 
     @Value("${UMIS.sys_config_path}")
     private String baseDir;
@@ -100,10 +99,10 @@ public class TenantController {
     @RequestMapping(value = "insert", method = RequestMethod.POST)
     @ApiOperation(value = "插入租户信息")
     public AjaxMessage<Integer> insert(@ApiParam(value = "租户信息", required = true) @RequestBody TenantDto tenantDto) {
-        if (tenantDto.getPhone() != null) {
-            boolean isExsit = userService.checkMobileUnique(tenantDto.getPhone());
+        if (tenantDto.getTenantName() != null) {
+            boolean isExsit = tenantService.checkTenantNameUnique(tenantDto);
             if (isExsit) {
-                return new AjaxMessage<>(ResultStatus.MEMBER_TELPHONE_ALREADY_EXISTS, 0);
+                return new AjaxMessage<>(ResultStatus.TENANT_NAME_ALREADY_EXISTS, 0);
             }
         }
         int result = tenantService.insert(tenantDto);
@@ -120,6 +119,13 @@ public class TenantController {
     @RequestMapping(value = "update", method = RequestMethod.POST)
     @ApiOperation(value = "修改租户信息")
     public AjaxMessage<Integer> update(@ApiParam(value = "租户信息", required = true) @RequestBody TenantDto tenantDto) {
+        if (tenantDto.getTenantName() != null) {
+            boolean isExsit = tenantService.checkTenantNameUnique(tenantDto);
+            if (isExsit) {
+                return new AjaxMessage<>(ResultStatus.TENANT_NAME_ALREADY_EXISTS, 0);
+            }
+        }
+
         int result = tenantService.update(tenantDto);
         return new AjaxMessage<>(ResultStatus.OK, result);
 

+ 7 - 0
user_center/src/main/java/com/huaxu/dao/DictMapper.java

@@ -81,4 +81,11 @@ public interface DictMapper {
 
     IPage<Dict> selectPage(IPage<Dict> page, Dict dict);
 
+    /**
+     * 字典编码和父配置ID数量
+     *
+     * @return 数据总数
+     */
+    int countByCodePid(Dict dict);
+
 }

+ 1 - 0
user_center/src/main/java/com/huaxu/dao/RoleOrgMapper.java

@@ -80,6 +80,7 @@ public interface RoleOrgMapper {
     int count();
 
     IPage<RoleOrg> selectPage(IPage<RoleOrg> page, RoleOrg roleOrg);
+    int deleteOrgRole(Integer id);
 
 
 }

+ 6 - 0
user_center/src/main/java/com/huaxu/dao/TenantMapper.java

@@ -80,6 +80,12 @@ public interface TenantMapper  {
      */
     int count();
 
+    /**
+     * 根据租户名字查询租户id
+     * @param tenantName
+     * @return
+     */
+    List<Integer> countIds( String tenantName);
     /**
      *  分页查询
      * @param page

+ 6 - 0
user_center/src/main/java/com/huaxu/service/DictService.java

@@ -77,4 +77,10 @@ public interface DictService {
     int count();
 
     IPage<Dict> selectPage(Dict app, IPage<Dict> page);
+    /**
+     * 字典编码和父配置ID数量
+     *
+     * @return 数据总数
+     */
+    int countByCodePid(Dict dict);
 }

+ 7 - 0
user_center/src/main/java/com/huaxu/service/TenantService.java

@@ -68,5 +68,12 @@ public interface TenantService {
      */
     int count();
 
+    /**
+     * 校验租户名称唯一
+     * @param tenantDto
+     * @return
+     */
+    boolean checkTenantNameUnique(TenantDto tenantDto);
+
     IPage<TenantDto> selectPage( IPage<TenantDto> page, TenantDto tenantDto);
 }

+ 10 - 0
user_center/src/main/java/com/huaxu/service/impl/DictServiceImpl.java

@@ -116,4 +116,14 @@ public class DictServiceImpl implements DictService {
     public IPage<Dict> selectPage(Dict dict, IPage<Dict> page) {
         return this.dictMapper.selectPage(page, dict);
     }
+
+    /**
+     * 字典编码和父配置ID数量
+     *
+     * @return 数据总数
+     */
+    @Override
+    public int countByCodePid(Dict dict) {
+        return this.dictMapper.countByCodePid(dict);
+    }
 }

+ 10 - 8
user_center/src/main/java/com/huaxu/service/impl/RoleServiceImpl.java

@@ -82,14 +82,17 @@ public class RoleServiceImpl implements RoleService {
     @Override
     @Transactional
     public int insert(RoleRequestDto roleRequestDto) {
-        configDataPermission(roleRequestDto);
+
         Role role = roleRequestDto.getRole();
         LoginUser currentUser = UserUtil.getCurrentUser();
         role.setTenantId(currentUser.getTenantId());
         role.setCreateBy(currentUser.getUsername());
         role.setDateCreate(new Date());
         role.setStatus(0);
-        return this.roleMapper.insert(role);
+        int insert = this.roleMapper.insert(role);
+        roleRequestDto.getRole().setId(role.getId());
+        configDataPermission(roleRequestDto);
+        return insert;
     }
 
     /**
@@ -116,11 +119,11 @@ public class RoleServiceImpl implements RoleService {
 
 
         //將禁用的角色放入redis,作为登出判断
-        if(role.getRoleState()==-1){
+        if(role.getRoleState()==0){
             String roleKey="disableRole:"+role.getId();
             redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
 
-        } if(role.getRoleState()==0){
+        } if(role.getRoleState()==1){
             String roleKey="disableRole:"+role.getId();
             redisUtil.del(roleKey.getBytes());
 
@@ -132,16 +135,15 @@ public class RoleServiceImpl implements RoleService {
     }
     private void configDataPermission(RoleRequestDto roleRequestDto){
         if(roleRequestDto.getRole().getPermissionType()==5){
-            RoleOrg roleOrgDelete=new RoleOrg();
-            Integer roleId=roleRequestDto.getRole().getId();
-            roleOrgDelete.setRoleId(roleId);
-            roleOrgMapper.update(roleOrgDelete);
+           Integer roleId=roleRequestDto.getRole().getId();
+           roleOrgMapper.deleteOrgRole(roleId);
             List<Integer> orgIds = roleRequestDto.getIds();
             List<RoleOrg>roleOrgs=new ArrayList<>();
             orgIds.forEach(id->{
                 RoleOrg roleOrg = new RoleOrg();
                 roleOrg.setRoleId(roleId);
                 roleOrg.setOrgId(id);
+                roleOrg.setStatus(0);
                 roleOrgs.add(roleOrg);
             });
 

+ 113 - 21
user_center/src/main/java/com/huaxu/service/impl/TenantServiceImpl.java

@@ -1,14 +1,23 @@
 package com.huaxu.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huaxu.common.ToolUtil;
 import com.huaxu.dao.TenantMapper;
+import com.huaxu.dto.RoleRequestDto;
 import com.huaxu.dto.TenantDto;
+import com.huaxu.entity.Org;
+import com.huaxu.entity.Role;
+import com.huaxu.entity.TenantEntity;
 import com.huaxu.entity.UserEntity;
 import com.huaxu.model.LoginUser;
+import com.huaxu.service.OrgService;
+import com.huaxu.service.RoleService;
 import com.huaxu.service.TenantService;
 import com.huaxu.service.UserService;
 import com.huaxu.util.Snowflake;
 import com.huaxu.util.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -24,12 +33,26 @@ import java.util.stream.Collectors;
  */
 @Service("tenantService")
 public class TenantServiceImpl implements TenantService {
-
-    @Resource
-    private TenantMapper tenantMapper;
-
+    /**
+     * 租户
+     */
      @Resource
+     private TenantMapper tenantMapper;
+    /**
+     * 用户
+     */
+     @Autowired
      private UserService userService;
+    /**
+     * 角色
+     */
+    @Autowired
+     private RoleService roleService;
+    /**
+     * 机构
+     */
+    @Autowired
+    private OrgService orgService;
 
     /**
      * 通过ID查询单条数据
@@ -78,13 +101,50 @@ public class TenantServiceImpl implements TenantService {
     public Integer insert(TenantDto tenantDto) {
         LoginUser loginUser = UserUtil.getCurrentUser();
         //创建租户信息
-        tenantDto.setCreateBy(loginUser.getUsername());
+        if(loginUser != null){
+            tenantDto.setUpdateBy(loginUser.getUsername());
+            tenantDto.setCreateBy(loginUser.getUsername());
+        }
         tenantDto.setDateCreate(new Date());
-        tenantDto.setUpdateBy(loginUser.getUsername());
         tenantDto.setDateUpdate(new Date());
         tenantDto.setCode(Snowflake.generateId().toString());
         tenantDto.setStatus(1);
+        tenantDto.setTenantState(1);
         tenantMapper.insert(tenantDto);
+
+        //创建租户菜单信息
+        if(tenantDto.getTenantMenuIds().size()>0){
+            tenantMapper.createTenantMenu(tenantDto.getCreateBy(),tenantDto.getId(),tenantDto.getTenantMenuIds());
+        }
+        //创建角色
+        RoleRequestDto roleRequestDto = new RoleRequestDto();
+        Role role = new Role();
+        role.setRoleName(tenantDto.getTenantName());
+        role.setDescription(tenantDto.getTenantName() +"初始化角色");
+        role.setRoleState(1);
+        role.setPermissionType(1);
+        role.setStatus(1);
+        roleRequestDto.setRole(role);
+        //查询租户菜单id
+//        List<Integer > tenantMenuIds = tenantMapper.selectTenantMenuIds(tenantDto.getId());
+        roleRequestDto.setIds(tenantDto.getTenantMenuIds());
+        //插入角色
+        roleService.insert(roleRequestDto);
+        //插入角色菜单(租户菜单id)
+        roleService.updateRoleMenuRelations(roleRequestDto);
+
+        /*创建机构*/
+        Org org = new Org();
+        org.setOrgLeaderName(tenantDto.getUserName());
+        org.setOrgLeaderPhone(tenantDto.getPhone());
+        org.setOrgName(tenantDto.getTenantName());
+        org.setOrgState(1);
+        org.setStatus(1);
+        org.setOrgType("company");  //机构类型
+        org.setParentId(0);
+        orgService.insert(org);
+
+
         //创建管理员信息
         UserEntity userEntity =new UserEntity();
         userEntity.setTenantId(tenantDto.getCode());
@@ -96,11 +156,10 @@ public class TenantServiceImpl implements TenantService {
         userEntity.setPhone(tenantDto.getPhone());
         userEntity.setUsername(tenantDto.getUserName());
         userEntity.setUserType("1");//租户系统管理员
+        userEntity.setRoleId(role.getId().longValue()); //赋值角色
+        userEntity.setCompanyOrgId(org.getId().longValue());//公司
+        userEntity.setDeptOrgId(org.getId().longValue());//机构
         userService.addUser(userEntity);
-        //创建租户菜单信息
-        if(tenantDto.getTenantMenuIds().size()>0){
-            tenantMapper.createTenantMenu(tenantDto.getCreateBy(),tenantDto.getId(),tenantDto.getTenantMenuIds());
-        }
         return 1;
     }
 
@@ -118,20 +177,13 @@ public class TenantServiceImpl implements TenantService {
             return 0;
         }
         //修改租户信息
-        tenantDto.setUpdateBy(loginUser.getUsername());
+        if(loginUser != null){
+            tenantDto.setUpdateBy(loginUser.getUsername());
+        }
         tenantDto.setDateUpdate(new Date());
 
         tenantMapper.update(tenantDto);
-        //修改管理员信息
-        UserEntity userEntity =new UserEntity();
-        userEntity.setId(tenantDto.getUserId());
-        userEntity.setTenantId(tenantDto.getCode());
-        userEntity.setUpdateBy(tenantDto.getUpdateBy());
-        userEntity.setDateUpdate(new Date());
-        userEntity.setPhone(tenantDto.getPhone());
-        userEntity.setUsername(tenantDto.getUserName());
-        userEntity.setUserType("1");//租户系统管理员
-        userService.updateUserById(userEntity);
+
         //修改租户菜单信息
         //界面传回的租户菜单id
         List<Integer > newTenantMenuIds = tenantDto.getTenantMenuIds();
@@ -150,6 +202,28 @@ public class TenantServiceImpl implements TenantService {
         if(deleteTenantMenuIds.size()>0){
             tenantMapper.deleteTenantMenuIds(tenantDto.getId(),deleteTenantMenuIds);
         }
+        //修改管理员信息
+        UserEntity userEntity =userService.findUserById(tenantDto.getUserId());
+        userEntity.setUpdateBy(tenantDto.getUpdateBy());
+        userEntity.setDateUpdate(new Date());
+        userEntity.setPhone(tenantDto.getPhone());
+        userEntity.setUsername(tenantDto.getUserName());
+        userService.updateUserById(userEntity);
+
+        //创建角色
+        RoleRequestDto roleRequestDto = new RoleRequestDto();
+        Role role = roleService.selectById(userEntity.getRoleId().intValue());
+        role.setRoleName(tenantDto.getTenantName());
+        role.setDescription(tenantDto.getTenantName() +"初始化角色");
+        roleRequestDto.setRole(role);
+        //查询租户菜单id
+//        List<Integer > tenantMenuIds = tenantMapper.selectTenantMenuIds(tenantDto.getId());
+
+        roleRequestDto.setIds(newTenantMenuIds);
+        //插入角色
+        roleService.update(roleRequestDto);
+        //插入角色菜单(租户菜单id)
+        roleService.updateRoleMenuRelations(roleRequestDto);
 
         return 1;
     }
@@ -186,4 +260,22 @@ public class TenantServiceImpl implements TenantService {
     public IPage<TenantDto> selectPage(IPage<TenantDto> page, TenantDto tenantDto) {
         return tenantMapper.selectPage(page, tenantDto);
     }
+
+    public boolean checkTenantNameUnique(TenantDto tenantDto) {
+        List<Integer> tenantIds = tenantMapper.countIds(tenantDto.getTenantName());
+
+        if(tenantIds.size()>1){ //名字匹配多个结果
+            return true;
+        }else if(tenantIds.size() == 0 ){   //没有匹配的结果
+            return false;
+        }else if(ToolUtil.isEmpty(tenantDto.getId())){  //新增情况匹配到一个结果
+            return true;
+        }else if(!tenantDto.getId().equals(tenantIds.get(0))){ //修改时匹配到一个结果,但id不相等
+            return true;
+        }else { //修改时匹配到一个结果且id相等
+            return false;
+        }
+
+    }
+
 }

+ 16 - 0
user_center/src/main/resources/mapper/DictMapper.xml

@@ -176,4 +176,20 @@
         </where>
         order by DICT_NAME,DICT_VALUE
     </select>
+    <!-- 字典编码和父配置ID数量 -->
+    <select id="countByCodePid" resultType="int">
+        select count(*) from uims_dict
+        <where>
+            <if test="dictCode != null and dictCode != ''">
+                and DICT_CODE = #{dictCode}
+            </if>
+            <if test="parentDictId != null and parentDictId != ''">
+                and PARENT_DICT_ID = #{parentDictId}
+            </if>
+            <if test="parentDictId == null">
+                and PARENT_DICT_ID IS NULL
+            </if>
+            and STATUS =1
+        </where>
+    </select>
 </mapper>

+ 7 - 3
user_center/src/main/resources/mapper/RoleOrgMapper.xml

@@ -39,6 +39,7 @@
         <include refid="Base_Column_List"/>
         from uims_role_org
         <where>
+            and status != -1
             <if test="id != null">
                 and ID = #{id}
             </if>
@@ -48,9 +49,7 @@
             <if test="orgId != null">
                 and ORG_ID = #{orgId}
             </if>
-            <if test="status != null">
-                and STATUS = #{status}
-            </if>
+
             <if test="dateCreate != null">
                 and DATE_CREATE = #{dateCreate}
             </if>
@@ -117,6 +116,7 @@
         delete from uims_role_org where ID = #{id}
     </delete>
 
+
     <!-- 总数 -->
     <select id="count" resultType="int">
         select count(*) from uims_role_org
@@ -152,4 +152,8 @@
             </if>
         </where>
     </select>
+    <update id="deleteOrgRole">
+        update uims_role_org set STATUS=-1 where
+        ROLE_ID=#{id}
+    </update>
 </mapper>

+ 14 - 4
user_center/src/main/resources/mapper/TenantMapper.xml

@@ -21,8 +21,8 @@
         left join (
 			select d.DICT_CODE,d.DICT_VALUE
 			from uims_dict p
-			left join uims_dict d on d.PARENT_DICT_ID=p.id
-			where p.DICT_CODE = 'SYSTEM_TENANT_TYPE'
+			left join uims_dict d on d.PARENT_DICT_ID=p.id and d.status =1
+			where p.DICT_CODE = 'SYSTEM_TENANT_TYPE'and p.status =1
         )dict on dict .DICT_CODE= t.TENANT_TYPE
     </sql>
     <select id="selectById" resultType="com.huaxu.dto.TenantDto">
@@ -30,7 +30,7 @@
         <include refid="Base_Column_List"/>
         from uims_tenant t
         <include refid="tenantJoins"/>
-        where t.ID = #{id}
+        where t.ID = #{id} and t.status = 1
     </select>
 
     <!-- 查询全部 -->
@@ -39,6 +39,7 @@
         <include refid="Base_Column_List"/>
         from uims_tenant t
         <include refid="tenantJoins"/>
+        where t.status = 1
     </select>
 
     <!--通过实体作为筛选条件查询-->
@@ -48,6 +49,7 @@
         from uims_tenant t
         <include refid="tenantJoins"/>
         <where>
+            t.status = 1
             <if test="tenantName != null and tenantName != ''">
                 and TENANT_NAME like concat('%',#{tenantName},'%')
             </if>
@@ -117,13 +119,20 @@
 
     <!--通过主键删除-->
     <delete id="deleteById">
-        delete from uims_tenant where ID = #{id}
+        update  uims_tenant set status = 0 where ID = #{id}
     </delete>
 
     <!-- 总数 -->
     <select id="count" resultType="int">
         select count(*) from uims_tenant
     </select>
+    <select id="countIds" resultType="java.lang.Integer">
+        select id from uims_tenant
+        <where>
+            TENANT_NAME =#{tenantName}
+        </where>
+    </select>
+
     <!-- 分页查询 -->
     <select id="selectPage" resultType="com.huaxu.dto.TenantDto">
         select
@@ -131,6 +140,7 @@
         from uims_tenant t
         <include refid="tenantJoins"/>
         <where>
+            t.status = 1
             <if test="tenantDto.tenantName != null and tenantDto.tenantName != ''">
                 and t.TENANT_NAME like concat('%',#{tenantDto.tenantName},'%')
             </if>