提交 4b26ab0e 作者: 张小凤

coupon(update)

上级 f09ce294
......@@ -12,6 +12,7 @@ import com.mmc.oms.model.qo.CouponUserInfoQO;
import com.mmc.oms.model.qo.ProductCouponQO;
import com.mmc.oms.model.vo.coupon.CouponInfoActivityVO;
import com.mmc.oms.model.vo.coupon.CouponInfoVO;
import com.mmc.oms.model.vo.coupon.RedEnvelopeVO;
import com.mmc.oms.service.CouponBackService;
import io.swagger.annotations.*;
import org.springframework.validation.annotation.Validated;
......@@ -45,7 +46,7 @@ public class CouponBackController {
return couponBackService.saveCouponBackInfo(couponInfoVO, file);
}
@ApiOperation(value = "V1.0.1--新增裂变优惠券")
@ApiOperation(value = "V1.0.1--新增裂变优惠券 品牌卷")
@ApiResponses({@ApiResponse(code = 200, message = "OK")})
@PostMapping("/saveActivity")
public ResultBody saveActivityCouponInfo(@Validated(Insert.class) @RequestBody CouponInfoActivityVO couponInfoActivityVO) {
......@@ -53,6 +54,14 @@ public class CouponBackController {
}
@ApiOperation(value = "V1.0.1--新增裂变优惠券 红包")
@ApiResponses({@ApiResponse(code = 200, message = "OK")})
@PostMapping("/redEnvelope")
public ResultBody redEnvelope(@Validated(Insert.class) @RequestBody RedEnvelopeVO redEnvelopeVO) {
return couponBackService.redEnvelope(redEnvelopeVO);
}
@ApiOperation(value = "V1.0.1--优惠券列表-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = CouponDTO.class)})
@PostMapping("/pageList")
......
......@@ -13,6 +13,7 @@ import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
......@@ -70,7 +71,8 @@ public class RentalOrdersController extends BaseController {
}
@ApiOperation(value = "订单状态的变更")
@ApiIgnore
@ApiOperation(value = "前端不使用 订单状态的变更")
@GetMapping("orderStatusChanges")
public ResultBody orderStatusChanges(@RequestParam(value = "orderNo", required = true) String orderNo,
@RequestParam(value = "tranStatus", required = true) Integer tranStatus) {
......
......@@ -7,6 +7,7 @@ import com.mmc.oms.model.dto.coupon.CouponDTO;
import com.mmc.oms.model.dto.coupon.CouponListDTO;
import com.mmc.oms.model.vo.coupon.CouponInfoActivityVO;
import com.mmc.oms.model.vo.coupon.CouponInfoVO;
import com.mmc.oms.model.vo.coupon.RedEnvelopeVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -14,6 +15,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import lombok.experimental.Tolerate;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
......@@ -32,6 +34,10 @@ public class CouponDO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户范围(1所有用户 2渠道用户 3非渠道用户 4注册用户)", required = true, example = "1")
@NotBlank(message = "用户范围")
private Integer userScope;
@ApiModelProperty(value = "优惠券ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
......@@ -211,6 +217,23 @@ public class CouponDO implements Serializable {
}
@Tolerate
public CouponDO(RedEnvelopeVO redEnvelopeVO, Integer type) {
this.couponName = redEnvelopeVO.getCouponName();
this.useType = redEnvelopeVO.getBeSharedUseType();
this.useStartTime = redEnvelopeVO.getUseStartTime();
this.useEndTime = redEnvelopeVO.getUseEndTime();
this.couponMoney = redEnvelopeVO.getBeSharedCouponMoney();
this.couponTotal = redEnvelopeVO.getBeSharedCouponTotal();
this.userTag = redEnvelopeVO.getUserTag();
this.restrictedAccess = 1;
this.isLimited = true;
this.isFixedTime = CouponConstants.COUPON_USE_TIME_FIXED;
this.getType = CouponConstants.COUPON_USR_TYPE_ACTIVITY;
this.userScope = redEnvelopeVO.getUserScope();
}
@Tolerate
public CouponDO(CouponInfoActivityVO couponInfoActivityVO, Integer type) {
this.couponName = couponInfoActivityVO.getCouponName();
this.useType = couponInfoActivityVO.getBeSharedUseType();
......@@ -230,4 +253,20 @@ public class CouponDO implements Serializable {
this.isFixedTime = CouponConstants.COUPON_USE_TIME_FIXED;
this.getType = CouponConstants.COUPON_USR_TYPE_ACTIVITY;
}
@Tolerate
public CouponDO(RedEnvelopeVO redEnvelopeVO) {
this.couponName = redEnvelopeVO.getCouponName();
this.useType = redEnvelopeVO.getUseType();
this.useStartTime = redEnvelopeVO.getUseStartTime();
this.useEndTime = redEnvelopeVO.getUseEndTime();
this.couponMoney = redEnvelopeVO.getCouponMoney();
this.couponTotal = redEnvelopeVO.getCouponTotal();
this.userScope = redEnvelopeVO.getUserScope();
this.peopleNumber = redEnvelopeVO.getPeopleNumber();
this.isLimited = true;
this.isFixedTime = CouponConstants.COUPON_USE_TIME_FIXED;
this.getType = CouponConstants.COUPON_USR_TYPE_ACTIVITY;
}
}
......@@ -69,7 +69,7 @@ public class CouponInfoActivityVO implements Serializable {
@ApiModelProperty(value = "分享者-每人限制领取张数", required = true)
private Integer restrictedAccess;
@ApiModelProperty(value = "被分享用户标签")
@ApiModelProperty(value = "被分享用户标签 1新人 2实名认证 3企业认证 4 无")
private Integer userTag;
@ApiModelProperty(value = "分享者-分享人数")
......
package com.mmc.oms.model.vo.coupon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author small
* @Date 2023/6/5 13:58
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class RedEnvelopeVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户范围(1所有用户 2渠道用户 3非渠道用户 4注册用户)", required = true, example = "1")
@NotBlank(message = "用户范围")
private Integer userScope;
@ApiModelProperty(value = "优惠券名称", required = true, example = "123")
@NotBlank(message = "请填写优惠券名称")
@Length(max = 64, message = "优惠券名称长度不能超过64个字符")
private String couponName;
@ApiModelProperty(value = "分享者-优惠券使用类型 1vip券, 2品牌券 3红包", required = true, example = "3")
@Range(min = 1, max = 2, message = "请选择优惠券使用类型")
private Integer useType;
@ApiModelProperty(value = "分享者-可使用时间范围 开始时间 yyyy-MM-dd HH:mm:ss", required = true, example = "2023-06-05 00:00:00")
private Date useStartTime;
@ApiModelProperty(value = "分享者-可使用时间范围 结束时间 yyyy-MM-dd HH:mm:ss", required = true, example = "2023-07-07 23:59:59")
private Date useEndTime;
@ApiModelProperty(value = "分享者-兑换的优惠券面值", required = true, example = "100")
@NotNull(message = "红包金额")
@DecimalMax(value = "99999.99", message = "优惠券面值不能大于99999.99")
private BigDecimal couponMoney;
@ApiModelProperty(value = "分享者-发放总数", required = true, example = "10")
private Integer couponTotal;
@ApiModelProperty(value = "分享者-分享人数", required = true, example = "2")
private Integer peopleNumber;
@ApiModelProperty(value = "被分享用户标签 1新人 2实名认证 3企业认证 4 无", example = "4")
private Integer userTag;
@ApiModelProperty(value = "被分享者-优惠券使用类型 1vip,2品牌券 3红包", required = true, example = "3")
@Range(min = 1, max = 2, message = "请选择优惠券使用类型")
private Integer beSharedUseType;
@ApiModelProperty(value = "被分享者-兑换的优惠券面值", required = true, example = "50")
@NotNull(message = "红包金额")
@DecimalMax(value = "99999.99", message = "优惠券面值不能大于99999.99")
private BigDecimal beSharedCouponMoney;
@ApiModelProperty(value = "被分享者-发放总数", required = true, example = "12")
private Integer beSharedCouponTotal;
}
......@@ -10,6 +10,7 @@ import com.mmc.oms.model.qo.CouponUserInfoQO;
import com.mmc.oms.model.qo.ProductCouponQO;
import com.mmc.oms.model.vo.coupon.CouponInfoActivityVO;
import com.mmc.oms.model.vo.coupon.CouponInfoVO;
import com.mmc.oms.model.vo.coupon.RedEnvelopeVO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
......@@ -33,13 +34,21 @@ public interface CouponBackService extends IService<CouponDO> {
ResultBody saveCouponBackInfo(CouponInfoVO couponVO, MultipartFile file);
/**
* 创建-裂变优惠券
* 创建-裂变优惠券 品牌卷
*
* @param couponInfoActivityVO
* @return
*/
ResultBody saveActivityCouponInfo(CouponInfoActivityVO couponInfoActivityVO);
/**
* 创建-裂变优惠券 红包
*
* @param redEnvelopeVO
* @return
*/
ResultBody redEnvelope(RedEnvelopeVO redEnvelopeVO);
/**
* 查询分页列表-优惠券
......@@ -156,4 +165,6 @@ public interface CouponBackService extends IService<CouponDO> {
ResultBody ordinaryActivities(ProductCouponQO productCouponQO);
ResultBody fissionActivity(ProductCouponQO productCouponQO);
}
......@@ -36,6 +36,7 @@ import com.mmc.oms.model.qo.CouponUserInfoQO;
import com.mmc.oms.model.qo.ProductCouponQO;
import com.mmc.oms.model.vo.coupon.CouponInfoActivityVO;
import com.mmc.oms.model.vo.coupon.CouponInfoVO;
import com.mmc.oms.model.vo.coupon.RedEnvelopeVO;
import com.mmc.oms.service.CouponBackService;
import com.mmc.oms.service.CouponUserService;
import org.apache.commons.lang3.StringUtils;
......@@ -183,6 +184,38 @@ public class CouponBackServiceImpl extends ServiceImpl<CouponBackDao, CouponDO>
}
}
@Override
public ResultBody redEnvelope(RedEnvelopeVO redEnvelopeVO) {
LambdaQueryWrapper<CouponDO> wrapper = new LambdaQueryWrapper();
wrapper.eq(CouponDO::getCouponName, redEnvelopeVO.getCouponName()).eq(CouponDO::getIsDel, false);
long count = this.count(wrapper);
if (count > 0) {
return ResultBody.error("优惠券名重复");
}
if (redEnvelopeVO.getBeSharedCouponTotal() < redEnvelopeVO.getCouponTotal()) {
return ResultBody.error("被分享者券发行量应大于等于分享者券发行量*分享人数*1.5");
}
CouponDO couponDO = new CouponDO(redEnvelopeVO);
couponDO.setLastTotal(redEnvelopeVO.getCouponTotal());
couponDO.setCreateTime(new Date());
couponDO.setIsLimited(true);
CouponDO couponActivity = new CouponDO(redEnvelopeVO, 1);
couponActivity.setLastTotal(redEnvelopeVO.getBeSharedCouponTotal());
couponActivity.setCreateTime(new Date());
Boolean execute = transactionTemplate.execute(e -> {
this.save(couponDO);
couponActivity.setParentId(couponDO.getId());
this.save(couponActivity);
return Boolean.TRUE;
});
if (execute) {
return ResultBody.success();
} else {
return ResultBody.error("请稍后重试");
}
}
private List<CouponUserDO> extracted(CouponDO couponDO, List<MallUserDTO> result) {
Integer couponDay = couponDO.getCouponDay();
DateTime date = DateUtil.date();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论