Browse Source

Merge branch 'dev_v1.3.4_20220902'

# Conflicts:
#	cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wordfilter/WordContext.java
Eric 3 years ago
parent
commit
fc5a5c6ae5

+ 8 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponInfoVO.java

@@ -1,7 +1,9 @@
 package com.yonge.cooleshow.admin.io.request.coupon;
 package com.yonge.cooleshow.admin.io.request.coupon;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponValidTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponValidTypeEnum;
@@ -82,13 +84,13 @@ public class CouponInfoVO {
         private String describe;
         private String describe;
 
 
         @ApiModelProperty("客户端类型: TEACHER(老师端), STUDENT(学生端)")
         @ApiModelProperty("客户端类型: TEACHER(老师端), STUDENT(学生端)")
-        private String clientType;
+        private ClientEnum clientType;
 
 
         @ApiModelProperty("可用品类: UNIVERSAL(全场通用) VIP(小酷Ai) PIANO(云酷琴房) MALL(商场购物券) MUSIC(单曲点播券) SPARRING(陪练课购买券) LIVE(直播课购买券) VIDEO(视频课购买券) ")
         @ApiModelProperty("可用品类: UNIVERSAL(全场通用) VIP(小酷Ai) PIANO(云酷琴房) MALL(商场购物券) MUSIC(单曲点播券) SPARRING(陪练课购买券) LIVE(直播课购买券) VIDEO(视频课购买券) ")
-        private String category;
+        private CouponCategoryEnum category;
 
 
         @ApiModelProperty("优惠券类型: FULL_DISCOUNT(满减券) VOUCHER(代金券) ")
         @ApiModelProperty("优惠券类型: FULL_DISCOUNT(满减券) VOUCHER(代金券) ")
-        private String couponType;
+        private CouponTypeEnum couponType;
 
 
         @ApiModelProperty("当前库存量")
         @ApiModelProperty("当前库存量")
         private Integer inventory;
         private Integer inventory;
@@ -112,9 +114,11 @@ public class CouponInfoVO {
         private Long updateTime;
         private Long updateTime;
 
 
         @ApiModelProperty("最后更新时间")
         @ApiModelProperty("最后更新时间")
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
         private Date updatedTime;
         private Date updatedTime;
 
 
         @ApiModelProperty("创建时间")
         @ApiModelProperty("创建时间")
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
         private Date createdTime;
         private Date createdTime;
 
 
         public Date getUpdatedTime() {
         public Date getUpdatedTime() {
@@ -189,6 +193,7 @@ public class CouponInfoVO {
         private Long createdBy;
         private Long createdBy;
 
 
         @ApiModelProperty("创建时间")
         @ApiModelProperty("创建时间")
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
         private Date createdTime;
         private Date createdTime;
 
 
         public static CouponQueryInfo from(String recv) {
         public static CouponQueryInfo from(String recv) {

+ 14 - 8
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponInventoryVO.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.io.request.coupon;
 package com.yonge.cooleshow.admin.io.request.coupon;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.EStatus;
@@ -12,8 +13,8 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.format.DateTimeFormat;
+import org.joda.time.DateTime;
+import org.springframework.format.annotation.DateTimeFormat;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
@@ -46,10 +47,14 @@ public class CouponInventoryVO {
         private CouponInventoryEnum dataType;
         private CouponInventoryEnum dataType;
 
 
         @ApiModelProperty("开始时间, yyyy-MM-dd HH:mm:ss")
         @ApiModelProperty("开始时间, yyyy-MM-dd HH:mm:ss")
-        private String startQueryTime;
+        @DateTimeFormat(pattern = MK.TIME_PATTERN)
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
+        private Date startQueryTime;
 
 
         @ApiModelProperty("结束时间, yyyy-MM-dd HH:mm:ss")
         @ApiModelProperty("结束时间, yyyy-MM-dd HH:mm:ss")
-        private String endQueryTime;
+        @DateTimeFormat(pattern = MK.TIME_PATTERN)
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
+        private Date endQueryTime;
 
 
         @ApiModelProperty(value = "结束时间", hidden = true)
         @ApiModelProperty(value = "结束时间", hidden = true)
         private Long startTime;
         private Long startTime;
@@ -76,15 +81,15 @@ public class CouponInventoryVO {
         }
         }
 
 
         public Long getStartTime() {
         public Long getStartTime() {
-            if (StringUtils.isNotEmpty(getStartQueryTime())) {
-                return DateTimeFormat.forPattern(MK.TIME_FORMAT).parseDateTime(getStartQueryTime()).getMillis() / 1000;
+            if (Objects.nonNull(getStartQueryTime())) {
+                return new DateTime(getStartQueryTime()).getMillis() / 1000;
             }
             }
             return startTime;
             return startTime;
         }
         }
 
 
         public Long getEndTime() {
         public Long getEndTime() {
-            if (StringUtils.isNotEmpty(getEndQueryTime())) {
-                return DateTimeFormat.forPattern(MK.TIME_FORMAT).parseDateTime(getEndQueryTime()).getMillis() / 1000;
+            if (Objects.nonNull(getEndQueryTime())) {
+                return new DateTime(getEndQueryTime()).getMillis() / 1000;
             }
             }
             return endTime;
             return endTime;
         }
         }
@@ -120,6 +125,7 @@ public class CouponInventoryVO {
         private String remark;
         private String remark;
 
 
         @ApiModelProperty("创建时间")
         @ApiModelProperty("创建时间")
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
         private Date createdTime;
         private Date createdTime;
 
 
     }
     }

+ 6 - 6
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java

@@ -39,8 +39,9 @@ public class TaskController extends BaseController {
     private PlatformCashAccountRecordService platformCashAccountRecordService;
     private PlatformCashAccountRecordService platformCashAccountRecordService;
     @Autowired
     @Autowired
     private ActivityPlanService activityPlanService;
     private ActivityPlanService activityPlanService;
+
     @Value("${app.blacklist:}")
     @Value("${app.blacklist:}")
-    private String blackListFilePath;
+    private String blacklistFilePath;
 
 
     /***
     /***
      * 轮询用户订单
      * 轮询用户订单
@@ -86,14 +87,13 @@ public class TaskController extends BaseController {
     //刷新黑名单
     //刷新黑名单
     @PostMapping(value = "/refreshBlackList")
     @PostMapping(value = "/refreshBlackList")
     public HttpResponseResult refreshBlackList() {
     public HttpResponseResult refreshBlackList() {
-        RBucket<Long> bucket = redissonClient.getBucket(SysConfigConstant.BLACK_LIST_UPDATE_TIME);
 
 
-        String filePath = blackListFilePath;
-        if (StringUtils.isEmpty(filePath)) {
-            filePath = SysConfigConstant.BLACK_LIST_FILE_PATH;
+        if (StringUtils.isEmpty(blacklistFilePath)) {
+            blacklistFilePath = SysConfigConstant.BLACK_LIST_FILE_PATH;
         }
         }
 
 
-        File file = new File(filePath);
+        RBucket<Long> bucket = redissonClient.getBucket(SysConfigConstant.BLACK_LIST_UPDATE_TIME);
+        File file = new File(blacklistFilePath);
         bucket.set(file.lastModified());
         bucket.set(file.lastModified());
         return HttpResponseResult.succeed();
         return HttpResponseResult.succeed();
     }
     }

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MK.java

@@ -11,5 +11,7 @@ public interface MK {
     // 正型
     // 正型
     String EXP_INT = "^\\d+$";
     String EXP_INT = "^\\d+$";
     // 时间格式
     // 时间格式
-    String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
+    String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
+    // 时区设置
+    String TIME_ZONE = "GMT+8";
 }
 }

+ 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

+ 5 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wordfilter/WordContext.java

@@ -36,7 +36,7 @@ public class WordContext {
     @Autowired
     @Autowired
     private RedissonClient redissonClient;
     private RedissonClient redissonClient;
     @Value("${app.blacklist:}")
     @Value("${app.blacklist:}")
-    private String blackListFilePath;
+    private String blacklistFilePath;
 
 
     /**
     /**
      * 敏感词字典
      * 敏感词字典
@@ -81,14 +81,13 @@ public class WordContext {
 
 
     private void initKeyWord1() {
     private void initKeyWord1() {
         try {
         try {
-            RBucket<Long> bucket = redissonClient.getBucket(SysConfigConstant.BLACK_LIST_UPDATE_TIME);
 
 
-            String filePath = blackListFilePath;
-            if (StringUtils.isEmpty(filePath)) {
-                filePath = SysConfigConstant.BLACK_LIST_FILE_PATH;
+            if (StringUtils.isEmpty(blacklistFilePath)) {
+                blacklistFilePath = SysConfigConstant.BLACK_LIST_FILE_PATH;
             }
             }
 
 
-            File file = new File(filePath);
+            RBucket<Long> bucket = redissonClient.getBucket(SysConfigConstant.BLACK_LIST_UPDATE_TIME);
+            File file = new File(blacklistFilePath);
             this.blackList = FileUtils.readFileToString(file, "UTF-8");
             this.blackList = FileUtils.readFileToString(file, "UTF-8");
             bucket.set(file.lastModified());
             bucket.set(file.lastModified());
             initKeyWord();
             initKeyWord();

+ 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>