diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/MsgSendingSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/MsgSendingSchedule.java index 31f72f31c..d3e5388ee 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/MsgSendingSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/MsgSendingSchedule.java @@ -43,7 +43,7 @@ public class MsgSendingSchedule { /** * 每小时第一分钟执行 */ - @Scheduled(cron = "0 1 * * * ?") + @Scheduled(cron = "0 1 */1 * * ?") public void sendmsgschedule() { logger.info("sendmsg定时任务启动"); String systemTime = DateUtils.getSystemTime("yyyy-MM-dd HH:00:00"); @@ -55,12 +55,19 @@ public class MsgSendingSchedule { for (WxMsg msg : list) { //sendmsg(msg); msg.setStatus(EnumMsgStatus.MSG_STATUS_SENDED.getCode()); - if(wxMsg.getWay() == EnumSendWay.TAG.getCode()){ - msg.setMsgType(EnumMsgRecordType.SMS_CALLBACK.getCode()); - msg.setReceiver(msg.getPhones()); - mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(),null); - }else if(msg.getWay() == EnumSendWay.APPINFOR.getCode()){ + if(EnumSendWay.TAG.getCode().equals(msg.getWay())){ + if (msg.getExpectSendNumber().intValue() > 1000) { + WxMsgService.batchSendMsg(msg, null, null); + } else { + msg.setMsgType(EnumMsgRecordType.SMS_CALLBACK.getCode()); + msg.setReceiver(msg.getPhones()); + mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(),null); + } + + }else if(EnumSendWay.APPINFOR.getCode().equals(msg.getWay())){ WxMsgService.batchSendAppinfo(msg); + }else{ + break; } wxMsgMapper.updateById(msg); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java index 5a7bd0a58..8174b70cb 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java @@ -11,7 +11,7 @@ public interface WxLevelConfigMapper extends CommonMapper { int insertBatch(List list); - int batchUpdate(List list); + int batchUpdate(WxLevelConfig wxLevelConfig); void deleteAll(@Param("tenantId")String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/service/WxMsgModelService.java b/mallinkService/src/main/java/com/iformall/service/WxMsgModelService.java index 910dbcc58..b74e62b09 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMsgModelService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMsgModelService.java @@ -25,18 +25,19 @@ public interface WxMsgModelService { */ WxMsgModel getById(Long id); - /** + /** * 保存或更新实体 * * @param record */ - ResultData saveOrUpdate(WxMsgModel record); + ResultData saveOrUpdate(WxMsgModel record); /** * 根据Id删除实体 * * @param id */ + void deleteById(Long id); diff --git a/mallinkService/src/main/java/com/iformall/service/WxMsgService.java b/mallinkService/src/main/java/com/iformall/service/WxMsgService.java index 890a333d2..6a2421d92 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMsgService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMsgService.java @@ -41,4 +41,6 @@ public interface WxMsgService { void addMsgCallback(WxMsg wxmsg, String batchNo); void batchSendAppinfo(WxMsg wxMsg); + + void batchSendMsg(WxMsg wxMsg, WxMsgConfig wxMsgConfig, WxCouponInject couponInject); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java index 6e339452e..e35266b6d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java @@ -207,7 +207,10 @@ public class WxLevelConfigServiceImpl implements WxLevelConfigService { levelConfigs.add(levelConfig); } } - wxLevelConfigMapper.batchUpdate(levelConfigs); + for (WxLevelConfig config:levelConfigs) { + wxLevelConfigMapper.batchUpdate(config); + } + this.deleteRedis(tenantEntity.getFinalTenantId()); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java index 9eabee186..03853071c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java @@ -143,7 +143,7 @@ public class WxMallApplyServiceImpl implements WxMallApplyService { wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); wxMsgRecord.setModelType(wxMsgValidationcode.getType()); wxMsgRecord.setReceiver(wxMsgValidationcode.getPhone()); - wxMsgRecord.setTenantId(wxMsgValidationcode.getTenantId()); + wxMsgRecord.updateTenantInfo(wxMsgValidationcode); Map map = new HashedMap(); map.put("s6",String.valueOf(code)); wxMsgRecord.setDynamicContentMap(map); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java index 1b76c5bd4..3f465acbe 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java @@ -50,7 +50,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { //从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); - wxMsgConfig.setTenantId(wxMsgModel.getTenantId()); + wxMsgConfig.updateTenantInfo(wxMsgModel); List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); if (wxMsgConfigs.size() == 0) return new ResultData(ErrorCode.MSG_SERVER_NOT_FIND.getCode(), "您还未接入短信运营商,请联系平台管理员"); @@ -82,7 +82,6 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { if (wxMsgModel.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxMsgModel.setId(idWorker.nextId()); - wxMsgModel.updateTenantInfo(wxMsgModel); if(jsonObjectResult.get("data") != null){ String data = jsonObjectResult.get("data").toString(); wxMsgModel.setModelId(Integer.valueOf(data)); @@ -109,7 +108,6 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { if (wxMsgModel.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxMsgModel.setId(idWorker.nextId()); - wxMsgModel.updateTenantInfo(wxMsgModel); wxMsgModel.setCreatetime(new Date()); wxMsgModel.setStatus(1); wxMsgModelMapper.insert(wxMsgModel); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java index b67e805bf..60b94b759 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java @@ -141,6 +141,7 @@ public class WxMsgServiceImpl implements WxMsgService { wxMsg.setSendtime(systemTime); if(wxMsg.getWay() == EnumSendWay.TAG.getCode()){ if (wxMsg.getExpectSendNumber().intValue() > 1000) { + wxMsgMapper.insert(wxMsg); batchSendMsg(wxMsg, wxMsgConfig, null); } else { //sendmsg(wxMsg, wxMsgConfig, null); @@ -177,6 +178,7 @@ public class WxMsgServiceImpl implements WxMsgService { wxMsg.setStatus(EnumMsgStatus.MSG_STATUS_SENDED.getCode()); if(wxMsg.getWay() == EnumSendWay.TAG.getCode()){ if (wxMsg.getExpectSendNumber().intValue() > 1000) { + wxMsgMapper.updateById(wxMsg); batchSendMsg(wxMsg, wxMsgConfig, null); } else { //sendmsg(wxMsg, wxMsgConfig, null); @@ -211,9 +213,8 @@ public class WxMsgServiceImpl implements WxMsgService { @Override public ResultData add(WxMsg wxMsg){ - TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.setTenantId(wxMsg.getTenantId()); - tenantEntity.setParentTenantId(wxMsg.getParentTenantId()); + + TenantEntity tenantEntity = wxMsg.getTenantInfo(); //不是草稿检验疲劳度 if (!wxMsg.getStatus().equals(EnumMsgStatus.MSG_STATUS_DRAFT.getCode())) { @@ -327,7 +328,7 @@ public class WxMsgServiceImpl implements WxMsgService { batchSendMsg(wxmsg, wxMsgConfig, couponInject); } - + @Override public void batchSendMsg(WxMsg wxMsg, WxMsgConfig wxMsgConfig, WxCouponInject couponInject) { String[] split = wxMsg.getPhones().split(","); @@ -335,27 +336,34 @@ public class WxMsgServiceImpl implements WxMsgService { int extra = length % 1000; int extracount = extra > 0 ? (length / 1000 + 1) : (length / 1000); int index = extracount - 1; + for (int i = 0; i < extracount; i++) { + WxMsg wxMsg1 = new WxMsg(); + wxMsg1.setId(wxMsg.getId()); + wxMsg1.updateTenantInfo(wxMsg.getTenantInfo()); + wxMsg1.setSignature(wxMsg.getSignature()); + wxMsg1.setMsg(wxMsg.getMsg()); + wxMsg1.setModelId(wxMsg.getModelId()); if (extra > 0 && i == index) { List phoneList = Arrays.asList(split).subList(i * 1000, length); String phones = StringUtils.join(phoneList, ","); - wxMsg.setPhones(phones); - wxMsg.setExpectSendNumber(extra); - wxMsg.setWxMsgConfig(wxMsgConfig); - wxMsg.setCouponInject(couponInject); - wxMsg.setMsgType(EnumMsgRecordType.SMS_CALLBACK.getCode()); - wxMsg.setReceiver(wxMsg.getPhones()); - mqBaseProducer.sendMessage(wxMsg, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + wxMsg1.setPhones(phones); + wxMsg1.setExpectSendNumber(extra); + wxMsg1.setWxMsgConfig(wxMsgConfig); + wxMsg1.setCouponInject(couponInject); + wxMsg1.setMsgType(EnumMsgRecordType.SMS_CALLBACK.getCode()); + wxMsg1.setReceiver(wxMsg1.getPhones()); + mqBaseProducer.sendMessage(wxMsg1, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); } else { List phoneList = Arrays.asList(split).subList(i * 1000, (i + 1) * 1000); String phones = StringUtils.join(phoneList, ","); - wxMsg.setExpectSendNumber(1000); - wxMsg.setPhones(phones); - wxMsg.setWxMsgConfig(wxMsgConfig); - wxMsg.setCouponInject(couponInject); - wxMsg.setMsgType(EnumMsgRecordType.SMS_CALLBACK.getCode()); - wxMsg.setReceiver(wxMsg.getPhones()); - mqBaseProducer.sendMessage(wxMsg, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + wxMsg1.setExpectSendNumber(1000); + wxMsg1.setPhones(phones); + wxMsg1.setWxMsgConfig(wxMsgConfig); + wxMsg1.setCouponInject(couponInject); + wxMsg1.setMsgType(EnumMsgRecordType.SMS_CALLBACK.getCode()); + wxMsg1.setReceiver(wxMsg1.getPhones()); + mqBaseProducer.sendMessage(wxMsg1, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); } } } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendCallBackSmsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendCallBackSmsServiceImpl.java index 091b559e9..5ec0645c7 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendCallBackSmsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendCallBackSmsServiceImpl.java @@ -75,16 +75,10 @@ public class SendCallBackSmsServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.MSG_CONFIG_ACCOUNT); } } - WxCouponInject couponInject = record.getCouponInject(); - - String secret = wxMsgConfig.getSecret(); - String bid = wxMsgConfig.getBid(); - String publickey = wxMsgConfig.getPublickey(); String phone = record.getPhones(); String signature = record.getSignature(); String msg = record.getMsg(); - String notifyUrl = wxMsgConfig.getNotifyurl(); WxMsgModel wxMsgModel = wxMsgModelMapper.selectById(record.getModelId()); Integer modelId = null; if (wxMsgModel != null) { @@ -143,9 +137,11 @@ public class SendCallBackSmsServiceImpl implements MsgSendService { wxMsgService.addMsgCallback(record, batchNo); //wx_msg改为已发送 record.setStatus(EnumMsgStatus.MSG_STATUS_SENDED.getCode()); + record.setExpectSendNumber(null); wxMsgMapper.updateById(record); } else { logger.error("发送:{},运营商返回失败:{}",phone,result); + record.setExpectSendNumber(null); wxMsgMapper.updateById(record); throw new MallinkException(1001,"运营商返回失败:"+result); } diff --git a/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml b/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml index 771bdd7f0..3d0d185c5 100644 --- a/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml @@ -87,21 +87,22 @@ - - + + + update wx_level_config - `tenant_id` = #{item.tenantId}, - `points` = #{item.points}, - `level` = #{item.level}, - `description` = #{item.description}, - `update_date` = #{item.updateDate}, - `discount_enable` = #{item.discountEnable}, - `capability` = #{item.capability}, - `scale` = #{item.scale}, + `tenant_id` = #{tenantId}, + `points` = #{points}, + `level` = #{level}, + `description` = #{description}, + `update_date` = #{updateDate}, + `discount_enable` = #{discountEnable}, + `capability` = #{capability}, + `scale` = #{scale}, - where id = ${item.id}; - + where id = ${id}; +