Browse Source

[宣传活动][修改][定时任务调整]

release_toaliyun_real
gongbiao 7 years ago
parent
commit
e23200de9d
3 changed files with 116 additions and 116 deletions
  1. +70
    -46
      mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java
  2. +45
    -69
      mallinkSchedule/src/main/java/com/iformall/schedule/CampaginSchedule.java
  3. +1
    -1
      mallinkService/src/main/resources/mapper/WxCampaignMapper.xml

+ 70
- 46
mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java View File

@@ -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());
}
}




+ 45
- 69
mallinkSchedule/src/main/java/com/iformall/schedule/CampaginSchedule.java View File

@@ -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());
}
}



+ 1
- 1
mallinkService/src/main/resources/mapper/WxCampaignMapper.xml View File

@@ -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>




Loading…
Cancel
Save