package com.dsh.activity.controller;
|
|
import cn.mb.cloud.common.data.controller.BaseController;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.api.R;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.dsh.activity.entity.THuiminCard;
|
import com.dsh.activity.entity.TPayHuimin;
|
import com.dsh.activity.service.HuiminCardService;
|
import com.dsh.activity.service.PayHuiminService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
@RestController
|
@RequestMapping("/tHuiminCard")
|
public class THuiminCardController extends BaseController {
|
@Autowired
|
private HuiminCardService tHuiminCardService;
|
@Autowired
|
private PayHuiminService payHuiminService;
|
|
|
@PostMapping("/queryPage")
|
public Page<THuiminCard> queryPage(@RequestBody THuiminCard tHuiminCard) {
|
QueryWrapper<THuiminCard> queryWrapper = new QueryWrapper<>();
|
|
|
Integer objectType = tHuiminCard.getObjectType();
|
Integer objectId = tHuiminCard.getObjectId();
|
if (objectType == 2){
|
queryWrapper.eq("operatorId",objectId);
|
}
|
if (objectType == 3){
|
queryWrapper.apply("FIND_IN_SET("+objectId+",storeIds)");
|
}
|
|
if (!StringUtils.isEmpty(tHuiminCard.getHuiMinName())){
|
queryWrapper.like("huiMinName",tHuiminCard.getHuiMinName());
|
}
|
if (!StringUtils.isEmpty(tHuiminCard.getHuiMinType())){
|
queryWrapper.eq("huiMinType",tHuiminCard.getHuiMinType());
|
}
|
if (tHuiminCard.getStartTime() != null && tHuiminCard.getEndTime() != null){
|
queryWrapper.ge("startTime",tHuiminCard.getStartTime());
|
queryWrapper.le("endTime",tHuiminCard.getEndTime());
|
}
|
Integer huiMinStatus = tHuiminCard.getHuiMinStatus();
|
// 惠民卡状态:1未开始 2已开始 3已结束
|
if (huiMinStatus != null){
|
Date now = new Date();
|
switch (huiMinStatus) {
|
case 1:
|
queryWrapper.gt("startTime", now);
|
break;
|
case 2:
|
queryWrapper.apply("(startTime <= now() AND endTime >= now()) OR(startTime IS NULL AND endTime IS NULL)");
|
break;
|
case 3:
|
queryWrapper.le("endTime", now);
|
break;
|
}
|
}
|
|
if (tHuiminCard.getStatus() != null){
|
queryWrapper.eq("status",tHuiminCard.getStatus());
|
}
|
Page<THuiminCard> page = new Page<>();
|
page.setCurrent(tHuiminCard.getCurrent());
|
page.setSize(tHuiminCard.getSize());
|
Page<THuiminCard> page1 = tHuiminCardService.page(page, queryWrapper);
|
List<THuiminCard> records = page1.getRecords();
|
if (records.isEmpty()){
|
return page1;
|
}
|
List<Integer> cardIds = records.stream().map(THuiminCard::getId).collect(Collectors.toList());
|
List<TPayHuimin> list = payHuiminService.list(new LambdaQueryWrapper<TPayHuimin>()
|
.in(TPayHuimin::getCardId, cardIds));
|
|
Map<Integer, Long> cardIdCountMap = list.stream()
|
.collect(Collectors.groupingBy(
|
TPayHuimin::getCardId,
|
Collectors.counting()
|
));
|
|
|
records.forEach(item -> {
|
item.setBuyCount(cardIdCountMap.getOrDefault(item.getId(), 0L).intValue());
|
|
// 惠民卡状态计算逻辑
|
Date startTime = item.getStartTime();
|
Date endTime = item.getEndTime();
|
|
Date now = new Date();
|
if (startTime == null || endTime == null) {
|
// 时间字段未填写时默认状态为「已开始」
|
item.setHuiMinStatus(2);
|
} else {
|
if (startTime.after(now)) {
|
item.setHuiMinStatus(1); // 未开始
|
} else if (endTime.before(now)) {
|
item.setHuiMinStatus(3); // 已结束
|
} else {
|
item.setHuiMinStatus(2); // 已开始
|
}
|
}
|
|
});
|
return page1;
|
}
|
|
@GetMapping("/getById")
|
public THuiminCard getById(@RequestParam("id") Integer id) {
|
return tHuiminCardService.getById(id);
|
}
|
|
@PostMapping("/save")
|
public R<?> save(@RequestBody THuiminCard tHuiminCard) {
|
tHuiminCardService.save(tHuiminCard);
|
return R.ok("");
|
}
|
|
@PostMapping("/updateById")
|
public R<?> updateById(@RequestBody THuiminCard tHuiminCard) {
|
tHuiminCardService.updateById(tHuiminCard);
|
return R.ok("");
|
}
|
|
@GetMapping("/deleteById")
|
public R<?> deleteById(@RequestParam("id") Integer id) {
|
tHuiminCardService.removeById(id);
|
return R.ok("");
|
}
|
|
/**
|
* 批量删除
|
*/
|
@PostMapping("/deleteBatchIds")
|
public R<?> deleteBatchIds(@RequestBody List<Integer> ids) {
|
tHuiminCardService.removeByIds(ids);
|
return R.ok("");
|
}
|
|
|
@GetMapping("/changeState")
|
public String changeState(@RequestParam("id")Integer id, @RequestParam("status") Integer status){
|
THuiminCard tHuiminCard = tHuiminCardService.getById(id);
|
tHuiminCard.setStatus(status);
|
tHuiminCardService.updateById(tHuiminCard);
|
return "success";
|
}
|
}
|