xuhy
2023-05-06 0ad75f90e6464b95bef06c88227f521c5c03d41d
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
@@ -3,10 +3,16 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.shiro.ShiroKit;
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 com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TAgent;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hdf.extractor.TC;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
@@ -21,6 +27,8 @@
import com.stylefeng.guns.modular.system.model.TCoupon;
import com.stylefeng.guns.modular.system.service.ITCouponService;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
/**
@@ -37,6 +45,8 @@
    @Autowired
    private ITCouponService tCouponService;
    @Autowired
    private ITUserToCouponService tUserToCouponService;
    /**
     * 跳转到首页
@@ -70,7 +80,7 @@
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(Integer couponType,Integer couponServiceType,String createtime) {
    public Object list(Integer couponType,Integer couponServiceType,String createTime) {
        EntityWrapper<TCoupon> wrapper = new EntityWrapper<>();
        if(Objects.nonNull(couponType)){
            wrapper.eq("coupon_type",couponType);
@@ -79,15 +89,30 @@
            wrapper.eq("coupon_service_type",couponServiceType);
        }
        // 开始,结束时间
        if(StringUtils.hasLength(createtime)){
            String[] split = createtime.split(" - ");
        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.between("create_time",startTime,endTime);
        }
        wrapper.orderBy(true,"createtime",false);
        wrapper.groupBy(true,"coupon_name");
        wrapper.groupBy(true,"coupon_type");
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        wrapper.orderBy(true,"create_time",false);
        return tCouponService.selectList(wrapper);
    }
    /**
     * 获取活动券列表
     */
    @RequestMapping(value = "/activityCouponList")
    @ResponseBody
    public Object activityCouponList(String couponName) {
        EntityWrapper<TCoupon> wrapper = new EntityWrapper<>();
        if(StringUtils.hasLength(couponName)){
            wrapper.like("coupon_name",couponName);
        }
        wrapper.eq("coupon_type",1);
        wrapper.eq("coupon_state",1);
        wrapper.orderBy(true,"create_time",false);
        return tCouponService.selectList(wrapper);
    }
@@ -121,7 +146,37 @@
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tCouponId) {
        /*TCoupon tCoupon = tCouponService.selectById(tCouponId);
        tCoupon.setCouponStatus(StatusEnum.DELETE.getCode());
        tCouponService.updateById(tCoupon);*/
        tCouponService.deleteById(tCouponId);
        return SUCCESS_TIP;
    }
    /**
     * 修改优惠券状态
     */
    @RequestMapping(value = "/update-status")
    @ResponseBody
    public Object updateStatus(Integer id,Integer status) {
        TCoupon tCoupon = tCouponService.selectById(id);
        // 查询已启用的新人券数量
        int count = tCouponService.selectCount(new EntityWrapper<TCoupon>().eq("coupon_state", 1)
                .eq("coupon_type",2));
        // 判断是否为新人券,新人券只可启用一条记录
        if(count > 0 && 2 == tCoupon.getCouponType() && 2 == status){
            return new SuccessTip(500,"已有启动的新人券!");
        }
        if(1 == status){
            tCoupon.setCouponState(2);
        }
        if(2 == status){
            tCoupon.setCouponState(1);
        }
        tCouponService.updateById(tCoupon);
        return SUCCESS_TIP;
    }
@@ -154,8 +209,31 @@
        List<Integer> userIds = couponSendReq.getUserIds();
        // 查询选择的优惠券
        TCoupon tCoupon = tCouponService.selectById(couponSendReq.getCouponId());
        List<TUserToCoupon> tUserToCoupons = new ArrayList<>(userIds.size());
        for (Integer userId : userIds) {
            // 创建用户优惠券关联表
            TUserToCoupon tUserToCoupon = new TUserToCoupon();
            tUserToCoupon.setCouponId(tCoupon.getId());
            tUserToCoupon.setUserId(userId);
            tUserToCoupon.setCouponTotal(1);
            tUserToCoupon.setValidCount(1);
            Date expireTime = Date.from(LocalDate.now().plusDays(tCoupon.getCouponValidity()).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
            tUserToCoupon.setExpireTime(expireTime);
            // 添加发放人id和类型
            tUserToCoupon.setObjectId(ShiroKit.getUser().getObjectId());
            tUserToCoupon.setRoleType(ShiroKit.getUser().getRoleType());
            tUserToCoupons.add(tUserToCoupon);
        }
        tUserToCouponService.insertBatch(tUserToCoupons);
        // 查询该优惠券的列表
        List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("coupon_name", couponSendReq.getCouponName())
        /*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<>();
@@ -186,7 +264,7 @@
        }
        if(!CollectionUtils.isEmpty(tCouponList)){
            tCouponService.updateBatchById(tCouponList);
        }
        }*/
        return SUCCESS_TIP;
    }