#287 修复切换租户后分配角色后菜单接口数据异常问题

Open
fuyuchuan wants to merge 37 commits from uskycloud/fu-dev into uskycloud/master

+ 15 - 2
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/MceReceiveController.java

@@ -7,6 +7,7 @@ import com.usky.common.log.annotation.Log;
 import com.usky.common.log.enums.BusinessType;
 import com.usky.system.domain.MceReceive;
 import com.usky.system.service.MceReceiveService;
+import com.usky.system.service.vo.MceReceiveResponseVO;
 import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,7 +35,8 @@ public class MceReceiveController {
     /**
      * 消息列表分页
      * @param infoTitle  消息标题
-     * @param infoType  消息标题
+     * @param infoType  消息类型
+     * @param infoTypeBig  消息类型-大类
      * @param startTime  开始时间
      * @param endTime  开始时间
      * @param current      当前页
@@ -44,12 +46,13 @@ public class MceReceiveController {
     @GetMapping("/mceList")
     public ApiResult<CommonPage<Object>> mceList(@RequestParam(value = "infoTitle", required = false) String infoTitle,
                                                  @RequestParam(value = "infoType", required = false) String infoType,
+                                                 @RequestParam(value = "infoTypeBig", required = false) String infoTypeBig,
                                                  @RequestParam(value = "startTime", required = false) String startTime,
                                                  @RequestParam(value = "endTime", required = false) String endTime,
                                                  @RequestParam(value = "id", required = false) Integer id,
                                                  @RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
                                                  @RequestParam(value = "size", required = false, defaultValue = "10") Integer size) {
-        return ApiResult.success(mceReceiveService.mceList(infoTitle, infoType, startTime, endTime, id, current, size));
+        return ApiResult.success(mceReceiveService.mceList(infoTitle, infoType, infoTypeBig, startTime, endTime, id, current, size));
     }
 
     /**
@@ -95,6 +98,16 @@ public class MceReceiveController {
         return ApiResult.success(mceReceiveService.mceReceiveStatic());
     }
 
+    /**
+     * 消息中心分页接口
+     * @return
+     */
+    @GetMapping("/getMceReceiveList")
+    public ApiResult<CommonPage<MceReceiveResponseVO>> getMceReceiveList(@RequestParam(value = "pageNumber", required = false, defaultValue = "1") Integer pageNumber,
+                                                                         @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize) {
+        return ApiResult.success(mceReceiveService.getMceReceiveResponseVOList(pageNumber, pageSize));
+    }
+
     /**
      * 已读
      * @return

+ 3 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysMenuMapper.java

@@ -86,7 +86,9 @@ public interface SysMenuMapper extends CrudMapper<SysMenu> {
      * @param platformId 应用ID
      * @return 应用级菜单列表
      */
-    public List<SysMenu> selectMenuTreeByUserId1(@Param("userId") Long userId,@Param("platformId") Long platformId);
+    public List<SysMenu> selectMenuTreeByUserId1(@Param("userId") Long userId,
+                                                 @Param("platformId") Long platformId,
+                                                 @Param("tenantId") Integer tenantId);
 
     public List<SysMenu> selectMenuTreeByUserIdOne(@Param("tenantId") Integer tenantId);
 

+ 1 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/ISysMenuService.java

@@ -71,7 +71,7 @@ public interface ISysMenuService extends CrudService<SysMenu>
      * @param userId 用户ID
      * @return 菜单列表
      */
-    public List<SysMenu> selectMenuTreeByUserId1(Long userId,Long platformId);
+    public List<SysMenu> selectMenuTreeByUserId1(Long userId,Long platformId, Integer tenantId);
 
     List<SysMenu> selectMenuTreeByUserIdOne(Integer tenantId);
 

+ 5 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/MceReceiveService.java

@@ -4,7 +4,9 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.system.domain.MceReceive;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.system.domain.MceRequestVO;
+import com.usky.system.service.vo.MceReceiveResponseVO;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -17,7 +19,7 @@ import java.util.Map;
  */
 public interface MceReceiveService extends CrudService<MceReceive> {
 
-    CommonPage<Object> mceList(String infoTitle, String infoType, String startTime, String endTime, Integer id, Integer current, Integer size);
+    CommonPage<Object> mceList(String infoTitle, String infoType, String infoTypeBig, String startTime, String endTime, Integer id, Integer current, Integer size);
 
     CommonPage<Object> mceManageList(String infoTitle, String infoType, String startTime, String endTime, Integer current, Integer size);
 
@@ -35,4 +37,6 @@ public interface MceReceiveService extends CrudService<MceReceive> {
 
     boolean deleteById(Integer id);
 
+    CommonPage<MceReceiveResponseVO> getMceReceiveResponseVOList(Integer pageNumber, Integer pageSize);
+
 }

+ 52 - 2
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/MceReceiveServiceImpl.java

@@ -19,6 +19,7 @@ import com.usky.system.mapper.MceSettingMapper;
 import com.usky.system.mapper.SysUserMapper;
 import com.usky.system.service.*;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.system.service.vo.MceReceiveResponseVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -63,7 +64,7 @@ public class MceReceiveServiceImpl extends AbstractCrudService<MceReceiveMapper,
     private MceReceiveMapper mceReceiveMapper;
 
     @Override
-    public CommonPage<Object> mceList(String infoTitle, String infoType, String startTime, String endTime, Integer id, Integer current, Integer size) {
+    public CommonPage<Object> mceList(String infoTitle, String infoType, String infoTypeBig, String startTime, String endTime, Integer id, Integer current, Integer size) {
         List<Object> list = new ArrayList<>();
         LambdaQueryWrapper<MceContent> lambdaQuery1 = Wrappers.lambdaQuery();
         lambdaQuery1.select(MceContent::getId, MceContent::getInfoTitle, MceContent::getInfoContent)
@@ -87,14 +88,32 @@ public class MceReceiveServiceImpl extends AbstractCrudService<MceReceiveMapper,
                     .eq(MceReceive::getReceiverId, SecurityUtils.getUserId())
                     .in(CollectionUtils.isNotEmpty(contentIds), MceReceive::getContentId, contentIds)
                     .orderByDesc(MceReceive::getId);
+
+            if (StringUtils.isNotBlank(infoTypeBig)) {
+                if ("2".equals(infoTypeBig)) {
+                    lambdaQuery.in(MceReceive::getInfoType, "2", "5");
+                }
+            }
+
 //                .inSql(StringUtils.isNotBlank(infoTitle),MceReceive::getContentId,"SELECT id FROM mce_content WHERE " +
 //                        "info_title like '%" + infoTitle + "%' AND tenant_id = "+SecurityUtils.getTenantId()+"");
             page = this.page(page, lambdaQuery);
             if (CollectionUtils.isNotEmpty(page.getRecords())) {
                 for (int i = 0; i < page.getRecords().size(); i++) {
+                    String infoType1 = page.getRecords().get(i).getInfoType();
                     Map<String, Object> map = new HashMap<>();
                     map.put("id", page.getRecords().get(i).getId());
-                    map.put("infoType", page.getRecords().get(i).getInfoType());
+                    map.put("infoType", infoType1);
+
+                    switch (infoType1) {
+                        case "2":
+                        case "5":
+                            map.put("infoTypeBig", "2");
+                            break;
+                        default:
+                            map.put("infoTypeBig", infoType1);
+                    }
+
                     map.put("readFlag", page.getRecords().get(i).getReadFlag());
                     map.put("moduleId", page.getRecords().get(i).getModuleId());
                     map.put("createTime", page.getRecords().get(i).getCreateTime());
@@ -607,4 +626,35 @@ public class MceReceiveServiceImpl extends AbstractCrudService<MceReceiveMapper,
         }
         return f;
     }
+
+    @Override
+    public CommonPage<MceReceiveResponseVO> getMceReceiveResponseVOList(Integer pageNumber, Integer pageSize) {
+        IPage<MceReceive> page = new Page<>(pageNumber, pageSize);
+        Long userId = SecurityUtils.getUserId();
+        List<MceReceiveResponseVO> returnList = new ArrayList<>();
+
+        LambdaQueryWrapper<MceReceive> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(MceReceive::getReceiverId, userId).orderByDesc(MceReceive::getId);
+        page = this.page(page, lambdaQuery);
+        List<MceReceive> mceReceiveList = page.getRecords();
+        List<Integer> contentIdList = mceReceiveList.stream().map(MceReceive::getContentId).distinct().collect(Collectors.toList());
+
+        List<MceContent> mceContentList = mceContentService.list(new LambdaQueryWrapper<MceContent>().in(MceContent::getId, contentIdList));
+
+        for (MceContent mceContent : mceContentList) {
+            MceReceive mceReceive = mceReceiveList.stream().filter(mceReceive1 -> mceReceive1.getContentId().equals(mceContent.getId())).findFirst().get();
+            MceReceiveResponseVO mceReceiveResponseVO = new MceReceiveResponseVO();
+            mceReceiveResponseVO.setMceId(mceReceive.getId());
+            mceReceiveResponseVO.setInfoType(mceContent.getInfoType());
+            mceReceiveResponseVO.setInfoTitle(mceContent.getInfoTitle());
+            mceReceiveResponseVO.setContentId(mceContent.getId());
+            mceReceiveResponseVO.setInfoContent(mceContent.getInfoContent());
+            mceReceiveResponseVO.setCreateTime(mceContent.getCreateTime());
+            mceReceiveResponseVO.setCreateBy(mceContent.getCreateBy());
+            mceReceiveResponseVO.setModuleId(mceReceive.getModuleId());
+            returnList.add(mceReceiveResponseVO);
+        }
+
+        return new CommonPage<>(returnList, page.getTotal(), page.getSize(), page.getCurrent());
+    }
 }

+ 3 - 3
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMenuServiceImpl.java

@@ -172,12 +172,12 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
      * @return 菜单列表
      */
     @Override
-    public List<SysMenu> selectMenuTreeByUserId1(Long userId, Long platformId) {
+    public List<SysMenu> selectMenuTreeByUserId1(Long userId, Long platformId, Integer tenantId) {
         List<SysMenu> menus = null;
         if (1L == userId) {
             menus = menuMapper.selectMenuTreeAll();
         } else {
-            menus = menuMapper.selectMenuTreeByUserId1(userId, platformId);
+            menus = menuMapper.selectMenuTreeByUserId1(userId, platformId, tenantId);
         }
         return getChildPerms(menus, 0);
     }
@@ -340,7 +340,7 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
                         platformRouterVo.setPlatformName(platformVo.getPlatformName());
                         platformRouterVo.setIcon(platformVo.getIcon());
                         List<SysMenu> menus1 = this.selectMenuTreeByUserId1(userId,
-                                platformVo.getId().longValue());
+                                platformVo.getId().longValue(), tenantId);
                         List<RouterVo> routers = new LinkedList<RouterVo>();
                         for (SysMenu menu : menus1) {
                             RouterVo router = new RouterVo();

+ 8 - 8
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysUserServiceImpl.java

@@ -749,15 +749,15 @@ public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUs
 
 
     public List<SysUser> userList() {
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        String userType = null;
-        if (loginUser != null && !"".equals(loginUser)) {
-            userType = loginUser.getSysUser().getUserType();
-        }
+        // LoginUser loginUser = SecurityUtils.getLoginUser();
+        // String userType = null;
+        // if (loginUser != null && !"".equals(loginUser)) {
+        //     userType = loginUser.getSysUser().getUserType();
+        // }
         String userName = null;
-        if ("00".equals(userType)) {
-            userName = SecurityUtils.getUsername();
-        }
+        // if ("00".equals(userType)) {
+        //     userName = SecurityUtils.getUsername();
+        // }
         List<SysUser> list = userMapper.userList(SecurityUtils.getTenantId(), userName);
         return list;
     }

+ 56 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/vo/MceReceiveResponseVO.java

@@ -0,0 +1,56 @@
+package com.usky.system.service.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author fyc
+ * @email yuchuan.fu@chinausky.com
+ * @date 2025/4/8
+ */
+@Data
+public class MceReceiveResponseVO {
+    /**
+     * 消息类型
+     */
+    private String infoType;
+
+    /**
+     * 消息id
+     */
+    private Integer mceId;
+
+    /**
+     * 消息标题
+     */
+    private String infoTitle;
+
+    /**
+     * 消息内容id
+     */
+    private Integer contentId;
+
+    /**
+     * 消息内容
+     */
+    private String infoContent;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 跳转id
+     */
+    private Integer moduleId;
+}

+ 2 - 1
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -204,7 +204,7 @@
         order by m.parent_id, m.order_num
     </select>
 
-    <select id="selectMenuTreeByUserId1" parameterType="Long" resultMap="SysMenuResult">
+    <select id="selectMenuTreeByUserId1" parameterType="map" resultMap="SysMenuResult">
         select distinct m.menu_id,
                         m.parent_id,
                         m.menu_name,
@@ -230,6 +230,7 @@
                  left join sys_user u on u.user_id = ur.user_id
                  left join sys_tenant_menu t on u.tenant_id = t.tenant_id
         where u.user_id = #{userId}
+          and ur.tenant_id = #{tenantId}
           and m.menu_type in ('M', 'C')
           and m.status = 0
           AND ro.status = 0