瀏覽代碼

Merge branch 'dev_v1.3.4_20220902' of http://git.dayaedu.com/yonge/cooleshow into dev_v1.3.4_20220902

Eric 2 年之前
父節點
當前提交
7562cf6435

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -106,6 +106,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     PLATFORM_ADD_VIP("会员赠送"),
     PLATFORM_ADD_VIP("会员赠送"),
     SMS_STUDENT_LIVE_COMPLETION_FAIL("直播课成课失败"),
     SMS_STUDENT_LIVE_COMPLETION_FAIL("直播课成课失败"),
     STUDENT_LIVE_COMPLETION_FAIL("直播课成课失败"),
     STUDENT_LIVE_COMPLETION_FAIL("直播课成课失败"),
+    COUPON_ISSUE("优惠券发放"),
 
 
     ;
     ;
 
 

+ 18 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/CouponInfoMapper.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInventoryQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInventoryQuery;
 import com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper;
 import com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper;
@@ -27,7 +28,8 @@ public interface CouponInfoMapper extends BaseMapper<CouponInfo> {
 
 
     /**
     /**
      * 分页查询优惠券信息
      * 分页查询优惠券信息
-     * @param page IPage<CouponInfoWrapper>
+     *
+     * @param page  IPage<CouponInfoWrapper>
      * @param query CouponInfoQuery
      * @param query CouponInfoQuery
      * @return List<CouponInfoWrapper>
      * @return List<CouponInfoWrapper>
      */
      */
@@ -35,15 +37,17 @@ public interface CouponInfoMapper extends BaseMapper<CouponInfo> {
 
 
     /**
     /**
      * 优惠券发放未使用统计
      * 优惠券发放未使用统计
+     *
      * @param couponIds 优惠券ID
      * @param couponIds 优惠券ID
-     * @param query 统计查询条件
+     * @param query     统计查询条件
      * @return List<StatGroupWrapper>
      * @return List<StatGroupWrapper>
      */
      */
     List<StatGroupWrapper> selectCouponIssueStatInfo(@Param("couponIds") List<Long> couponIds, @Param("record") CouponInfoQuery.IssueStatQuery query);
     List<StatGroupWrapper> selectCouponIssueStatInfo(@Param("couponIds") List<Long> couponIds, @Param("record") CouponInfoQuery.IssueStatQuery query);
 
 
     /**
     /**
      * 优惠券库存量调整信息
      * 优惠券库存量调整信息
-     * @param page IPage<CouponInventoryWrapper>
+     *
+     * @param page  IPage<CouponInventoryWrapper>
      * @param query CouponInventoryQuery
      * @param query CouponInventoryQuery
      * @return List<CouponInventoryWrapper>
      * @return List<CouponInventoryWrapper>
      */
      */
@@ -51,8 +55,19 @@ public interface CouponInfoMapper extends BaseMapper<CouponInfo> {
 
 
     /**
     /**
      * 活动优惠券统计
      * 活动优惠券统计
+     *
      * @param couponIds 优惠券ID
      * @param couponIds 优惠券ID
      * @return List<StatGroupWrapper>
      * @return List<StatGroupWrapper>
      */
      */
     List<StatGroupWrapper> selectActivityCouponStatInfo(@Param("couponIds") List<Long> couponIds);
     List<StatGroupWrapper> selectActivityCouponStatInfo(@Param("couponIds") List<Long> couponIds);
+
+    /**
+     * 优惠券库存变更
+     *
+     * @param couponId 优惠券id
+     * @param size     变更数量
+     * @param inOrOut  增/减状态
+     * @return
+     */
+    int updateStock(@Param("couponId") Long couponId, @Param("size") int size, @Param("inOrOut") InOrOutEnum inOrOut);
 }
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CouponInfoService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInventoryQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInventoryQuery;
 import com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper;
 import com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper;
@@ -55,4 +56,14 @@ public interface CouponInfoService extends IService<CouponInfo> {
      * @return int 入库行数
      * @return int 入库行数
      */
      */
     int saveOrUpdateCouponInventoryInfo(CouponInventory inventory);
     int saveOrUpdateCouponInventoryInfo(CouponInventory inventory);
+
+    /**
+     * 优惠券库存变更
+     *
+     * @param couponId 优惠券id
+     * @param size 变更数量
+     * @param inOrOut 增/减状态
+     * @return
+     */
+    int updateStock(Long couponId, int size, InOrOutEnum inOrOut);
 }
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponInfoServiceImp.java

@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.cooleshow.biz.dal.mapper.CouponInfoMapper;
 import com.yonge.cooleshow.biz.dal.mapper.CouponInfoMapper;
@@ -214,4 +215,9 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
         // 新增优惠券库存量记录
         // 新增优惠券库存量记录
         return couponInventoryMapper.insert(inventory);
         return couponInventoryMapper.insert(inventory);
     }
     }
