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 | 245 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 187 insertions(+), 58 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 d65ffc3..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
@@ -6,8 +6,12 @@
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.*;
@@ -16,16 +20,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
@@ -44,9 +48,14 @@
private TOperatorService operatorService;
@Autowired
private ITSiteService tSiteService;
+ @Autowired
+ private AppUserClient appUserClient;
+ @Autowired
+ private StudentClient studentClient;
+
/**
- * 跳转到惠民卡首页
+ * 跳转到玩湃惠民卡首页
*/
@RequestMapping("")
public String index() {
@@ -54,11 +63,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,28 +76,99 @@
* 跳转到详情页面
*/
@RequestMapping("/tHuiminCard_detail/{id}")
- public String tHuiminCardDetail(@PathVariable("id") Integer 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) {
+ 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));
}
/**
@@ -101,8 +182,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())
@@ -118,6 +210,7 @@
TOperator operator = operatorService.getById(tStore.getOperatorId());
if (operator != null){
huiminCardStoreVO.setOperatorName(operator.getName());
+ huiminCardStoreVO.setOperatorId(tStore.getOperatorId());
}
return huiminCardStoreVO;
});
@@ -131,65 +224,96 @@
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(tHuiminCard.getUseIds());
+ tHuiminCard.setStoreIds(useIds);
+ String useId = useIdArr[0];
+ TStore store = storeService.getById(useId);
+ tHuiminCard.setOperatorId(store.getOperatorId());
}else{
StringBuilder storeIds = new StringBuilder();
- for (String s : tHuiminCard.getUseIds().split(",")) {
+ for (String s : useIdArr) {
TSite site = tSiteService.getById(s);
if (site!=null){
storeIds.append(site.getStoreId()).append(",");
@@ -197,7 +321,12 @@
}
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;
}
@@ -254,7 +383,7 @@
/* *//**
- * 跳转到修改惠民卡
+ * 跳转到修改玩湃惠民卡
*//*
@RequestMapping("/tHuiminCard_update/{tHuiminCardId}")
public String tHuiminCardUpdate(@PathVariable Integer tHuiminCardId, Model model) {
@@ -265,7 +394,7 @@
}
*//**
- * 获取惠民卡列表
+ * 获取玩湃惠民卡列表
*//*
@RequestMapping(value = "/list")
@ResponseBody
@@ -277,7 +406,7 @@
*//**
- * 修改惠民卡
+ * 修改玩湃惠民卡
*//*
@RequestMapping(value = "/update")
@ResponseBody
@@ -287,7 +416,7 @@
}
*//**
- * 惠民卡详情
+ * 玩湃惠民卡详情
*//*
@RequestMapping(value = "/detail/{tHuiminCardId}")
@ResponseBody
--
Gitblit v1.7.1