浏览代码

【5632】角色设置修改后在用户角色信息页面不生效

ZhuJiaHao 7 月之前
父节点
当前提交
4bc3f896d4

+ 12 - 0
ibps-model-root/modules/org-model/src/main/resources/com/lc/ibps/org/party/persistence/mapping/PartyRoleMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lc.ibps.platform.dao.PartyRoleProviderDao">
+
+    <select id="getUserRoleJobByUserId" parameterType="string" resultType="string">
+        select JOB_ from IBPS_PARTY_EMPLOYEE where ID_ = #{userId}
+    </select>
+
+    <update id="updateUserRoleJobByUserId" parameterType="string">
+        update IBPS_PARTY_EMPLOYEE set JOB_ = #{job} where ID_ = #{userId}
+    </update>
+</mapper>

+ 8 - 0
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/org/provider/PartyRoleProvider.java

@@ -11,6 +11,8 @@ import java.util.Set;
 
 import javax.annotation.Resource;
 
+import com.lc.ibps.platform.service.PartyRoleProviderService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -93,6 +95,8 @@ public class PartyRoleProvider extends GenericProvider implements IPartyRoleServ
 	private IPartyPositionService partyPositionService;
 	@Resource
 	private SubSystemRepository subSystemRepository;
+	@Autowired
+	private PartyRoleProviderService partyRoleProviderService;
 	
 	/**
 	 * 根据角色ID获取角色信息包含系统信息
@@ -579,6 +583,8 @@ public class PartyRoleProvider extends GenericProvider implements IPartyRoleServ
 		try {
 			PartyRole partyRole = partyRoleRepository.newInstance();
 			partyRole.addUser(userIds, roleId);
+			//更新用户权限表的JOB_字段内容
+			partyRoleProviderService.addUserRoleForJob(roleId,userIds);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.org.provider.PartyRoleProvider.addUser"));
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_ROLE.getCode(), I18nUtil.getMessage(StateEnum.ERROR_ROLE.getCode()+""), e);
@@ -627,6 +633,8 @@ public class PartyRoleProvider extends GenericProvider implements IPartyRoleServ
 		try {
 			PartyRole partyRole = partyRoleRepository.newInstance();
 			partyRole.removeUser(roleId, userIds);
+			//更新用户权限表的JOB_字段内容
+			partyRoleProviderService.deleteUserRoleForJob(roleId,userIds);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.org.provider.PartyRoleProvider.removeUser"));
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_ROLE.getCode(), I18nUtil.getMessage(StateEnum.ERROR_ROLE.getCode()+""), e);

+ 14 - 0
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/platform/dao/PartyRoleProviderDao.java

@@ -0,0 +1,14 @@
+package com.lc.ibps.platform.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface PartyRoleProviderDao {
+    List<String> getUserRoleJobByUserId(@Param("userId")String userId);
+
+    void updateUserRoleJobByUserId(@Param("userId")String userId,@Param("job")String job);
+
+}

+ 89 - 0
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/platform/service/PartyRoleProviderService.java

@@ -0,0 +1,89 @@
+package com.lc.ibps.platform.service;
+
+
+
+import com.lc.ibps.platform.dao.PartyRoleProviderDao;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Service
+public class PartyRoleProviderService {
+
+
+    @Autowired
+    PartyRoleProviderDao partyRoleProviderDao;
+
+
+    /**
+     * 增加用户角色
+     * 仅限于更新IBPS_PARTY_EMPLOYEE表的JOB_字段内容
+     * @param roleId 角色编号
+     * @param userIds 用户编号
+     */
+    public void addUserRoleForJob(String roleId, String[] userIds){
+        /*
+        传入用户id,通过查询IBPS_PARTY_EMPLOYEE表的ID_字段,查询出该用户的JOB_字段内容。
+        JOB_字段内容为多个角色id(roleId)用逗号拼接而成。
+        判断JOB_字段是否包含该roleId,如果不包含,则拼接上新的roleId,并更IBPS_PARTY_EMPLOYEE表的该用户的JOB_字段
+         */
+        for (String userId : userIds) {
+            String jobs = new String();
+            //通过用户id,查询出JOB_字段内容(即该用户所属角色)
+            List<String> jobList = partyRoleProviderDao.getUserRoleJobByUserId(userId);
+            //如果该用户已有角色,则拼接上新的角色编号
+            if(null != jobList && !jobList.isEmpty()){
+                //JOB_字段内容为多个角色id(roleId)用逗号拼接而成,转成list
+                List<String> list = Stream.of(jobList.get(0).split(",")).collect(Collectors.toList());
+                //判断新增的角色编号是否已经有重复,避免重复拼接
+                if(!list.contains(roleId)){
+                    list.add(roleId);
+                }
+                jobs = String.join(",",list);
+
+            }else {
+                //如果该用户还没有任何角色,则直接更新为JOB_字段内容
+                jobs = roleId;
+            }
+
+            //更新IBPS_PARTY_EMPLOYEE表的JOB_字段
+            partyRoleProviderDao.updateUserRoleJobByUserId(userId,jobs);
+        }
+    }
+
+
+    /**
+     * 删除用户角色
+     * 仅限于更新IBPS_PARTY_EMPLOYEE表的JOB_字段内容
+     * @param roleId 角色编号
+     * @param userIds 用户编号
+     */
+    public void deleteUserRoleForJob(String roleId, String[] userIds){
+        /*
+        传入用户id,通过查询IBPS_PARTY_EMPLOYEE表的ID_字段,查询出该用户的JOB_字段内容。
+        JOB_字段内容为多个角色id(roleId)用逗号拼接而成。
+        判断JOB_字段是否包含该roleId,如果包含,则删除该roleId,并更IBPS_PARTY_EMPLOYEE表的该用户的JOB_字段
+         */
+        for (String userId : userIds) {
+            String jobs = new String();
+            //通过用户id,查询出JOB_字段内容(即该用户所属角色)
+            List<String> jobList = partyRoleProviderDao.getUserRoleJobByUserId(userId);
+            //如果该用户已有角色,则删除对应的角色
+            if(null != jobList && !jobList.isEmpty()){
+                //JOB_字段内容为多个角色id(roleId)用逗号拼接而成,转成list
+                List<String> list = Stream.of(jobList.get(0).split(",")).collect(Collectors.toList());
+                if(list.contains(roleId)){
+                    list.remove(roleId);
+                }
+                jobs = String.join(",",list);
+            }
+
+            //更新IBPS_PARTY_EMPLOYEE表的JOB_字段
+            partyRoleProviderDao.updateUserRoleJobByUserId(userId,jobs);
+        }
+    }
+}

+ 2 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/PlatformApplication.java

@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -49,6 +50,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 	org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration.class*/
 })
 @ImportResource(locations={"classpath:conf/ibps-context.xml"})
+@MapperScan({"com.lc.ibps.*.mapper","com.lc.ibps.*.dao"})
 public class PlatformApplication extends AbstractBasicCommandLineRunner {
 
 	private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(PlatformApplication.class);