diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java index 8ad782066..6da0cf9cf 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendScheduleTest.java @@ -1,5 +1,6 @@ package com.iformall.schedule; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.*; @@ -10,6 +11,8 @@ import com.iformall.enums.*; import com.iformall.mapper.*; import com.iformall.mq.MqBaseProducer; import com.iformall.service.*; +import com.iformall.sms.EnumSMSChannel; +import com.iformall.sms.SMSFactory; import com.iformall.utils.CreditUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -31,6 +34,8 @@ import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; +import static java.util.stream.Collectors.toList; + @Component public class CouponSendScheduleTest { @@ -88,25 +93,75 @@ public class CouponSendScheduleTest { } + @Async + //@Scheduled(cron = "0 0 6 1 * ?") // 每月1号发放会员的权益券 + @Scheduled(cron = "0 */10 * * * ?") // 测试每天6点发券 + //@Scheduled(cron = "*/30 * * * * ?") // 测试30秒中一次 + public void couponSendMsgSchedule() { + + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.setTenantId("1028"); + + + WxCouponSendInject sendInject = new WxCouponSendInject(); + sendInject.updateTenantInfo(tenantEntity); + sendInject.setSendStatus(EnumYesOrNo.YES.getCode()); + sendInject.setSendMsg(EnumYesOrNo.NO.getCode()); + sendInject.setCouponId(698841722461515776l); + + List list1 = wxCouponSendInjectMapper.findList(sendInject); + sendSMS(tenantEntity,list1,"0.5元购大桶爆米花"); + + sendInject.setCouponId(698842872011190272l); - 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()); + List list2 = wxCouponSendInjectMapper.findList(sendInject); + sendSMS(tenantEntity,list2,"9.9元购普通厅单人观影票"); + + sendInject.setCouponId(698843398773829632l); + + List list3 = wxCouponSendInjectMapper.findList(sendInject); + sendSMS(tenantEntity,list3,"49.9元购双人欢乐套餐"); + + } + + + private void sendSMS(TenantEntity tenantEntity ,List list1,String couponTitle) { + + String validDate = "2022年6月30日"; + try{ + if(list1 != null && list1.size() > 0){ + List userIds = list1.stream().map(s -> s.getUserId()).collect(toList()); + WxCUserBasicInfo cUserBasicInfoQ = new WxCUserBasicInfo(); + cUserBasicInfoQ.setFinalTenantId(tenantEntity.getFinalTenantId()); + cUserBasicInfoQ.setIds(userIds); + List listPhoneAndNameByIds = wxCUserBasicInfoMapper.findListPhoneAndNameByIds(cUserBasicInfoQ); + List collect = listPhoneAndNameByIds.stream().map(u -> u.getPhone()).collect(toList()); + String phone = String.join(",", collect); + + + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setSmsChannel(EnumSMSChannel.ALIYUN.getCode()); + Map dynamicContentMap = new HashMap<>(); + dynamicContentMap.put("couponTitle",couponTitle); + dynamicContentMap.put("validDate",validDate); + String result = SMSFactory.sendSms(wxMsgConfig, phone, "富茂", null, + null, null, JSON.toJSONString(dynamicContentMap), + "SMS_243651558",null); + + JSONObject jsonObjectResult = JSONObject.parseObject(result); + String ret = jsonObjectResult.get("ret").toString(); + String batchNo = jsonObjectResult.get("data").toString(); + if (ret.equals("1")) { + wxCouponSendInjectMapper.updateMsgByUserIds(userIds); + + }else{ + logger.error("发短信失败 couponId="+couponTitle); + } + + } + }catch(Exception e){ + logger.error("发短信失败 couponId="+couponTitle+e.getMessage()); } - 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/mapper/WxCouponSendInjectMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java index 81f2a52a4..866678f4b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponSendInjectMapper.java @@ -2,10 +2,13 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxCouponSendInject; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface WxCouponSendInjectMapper extends CommonMapper { List findList(WxCouponSendInject wxCouponSendInject); + + int updateMsgByUserIds(@Param("userIds")List userIds); } diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml index 284a3e944..369570ee1 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponSendInjectMapper.xml @@ -82,4 +82,13 @@ + + + update wx_coupon_send_inject set `send_msg` = 1 + where `user_id` in + + #{idItem} + + +