| @@ -1,21 +1,20 @@ | |||||
| package com.iformall.schedule; | 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.domain.po.msg.WxMsgRecord; | ||||
| import com.iformall.enums.*; | 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.mq.MqBaseProducer; | ||||
| import com.iformall.utils.DateUtils; | |||||
| import com.iformall.service.WxBillAllService; | |||||
| import org.apache.commons.collections.map.HashedMap; | import org.apache.commons.collections.map.HashedMap; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.scheduling.annotation.Scheduled; | import org.springframework.scheduling.annotation.Scheduled; | ||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
| import java.math.BigDecimal; | |||||
| import java.math.RoundingMode; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -25,61 +24,86 @@ import java.util.Map; | |||||
| @Component | @Component | ||||
| public class BillNotificationSchedule { | public class BillNotificationSchedule { | ||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | private final Logger logger = LoggerFactory.getLogger(this.getClass()); | ||||
| @Autowired | @Autowired | ||||
| private WxCampaignMapper wxCampaignMapper; | |||||
| private WxBillAllMapper wxBillAllMapper; | |||||
| @Autowired | @Autowired | ||||
| private WxCampaignJoinMapper wxCampaignJoinMapper; | |||||
| private MqBaseProducer mqBaseProducer; | |||||
| @Autowired | @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; | 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.domain.po.msg.WxMsgRecord; | ||||
| import com.iformall.enums.*; | 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.mq.MqBaseProducer; | ||||
| import com.iformall.service.WxBillAllService; | |||||
| import com.iformall.utils.DateUtils; | |||||
| import org.apache.commons.collections.map.HashedMap; | import org.apache.commons.collections.map.HashedMap; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.scheduling.annotation.Scheduled; | import org.springframework.scheduling.annotation.Scheduled; | ||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
| import java.math.BigDecimal; | |||||
| import java.math.RoundingMode; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -27,81 +28,56 @@ public class CampaginSchedule { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | private final Logger logger = LoggerFactory.getLogger(this.getClass()); | ||||
| @Autowired | @Autowired | ||||
| private WxBillAllMapper wxBillAllMapper; | |||||
| private WxCampaignMapper wxCampaignMapper; | |||||
| @Autowired | @Autowired | ||||
| private MqBaseProducer mqBaseProducer; | |||||
| private WxCampaignJoinMapper wxCampaignJoinMapper; | |||||
| @Autowired | @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" | <select id="queryNotify" parameterType="com.iformall.domain.po.WxCampaign" | ||||
| resultType="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> | </select> | ||||