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.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
|
*/
|
@Controller
|
@RequestMapping("/tHuiminCard")
|
public class THuiminCardController extends BaseController {
|
|
private String PREFIX = "/system/tHuiminCard/";
|
|
@Autowired
|
private HuiminCardClient huiminCardClient;
|
@Autowired
|
private IStoreService storeService;
|
@Autowired
|
private TOperatorService operatorService;
|
@Autowired
|
private ITSiteService tSiteService;
|
|
/**
|
* 跳转到惠民卡首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "tHuiminCard.html";
|
}
|
|
/**
|
* 跳转到添加惠民卡
|
*/
|
@RequestMapping("/tHuiminCard_add")
|
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)
|
User user = UserExt.getUser();
|
if (user != null && user.getObjectType() == 2) {
|
List<String> authorizedStoreIds = storeService.listObjs(
|
new LambdaQueryWrapper<TStore>()
|
.select(TStore::getId)
|
.eq(TStore::getOperatorId, user.getObjectId()),
|
String::valueOf);
|
if (authorizedStoreIds.isEmpty()) {
|
new Page();
|
}
|
if (storeIds.isEmpty()){
|
storeIds.addAll(authorizedStoreIds);
|
}else {
|
storeIds.retainAll(new HashSet<>(authorizedStoreIds));
|
}
|
|
}else if (user != null && user.getObjectType() == 3){
|
storeIds = new ArrayList<>();
|
storeIds.add(String.valueOf(user.getObjectId()));
|
}
|
|
|
Integer operatorId = query.getOperatorId();
|
// 最终查询条件: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) {
|
THuiminCard tHuiminCard = huiminCardClient.selectById(tHuiminCardId);
|
model.addAttribute("item",tHuiminCard);
|
LogObjectHolder.me().set(tHuiminCard);
|
return PREFIX + "tHuiminCard_edit.html";
|
}
|
|
*//**
|
* 获取惠民卡列表
|
*//*
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(String condition) {
|
return huiminCardClient.selectList(null);
|
}
|
|
|
|
|
*//**
|
* 修改惠民卡
|
*//*
|
@RequestMapping(value = "/update")
|
@ResponseBody
|
public Object update(THuiminCard tHuiminCard) {
|
huiminCardClient.updateById(tHuiminCard);
|
return SUCCESS_TIP;
|
}
|
|
*//**
|
* 惠民卡详情
|
*//*
|
@RequestMapping(value = "/detail/{tHuiminCardId}")
|
@ResponseBody
|
public Object detail(@PathVariable("tHuiminCardId") Integer tHuiminCardId) {
|
return huiminCardClient.selectById(tHuiminCardId);
|
}*/
|
}
|