diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql new file mode 100644 index 000000000..20e5d9d1c --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql @@ -0,0 +1,2 @@ +alter table wx_msg_callback +add column business_id bigint(20) default 0 not null comment '业务ID'; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java index 2b1e8a6b9..bf43bd06d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java @@ -49,4 +49,7 @@ public class WxMsgCallback extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="msgId",name="msgId") private Long msgId; + @io.swagger.annotations.ApiModelProperty(value = "业务ID", name = "businessId") + private Long businessId; + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java b/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java index 3deb81378..6347f6177 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java @@ -4,8 +4,6 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxMsgValidationcode; -import java.util.Map; - public interface WxMsgValidationcodeService { /** * 根据实体查询分页列表 @@ -44,6 +42,6 @@ public interface WxMsgValidationcodeService { ResultData hasvalidationcode(WxMsgValidationcode record); - void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo); + void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo, String id); } 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 929ce246d..400b1776f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -115,7 +115,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { for (String phone : phoneSet) { WxCouponPassword couponPassword = list.get(i); //发送 - sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword()); + sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword(), couponPassword.getId().toString()); //记录发送数据便于更新状态 couponPassword.setSendedPhone(phone); tempList.add(couponPassword); @@ -126,11 +126,12 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { return new ResultData(); } - private void sendMsg(String tenantId, String phone, String money, String appName, String password) { + private void sendMsg(String tenantId, String phone, String money, String appName, String password, String id) { logger.info("》》》》》》》》》》》"); logger.info("系统发卡发送短信开始"); logger.info("》》》》》》》》》》》"); Map msgReplaceMap = new HashMap(); + msgReplaceMap.put("id", id); msgReplaceMap.put("app", appName); msgReplaceMap.put("money", money); msgReplaceMap.put("password", password); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java index 746d4e2e2..e76c329e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java @@ -4,10 +4,8 @@ import com.alibaba.fastjson.JSONArray; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; -import com.iformall.domain.po.WxMsgCallback; -import com.iformall.domain.po.WxMsgConfig; -import com.iformall.domain.po.WxMsgModel; -import com.iformall.domain.po.WxMsgValidationcodeModel; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.enums.EnumMsgSendStatus; import com.iformall.mapper.*; import com.iformall.service.WxMsgCallbackService; @@ -38,6 +36,9 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @Autowired WxMsgMapper wxMsgMapper; + @Autowired + WxCouponPasswordMapper wxCouponPasswordMapper; + @Override public PageInfo listAsPage(WxMsgCallback record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgCallbackMapper.findList(record)); @@ -75,11 +76,11 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { List wxMsgCallbacks = JSONArray.parseArray(param.get("item"), WxMsgCallback.class); wxMsgConfig = list.get(0); wxMsgConfig.setRemains(wxMsgConfig.getRemains() - wxMsgCallbacks.size()); - //wxMsgConfigMapper.updateByPrimaryKeySelective(wxMsgConfig); final IdWorker idWorker = IdWorker.get(); for (WxMsgCallback wxMsgCallback : wxMsgCallbacks) { WxMsgCallback callback=wxMsgCallbackMapper.queryCallbackByBatchNoAndPhone(wxMsgCallback); - if(callback!=null){//有更新,无插入 + if (callback != null) { + //有更新,无插入 callback.setSign(param.get("sign")); callback.setTenantId(tenantId); if (!wxMsgCallback.getStatus().equals(EnumMsgSendStatus.MSG_SEND_SUCCESS.getCode())) { @@ -93,6 +94,14 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { callback.setCallbackId(wxMsgCallback.getId()); callback.setUpdatetime(new Date()); wxMsgCallbackMapper.updateByPrimaryKeySelective(callback); + //更新业务 + if (!callback.getBusinessId().equals(0L)) { + WxCouponPassword couponPassword = new WxCouponPassword(); + couponPassword.setId(callback.getBusinessId()); + couponPassword.setStatus(EnumCouponPasswordStatus.MSG_SENDED.getCode()); + couponPassword.setUpdateDate(new Date()); + wxCouponPasswordMapper.updateByPrimaryKeySelective(couponPassword); + } }else{ Long callbackId = wxMsgCallback.getId(); wxMsgCallback.setId(idWorker.nextId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java index 06ec46fb4..108c70be5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java @@ -14,6 +14,7 @@ import com.iformall.mq.MqBaseProducer; import com.iformall.service.WxMsgValidationcodeService; import com.iformall.utils.DateUtils; import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -113,7 +114,7 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic } @Override - public void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo){ + public void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo, String id) { logger.info("验证码发送时主动添加回调记录开始..."); String phone = wxmsg.getPhone(); final IdWorker idWorker = IdWorker.get(); @@ -125,6 +126,9 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic wxMsgCallback.setMsgId(wxmsg.getId()); wxMsgCallback.setStatus(EnumMsgSendStatus.MSG_SEND_FAIL.getCode()); wxMsgCallback.setCreatetime(new Date()); + if (StringUtils.isNotEmpty(id)) { + wxMsgCallback.setBusinessId(Long.parseLong(id)); + } wxMsgCallbackMapper.insertSelective(wxMsgCallback); 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 dc6a1e457..7465294b2 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 @@ -56,7 +56,7 @@ public class SendSmsServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.MSG_CONFIG_NOT_FOUND); } wxMsgConfig = wxMsgConfigs.get(0); - if(wxMsgConfig.getRemains() <=0l){ + if (wxMsgConfig.getRemains() <= 0L) { throw new MallinkException(ErrorCode.MSG_CONFIG_ACCOUNT); } @@ -96,7 +96,7 @@ public class SendSmsServiceImpl implements MsgSendService { if (ret.equals("1")) { final IdWorker idWorker = IdWorker.get(); wxMsgValidationcode.setId(idWorker.nextId()); - long currentTime = System.currentTimeMillis() ; + long currentTime = System.currentTimeMillis(); Date createtime=new Date(currentTime); wxMsgValidationcode.setCreatetime(createtime); Integer minutes = wxMsgValidationcodeModel.getMinutes(); @@ -106,7 +106,8 @@ public class SendSmsServiceImpl implements MsgSendService { wxMsgValidationcode.setExpiretime(expiredate); } wxMsgValidationcodeMapper.insertSelective(wxMsgValidationcode); - wxMsgValidationcodeService.addMsgCallback(wxMsgValidationcode,batchNo); + String id = record.getDynamicContentMap().get("id"); + wxMsgValidationcodeService.addMsgCallback(wxMsgValidationcode, batchNo, id); //扣减剩余条数 wxMsgConfig.setRemains(1L); wxMsgConfigMapper.updateRemains(wxMsgConfig); diff --git a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml index c817cccea..16eb52f33 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml @@ -15,11 +15,12 @@ - + + - `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime`,`updatetime`,`msg_id`,`callback_id` + `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime`,`updatetime`,`msg_id`,`callback_id`,`business_id`