Kaynağa Gözat

[精准发券短信整理][整理]

release_toaliyun_real
Stormeye.Wu 7 yıl önce
ebeveyn
işleme
c28ce9f360
3 değiştirilmiş dosya ile 24 ekleme ve 21 silme
  1. +2
    -3
      mallinkService/src/main/java/com/iformall/service/PushLimitService.java
  2. +21
    -17
      mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java
  3. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/PushLimitServiceImpl.java

+ 2
- 3
mallinkService/src/main/java/com/iformall/service/PushLimitService.java Dosyayı Görüntüle

@@ -50,16 +50,15 @@ public interface PushLimitService {
/** /**
* 发短信检查 * 发短信检查
* @param tenantId * @param tenantId
* @param phone
* @return * @return
*/ */
boolean checkMsg(String tenantId, String phone);
boolean checkMsg(String tenantId);


/** /**
* 主动发券检查 * 主动发券检查
* @param tenantId * @param tenantId
* @param cUserId * @param cUserId
* @param coupon
* @param couponId
* @return * @return
*/ */
boolean checkCoupon(String tenantId, Long cUserId, Long couponId); boolean checkCoupon(String tenantId, Long cUserId, Long couponId);


+ 21
- 17
mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java Dosyayı Görüntüle

@@ -125,16 +125,17 @@ public class CouponInjectServiceImpl implements CouponInjectService {
record.setSendAmount(cUsers.size()); record.setSendAmount(cUsers.size());
couponInjectMapper.insertSelective(record); couponInjectMapper.insertSelective(record);
if(record.getSendType().equals(EnumCouponInjectSendType.IMMEDIATE.getCode())) { if(record.getSendType().equals(EnumCouponInjectSendType.IMMEDIATE.getCode())) {
sendNow(wxCoupon,cUsers,record.getId());
sendNow(wxCoupon,cUsers,record);
} }


//发送短信
sendMsg(record,cUsers);

return new ResultData(); return new ResultData();
} }


private void sendMsg(CouponInject record, List<WxCUser> cUsers) { private void sendMsg(CouponInject record, List<WxCUser> cUsers) {
if (!pushLimitService.checkMsg(record.getTenantId())) {
logger.error("发送短信时间在疲劳度允许时间范围外");
return;
}


//根据模板ID查询短信信息 //根据模板ID查询短信信息
WxMsgModel model = wxMsgModelService.getById(record.getModelId()); WxMsgModel model = wxMsgModelService.getById(record.getModelId());
@@ -161,6 +162,7 @@ public class CouponInjectServiceImpl implements CouponInjectService {
if(wxMsgConfig.getRemains()<cUsers.size()){ if(wxMsgConfig.getRemains()<cUsers.size()){
logger.info("短信数量不足"); logger.info("短信数量不足");
return; return;

} }


//获取手机号 //获取手机号
@@ -205,20 +207,24 @@ public class CouponInjectServiceImpl implements CouponInjectService {
} }
} }


private void sendNow(WxCoupon wxCoupon,List<WxCUser> cUsers,Long couponInjectId){
private void sendNow(WxCoupon wxCoupon,List<WxCUser> cUsers,CouponInject record){
//查询标签用户 //查询标签用户

int sendRealAmount=0; int sendRealAmount=0;
List<WxCUser> sentUsers = new ArrayList<WxCUser>();
for (WxCUser tempCUser : cUsers) { for (WxCUser tempCUser : cUsers) {
int result = sendCouponToUser(tempCUser,wxCoupon,couponInjectId);
sendRealAmount=sendRealAmount+result;
boolean bResult = sendCouponToUser(tempCUser,wxCoupon,record.getId());
if (bResult) {
sentUsers.add(tempCUser);
sendRealAmount += 1;
}
} }
//修改卡券存库
wxCoupon.setRemainInventory(wxCoupon.getRemainInventory()-sendRealAmount);
wxCouponService.saveOrUpdate(wxCoupon);
//发送短信
sendMsg(record,sentUsers);
} }
private int sendCouponToUser(WxCUser tempCUser,WxCoupon wxCoupon,Long couponInjectId) {
int injectResult = 0;//0注入不成功,1注入卡包成功


private boolean sendCouponToUser(WxCUser tempCUser,WxCoupon wxCoupon,Long couponInjectId) {
boolean checkLimit = false; boolean checkLimit = false;
// 检查疲劳度 // 检查疲劳度
try { try {
@@ -227,16 +233,14 @@ public class CouponInjectServiceImpl implements CouponInjectService {
logger.error(e.getMessage()); logger.error(e.getMessage());
} }
if (!checkLimit) { if (!checkLimit) {
return injectResult;
return false;
} }
// 发放免费券 // 发放免费券
WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId()); WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId());
if (couponOrder != null) { if (couponOrder != null) {
wxCouponActionLogService.addOne(tempCUser.getTenantId(), wxCoupon.getId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), couponInjectId); wxCouponActionLogService.addOne(tempCUser.getTenantId(), wxCoupon.getId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), couponInjectId);
} }
injectResult = 1;

return injectResult;
return true;
} }






+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/PushLimitServiceImpl.java Dosyayı Görüntüle

@@ -78,7 +78,7 @@ public class PushLimitServiceImpl implements PushLimitService {
} }


@Override @Override
public boolean checkMsg(String tenantId, String phone) {
public boolean checkMsg(String tenantId) {
Date curDate = new Date(); Date curDate = new Date();
// 1. get tenant limit // 1. get tenant limit
PushLimit pushLimit = getPushLimit(tenantId); PushLimit pushLimit = getPushLimit(tenantId);


Yükleniyor…
İptal
Kaydet