chunping 3 rokov pred
rodič
commit
4d92e1061c

+ 9 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/TicketBoxMgrController.java

@@ -17,6 +17,7 @@ import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.ChannelRoleEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
 import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
@@ -80,7 +81,14 @@ public class TicketBoxMgrController extends BaseApiController {
 	@PostMapping("/create")
 	public AjaxResult create(@Validated @RequestBody TicketBoxCreateParam param) {
 
-
+		if (param.getType() == TicketTypeEnum.OFFLINE) {
+			if (param.getPkgSalePrice() == null || param.getPkgSalePrice() == 0 ) {
+				return AjaxResult.error("采购单价必须大于0");
+			}
+			if (param.getPkgUnit() == null || param.getPkgUnit() == 0) {
+				return AjaxResult.error("每包张数必须大于0");
+			}
+		}
 		return AjaxResult.success();
 	}
 

+ 15 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketAwardsParam.java

@@ -1,7 +1,10 @@
 package com.qs.mp.admin.domain.param;
 
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import java.util.List;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import lombok.Data;
 
 /**
@@ -11,5 +14,17 @@ import lombok.Data;
 @ApiModel(value= "盲票组奖级参数")
 @Data
 public class TicketAwardsParam {
+
+  @NotEmpty(message = "奖品列表不能为空")
+  @ApiModelProperty(value = "奖品列表",required=true)
   List<TicketAwardsPrizeParam> prizeList;
+
+  @NotNull(message = "奖级名称不能为空")
+  @ApiModelProperty(value = "奖级名称",required=true)
+  private String name;
+
+  @NotNull(message = "奖级数量不能为空")
+  @ApiModelProperty(value = "奖级数量",required=true)
+  private Integer quantity;
+
 }

+ 5 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxCreateParam.java

@@ -3,6 +3,8 @@ package com.qs.mp.admin.domain.param;
 import com.qs.mp.common.enums.TicketTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
 
@@ -44,4 +46,7 @@ public class TicketBoxCreateParam {
 	@ApiModelProperty(value = "分佣基数",required=true)
 	private Integer saleCommRate;
 
+	@NotEmpty(message = "奖级列表不能为空")
+	@ApiModelProperty(value = "奖级列表",required=true)
+	List<TicketAwardsParam> awardsList;
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketBoxService.java

@@ -2,6 +2,7 @@ package com.qs.mp.admin.service;
 
 import com.qs.mp.admin.domain.TicketBox;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.admin.domain.param.TicketBoxCreateParam;
 
 /**
  * <p>
@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ITicketBoxService extends IService<TicketBox> {
 
+  /**
+   * 创建票组
+   * @param param
+   * @return
+   */
+  boolean createTicketBox(TicketBoxCreateParam param);
 }

+ 91 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -1,9 +1,30 @@
 package com.qs.mp.admin.service.impl;
 
+import com.qs.mp.admin.domain.Coupon;
+import com.qs.mp.admin.domain.Goods;
+import com.qs.mp.admin.domain.TicketAwards;
+import com.qs.mp.admin.domain.TicketAwardsPrize;
 import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.domain.param.TicketAwardsParam;
+import com.qs.mp.admin.domain.param.TicketAwardsPrizeParam;
+import com.qs.mp.admin.domain.param.TicketBoxCreateParam;
 import com.qs.mp.admin.mapper.TicketBoxMapper;
+import com.qs.mp.admin.service.ICouponService;
+import com.qs.mp.admin.service.IGoodsService;
+import com.qs.mp.admin.service.ITicketAwardsPrizeService;
+import com.qs.mp.admin.service.ITicketAwardsService;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.system.service.id.BizIdGenerator;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.List;
+import ma.glasnost.orika.MapperFacade;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +38,74 @@ import org.springframework.stereotype.Service;
 @Service
 public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox> implements ITicketBoxService {
 
+  @Autowired
+  private MapperFacade mapperFacade;
+
+  @Autowired
+  private BizIdGenerator bizIdGenerator;
+
+  @Autowired
+  private ITicketAwardsService ticketAwardsService;
+
+  @Autowired
+  private ITicketAwardsPrizeService ticketAwardsPrizeService;
+
+  @Autowired
+  private IGoodsService goodsService;
+
+  @Autowired
+  private ICouponService couponService;
+
+  @Override
+  public boolean createTicketBox(TicketBoxCreateParam param) {
+    // 创建盲票组
+    TicketBox ticketBox = mapperFacade.map(param, TicketBox.class);
+    if (ticketBox.getType() == TicketTypeEnum.OFFLINE) {
+      ticketBox.setPkgQty(ticketBox.getQuantity() / ticketBox.getPkgUnit());
+    }
+    ticketBox.setStatus(TicketBoxStatusEnum.PUT_OFF);
+    ticketBox.setBoxId(bizIdGenerator.newId());
+    save(ticketBox);
+
+    // 创建奖级
+    List<TicketAwards> ticketAwardsList = new ArrayList<>();
+    List<TicketAwardsPrize> awardsPrizeList = new ArrayList<>();
+    for (TicketAwardsParam awardsParam : param.getAwardsList()) {
+      TicketAwards ticketAwards = mapperFacade.map(awardsParam, TicketAwards.class);
+      ticketAwards.setAwardsId(bizIdGenerator.newId());
+      ticketAwards.setBoxId(ticketBox.getBoxId());
+      BigDecimal hitRate = new BigDecimal(awardsParam.getQuantity()).divide(new BigDecimal(ticketBox.getQuantity()), 4, RoundingMode.DOWN);
+      ticketAwards.setHitRate(hitRate);
+      ticketAwardsList.add(ticketAwards);
+
+      for (TicketAwardsPrizeParam prizeParam : awardsParam.getPrizeList()) {
+        TicketAwardsPrize awardsPrize = mapperFacade.map(prizeParam, TicketAwardsPrize.class);
+        awardsPrize.setPrizeId(bizIdGenerator.newId());
+        awardsPrize.setBoxId(ticketBox.getBoxId());
+        awardsPrize.setAwardsId(ticketAwards.getAwardsId());
+        awardsPrize.setRemainQty(awardsPrize.getQuantity());
+        if (prizeParam.getPrizeType() == TicketPrizeTypeEnum.GOODS) {
+          Goods goods = goodsService.getById(awardsPrize.getRefId());
+          awardsPrize.setTitle(goods.getTitle());
+          awardsPrize.setPicUrl(goods.getPicUrl());
+          awardsPrize.setValue(goods.getValue());
+        } else if (prizeParam.getPrizeType() == TicketPrizeTypeEnum.COUPON) {
+          Coupon coupon = couponService.getById(awardsPrize.getRefId());
+          awardsPrize.setTitle(coupon.getTitle());
+          awardsPrize.setPicUrl(coupon.getPicUrl());
+          awardsPrize.setValue(coupon.getDiscount());
+        } else {
+          awardsPrize.setTitle("盲豆");
+          awardsPrize.setPicUrl("md.jpeg");
+        }
+        awardsPrizeList.add(awardsPrize);
+      }
+    }
+    ticketAwardsService.saveBatch(ticketAwardsList);
+    ticketAwardsPrizeService.saveBatch(awardsPrizeList);
+
+    // TODO 分包,生成券
+
+    return true;
+  }
 }