Преглед на файлове

add data cache on 2020.6.10

jiequan.bi преди 5 години
родител
ревизия
5e23117142

+ 5 - 16
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java

@@ -11,9 +11,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.ctop.entity.Project;
 import org.jeecg.modules.ctop.entity.ProjectMember;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
@@ -22,6 +24,7 @@ import org.jeecg.modules.ctop.service.IProjectService;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -353,22 +356,8 @@ public class ProjectMemberController {
     public Result<List<Map<String, Object>>> getProjectAccountBy() {
         Result<List<Map<String, Object>>> resultBody = new Result<>();
         try {
-            List<Integer> mediaList = new ArrayList<>();
-            mediaList.add(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INT);
-            mediaList.add(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INSIDE_INT);
-            //查询登录账号下的项目
-            List<ProjectMember> projectMemberList = projectMemberService.getProjects(mediaList);
-            if (projectMemberList.isEmpty()) {
-                resultBody.error500("账户下未找到项目");
-                return resultBody;
-            }
-            List<Map<String, Object>> result = new ArrayList<>();
-            projectMemberList.forEach(ProjectMember -> {
-                Map<String, Object> temp=projectMemberService.queryAccountByProjectId(ProjectMember);
-                if(temp!=null){
-                    result.add(temp);
-                }
-            });
+            String userId=((LoginUser) SecurityUtils.getSubject().getPrincipal()).getId();
+            List<Map<String, Object>> result = projectMemberService.getProjectAccountByUserId(userId);
             resultBody.setSuccess(true);
             resultBody.setResult(result);
         } catch (Exception e) {

+ 2 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ProjectMember.java

@@ -13,6 +13,7 @@ import lombok.experimental.Accessors;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -27,7 +28,7 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "ctop_project_member对象", description = "项目成员")
-public class ProjectMember {
+public class ProjectMember implements  Serializable{
 
     /**
      * id

+ 2 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IProjectMemberService.java

@@ -22,5 +22,6 @@ public interface IProjectMemberService extends IService<ProjectMember> {
 
     List<ProjectMember> getProjects(List<Integer> mediaIds);
 
-    Map<String,Object> queryAccountByProjectId(ProjectMember projectMember);
+    List<Map<String, Object>> getProjectAccountByUserId(String userId);
+
 }

+ 26 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectMemberServiceImpl.java

@@ -4,6 +4,8 @@ import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.UserAllocationMapper;
 import cn.com.ctop.common.module.service.ISysRoleService;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.common.module.utils.SpringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.shiro.SecurityUtils;
@@ -14,6 +16,7 @@ import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
 import org.jeecg.modules.ctop.service.IProjectMemberService;
 import org.jeecg.modules.system.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -90,7 +93,29 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
         return projectMemberList;
     }
 
-    public Map<String, Object> queryAccountByProjectId(ProjectMember projectMember) {
+    @Override
+    @Cacheable(value = "cache_project_account",key="'projectAccount:userId='+#userId",unless = "#result ==null")
+    public List<Map<String, Object>> getProjectAccountByUserId(String userId) {
+        List<Map<String, Object>> result = new ArrayList<>();
+        List<Integer> mediaList = new ArrayList<>();
+        mediaList.add(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INT);
+        mediaList.add(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INSIDE_INT);
+        //查询登录账号下的项目
+        List<ProjectMember> projectMemberList = this.getProjects(mediaList);
+        if (projectMemberList.isEmpty()) {
+            return result;
+        }
+        projectMemberList.forEach(ProjectMember -> {
+            Map<String, Object> temp=this.queryAccountByProjectId(ProjectMember);
+            if(temp!=null){
+                result.add(temp);
+            }
+        });
+        return result;
+    }
+
+
+    private Map<String, Object> queryAccountByProjectId(ProjectMember projectMember) {
         Map<String, Object> temp = new HashMap<>();
         temp.put("project", projectMember);
         QueryWrapper<UserAllocation> queryWrapper = new QueryWrapper<>();

+ 2 - 1
module-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java

@@ -12,6 +12,7 @@ import lombok.experimental.Accessors;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -27,7 +28,7 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "ctop_user_allocation对象", description = "用户分配")
-public class UserAllocation {
+public class UserAllocation implements Serializable {
 
     /**
      * 主键ID