Просмотр исходного кода

[宣传活动报名][修改][活动提醒短信]

release_toaliyun_real
gongbiao 7 лет назад
Родитель
Сommit
aff42b6813
4 измененных файлов: 166 добавлений и 76 удалений
  1. +46
    -69
      mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java
  2. +108
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/CampaginSchedule.java
  3. +7
    -7
      mallinkService/src/main/java/com/iformall/mapper/WxCampaignMapper.java
  4. +5
    -0
      mallinkService/src/main/resources/mapper/WxCampaignMapper.xml

+ 46
- 69
mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java Просмотреть файл

@@ -1,19 +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.*;
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;

@@ -26,81 +28,56 @@ public class BillNotificationSchedule {
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.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());
}
}




+ 108
- 0
mallinkSchedule/src/main/java/com/iformall/schedule/CampaginSchedule.java Просмотреть файл

@@ -0,0 +1,108 @@
package com.iformall.schedule;

import com.alibaba.fastjson.JSONObject;
import com.iformall.domain.po.msg.WxMsgRecord;
import com.iformall.enums.*;
import com.iformall.mapper.WxBillAllMapper;
import com.iformall.mq.MqBaseProducer;
import com.iformall.service.WxBillAllService;
import org.apache.commons.collections.map.HashedMap;
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;

/**
* @author gongbiao
*/
@Component
public class CampaginSchedule {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxBillAllMapper wxBillAllMapper;

@Autowired
private MqBaseProducer mqBaseProducer;

@Autowired
WxBillAllService wxBillAllService;

/**
* 每天9点执行
*/
@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());
}
}

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


}

+ 7
- 7
mallinkService/src/main/java/com/iformall/mapper/WxCampaignMapper.java Просмотреть файл

@@ -5,17 +5,17 @@ import com.iformall.domain.po.WxCampaign;

import java.util.List;

/**
* @author gongbiao
*/
public interface WxCampaignMapper extends CommonMapper<WxCampaign, Long> {

List<WxCampaign> findList(WxCampaign wxCampaign);
List<WxCampaign> findList(WxCampaign wxCampaign);

List<WxCampaign> findCList(WxCampaign wxCampaign);

int getMaxSortNum(String tenantId);
int getMaxSortNum(String tenantId);
List<WxCampaign> queryNotify(WxCampaign wxCampaign);

}

+ 5
- 0
mallinkService/src/main/resources/mapper/WxCampaignMapper.xml Просмотреть файл

@@ -164,6 +164,11 @@
<select id="getMaxSortNum" parameterType="java.lang.String" resultType="java.lang.Integer">
select max(sort_num) from wx_campaign where `tenant_id` = #{tenantId}
</select>
<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>


</mapper>

Загрузка…
Отмена
Сохранить