Browse Source

Merge branch 'dev' into 'mp-server-test'

奖品增加券包类型

See merge request quanshu/mp-server!463
zhong chunping 3 years ago
parent
commit
0f6b55fca8

+ 1 - 0
mp-common/src/main/java/com/qs/mp/common/enums/TicketPrizeTypeEnum.java

@@ -15,6 +15,7 @@ public enum TicketPrizeTypeEnum implements IEnum<String> {
 
   GOODS("goods", "商品"),
   COUPON("coupon", "优惠券"),
+  COUPON_PKG("coupon_pkg", "优惠券包"),
   COIN("coin", "盲豆");
 
   private final String value;

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

@@ -37,6 +37,13 @@ public class CouponPkg implements Serializable {
     @TableField("title")
     private String title;
 
+    /**
+     * 券包图片
+     */
+    @ApiModelProperty("券包图片")
+    @TableField("pic_url")
+    private String picUrl;
+
     /**
      * 面值
      */

+ 8 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/CouponPkgItemMapper.java

@@ -2,6 +2,7 @@ package com.qs.mp.admin.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.CouponPkgItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qs.mp.admin.domain.vo.CouponPkgItemVO;
@@ -22,4 +23,11 @@ public interface CouponPkgItemMapper extends BaseMapper<CouponPkgItem> {
      * @return
      */
     List<CouponPkgItemVO> selectDetail(@Param(Constants.WRAPPER) QueryWrapper<CouponPkgItemVO> queryWrapper);
+
+    /**
+     * 根据券包id获取优惠券列表
+     * @param queryWrapper
+     * @return
+     */
+    List<Coupon> selectCouponList(@Param(Constants.WRAPPER) QueryWrapper<Coupon> queryWrapper);
 }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ICouponPkgItemService.java

@@ -1,5 +1,6 @@
 package com.qs.mp.admin.service;
 
+import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.CouponPkgItem;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.admin.domain.vo.CouponPkgItemVO;
@@ -22,4 +23,12 @@ public interface ICouponPkgItemService extends IService<CouponPkgItem> {
      * @return
      */
     List<CouponPkgItemVO> listDetailByCouponPkgId(Long id);
+
+    /**
+     * 根据券包模板id获取优惠券列表
+     * @param couponPkgId
+     * @return
+     */
+    List<Coupon> listCouponByPkgId(String couponPkgId);
+
 }

+ 11 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ICouponPkgService.java

@@ -2,6 +2,7 @@ package com.qs.mp.admin.service;
 
 import com.qs.mp.admin.domain.CouponPkg;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.param.CouponPkgParam;
 import com.qs.mp.admin.domain.vo.CouponPkgVO;
 
@@ -46,4 +47,14 @@ public interface ICouponPkgService extends IService<CouponPkg> {
      * @return
      */
     boolean delete(Long id);
+
+    /**
+     * 券包发券
+     *
+     * @param ticket
+     * @param userId
+     * @param refId
+     */
+    void distribute(Ticket ticket, Long userId, String couponPkgId);
+
 }

+ 9 - 1
mp-service/src/main/java/com/qs/mp/admin/service/impl/CouponPkgItemServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qs.mp.admin.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.CouponPkgItem;
 import com.qs.mp.admin.domain.vo.CouponPkgItemVO;
 import com.qs.mp.admin.mapper.CouponPkgItemMapper;
@@ -24,7 +25,14 @@ public class CouponPkgItemServiceImpl extends ServiceImpl<CouponPkgItemMapper, C
     @Override
     public List<CouponPkgItemVO> listDetailByCouponPkgId(Long id) {
         QueryWrapper<CouponPkgItemVO> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("coupon_pkg_id", id);
+        queryWrapper.eq("t1.coupon_pkg_id", id);
         return this.getBaseMapper().selectDetail(queryWrapper);
     }
+
+    @Override
+    public List<Coupon> listCouponByPkgId(String couponPkgId) {
+        QueryWrapper<Coupon> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("t1.coupon_pkg_id", couponPkgId);
+        return this.getBaseMapper().selectCouponList(queryWrapper);
+    }
 }

+ 43 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/CouponPkgServiceImpl.java

@@ -1,10 +1,13 @@
 package com.qs.mp.admin.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.CouponPkg;
 import com.qs.mp.admin.domain.CouponPkgItem;
+import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.param.CouponPkgItemParam;
 import com.qs.mp.admin.domain.param.CouponPkgParam;
 import com.qs.mp.admin.domain.vo.CouponPkgItemVO;
@@ -13,12 +16,31 @@ import com.qs.mp.admin.mapper.CouponPkgMapper;
 import com.qs.mp.admin.service.ICouponPkgItemService;
 import com.qs.mp.admin.service.ICouponPkgService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.admin.service.ICouponService;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.enums.CouponPkgStatusEnum;
+import com.qs.mp.common.enums.CouponUseAreaEnum;
+import com.qs.mp.common.enums.UserCouponStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.common.utils.LogUtil;
+import com.qs.mp.system.service.id.BizIdGenerator;
+import com.qs.mp.user.domain.UserCoupon;
+import com.qs.mp.user.domain.UserCouponChannel;
+import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.domain.UserTicketOrderItem;
+import com.qs.mp.user.service.IUserCouponChannelService;
+import com.qs.mp.user.service.IUserCouponService;
+import com.qs.mp.user.service.IUserTicketOrderItemService;
+import com.qs.mp.user.service.IUserTicketOrderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,9 +57,28 @@ import java.util.Objects;
 @Service
 public class CouponPkgServiceImpl extends ServiceImpl<CouponPkgMapper, CouponPkg> implements ICouponPkgService {
 
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+
     @Autowired
     private ICouponPkgItemService couponPkgItemService;
 
+
+    @Autowired
+    private ICouponService couponService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void distribute(Ticket ticket, Long userId, String couponPkgId) {
+        List<CouponPkgItem> couponPkgItems = couponPkgItemService.list(new LambdaQueryWrapper<CouponPkgItem>().eq(CouponPkgItem::getCouponPkgId, couponPkgId));
+
+        if (CollectionUtils.isEmpty(couponPkgItems)) {
+            throw new ServiceException("券包下优惠券不存在");
+        }
+        for (CouponPkgItem couponPkgItem : couponPkgItems) {
+            couponService.distribute(ticket, userId, couponPkgItem.getCouponId().toString());
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean delete(Long id) {
@@ -94,6 +135,7 @@ public class CouponPkgServiceImpl extends ServiceImpl<CouponPkgMapper, CouponPkg
         // 更新券包
         CouponPkg couponPkg = new CouponPkg();
         BeanUtils.copyProperties(couponPkgParam, couponPkg);
+        couponPkgParam.setPicUrl("coupon_def.jpeg");
         this.updateById(couponPkg);
 
         // 创建券包明细
@@ -121,6 +163,7 @@ public class CouponPkgServiceImpl extends ServiceImpl<CouponPkgMapper, CouponPkg
 
         CouponPkg couponPkg = new CouponPkg();
         BeanUtils.copyProperties(couponPkgParam, couponPkg);
+        couponPkgParam.setPicUrl("coupon_def.jpeg");
         this.save(couponPkg);
 
         List<CouponPkgItem> params = new ArrayList<>();

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/service/impl/CouponServiceImpl.java

@@ -76,7 +76,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
 	private IChannelService channelService;
 
   @Override
-  @Transactional
+  @Transactional(rollbackFor = Exception.class)
   public void distribute(Ticket ticket, Long userId, String couponId) {
     Coupon coupon = getById(couponId);
     UserCoupon userCoupon = new UserCoupon();

+ 10 - 15
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -5,27 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qs.mp.admin.domain.Coupon;
-import com.qs.mp.admin.domain.Goods;
-import com.qs.mp.admin.domain.Ticket;
-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.TicketPackage;
+import com.qs.mp.admin.domain.*;
 import com.qs.mp.admin.domain.dto.TicketDrawNumDTO;
 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.domain.param.TicketBoxUpdateParam;
 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.ITicketBoxSerialService;
-import com.qs.mp.admin.service.ITicketBoxService;
-import com.qs.mp.admin.service.ITicketPackageService;
-import com.qs.mp.admin.service.ITicketService;
+import com.qs.mp.admin.service.*;
 import com.qs.mp.common.enums.MqTopicType;
 import com.qs.mp.common.enums.TicketBoxStatusEnum;
 import com.qs.mp.common.enums.TicketPkgSaleStatusEnum;
@@ -103,6 +90,9 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
   @Autowired
   private ITicketPackageService ticketPackageService;
 
+  @Autowired
+  private ICouponPkgService couponPkgService;
+
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean updateTicketBox(TicketBoxUpdateParam param) {
@@ -256,6 +246,11 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
           awardsPrize.setTitle(coupon.getTitle());
           awardsPrize.setPicUrl(coupon.getPicUrl());
           awardsPrize.setValue(coupon.getDiscount());
+        } else if (prizeParam.getPrizeType() == TicketPrizeTypeEnum.COUPON_PKG) {
+          CouponPkg couponPkg = couponPkgService.getById(awardsPrize.getRefId());
+          awardsPrize.setTitle(couponPkg.getTitle());
+          awardsPrize.setValue(couponPkg.getFacePrice());
+          awardsPrize.setPicUrl(couponPkg.getPicUrl());
         } else {
           awardsPrize.setTitle("盲豆");
           awardsPrize.setPicUrl("md.jpeg");

+ 8 - 6
mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java

@@ -8,10 +8,7 @@ import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketAwards;
 import com.qs.mp.admin.domain.TicketAwardsPrize;
 import com.qs.mp.admin.domain.dto.TicketDrawNumDTO;
-import com.qs.mp.admin.service.ICouponService;
-import com.qs.mp.admin.service.ITicketAwardsPrizeService;
-import com.qs.mp.admin.service.ITicketAwardsService;
-import com.qs.mp.admin.service.ITicketService;
+import com.qs.mp.admin.service.*;
 import com.qs.mp.common.enums.CouponUseAreaEnum;
 import com.qs.mp.common.enums.PrizeStorageInTypeEnum;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
@@ -90,6 +87,9 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
     @Autowired
     private BizIdGenerator bizIdGenerator;
 
+    @Autowired
+    private ICouponPkgService couponPkgService;
+
     @Override
     public List<TicketAwardsPrize> listPrize(Ticket ticket, Long userId) {
         UserHitPrize userHitPrize = getOne(new LambdaQueryWrapper<UserHitPrize>().eq(UserHitPrize::getTicketId, ticket.getTicketId()));
@@ -125,7 +125,7 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void cashPrize(Ticket ticket, Long userId, String awardsId, String prizeId) {
         // 更新奖品已兑奖数量
         TicketAwardsPrize ticketAwardsPrize = ticketAwardsPrizeService.getById(prizeId);
@@ -150,7 +150,9 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
             userCoinService.produce(userId, ticketAwardsPrize.getValue(), userHitPrize.getId());
         } else if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COUPON) {
             couponService.distribute(ticket, userId, ticketAwardsPrize.getRefId());
-        } else {
+        } else if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COUPON_PKG) {
+            couponPkgService.distribute(ticket, userId, ticketAwardsPrize.getRefId());
+        }else {
             userPrizeStorageService.takeInStorage(userId, ticketAwardsPrize, PrizeStorageInTypeEnum.TICKET_CASHED, userHitPrize.getId());
         }
 

+ 7 - 0
mp-service/src/main/resources/mapper/admin/CouponPkgItemMapper.xml

@@ -31,4 +31,11 @@
         left join mp_coupon t2 on t1.coupon_id = t2.coupon_id
         ${ew.customSqlSegment}
     </select>
+
+    <select id="selectCouponList" resultType="com.qs.mp.admin.domain.Coupon">
+        select t2.*
+        from mp_coupon_pkg_item t1
+        left join mp_coupon t2 on t1.coupon_id = t2.coupon_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>