From b3741d2aea0e110fd1990d2c4cbe4ac3573bca04 Mon Sep 17 00:00:00 2001 From: hupeng Date: Sat, 29 Sep 2018 16:54:58 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8F=91=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E7=B2=BE=E5=87=86=E5=8F=91=E5=88=B8=E7=9A=84=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CouponInjectController.java | 6 +- .../java/com/iformall/common/ErrorCode.java | 2 +- .../enums/EnumCouponInjectStatus.java | 3 +- .../service/impl/CouponInjectServiceImpl.java | 113 ++++++++---------- 4 files changed, 50 insertions(+), 74 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java b/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java index bb5b3b31c..a356f55a5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java @@ -54,11 +54,7 @@ public class CouponInjectController extends BaseController { couponInject.setTenantId(getUser().getTenantId()); couponInject.setMUserId(getUser().getId()); - if (couponInject.getSendType() == EnumCouponInjectSendType.IMMEDIATE.getCode()) { - couponInject.setSendTime(new Date()); - } - //Assert.notNull(couponInject.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + return couponInjectService.add(couponInject); } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 8df263b53..2045c6bf5 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -215,7 +215,7 @@ public enum ErrorCode{ MSG_SEND_WAY_CHOOSE_ERROR(12110,"请确定发送的方式"), MSG_SUM_ZERO(12111,"短信数量为0"), MSG_SUM_INSUFFICENT(12112,"短信数量不足"), - + MSG_NO_VALID_PHONE(12113,"没有可以发送的手机号"), /** * 会员 diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java index 1655ab7dc..f36b620ef 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java @@ -9,8 +9,7 @@ public enum EnumCouponInjectStatus { PENDING(0, "待发送"), SENDING(1, "发送中"), HAS_SENT(2, "已发送"), - SEND_FAILED(3, "发送失败"), - INVALID(4, "已作废") + SEND_FAILED(3, "发送失败") ; public static EnumCouponInjectStatus getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java index 7c6ab7c04..c2a05ebfd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; +import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.enums.*; @@ -80,6 +81,13 @@ public class CouponInjectServiceImpl implements CouponInjectService { @Override public ResultData add(CouponInject record) { + try { + pushLimitService.checkSendTime(record.getTenantId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(),e.getMessage()); + } + WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode()) ) { //时间范围 if (new Date().after(wxCoupon.getValidEndDate())) { @@ -125,34 +133,30 @@ public class CouponInjectServiceImpl implements CouponInjectService { record.setSendAmount(cUsers.size()); couponInjectMapper.insertSelective(record); if(record.getSendType().equals(EnumCouponInjectSendType.IMMEDIATE.getCode())) { - try { - sendNow(wxCoupon, cUsers, record); - } catch (MallinkException e) { - logger.error(e.getMessage()); - if (e.getErrorCode() == ErrorCode.PUSH_LIMIT_NOT_INRANG.getCode()) { - return new ResultData(ErrorCode.PUSH_LIMIT_NOT_INRANG); - } + + List sentUsers = sendCoupon(wxCoupon, cUsers, record); + if (sentUsers.size() > 0) { + record.setStatus(EnumCouponInjectStatus.HAS_SENT.getCode()); + ResultData msgSendRes = sendMsg(record, sentUsers); + if (msgSendRes.code == Result.SUCCESS) + record.setMsgId((Long)msgSendRes.data); + } else { + record.setStatus(EnumCouponInjectStatus.SEND_FAILED.getCode()); } + record.setSendAmount(sentUsers.size()); + + couponInjectMapper.updateByPrimaryKeySelective(record); } return new ResultData(); } - private void sendMsg(CouponInject record, List cUsers) { - boolean checkMsg = false; - try { - checkMsg = pushLimitService.checkMsg(record.getTenantId()); - } catch (MallinkException e) { - logger.error(e.getMessage()); - } - if (!checkMsg) { - return; - } + private ResultData sendMsg(CouponInject record, List cUsers) { //根据模板ID查询短信信息 WxMsgModel model = wxMsgModelService.getById(record.getModelId()); if(model==null){ - return; + return new ResultData(ErrorCode.MSG_TEMPLATE_NOT_FOUND); } WxMsg wxmsg=new WxMsg(); @@ -161,26 +165,21 @@ public class CouponInjectServiceImpl implements CouponInjectService { wxMsgConfig.setTenantId(wxmsg.getTenantId()); wxMsgConfig = wxMsgConfigService.findObject(wxMsgConfig); if (wxMsgConfig==null){ - logger.info("您还未接入短信运营商,请联系平台管理员"); - return; + return new ResultData(ErrorCode.MSG_SERVER_NOT_FIND); } if(wxMsgConfig.getRemains()==0){ - logger.info("短信数量为0"); - return; + return new ResultData(ErrorCode.MSG_SUM_ZERO); } wxmsg.setExpectSendNumber(cUsers.size());//预计发送数量 if(wxMsgConfig.getRemains() cUsers,CouponInject record){ - boolean checkTime = false; - try { - checkTime = pushLimitService.checkSendTime(wxCoupon.getTenantId()); - } catch (MallinkException e) { - logger.error(e.getMessage()); - throw new MallinkException(e.getErrorCode(), e.getMessage()); - } - if (checkTime) { - //查询标签用户 - int sendRealAmount=0; - List sentUsers = new ArrayList(); - for (WxCUser tempCUser : cUsers) { - boolean bResult = sendCouponToUser(tempCUser,wxCoupon,record.getId()); - if (bResult) { - sentUsers.add(tempCUser); - sendRealAmount += 1; - } - } + private List sendCoupon(WxCoupon wxCoupon,List cUsers,CouponInject record){ - //发送短信 - sendMsg(record,sentUsers); + //查询标签用户 + List sentUsers = new ArrayList(); + for (WxCUser tempCUser : cUsers) { + boolean bResult = sendCouponToUser(tempCUser,wxCoupon,record.getId()); + if (bResult) { + sentUsers.add(tempCUser); + } } + return sentUsers; } @@ -257,7 +233,12 @@ public class CouponInjectServiceImpl implements CouponInjectService { return false; } // 发放免费券 - WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId()); + WxCouponOrder couponOrder = null; + try { + couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + } if (couponOrder != null) { wxCouponActionLogService.addOne(tempCUser.getTenantId(), wxCoupon.getId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), couponInjectId); }