From 6ec16fd7016100a6d7e08f6da79eb9b6ad6c8868 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 20 Jun 2022 21:17:59 +0800 Subject: [PATCH] //tt sendtest --- .../schedule/CouponSendScheduleTest.java | 112 ++++++++++++++++++ .../domain/po/WxCouponSendInject.java | 38 ++++++ .../mapper/WxCouponSendInjectMapper.java | 11 ++ .../mapper/WxCouponSendInjectMapper.xml | 85 +++++++++++++ 4 files changed, 246 insertions(+) create mode 100644 mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxCouponSendInject.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java create mode 100644 mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java new file mode 100644 index 000000000..ab5044269 --- /dev/null +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java @@ -0,0 +1,112 @@ +package com.iformall.schedule; + +import com.alibaba.fastjson.JSONObject; +import com.iformall.domain.dto.WxCUserBasicInfoDto; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.msg.WxMsgRecord; +import com.iformall.domain.vo.WxCouponSendVo; +import com.iformall.enums.*; +import com.iformall.mapper.*; +import com.iformall.mq.MqBaseProducer; +import com.iformall.service.*; +import com.iformall.utils.CreditUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class CouponSendScheduleTest { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxMallMapper wxMallMapper; + + @Autowired + private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + + @Autowired + private WxCUserBasicInfoService wxCUserBasicInfoService; + + @Autowired + private WxOrderService wxOrderService; + + @Autowired + private WxCouponActionLogService wxCouponActionLogService; + + @Autowired + private WxCouponSendInjectMapper wxCouponSendInjectMapper; + + @Autowired + private MqBaseProducer mqBaseProducer; + + + @Async + //@Scheduled(cron = "0 0 6 1 * ?") // 每月1号发放会员的权益券 + @Scheduled(cron = "0 */5 * * * ?") // 测试每天6点发券 + //@Scheduled(cron = "*/30 * * * * ?") // 测试30秒中一次 + public void couponSendSchedule() { + + WxCouponSendInject sendInject = new WxCouponSendInject(); + sendInject.setSendStatus(EnumYesOrNo.NO.getCode()); + + List list = wxCouponSendInjectMapper.findList(sendInject); + for (WxCouponSendInject inject:list) { + try { + WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(inject.getUserId(), inject,inject.getCouponId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_BATCH_SEND,null,null); + if(couponOrder != null){ + inject.setSendStatus(EnumYesOrNo.YES.getCode()); + inject.setOrderId(couponOrder.getOrderId()); + inject.setCouponOrderId(couponOrder.getId()); + inject.setUpdateTime(new Date()); + wxCouponSendInjectMapper.updateById(inject); + wxCouponActionLogService.addOne(inject, inject.getCouponId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), 0L,0L); + } + + } catch (Exception e) { + logger.error("定时发券:发券失败 couponId=" + inject.getCouponId() + " userId=" + inject.getUserId() + e.getMessage()); + continue; + } + } + + } + + + private void sendSMS(WxCUserBasicInfo cUserBasicInfo, WxMall mall, int birthdayScale) { + WxMsgRecord wxMsgRecord = new WxMsgRecord(); + wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); + wxMsgRecord.setReceiver(cUserBasicInfo.getPhone()); + wxMsgRecord.updateTenantInfo(mall.getTenantInfo()); + Map dynamicContentMap = new HashMap<>(); + + if (birthdayScale > WxScoreRules.DEFAULT_SCALE) { + float creditScale = new BigDecimal(birthdayScale).divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)).floatValue(); + dynamicContentMap.put("creditScale", String.valueOf(creditScale)); + wxMsgRecord.setModelType(EnumMsgModel.COUPON_BIRTHDAY_OPENED.getCode()); + } else { + //没有配置积分规则 + wxMsgRecord.setModelType(EnumMsgModel.COUPON_BIRTHDAY_OPENED_NO.getCode()); + } + dynamicContentMap.put("userName", Objects.isNull(cUserBasicInfo.getNickName()) ? "" : cUserBasicInfo.getNickName()); + dynamicContentMap.put("mallName", mall.getName()); + wxMsgRecord.setDynamicContentMap(dynamicContentMap); + mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + } +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSendInject.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSendInject.java new file mode 100644 index 000000000..b0d3cc242 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSendInject.java @@ -0,0 +1,38 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@TableName(value = "wx_coupon_send_inject") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxCouponSendInject extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="券id",name="couponId") + private Long couponId; + @io.swagger.annotations.ApiModelProperty(value="",name="userId") + private Long userId; + @io.swagger.annotations.ApiModelProperty(value="是否发卷",name="sendStatus") + private Integer sendStatus; + @io.swagger.annotations.ApiModelProperty(value="是否发短信",name="sendMsg") + private Integer sendMsg; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") + private Date createTime; + @io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateTime") + private Date updateTime; + + @io.swagger.annotations.ApiModelProperty(value="",name="orderId") + private Long orderId; + @io.swagger.annotations.ApiModelProperty(value="",name="couponOrderId") + private Long couponOrderId; + + @io.swagger.annotations.ApiModelProperty(value="",name="msgModel") + private String msgModel; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java new file mode 100644 index 000000000..81f2a52a4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java @@ -0,0 +1,11 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxCouponSendInject; + +import java.util.List; + +public interface WxCouponSendInjectMapper extends CommonMapper { + + List findList(WxCouponSendInject wxCouponSendInject); +} diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml new file mode 100644 index 000000000..284a3e944 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`user_id`,`send_status`,`send_msg`,`create_time`,`update_time`, + `order_id`,`coupon_order_id`,`msg_model` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `coupon_id` = #{couponId} + + + + and `user_id` = #{userId} + + + + + and `send_status` = #{sendStatus} + + + + + and `send_msg` = #{sendMsg} + + + + + and `order_id` = #{orderId} + + + + + and `coupon_order_id` = #{couponOrderId} + + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + +