| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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()); |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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)); |
| | |
| | | |
| | | 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; |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |