From c560f1a14ae1fc468d90e50e6a32d805295875da Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 01 九月 2025 15:35:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 357 insertions(+), 30 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 a76a0ca..3e92f2d 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,35 @@
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.account.AppUserClient;
+import com.dsh.course.feignClient.account.StudentClient;
+import com.dsh.course.feignClient.account.model.TAppUser;
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 +42,20 @@
@Autowired
private HuiminCardClient huiminCardClient;
+ @Autowired
+ private IStoreService storeService;
+ @Autowired
+ private TOperatorService operatorService;
+ @Autowired
+ private ITSiteService tSiteService;
+ @Autowired
+ private AppUserClient appUserClient;
+ @Autowired
+ private StudentClient studentClient;
+
/**
- * 跳转到惠民卡首页
+ * 跳转到玩湃惠民卡首页
*/
@RequestMapping("")
public String index() {
@@ -30,16 +63,327 @@
}
/**
- * 跳转到添加惠民卡
+ * 跳转到添加玩湃惠民卡
*/
@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("/tHuiminCardAddOrder")
+ public String tHuiminCardAddOrder(Model model) {
+ Integer objectType = UserExt.getUser().getObjectType();
+ Integer objectId = UserExt.getUser().getObjectId();
+ model.addAttribute("role", objectType);
+ if (objectType==1){
+ List<TOperator> list = operatorService.list(new LambdaQueryWrapper<TOperator>()
+ .eq(TOperator::getState, 1));
+ model.addAttribute("operators", list);
+ }else if (objectType==2){
+ List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>()
+ .eq(TStore::getOperatorId, objectId));
+ model.addAttribute("stores", list);
+ }else{
+ List<THuiminCard> cards = huiminCardClient.getCards(objectId + "");
+ model.addAttribute("cards", cards);
+ }
+ return PREFIX + "tHuiminCard_addOrder.html";
+ }
+ @RequestMapping("/addPayHuiMing")
+ @ResponseBody
+ public Object addPayHuiMing(Integer studentId,Integer cardId) {
+
+ huiminCardClient.addPayHuiMing(studentId ,cardId);
+
+ return 200;
+ }
+ @RequestMapping(value = "/checkUser")
+ @ResponseBody
+ public Object checkUser(String phone) {
+ TAppUser appUserByPhone = appUserClient.getAppUserByPhone(phone);
+ if (appUserByPhone==null){
+ return 500;
+ }
+ List<TStudent> tStudents = studentClient.queryStudentList(appUserByPhone.getId());
+ if (tStudents.isEmpty()){
+ return 501;
+ }
+ return tStudents;
+ }
+ @RequestMapping(value = "/getStores")
+ @ResponseBody
+ public Object getStores(String operatorId) {
+ if (operatorId.isEmpty()){
+ return new ArrayList<>();
+ }else{
+ List<TStore> list = storeService.lambdaQuery().eq(TStore::getOperatorId, operatorId).list();
+ return list;
+ }
+
+ }
+ @RequestMapping(value = "/getCards")
+ @ResponseBody
+ public Object getCards(String storeId) {
+ List<THuiminCard> list = huiminCardClient.getCards(storeId);
+ return list;
+ }
+ /**
+ * 获取玩湃惠民卡详情
+ */
+ @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) {
@@ -50,7 +394,7 @@
}
*//**
- * 获取惠民卡列表
+ * 获取玩湃惠民卡列表
*//*
@RequestMapping(value = "/list")
@ResponseBody
@@ -58,28 +402,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
@@ -89,7 +416,7 @@
}
*//**
- * 惠民卡详情
+ * 玩湃惠民卡详情
*//*
@RequestMapping(value = "/detail/{tHuiminCardId}")
@ResponseBody
--
Gitblit v1.7.1