package com.stylefeng.guns.modular.system.controller.general;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.core.base.controller.BaseController;
|
import com.stylefeng.guns.core.util.DateUtil;
|
import com.stylefeng.guns.modular.system.controller.req.CouponSendReq;
|
import com.stylefeng.guns.modular.system.enums.CouponStatusEnum;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.util.Assert;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import com.stylefeng.guns.core.log.LogObjectHolder;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import com.stylefeng.guns.modular.system.model.TCoupon;
|
import com.stylefeng.guns.modular.system.service.ITCouponService;
|
|
import java.util.*;
|
|
/**
|
* 控制器
|
*
|
* @author fengshuonan
|
* @Date 2023-02-14 10:59:23
|
*/
|
@Controller
|
@RequestMapping("/tCoupon")
|
public class TCouponController extends BaseController {
|
|
private String PREFIX = "/system/tCoupon/";
|
|
@Autowired
|
private ITCouponService tCouponService;
|
|
/**
|
* 跳转到首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "tCoupon.html";
|
}
|
|
/**
|
* 跳转到添加
|
*/
|
@RequestMapping("/tCoupon_add")
|
public String tCouponAdd() {
|
return PREFIX + "tCoupon_add.html";
|
}
|
|
/**
|
* 跳转到修改
|
*/
|
@RequestMapping("/tCoupon_update/{tCouponId}")
|
public String tCouponUpdate(@PathVariable Integer tCouponId, Model model) {
|
TCoupon tCoupon = tCouponService.selectById(tCouponId);
|
model.addAttribute("item",tCoupon);
|
LogObjectHolder.me().set(tCoupon);
|
return PREFIX + "tCoupon_edit.html";
|
}
|
|
/**
|
* 获取列表
|
*/
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(Integer couponType,Integer couponServiceType,String createtime) {
|
EntityWrapper<TCoupon> wrapper = new EntityWrapper<>();
|
if(Objects.nonNull(couponType)){
|
wrapper.eq("coupon_type",couponType);
|
}
|
if(Objects.nonNull(couponServiceType)){
|
wrapper.eq("coupon_service_type",couponServiceType);
|
}
|
// 开始,结束时间
|
if(StringUtils.hasLength(createtime)){
|
String[] split = createtime.split(" - ");
|
Date startTime = DateUtil.getDate_str4(split[0]);
|
Date endTime = DateUtil.getDate_str4(split[1]);
|
wrapper.between("createtime",startTime,endTime);
|
}
|
wrapper.orderBy(true,"createtime",false);
|
wrapper.groupBy(true,"coupon_name");
|
wrapper.groupBy(true,"coupon_type");
|
return tCouponService.selectList(wrapper);
|
}
|
|
/**
|
* 获取列表
|
*/
|
@RequestMapping(value = "/list-back")
|
@ResponseBody
|
public Object listBack(String condition) {
|
return tCouponService.selectList(null);
|
}
|
|
/**
|
* 新增
|
*/
|
@RequestMapping(value = "/add")
|
@ResponseBody
|
public Object add(TCoupon tCoupon) {
|
// 校验是否添加的是同类型同名称的优惠券
|
Boolean isExit = tCouponService.isExit(tCoupon);
|
tCouponService.insert(tCoupon);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除
|
*/
|
@RequestMapping(value = "/delete")
|
@ResponseBody
|
public Object delete(@RequestParam Integer tCouponId) {
|
tCouponService.deleteById(tCouponId);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改
|
*/
|
@RequestMapping(value = "/update")
|
@ResponseBody
|
public Object update(TCoupon tCoupon) {
|
tCouponService.updateById(tCoupon);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 详情
|
*/
|
@RequestMapping(value = "/detail/{tCouponId}")
|
@ResponseBody
|
public Object detail(@PathVariable("tCouponId") Integer tCouponId) {
|
return tCouponService.selectById(tCouponId);
|
}
|
|
/**
|
* 发放优惠券
|
*/
|
@ApiOperation(value = "发放优惠券")
|
@RequestMapping(value = "/sendCouponToUser")
|
@ResponseBody
|
public Object sendCouponToUser(CouponSendReq couponSendReq) {
|
|
List<Integer> userIds = couponSendReq.getUserIds();
|
|
// 查询该优惠券的列表
|
List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("coupon_name", couponSendReq.getCouponName())
|
.eq("coupon_status",CouponStatusEnum.UNISSUED.getCode()));
|
Assert.isTrue(!CollectionUtils.isEmpty(tCoupons),"该优惠券不存在!");
|
List<TCoupon> tCouponList = new ArrayList<>();
|
// 判断是选中的人多还是优惠券的数量较多
|
if(tCoupons.size() > userIds.size()){
|
for (Integer userId : userIds) {
|
Iterator<TCoupon> iterator = tCoupons.iterator();
|
while (iterator.hasNext()){
|
TCoupon next = iterator.next();
|
next.setCouponStatus(CouponStatusEnum.NOT_USED.getCode());
|
next.setUserId(userId);
|
tCouponList.add(next);
|
iterator.remove();
|
break;
|
}
|
}
|
}else {
|
for (TCoupon tCoupon : tCoupons) {
|
Iterator<Integer> iterator = userIds.iterator();
|
while (iterator.hasNext()){
|
tCoupon.setCouponStatus(CouponStatusEnum.NOT_USED.getCode());
|
tCoupon.setUserId(iterator.next());
|
tCouponList.add(tCoupon);
|
iterator.remove();
|
break;
|
}
|
}
|
}
|
if(!CollectionUtils.isEmpty(tCouponList)){
|
tCouponService.updateBatchById(tCouponList);
|
}
|
return SUCCESS_TIP;
|
}
|
|
}
|