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 | 319 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 290 insertions(+), 29 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 6cd50e0..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 @@ -1,13 +1,32 @@ package com.dsh.guns.modular.system.controller.code; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.api.R; +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.*; +import com.dsh.guns.modular.system.service.IStoreService; +import com.dsh.guns.modular.system.service.ITSiteService; +import com.dsh.guns.modular.system.service.TOperatorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.ui.Model; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** - * 惠民卡控制器 + * 玩湃惠民卡控制器 * * @author fengshuonan * @Date 2025-03-29 17:41:25 @@ -20,9 +39,15 @@ @Autowired private HuiminCardClient huiminCardClient; + @Autowired + private IStoreService storeService; + @Autowired + private TOperatorService operatorService; + @Autowired + private ITSiteService tSiteService; /** - * 跳转到惠民卡首页 + * 跳转到玩湃惠民卡首页 */ @RequestMapping("") public String index() { @@ -30,15 +55,268 @@ } /** - * 跳转到添加惠民卡 + * 跳转到添加玩湃惠民卡 */ @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"; } - /* *//** - * 跳转到修改惠民卡 + /** + * 跳转到详情页面 + */ + @RequestMapping("/tHuiminCard_detail/{id}") + 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(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)); + } + + /** + * 获取门店列表 + */ + @RequestMapping(value = "/storeList") + @ResponseBody + public Object storeList(Page<TStore> page, HuiminCardStoreQuery query) { + String storeIds = query.getStoreIds(); + String[] ids = {}; + 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()) + .eq(query.getOperatorId() != null, TStore::getOperatorId, query.getOperatorId()) + .like(!StringUtils.isEmpty(query.getStoreName()), TStore::getName, query.getStoreName()) + .orderByDesc(TStore::getCreateTime)); + return storePage.convert(tStore -> { + HuiminCardStoreVO huiminCardStoreVO = new HuiminCardStoreVO(); + huiminCardStoreVO.setStoreId(tStore.getId()); + huiminCardStoreVO.setProvince(tStore.getProvince()); + huiminCardStoreVO.setStoreName(tStore.getName()); + huiminCardStoreVO.setIds(tStore.getIds()); + TOperator operator = operatorService.getById(tStore.getOperatorId()); + if (operator != null){ + huiminCardStoreVO.setOperatorName(operator.getName()); + huiminCardStoreVO.setOperatorId(tStore.getOperatorId()); + } + return huiminCardStoreVO; + }); + } + + /** + * 获取场地列表 + */ + @RequestMapping(value = "/siteList") + @ResponseBody + public Object siteList(Page<TSite> page, HuiminCardStoreQuery query) { + String storeName = query.getStoreName(); + List<String> storeIds = new ArrayList<>(); + + // 收集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(); + 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())); + } + + + + // 最终查询条件: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 vo = new HuiminCardSiteVO(); + vo.setSiteId(tSite.getId()); + vo.setProvince(tSite.getProvince()); + vo.setSiteName(tSite.getName()); + vo.setIds(tSite.getIds()); + + TStore store = storeMap.get(tSite.getStoreId()); + if (store != null) { + vo.setStoreName(store.getName()); + } + + TOperator operator = operatorMap.get(tSite.getOperatorId()); + if (operator != null) { + vo.setOperatorName(operator.getName()); + } + 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; + } + + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String ids) { + if (StringUtils.isEmpty(ids)) { + throw new IllegalArgumentException("参数ids不能为空"); + } + String[] idStrings = ids.split(","); + List<Integer> idList = new ArrayList<>(idStrings.length); + + for (String idStr : idStrings) { + idStr = idStr.trim(); + if (!idStr.isEmpty()) { + idList.add(Integer.parseInt(idStr)); + } + } + huiminCardClient.deleteBatchIds(idList); + return SUCCESS_TIP; + } + + /** + * 上下架状态修改 + */ + @RequestMapping(value = "/changeState") + @ResponseBody + public Object changeState(Integer id, Integer status) { + String s = huiminCardClient.changeState(id, status); + System.out.println(s); + return SUCCESS_TIP; + } + + + + /* *//** + * 跳转到修改玩湃惠民卡 *//* @RequestMapping("/tHuiminCard_update/{tHuiminCardId}") public String tHuiminCardUpdate(@PathVariable Integer tHuiminCardId, Model model) { @@ -49,7 +327,7 @@ } *//** - * 获取惠民卡列表 + * 获取玩湃惠民卡列表 *//* @RequestMapping(value = "/list") @ResponseBody @@ -57,28 +335,11 @@ return huiminCardClient.selectList(null); } - *//** - * 新增惠民卡 - *//* - @RequestMapping(value = "/add") - @ResponseBody - public Object add(THuiminCard tHuiminCard) { - huiminCardClient.insert(tHuiminCard); - return SUCCESS_TIP; - } + + *//** - * 删除惠民卡 - *//* - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam Integer tHuiminCardId) { - huiminCardClient.deleteById(tHuiminCardId); - return SUCCESS_TIP; - } - - *//** - * 修改惠民卡 + * 修改玩湃惠民卡 *//* @RequestMapping(value = "/update") @ResponseBody @@ -88,7 +349,7 @@ } *//** - * 惠民卡详情 + * 玩湃惠民卡详情 *//* @RequestMapping(value = "/detail/{tHuiminCardId}") @ResponseBody -- Gitblit v1.7.1