+
+    @Override
+    public int updateStock(Long couponId, int size, InOrOutEnum inOrOut) {
+        return baseMapper.updateStock(couponId,size,inOrOut);
+    }
 }
 }

+ 46 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponIssueServiceImp.java

@@ -1,11 +1,15 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.biz.dal.dto.UserParam;
 import com.yonge.cooleshow.biz.dal.dto.UserParam;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponIssue;
 import com.yonge.cooleshow.biz.dal.entity.CouponIssue;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SendTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SendTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.cooleshow.biz.dal.mapper.CouponIssueMapper;
 import com.yonge.cooleshow.biz.dal.mapper.CouponIssueMapper;
@@ -13,22 +17,22 @@ import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponIssueQueryInfo;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponIssueQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.CouponInfoService;
 import com.yonge.cooleshow.biz.dal.service.CouponInfoService;
 import com.yonge.cooleshow.biz.dal.service.CouponIssueService;
 import com.yonge.cooleshow.biz.dal.service.CouponIssueService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.vo.CouponIssueUserVo;
 import com.yonge.cooleshow.biz.dal.vo.CouponIssueUserVo;
 import com.yonge.cooleshow.biz.dal.vo.coupon.CouponIssueWrapper;
 import com.yonge.cooleshow.biz.dal.vo.coupon.CouponIssueWrapper;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -42,11 +46,18 @@ import java.util.stream.Collectors;
 @Service
 @Service
 public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, CouponIssue> implements CouponIssueService {
 public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, CouponIssue> implements CouponIssueService {
 
 
+    private static final Logger log = LoggerFactory.getLogger(CouponIssueServiceImp.class);
     @Autowired
     @Autowired
     private CouponInfoService couponInfoService;
     private CouponInfoService couponInfoService;
     @Autowired
     @Autowired
     private SysUserMapper sysUserMapper;
     private SysUserMapper sysUserMapper;
 
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private SysMessageService sysMessageService;
+
 
 
     @Override
     @Override
     public IPage<CouponIssueWrapper> queryCouponIssueInfo(IPage<CouponIssueWrapper> page, CouponIssueQueryInfo query) {
     public IPage<CouponIssueWrapper> queryCouponIssueInfo(IPage<CouponIssueWrapper> page, CouponIssueQueryInfo query) {
@@ -127,9 +138,38 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
         this.saveBatch(couponIssueList);
         this.saveBatch(couponIssueList);
 
 
         //  优惠券扣减库存
         //  优惠券扣减库存
-        // couponInfoService.updateStock()
+        int i = couponInfoService.updateStock(couponId, userParam.size(), InOrOutEnum.OUT);
+        if (i == 0) {
+            throw new BizException("库存不足");
+        }
 
 
+        // 发送消息
+        sendMessage(couponInfo.getName(),userParam);
+    }
+
+    private void sendMessage(String couponName,List<UserParam> userParams) {
+        for (UserParam userParam : userParams) {
+
+            try {
+                com.yonge.cooleshow.auth.api.entity.SysUser sysUser = getSysUser(userParam.getUserId());
+                // 推送老师
+                Map<Long, String> teacherReceivers = new HashMap<>();
+                teacherReceivers.put(sysUser.getId(), sysUser.getPhone());
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.COUPON_ISSUE, teacherReceivers, null,
+                                                   0, null, userParam.getClientType().getCode(),couponName);
+
+            } catch (Exception e) {
+                log.error("发放优惠券消息发送失败 -->{}",e.fillInStackTrace());
+            }
+
+        }
+    }
 
 
+    private com.yonge.cooleshow.auth.api.entity.SysUser getSysUser(Long userId) {
+        return Optional.ofNullable(userId)
+                       .map(sysUserFeignService::queryUserById)
+                       .orElseThrow(() -> new BizException("用户不存在"));
     }
     }
 
 
     @Override
     @Override

+ 15 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CouponInfoMapper.xml

@@ -112,5 +112,19 @@
         </where>
         </where>
         GROUP BY t1.coupon_id_
         GROUP BY t1.coupon_id_
     </select>
     </select>
-    <!--活动优惠券统计-->
+
+    <update id="updateStock">
+        update coupon_info set inventory_ = inventory_
+        <choose>
+            <when test="inOrOut.code == 'IN'">
+                + #{size}
+            </when>
+            <when test="inOrOut.code == 'OUT'">
+                - #{size}
+                where inventory_ - #{size} &gt;= 0
+            </when>
+        </choose>
+
+
+    </update>
 </mapper>
 </mapper>