| @@ -1,21 +1,20 @@ | |||
| package com.iformall.schedule; | |||
| import com.iformall.domain.po.WxCampaign; | |||
| import com.iformall.domain.po.WxCampaignJoin; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.mapper.WxCampaignJoinMapper; | |||
| import com.iformall.mapper.WxCampaignMapper; | |||
| import com.iformall.mapper.WxBillAllMapper; | |||
| import com.iformall.mq.MqBaseProducer; | |||
| import com.iformall.utils.DateUtils; | |||
| import com.iformall.service.WxBillAllService; | |||
| 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; | |||
| import org.springframework.scheduling.annotation.Scheduled; | |||
| import org.springframework.stereotype.Component; | |||
| import java.math.BigDecimal; | |||
| import java.math.RoundingMode; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| @@ -25,61 +24,86 @@ import java.util.Map; | |||
| @Component | |||
| public class BillNotificationSchedule { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxCampaignMapper wxCampaignMapper; | |||
| private WxBillAllMapper wxBillAllMapper; | |||
| @Autowired | |||
| private WxCampaignJoinMapper wxCampaignJoinMapper; | |||
| private MqBaseProducer mqBaseProducer; | |||
| @Autowired | |||
| private MqBaseProducer mqBaseProducer; | |||
| WxBillAllService wxBillAllService; | |||
| /** | |||
| * 每天12点执行 | |||
| * 每天9点执行 | |||
| */ | |||
| @Scheduled(cron = "0 0 12 * * ?") | |||
| public void sendMsg() { | |||
| logger.info("限时活动参与提醒任务启动"); | |||
| WxCampaign wxCampaign = new WxCampaign(); | |||
| wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||
| List<WxCampaign> wxCampaigns = wxCampaignMapper.queryNotify(wxCampaign); | |||
| WxCampaignJoin wxCampaignJoin = null; | |||
| for (WxCampaign campaign : wxCampaigns) { | |||
| wxCampaignJoin = new WxCampaignJoin(); | |||
| wxCampaignJoin.setTenantId(campaign.getTenantId()); | |||
| wxCampaignJoin.setCampaignId(campaign.getId()); | |||
| wxCampaignJoin.setStatus(EnumCampaignJoinStatus.CONFIRMED.getCode()); | |||
| List<WxCampaignJoin> list = wxCampaignJoinMapper.findList(wxCampaignJoin); | |||
| for (WxCampaignJoin campaignJoin : list) { | |||
| send(campaign, campaignJoin); | |||
| } | |||
| } | |||
| @Scheduled(cron = "0 0 14 * * ?") | |||
| public void sendMsgFromBill() { | |||
| logger.info("账单通知任务启动"); | |||
| sendWaitPayBill(); | |||
| wxBillAllService.sendWaitPayBillEmail(); | |||
| sendOweBill(); | |||
| wxBillAllService.sendOweBillForEmail(); | |||
| logger.info("账单通知任务结束"); | |||
| } | |||
| private void send(WxCampaign campaign, WxCampaignJoin campaignJoin) { | |||
| logger.info("限时活动参与提醒短信发送开始"); | |||
| String phone = campaignJoin.getPhone(); | |||
| String person = campaignJoin.getName(); | |||
| person = StringUtils.isNotEmpty(person) ? person : ""; | |||
| String time = DateUtils.date2String(campaign.getActivityTime()); | |||
| String party = campaign.getTitle(); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.TIME_LIMIT_CAMPAIGN_NOTIFY.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setTenantId(campaignJoin.getTenantId()); | |||
| Map<String, String> map = new HashedMap(); | |||
| map.put("person", person); | |||
| map.put("party", party); | |||
| map.put("time", time); | |||
| wxMsgRecord.setDynamicContentMap(map); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| logger.info("限时活动参与提醒短信发送结束"); | |||
| private void sendOweBill() { | |||
| logger.info("查询欠缴账单数据"); | |||
| List<Map<String, Object>> oweBillList = wxBillAllMapper.getOweBill(); | |||
| for (Map<String, Object> bill : oweBillList) { | |||
| logger.info("欠缴账单:" + JSONObject.toJSONString(bill)); | |||
| String tenantId = bill.get("tenantId").toString(); | |||
| BigDecimal owe = (BigDecimal) bill.get("owe"); | |||
| BigDecimal price = owe.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| String phone = bill.get("linkPhone").toString(); | |||
| String appname = bill.get("appname").toString(); | |||
| String merchantName = bill.get("merchantName").toString(); | |||
| logger.info("欠缴账单检验短信配置信息"); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.BILL_OWE.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setTenantId(tenantId); | |||
| Map<String, String> map = new HashedMap(); | |||
| map.put("price", price.toString()); | |||
| map.put("app", appname); | |||
| map.put("merName", merchantName); | |||
| wxMsgRecord.setDynamicContentMap(map); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| } | |||
| } | |||
| private void sendWaitPayBill() { | |||
| logger.info("查询待缴账单数据"); | |||
| List<Map<String, Object>> waitBillList = wxBillAllMapper.getWaitPayBill(); | |||
| for (Map<String, Object> bill : waitBillList) { | |||
| logger.info("待缴账单账单:" + JSONObject.toJSONString(bill)); | |||
| String tenantId = bill.get("tenantId").toString(); | |||
| String receiveDate = bill.get("receiveDate").toString(); | |||
| BigDecimal needPay = (BigDecimal) bill.get("needPay"); | |||
| BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| String phone = bill.get("linkPhone").toString(); | |||
| String appname = bill.get("appname").toString(); | |||
| String merchantName = bill.get("merchantName").toString(); | |||
| logger.info("待缴账单检验短信配置信息"); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.BILL_WAIT_PAY.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setTenantId(tenantId); | |||
| Map<String, String> map = new HashedMap(); | |||
| map.put("price", price.toString()); | |||
| map.put("app", appname); | |||
| map.put("date", receiveDate); | |||
| map.put("merName", merchantName); | |||
| wxMsgRecord.setDynamicContentMap(map); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| } | |||
| } | |||
| @@ -1,20 +1,21 @@ | |||
| package com.iformall.schedule; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.iformall.domain.po.WxCampaign; | |||
| import com.iformall.domain.po.WxCampaignJoin; | |||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.mapper.WxBillAllMapper; | |||
| import com.iformall.mapper.WxCampaignJoinMapper; | |||
| import com.iformall.mapper.WxCampaignMapper; | |||
| import com.iformall.mq.MqBaseProducer; | |||
| import com.iformall.service.WxBillAllService; | |||
| 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; | |||
| import org.springframework.scheduling.annotation.Scheduled; | |||
| import org.springframework.stereotype.Component; | |||
| import java.math.BigDecimal; | |||
| import java.math.RoundingMode; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| @@ -27,81 +28,56 @@ public class CampaginSchedule { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxBillAllMapper wxBillAllMapper; | |||
| private WxCampaignMapper wxCampaignMapper; | |||
| @Autowired | |||
| private MqBaseProducer mqBaseProducer; | |||
| private WxCampaignJoinMapper wxCampaignJoinMapper; | |||
| @Autowired | |||
| WxBillAllService wxBillAllService; | |||
| private MqBaseProducer mqBaseProducer; | |||
| /** | |||
| * 每天9点执行 | |||
| * 每天12点执行 | |||
| */ | |||
| @Scheduled(cron = "0 0 14 * * ?") | |||
| public void sendMsgFromBill() { | |||
| logger.info("账单通知任务启动"); | |||
| sendWaitPayBill(); | |||
| wxBillAllService.sendWaitPayBillEmail(); | |||
| sendOweBill(); | |||
| wxBillAllService.sendOweBillForEmail(); | |||
| logger.info("账单通知任务结束"); | |||
| } | |||
| private void sendOweBill() { | |||
| logger.info("查询欠缴账单数据"); | |||
| List<Map<String, Object>> oweBillList = wxBillAllMapper.getOweBill(); | |||
| for (Map<String, Object> bill : oweBillList) { | |||
| logger.info("欠缴账单:" + JSONObject.toJSONString(bill)); | |||
| String tenantId = bill.get("tenantId").toString(); | |||
| BigDecimal owe = (BigDecimal) bill.get("owe"); | |||
| BigDecimal price = owe.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| String phone = bill.get("linkPhone").toString(); | |||
| String appname = bill.get("appname").toString(); | |||
| String merchantName = bill.get("merchantName").toString(); | |||
| logger.info("欠缴账单检验短信配置信息"); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.BILL_OWE.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setTenantId(tenantId); | |||
| Map<String, String> map = new HashedMap(); | |||
| map.put("price", price.toString()); | |||
| map.put("app", appname); | |||
| map.put("merName", merchantName); | |||
| wxMsgRecord.setDynamicContentMap(map); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| @Scheduled(cron = "0 0 12 * * ?") | |||
| public void sendMsg() { | |||
| logger.info("限时活动参与提醒任务启动"); | |||
| WxCampaign wxCampaign = new WxCampaign(); | |||
| wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||
| List<WxCampaign> wxCampaigns = wxCampaignMapper.queryNotify(wxCampaign); | |||
| WxCampaignJoin wxCampaignJoin = null; | |||
| for (WxCampaign campaign : wxCampaigns) { | |||
| wxCampaignJoin = new WxCampaignJoin(); | |||
| wxCampaignJoin.setTenantId(campaign.getTenantId()); | |||
| wxCampaignJoin.setCampaignId(campaign.getId()); | |||
| wxCampaignJoin.setStatus(EnumCampaignJoinStatus.CONFIRMED.getCode()); | |||
| List<WxCampaignJoin> list = wxCampaignJoinMapper.findList(wxCampaignJoin); | |||
| for (WxCampaignJoin campaignJoin : list) { | |||
| send(campaign, campaignJoin); | |||
| } | |||
| } | |||
| } | |||
| private void sendWaitPayBill() { | |||
| logger.info("查询待缴账单数据"); | |||
| List<Map<String, Object>> waitBillList = wxBillAllMapper.getWaitPayBill(); | |||
| for (Map<String, Object> bill : waitBillList) { | |||
| logger.info("待缴账单账单:" + JSONObject.toJSONString(bill)); | |||
| String tenantId = bill.get("tenantId").toString(); | |||
| String receiveDate = bill.get("receiveDate").toString(); | |||
| BigDecimal needPay = (BigDecimal) bill.get("needPay"); | |||
| BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| String phone = bill.get("linkPhone").toString(); | |||
| String appname = bill.get("appname").toString(); | |||
| String merchantName = bill.get("merchantName").toString(); | |||
| logger.info("待缴账单检验短信配置信息"); | |||
| private void send(WxCampaign campaign, WxCampaignJoin campaignJoin) { | |||
| logger.info("限时活动参与提醒短信发送开始"); | |||
| String phone = campaignJoin.getPhone(); | |||
| String person = campaignJoin.getName(); | |||
| person = StringUtils.isNotEmpty(person) ? person : ""; | |||
| String time = DateUtils.date2String(campaign.getActivityStartTime()); | |||
| String party = campaign.getTitle(); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.TIME_LIMIT_CAMPAIGN_NOTIFY.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setTenantId(campaignJoin.getTenantId()); | |||
| Map<String, String> map = new HashedMap(); | |||
| map.put("person", person); | |||
| map.put("party", party); | |||
| map.put("time", time); | |||
| wxMsgRecord.setDynamicContentMap(map); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| logger.info("限时活动参与提醒短信发送结束"); | |||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | |||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | |||
| wxMsgRecord.setModelType(EnumMsgModel.BILL_WAIT_PAY.getCode()); | |||
| wxMsgRecord.setReceiver(phone); | |||
| wxMsgRecord.setTenantId(tenantId); | |||
| Map<String, String> map = new HashedMap(); | |||
| map.put("price", price.toString()); | |||
| map.put("app", appname); | |||
| map.put("date", receiveDate); | |||
| map.put("merName", merchantName); | |||
| wxMsgRecord.setDynamicContentMap(map); | |||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| } | |||
| } | |||
| @@ -168,7 +168,7 @@ | |||
| <select id="queryNotify" parameterType="com.iformall.domain.po.WxCampaign" | |||
| resultType="com.iformall.domain.po.WxCampaign"> | |||
| select id,title,activity_time,tenant_id from wx_campaign where status=${status} and DATEDIFF(activity_time,now())=3 | |||
| select id,title,activity_start_time,tenant_id from wx_campaign where status=${status} and DATEDIFF(activity_start_time,now())=3 | |||
| </select> | |||