package com.dsh.activity.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.activity.entity.BodySideAppointment; import com.dsh.activity.entity.IntroduceRewards; import com.dsh.activity.feignclient.account.AppUserClient; import com.dsh.activity.feignclient.model.IntrduceOfUserRequest; import com.dsh.activity.feignclient.model.PurchaseRecordVo; import com.dsh.activity.feignclient.other.model.Store; import com.dsh.activity.model.*; import com.dsh.activity.service.IntroduceRewardsService; import com.dsh.activity.service.IntroduceUserService; import io.swagger.annotations.Api; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.text.Format; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Api @CrossOrigin @RestController @RequestMapping("") public class IntroduceRewardsController { @Autowired private IntroduceRewardsService idrService; @Autowired private IntroduceUserService introduceUserService; private final SimpleDateFormat mat = new SimpleDateFormat("MM-dd HH:mm"); /** * 获取介绍有礼-参与用户记录表 * @return */ @RequestMapping("/base/introduceUser/listAllUser") public List listAllUser(@RequestBody IntroduceUserQuery query){ return introduceUserService.listAll(query); } /** * 通过id获取介绍有礼 * @return */ @RequestMapping("/base/introduce/getInfoById") public IntroduceRewards getInfoById(@RequestBody Integer id){ return idrService.getById(id); } /** * 获取介绍有礼记录表 * @return */ @RequestMapping("/base/introduce/listAll") public List listAll(@RequestBody IntroduceQuery query){ Date date = new Date(); List introduceVOS = idrService.listAll(query); for (IntroduceVO introduceVO : introduceVOS) { Date startTime = introduceVO.getStartTime(); Date endTime = introduceVO.getEndTime(); if (date.after(startTime) && date.before(endTime)) { introduceVO.setActivityState(1); } else if (date.before(startTime)) { introduceVO.setActivityState(2); } else if (date.after(endTime)) { introduceVO.setActivityState(3); } } return introduceVOS; } /** * 增加/修改介绍有礼记录 * @return */ @RequestMapping("/base/introduce/addIntroduce") public Object addIntroduce(@RequestBody IntroduceRewards introduceRewards){ if (introduceRewards.getId()!=null){ IntroduceRewards byId = idrService.getById(introduceRewards.getId()); // 判断当前活动有没有开始 如果开始了不能编辑赠送课时数 不能编辑活动开始时间 Date endTime = byId.getEndTime(); Date startTime = byId.getStartTime(); Date local = new Date(); if (startTime.before(local)&&endTime.after(local)){ // 证明当前活动已开始 // 判断有没有修改开始时间 if (!introduceRewards.getStartTime().equals(byId.getStartTime())){ // 表示不能修改开始时间 return 5002; } if (!introduceRewards.getGiveClass().equals(byId.getGiveClass())){ // 表示不能修改赠送课时数 return 5001; } } return idrService.updateById(introduceRewards); }else { introduceRewards.setInsertTime(new Date()); return idrService.save(introduceRewards); } } /** * 上/下架介绍有礼 type = 1上架 type=2下架 * @return */ @RequestMapping("/base/introduce/changeState") public Object changeState(@RequestBody IntroduceChangeStateDTO dto){ return idrService.changeState(dto); } @PostMapping("/base/introduce/useOfRewards") public List queryAppUsersofIntroduce(@RequestBody IntrduceOfUserRequest request){ List recordVos = new ArrayList<>(); List list = idrService.list(new QueryWrapper() .ge("startTime",request.getStartTime()) .lt("endTime",request.getEndTime())); if (request.getUserIds().size() > 0 && list.size() > 0){ IntroduceRewards introduceRewards = list.get(0); request.getUserIds().forEach( userId -> { PurchaseRecordVo recordVo = new PurchaseRecordVo(); recordVo.setPurchaseAmount("+"+introduceRewards.getGiveClass()); recordVo.setPurchaseType("介绍有礼"); recordVos.add(recordVo); } ); } return recordVos; } @PostMapping("/base/introduce/getGiftList") @ResponseBody public IntroduceRewards getGiftList(@RequestBody String cityCode){ List list = idrService.list(new LambdaQueryWrapper() .eq(IntroduceRewards::getCityCode,cityCode) .le(IntroduceRewards::getStartTime,new Date()) .ge(IntroduceRewards::getEndTime,new Date()) .orderByDesc(IntroduceRewards::getInsertTime) .last("LIMIT 1")); if (list.size()>0){ return list.get(0); } return null; } }