|
|
@@ -1,19 +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.*; |
|
|
|
|
|
|
|
|
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; |
|
|
|
|
|
|
|
|
@@ -26,81 +28,56 @@ public class BillNotificationSchedule { |
|
|
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.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("限时活动参与提醒短信发送结束"); |
|
|
|
|
|
|
|
|
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()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|