From dc49834ca6a10bed618f57ccada1789a95b6e5bd Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 18:24:02 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E5=8D=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/enums/EnumMsgModel.java | 2 + .../mapper/WxCouponPasswordMapper.java | 4 +- .../impl/WxCouponPresentServiceImpl.java | 83 ++++++++++++++----- .../service/msg/impl/SendSmsServiceImpl.java | 2 +- .../mapper/WxCouponPasswordMapper.xml | 6 ++ 5 files changed, 74 insertions(+), 23 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java index 28d473235..6c6906fc6 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java @@ -34,6 +34,8 @@ public enum EnumMsgModel { //会员生日券 COUPON_BIRTHDAY_OPENED(28, "会员生日券倍率开启"), COUPON_BIRTHDAY_OPENED_NO(29, "会员生日券倍率未开启"), + + COUPON_CARD_SEND(30, "系统发卡"), ; public static EnumMsgModel getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index 72649d2a1..37bfb51c1 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -15,5 +15,7 @@ public interface WxCouponPasswordMapper extends CommonMapper findCouponGroupList(WxCouponPassword wxCouponPassword); List findCouponCountInfo(WxCouponPassword wxCouponPassword); - + + void updateStatus(List tempList); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 908e6c1c2..26fb80edd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -5,16 +5,18 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxCouponPresent; -import com.iformall.enums.EnumCouponPasswordStatus; -import com.iformall.enums.EnumCouponStatus; -import com.iformall.enums.EnumCouponValidType; +import com.iformall.domain.po.msg.WxMsgRecord; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.mapper.WxCouponPresentMapper; +import com.iformall.mq.MqBaseProducer; import com.iformall.service.PushLimitService; +import com.iformall.service.WxAppinfoService; import com.iformall.service.WxCouponPresentService; import com.iformall.service.WxCouponService; import org.slf4j.Logger; @@ -22,11 +24,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.Date; -import java.util.HashSet; -import java.util.Set; -import java.util.stream.Collectors; +import java.util.*; /** * @author gongbiao @@ -47,6 +45,12 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { @Autowired WxCouponPasswordMapper wxCouponPasswordMapper; + @Autowired + WxAppinfoService wxAppinfoService; + + @Autowired + private MqBaseProducer mqBaseProducer; + @Override public PageInfo listAsPage(WxCouponPresent record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponPresentMapper.findList(record)); @@ -59,13 +63,13 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { @Override public ResultData add(WxCouponPresent record) { + String tenantId = record.getTenantId(); try { - pushLimitService.checkSendTime(record.getTenantId()); + pushLimitService.checkSendTime(tenantId); } catch (MallinkException e) { logger.error(e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); } - WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { //时间范围 if (new Date().after(wxCoupon.getValidEndDate())) { @@ -75,32 +79,69 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode())) { return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } - + //获取手机号 record.setCouponName(wxCoupon.getTitle()); - String phones = record.getPhones(); String[] phoneSplit = phones.split(","); - Set phoneSetTemp = new HashSet<>(Arrays.asList(phoneSplit)); - Set phoneSet = phoneSetTemp.stream().filter(p -> !p.isEmpty()).collect(Collectors.toSet()); + Set phoneSet = new HashSet<>(phoneSplit.length); + for (String phone : phoneSplit) { + if (!phone.isEmpty()) { + phoneSet.add(phone); + } + } + //查询有效券数量 WxCouponPassword wxCouponPassword = new WxCouponPassword(); - wxCouponPassword.setTenantId(record.getTenantId()); + wxCouponPassword.setTenantId(tenantId); wxCouponPassword.setCouponId(record.getCouponId()); wxCouponPassword.setStatus(EnumCouponPasswordStatus.INIT.getCode()); - int inventory = wxCouponPasswordMapper.selectCount(wxCouponPassword); - if (phoneSet.size() > inventory) { + List list = wxCouponPasswordMapper.findList(wxCouponPassword); + if (phoneSet.size() > list.size()) { return new ResultData(ErrorCode.REMAIN_IS_EMPTY); } - + //添加记录 final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); - record.setCouponName(wxCoupon.getTitle()); record.setSendAmount(phoneSet.size()); - wxCouponPresentMapper.insertSelective(record); - //发送短信 + //小程序 + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantId); + String priceStr = wxCoupon.getPriceStr(); + String name = appInfo.getName(); + List tempList = wxCouponPasswordMapper.findList(wxCouponPassword); + //循环发送 + int i = 0; + for (String phone : phoneSet) { + WxCouponPassword couponPassword = list.get(i); + //发送 + sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword()); + //记录发送数据便于更新状态 + tempList.add(couponPassword); + i++; + } + //修改状态 + wxCouponPasswordMapper.updateStatus(tempList); return new ResultData(); } + private void sendMsg(String tenantId, String phone, String money, String appName, String password) { + logger.info("》》》》》》》》》》》"); + logger.info("系统发卡发送短信开始"); + logger.info("》》》》》》》》》》》"); + Map msgReplaceMap = new HashMap(); + msgReplaceMap.put("app", appName); + msgReplaceMap.put("money", money); + msgReplaceMap.put("password", password); + WxMsgRecord wxMsgRecord = new WxMsgRecord(); + wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); + wxMsgRecord.setModelType(EnumMsgModel.COUPON_CARD_SEND.getCode()); + wxMsgRecord.setReceiver(phone); + wxMsgRecord.setTenantId(tenantId); + wxMsgRecord.setDynamicContentMap(msgReplaceMap); + mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + logger.info("》》》》》》》》》》》"); + logger.info("系统发卡发送短信结束"); + logger.info("》》》》》》》》》》》"); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java index 8142e8e56..dc6a1e457 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java @@ -87,7 +87,7 @@ public class SendSmsServiceImpl implements MsgSendService { wxMsgValidationcode.setCode(record.getDynamicContentMap().get("s6")); } - String notifyUrl = wxMsgConfig.getVerifynotifyurl(); + String notifyUrl = wxMsgConfig.getNotifyurl(); Integer modelId = wxMsgValidationcodeModel.getModelId(); String result = WiwideUtil.sendMsg(secret, bid, publickey, phone, signature, msg, notifyUrl, EnumVerifyCode.YES.getCode().toString(), modelId); JSONObject jsonObjectResult = JSONObject.parseObject(result); diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index da717c554..2caed05ca 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -117,5 +117,11 @@ group by cp.coupon_id + + + + update wx_coupon_password set status=1 where id = ${item.id} + +