无关风月
8 天以前 4742874ad840d7e1e3ac79dc288b38e9a642319d
cloud-server-activity/src/main/java/com/dsh/activity/controller/THuiminCardController.java
@@ -1,5 +1,6 @@
package com.dsh.activity.controller;
import cn.hutool.core.collection.CollUtil;
import cn.mb.cloud.common.data.controller.BaseController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -7,12 +8,18 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.activity.entity.THuiminCard;
import com.dsh.activity.entity.TPayHuimin;
import com.dsh.activity.entity.TStudent;
import com.dsh.activity.feignclient.account.StudentClient;
import com.dsh.activity.service.HuiminCardService;
import com.dsh.activity.service.PayHuiminService;
import com.dsh.activity.util.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -25,11 +32,24 @@
    private HuiminCardService tHuiminCardService;
    @Autowired
    private PayHuiminService payHuiminService;
    @Autowired
    private StudentClient studentClient;
    @GetMapping("/queryPage")
    public Page<THuiminCard> queryPage(Page<THuiminCard> page, THuiminCard tHuiminCard) {
    @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());
        }
@@ -40,19 +60,19 @@
            queryWrapper.ge("startTime",tHuiminCard.getStartTime());
            queryWrapper.le("endTime",tHuiminCard.getEndTime());
        }
        Integer flag = tHuiminCard.getFlag();
        if (flag != null){
        Integer huiMinStatus = tHuiminCard.getHuiMinStatus();
        // 玩湃惠民卡状态:1未开始 2已开始 3已结束
        if (huiMinStatus != null){
            Date now = new Date();
            switch (flag) {
            switch (huiMinStatus) {
                case 1:
                    queryWrapper.le("startTime", now);
                    queryWrapper.gt("startTime", now);
                    break;
                    case 2:
                    queryWrapper.ge("startTime", now);
                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;
                    case 3:
                    queryWrapper.lt("endTime", now);
                    break;
            }
        }
@@ -60,8 +80,14 @@
        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));
@@ -75,6 +101,25 @@
        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;
    }
@@ -119,4 +164,51 @@
        tHuiminCardService.updateById(tHuiminCard);
        return "success";
    }
    @GetMapping("/getCards")
    public List<THuiminCard> getCards(@RequestParam("storeId")String storeId){
        List<THuiminCard> list = tHuiminCardService.lambdaQuery().apply("FIND_IN_SET(" + storeId + ",storeIds)").list();
        return list;
    }
    @GetMapping("/addPayHuiMing")
    public void addPayHuiMing(@RequestParam("studentId")Integer studentId, @RequestParam("cardId")Integer cardId){
        TPayHuimin tPayHuimin = new TPayHuimin();
        THuiminCard byId = tHuiminCardService.getById(cardId);
        List<TStudent> studentByIds = studentClient.getStudentByIds(studentId + "");
        if (CollUtil.isNotEmpty(studentByIds)){
            tPayHuimin.setAppUserId(studentByIds.get(0).getAppUserId());
        }
        tPayHuimin.setSalesMoney(byId.getSalesMoney());
        tPayHuimin.setStudentId(studentId+"");
        switch (byId.getHuiMinType()) {
            case 1:
                // 年度卡
                LocalDateTime localDateTime = LocalDateTime.now().plusDays(365);
                // 将LocalDateTime转换为Date类型
                Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
                tPayHuimin.setEndTime(date);
                break;
            case 2:
                // 年内卡
                Date date1 = new Date();
                date1.setMonth(11);
                date1.setDate(31);
                date1.setHours(23);
                date1.setMinutes(59);
                date1.setSeconds(57);
                tPayHuimin.setEndTime(date1);
                break;
        }
        tPayHuimin.setInsertTime(new Date());
        tPayHuimin.setPaymentType(3);
        tPayHuimin.setRefundStatus(1);
        tPayHuimin.setCardId(byId.getId());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        tPayHuimin.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5));
        System.err.println("支付数据" + tPayHuimin);
        tPayHuimin.setPaymentTime(new Date());
        tPayHuimin.setStatus(2);
        payHuiminService.save(tPayHuimin);
    }
}