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