From 9486766c806fe1d9e082b2fd02ea1cc558f1b443 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 08 五月 2025 09:21:57 +0800
Subject: [PATCH] bug修改

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java |  215 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 151 insertions(+), 64 deletions(-)

diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java
index 95e930c..398d92d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java
@@ -8,6 +8,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.course.feignClient.activity.HuiminCardClient;
 import com.dsh.course.feignClient.activity.model.THuiminCard;
+import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
 import com.dsh.guns.core.page.PageInfoBT;
 import com.dsh.guns.modular.system.model.*;
@@ -16,16 +17,16 @@
 import com.dsh.guns.modular.system.service.TOperatorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
- * 惠民卡控制器
+ * 玩湃惠民卡控制器
  *
  * @author fengshuonan
  * @Date 2025-03-29 17:41:25
@@ -46,7 +47,7 @@
     private ITSiteService tSiteService;
 
     /**
-     * 跳转到惠民卡首页
+     * 跳转到玩湃惠民卡首页
      */
     @RequestMapping("")
     public String index() {
@@ -54,11 +55,12 @@
     }
 
     /**
-     * 跳转到添加惠民卡
+     * 跳转到添加玩湃惠民卡
      */
     @RequestMapping("/tHuiminCard_add")
-    public String tHuiminCardAdd() {
-
+    public String tHuiminCardAdd(Model model) {
+        User user = UserExt.getUser();
+        model.addAttribute("objectType", user.getObjectType());
         return PREFIX + "tHuiminCard_add.html";
     }
 
@@ -66,30 +68,40 @@
      * 跳转到详情页面
      */
     @RequestMapping("/tHuiminCard_detail/{id}")
-    public String tHuiminCardDetail(@PathVariable("id") Integer id) {
-        THuiminCard byId = huiminCardClient.getById(id);
-        Date startTime = byId.getStartTime();
-        if (startTime != null){
-            byId.setStartTimeStr(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss"));
-        }
-        Date endTime = byId.getEndTime();
-        if (endTime != null){
-            byId.setEndTimeStr(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss"));
-        }
-        String jsonString = JSONObject.toJSONString(byId);
-        setAttr("tHuiminCard", jsonString);
+    public String tHuiminCardDetail(@PathVariable("id") Integer id,Model model) {
+        User user = UserExt.getUser();
+        model.addAttribute("objectType", user.getObjectType());
         return PREFIX + "tHuiminCard_detail.html";
+    }
+
+    /**
+     * 获取玩湃惠民卡详情
+     */
+    @RequestMapping("/getDetail")
+    @ResponseBody
+    public THuiminCard getDetail(Integer id,Model model) {
+        User user = UserExt.getUser();
+        model.addAttribute("objectType", user.getObjectType());
+        return huiminCardClient.getById(id);
     }
 
 
     /**
-     * 获取惠民卡列表
+     * 获取玩湃惠民卡列表
      * @return
      */
     @RequestMapping(value = "/list")
     @ResponseBody
-    public PageInfoBT<THuiminCard> list(Page<THuiminCard> page,THuiminCard tHuiminCard) {
-        return super.packForBT(huiminCardClient.queryPage(page, tHuiminCard));
+    public PageInfoBT<THuiminCard> list(THuiminCard tHuiminCard) {
+        User user = UserExt.getUser();
+        if(user == null){
+            return null;
+        }
+        Integer objectType = user.getObjectType();
+        tHuiminCard.setObjectType(objectType);
+        Integer objectId = user.getObjectId();
+        tHuiminCard.setObjectId(objectId);
+        return super.packForBT(huiminCardClient.queryPage(tHuiminCard));
     }
 
     /**
@@ -103,8 +115,19 @@
         if (!StringUtils.isEmpty(storeIds)){
              ids = storeIds.split(",");
         }
-
+        User user = UserExt.getUser();
+        if(user == null){
+            return null;
+        }
+        Integer objectType = user.getObjectType();
+        if (objectType != 1 && objectType != 2){
+            throw new RuntimeException("权限不足");
+        }
+        if (objectType == 2){
+            query.setOperatorId(user.getObjectId());
+        }
         Page<TStore> storePage = storeService.page(page, new LambdaQueryWrapper<TStore>()
+                .eq(TStore::getState, 1)
                 .in(ids.length > 0, TStore::getId, Arrays.asList(ids))
                 .eq(!StringUtils.isEmpty(query.getProvinceCode()), TStore::getProvinceCode, query.getProvinceCode())
                 .eq(!StringUtils.isEmpty(query.getCityCode()), TStore::getCityCode, query.getCityCode())
@@ -120,6 +143,7 @@
             TOperator operator = operatorService.getById(tStore.getOperatorId());
             if (operator != null){
                 huiminCardStoreVO.setOperatorName(operator.getName());
+                huiminCardStoreVO.setOperatorId(tStore.getOperatorId());
             }
             return huiminCardStoreVO;
         });
@@ -133,65 +157,128 @@
     public Object siteList(Page<TSite> page, HuiminCardStoreQuery query) {
         String storeName = query.getStoreName();
         List<String> storeIds = new ArrayList<>();
-        if (!StringUtils.isEmpty(storeName)){
-            List<String> storeIdsByName = storeService.listObjs(new LambdaQueryWrapper<TStore>()
-                    .select(TStore::getId)
-                    .eq(TStore::getName, storeName), String::valueOf);
-            if (storeIdsByName != null && !storeIdsByName.isEmpty()){
-                storeIds.addAll(storeIdsByName);
-            }else {
-                return null;
-            }
+
+        // 收集storeName条件的storeIds(不提前返回null)
+        if (!StringUtils.isEmpty(storeName)) {
+            List<String> storeIdsByName = storeService.listObjs(
+                    new LambdaQueryWrapper<TStore>()
+                            .select(TStore::getId)
+                            .eq(TStore::getName, storeName),
+                    String::valueOf);
+            storeIds.addAll(storeIdsByName);
         }
+
+
+        // 处理用户权限过滤(objectType为2)
         Integer operatorId = query.getOperatorId();
-        if (operatorId != null){
-            List<String> storeIdsByOperatorId = storeService.listObjs(new LambdaQueryWrapper<TStore>()
-                    .select(TStore::getId)
-                    .eq(TStore::getOperatorId, operatorId), String::valueOf);
-            if (storeIdsByOperatorId != null && !storeIdsByOperatorId.isEmpty()){
-                storeIds.addAll(storeIdsByOperatorId);
-            }else {
-                return null;
-            }
+        User user = UserExt.getUser();
+        if (user != null && user.getObjectType() == 2) {
+            operatorId =  user.getObjectId();
+        }else if (user != null && user.getObjectType() == 3){
+            storeIds = new ArrayList<>();
+            storeIds.add(String.valueOf(user.getObjectId()));
         }
 
-        Page<TSite> sitePage = tSiteService.page(page, new LambdaQueryWrapper<TSite>()
-                .eq(!StringUtils.isEmpty(query.getProvinceCode()), TSite::getProvinceCode, query.getProvinceCode())
-                .eq(!StringUtils.isEmpty(query.getCityCode()), TSite::getCityCode, query.getCityCode())
-                .in(!storeIds.isEmpty(), TSite::getStoreId, storeIds));
 
 
+        // 最终查询条件:storeIds为空时会返回空Page
+        Page<TSite> sitePage = tSiteService.page(page,
+                new LambdaQueryWrapper<TSite>()
+                        .eq(!StringUtils.isEmpty(query.getProvinceCode()), TSite::getProvinceCode, query.getProvinceCode())
+                        .eq(operatorId != null, TSite::getOperatorId, operatorId)
+                        .ne(TSite::getState,3)
+                        .eq(TSite::getSign,0)
+                        .eq(!StringUtils.isEmpty(query.getCityCode()), TSite::getCityCode, query.getCityCode())
+                        .in(!storeIds.isEmpty(), TSite::getStoreId, storeIds));
+
+        // 批量查询store和operator,避免N+1问题
+        List<TSite> sites = sitePage.getRecords();
+        if (sites.isEmpty()) {
+            return sitePage.convert(t -> null); // 返回空Page
+        }
+
+        // 收集需要的storeId和operatorId
+        List<Integer> storeIdsForVO = sites.stream().map(TSite::getStoreId).distinct().collect(Collectors.toList());
+        List<Integer> operatorIdsForVO = sites.stream().map(TSite::getOperatorId).distinct().collect(Collectors.toList());
+
+        // 批量查询并缓存结果
+        Map<Integer, TStore> storeMap = storeService.listByIds(storeIdsForVO)
+                .stream()
+                .collect(Collectors.toMap(TStore::getId, Function.identity()));
+
+        Map<Integer, TOperator> operatorMap = operatorService.listByIds(operatorIdsForVO)
+                .stream()
+                .collect(Collectors.toMap(TOperator::getId, Function.identity()));
+
+        // 转换VO时直接使用缓存结果
         return sitePage.convert(tSite -> {
-            HuiminCardSiteVO huiminCardSiteVO = new HuiminCardSiteVO();
-            huiminCardSiteVO.setSiteId(tSite.getId());
-            huiminCardSiteVO.setProvince(tSite.getProvince());
-            huiminCardSiteVO.setSiteName(tSite.getName());
-            huiminCardSiteVO.setIds(tSite.getIds());
+            HuiminCardSiteVO vo = new HuiminCardSiteVO();
+            vo.setSiteId(tSite.getId());
+            vo.setProvince(tSite.getProvince());
+            vo.setSiteName(tSite.getName());
+            vo.setIds(tSite.getIds());
 
-            TStore store = storeService.getById(tSite.getStoreId());
-            if (store != null){
-                huiminCardSiteVO.setStoreName(store.getName());
+            TStore store = storeMap.get(tSite.getStoreId());
+            if (store != null) {
+                vo.setStoreName(store.getName());
             }
 
-            TOperator operator = operatorService.getById(tSite.getOperatorId());
-            if (operator != null){
-                huiminCardSiteVO.setOperatorName(operator.getName());
+            TOperator operator = operatorMap.get(tSite.getOperatorId());
+            if (operator != null) {
+                vo.setOperatorName(operator.getName());
             }
-            return huiminCardSiteVO;
-
+            return vo;
         });
     }
+
 
 
     @PostMapping(value = "/add")
     @ResponseBody
     public Object add(THuiminCard tHuiminCard) {
+        int a = 0;
+        String useIds = tHuiminCard.getUseIds();
+        String[] useIdArr = useIds.split(",");
+        if (tHuiminCard.getUseScope()==1){
+            tHuiminCard.setStoreIds(useIds);
+            String useId = useIdArr[0];
+            TStore store = storeService.getById(useId);
+            tHuiminCard.setOperatorId(store.getOperatorId());
+        }else{
+            StringBuilder storeIds = new StringBuilder();
+            for (String s : useIdArr) {
+                TSite site = tSiteService.getById(s);
+                if (site!=null){
+                    storeIds.append(site.getStoreId()).append(",");
+                }
+            }
+            StringBuilder stringBuilder = storeIds.deleteCharAt(storeIds.length() - 1);
+            tHuiminCard.setStoreIds(stringBuilder.toString());
+
+            String useId = useIdArr[0];
+            TSite site = tSiteService.getById(useId);
+            tHuiminCard.setOperatorId(site.getOperatorId());
+        }
+
         huiminCardClient.save(tHuiminCard);
         return SUCCESS_TIP;
     }
     @RequestMapping(value = "/update")
     @ResponseBody
     public Object update(THuiminCard tHuiminCard) {
+        if (tHuiminCard.getUseScope()==1){
+            tHuiminCard.setStoreIds(tHuiminCard.getUseIds());
+        }else{
+            StringBuilder storeIds = new StringBuilder();
+            for (String s : tHuiminCard.getUseIds().split(",")) {
+                TSite site = tSiteService.getById(s);
+                if (site!=null){
+                    storeIds.append(site.getStoreId()).append(",");
+                }
+            }
+            StringBuilder stringBuilder = storeIds.deleteCharAt(storeIds.length() - 1);
+            tHuiminCard.setStoreIds(stringBuilder.toString());
+        }
         huiminCardClient.updateById(tHuiminCard);
         return SUCCESS_TIP;
     }
@@ -229,7 +316,7 @@
 
 
     /*  *//**
-     * 跳转到修改惠民卡
+     * 跳转到修改玩湃惠民卡
      *//*
     @RequestMapping("/tHuiminCard_update/{tHuiminCardId}")
     public String tHuiminCardUpdate(@PathVariable Integer tHuiminCardId, Model model) {
@@ -240,7 +327,7 @@
     }
 
     *//**
-     * 获取惠民卡列表
+     * 获取玩湃惠民卡列表
      *//*
     @RequestMapping(value = "/list")
     @ResponseBody
@@ -252,7 +339,7 @@
 
 
     *//**
-     * 修改惠民卡
+     * 修改玩湃惠民卡
      *//*
     @RequestMapping(value = "/update")
     @ResponseBody
@@ -262,7 +349,7 @@
     }
 
     *//**
-     * 惠民卡详情
+     * 玩湃惠民卡详情
      *//*
     @RequestMapping(value = "/detail/{tHuiminCardId}")
     @ResponseBody

--
Gitblit v1.7.1