Просмотр исходного кода

//tt sendtest

release_toaliyun_real
xhxu 3 лет назад
Родитель
Сommit
6ec16fd701
4 измененных файлов: 246 добавлений и 0 удалений
  1. +112
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java
  2. +38
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxCouponSendInject.java
  3. +11
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java
  4. +85
    -0
      mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml

+ 112
- 0
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<WxCouponSendInject> 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<String, String> 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());
}
}

+ 38
- 0
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;

}

+ 11
- 0
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<WxCouponSendInject, String> {

List<WxCouponSendInject> findList(WxCouponSendInject wxCouponSendInject);
}

+ 85
- 0
mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml Просмотреть файл

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iformall.mapper.WxCouponSendInjectMapper">
<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCouponSendInject">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/>
<result column="coupon_id" jdbcType="BIGINT" property="couponId" />
<result column="user_id" jdbcType="BIGINT" property="userId" />
<result column="send_status" jdbcType="INTEGER" property="sendStatus" />
<result column="send_msg" jdbcType="INTEGER" property="sendMsg" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="order_id" jdbcType="BIGINT" property="orderId" />
<result column="coupon_order_id" jdbcType="BIGINT" property="couponOrderId" />
<result column="msg_model" jdbcType="VARCHAR" property="msgModel" />

</resultMap>

<sql id="allColumns">
`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`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1

<if test=" null != id ">
and `id` = #{id}

</if>

<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>

<if test=" null != couponId ">
and `coupon_id` = #{couponId}

</if>
<if test=" null != userId ">
and `user_id` = #{userId}

</if>

<if test=" null != sendStatus ">
and `send_status` = #{sendStatus}

</if>

<if test=" null != sendMsg ">
and `send_msg` = #{sendMsg}

</if>

<if test=" null != orderId ">
and `order_id` = #{orderId}

</if>

<if test=" null != couponOrderId ">
and `coupon_order_id` = #{couponOrderId}

</if>

<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>

<select id="findList" parameterType="com.iformall.domain.po.WxCouponSendInject" resultMap="BaseResultMap">
select
<include refid="allColumns"/>
from wx_coupon_send_inject
<include refid="dynamicWhereConditions" />
</select>

</mapper>

Загрузка…
Отмена
Сохранить