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