|
@@ -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;
|
|
|
+ }
|
|
|
}
|