From 21f5ad544c987cf840d4801286d3fb0491c79d16 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 25 Sep 2018 19:38:59 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=A0=87=E7=AD=BE=E7=9F=AD=E4=BF=A1][?= =?UTF-8?q?=E5=9B=9E=E8=B0=83][=E5=8F=91=E9=80=81=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=9B=9E=E8=B0=83=EF=BC=8C?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E8=BF=94=E5=9B=9E=E6=97=B6=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/domain/po/WxMsg.java | 18 +++---- .../com/iformall/domain/po/WxMsgCallback.java | 48 ++++++++++++++--- .../iformall/mapper/WxMsgCallbackMapper.java | 14 ++--- .../impl/WxMsgCallbackServiceImpl.java | 35 +++++++----- .../service/impl/WxMsgServiceImpl.java | 53 ++++++++++++++----- .../resources/mapper/WxMsgCallbackMapper.xml | 15 +++++- 6 files changed, 135 insertions(+), 48 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java index 95b5adf29..79e7199f7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java @@ -57,13 +57,13 @@ public class WxMsg implements Serializable { private Date createtime; /*预计发送数量**/ @io.swagger.annotations.ApiModelProperty(value="预计发送数量",name="expectSendNumber") - private String expectSendNumber; + private Integer expectSendNumber; /*成功数量**/ @io.swagger.annotations.ApiModelProperty(value="成功数量",name="successNumber") - private String successNumber; + private Integer successNumber; /*错误数量**/ @io.swagger.annotations.ApiModelProperty(value="错误数量",name="errorNumber") - private String errorNumber; + private Integer errorNumber; /***/ @io.swagger.annotations.ApiModelProperty(value="",name="returnResult") private String returnResult; @@ -122,22 +122,22 @@ public class WxMsg implements Serializable { public void setCreatetime(Date _createtime) { createtime = _createtime; } - public String getExpectSendNumber() { + public Integer getExpectSendNumber() { return expectSendNumber; } - public void setExpectSendNumber(String _expectSendNumber) { + public void setExpectSendNumber(Integer _expectSendNumber) { expectSendNumber = _expectSendNumber; } - public String getSuccessNumber() { + public Integer getSuccessNumber() { return successNumber; } - public void setSuccessNumber(String _successNumber) { + public void setSuccessNumber(Integer _successNumber) { successNumber = _successNumber; } - public String getErrorNumber() { + public Integer getErrorNumber() { return errorNumber; } - public void setErrorNumber(String _errorNumber) { + public void setErrorNumber(Integer _errorNumber) { errorNumber = _errorNumber; } public String getReturnResult() { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java index d7da743a9..6a19f52ba 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java @@ -1,11 +1,11 @@ package com.iformall.domain.po; -import javax.persistence.*; -import java.util.*; -import javax.persistence.Transient; -import java.util.List; import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; import java.io.Serializable; +import java.util.Date; +import java.util.List; @Table(name = "wx_msg_callback") public class WxMsgCallback implements Serializable { @@ -37,9 +37,11 @@ public class WxMsgCallback implements Serializable { public void setIds(List ids) { this.ids = ids; } - - - + + + @io.swagger.annotations.ApiModelProperty(value="回调ID",name="callbackId") + private Long callbackId; + /*租户id**/ @io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId") private String tenantId; @@ -67,6 +69,23 @@ public class WxMsgCallback implements Serializable { /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") private Date createtime; + + /*更新时间**/ + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") + private Date updatetime; + + /*msgId**/ + @io.swagger.annotations.ApiModelProperty(value="msgId",name="msgId") + private Long msgId; + + public Long getCallbackId() { + return callbackId; + } + + public void setCallbackId(Long callbackId) { + this.callbackId = callbackId; + } + public String getTenantId() { return tenantId; } @@ -123,6 +142,21 @@ public class WxMsgCallback implements Serializable { } + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public Long getMsgId() { + return msgId; + } + + public void setMsgId(Long msgId) { + this.msgId = msgId; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java index e3f7cdbdd..24b8791e5 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java @@ -1,16 +1,18 @@ package com.iformall.mapper; -import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxMsgCallback; +import java.util.List; +import java.util.Map; + public interface WxMsgCallbackMapper extends CommonMapper { List findList(WxMsgCallback wxMsgCallback); - - - - - + + WxMsgCallback queryCallbackByBatchNoAndPhone(WxMsgCallback wxMsgCallback); + + int queryMsgSendTotal(Map params); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java index 2ee9a6500..deca2e98b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java @@ -1,7 +1,6 @@ package com.iformall.service.impl; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; @@ -9,13 +8,10 @@ import com.iformall.domain.po.WxMsgCallback; import com.iformall.domain.po.WxMsgConfig; import com.iformall.domain.po.WxMsgModel; import com.iformall.domain.po.WxMsgValidationcodeModel; -import com.iformall.mapper.WxMsgCallbackMapper; -import com.iformall.mapper.WxMsgConfigMapper; -import com.iformall.mapper.WxMsgModelMapper; -import com.iformall.mapper.WxMsgValidationcodeModelMapper; +import com.iformall.enums.EnumMsgStatus; +import com.iformall.mapper.*; import com.iformall.service.WxMsgCallbackService; import com.iformall.utils.HMACSHA256; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +35,8 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @Autowired WxMsgValidationcodeModelMapper wxMsgValidationcodeModelMapper; + @Autowired + WxMsgMapper wxMsgMapper; @Override public PageInfo listAsPage(WxMsgCallback record, Integer pageIndex, Integer pageSize) { @@ -91,17 +89,28 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { logger.info("短信SIGN校验成功"); wxMsgConfig.setRemains(wxMsgConfig.getRemains() - wxMsgCallbacks.size()); wxMsgConfigMapper.updateByPrimaryKeySelective(wxMsgConfig); + final IdWorker idWorker = IdWorker.get(); for (WxMsgCallback wxMsgCallback : wxMsgCallbacks) { - WxMsgCallback callback = wxMsgCallbackMapper.selectByPrimaryKey(wxMsgCallback.getId()); - if(callback!=null){//有更新 - wxMsgCallbackMapper.updateByPrimaryKeySelective(wxMsgCallback); - }else{//无插入 - wxMsgCallback.setTenantId(wxMsgConfig.getTenantId()); - wxMsgCallback.setSign(sign); + WxMsgCallback callback=wxMsgCallbackMapper.queryCallbackByBatchNoAndPhone(wxMsgCallback); + if(callback!=null){//有更新,无插入 + callback.setSign(sign); + callback.setTenantId(tenantId); + callback.setStatus(wxMsgCallback.getStatus()); + callback.setStatusMsg(wxMsgCallback.getStatusMsg()); + callback.setBegintime(wxMsgCallback.getBegintime()); + callback.setEndtime(wxMsgCallback.getEndtime()); + callback.setCallbackId(wxMsgCallback.getId()); + callback.setUpdatetime(new Date()); + wxMsgCallbackMapper.updateByPrimaryKeySelective(callback); + }else{ + Long callbackId = wxMsgCallback.getId(); + wxMsgCallback.setId(idWorker.nextId()); + wxMsgCallback.setCallbackId(callbackId); + wxMsgCallback.setTenantId(tenantId); + wxMsgCallback.setStatus(EnumMsgStatus.MSG_SEND_FAIL.getCode()); wxMsgCallback.setCreatetime(new Date()); wxMsgCallbackMapper.insertSelective(wxMsgCallback); } - } }else{ logger.info("短信SIGN校验失败"); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java index 90972d2a4..cc2148b05 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java @@ -50,12 +50,38 @@ public class WxMsgServiceImpl implements WxMsgService { @Override public PageInfo listAsPage(WxMsg record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgMapper.findList(record)); + PageHelper.startPage(pageIndex, pageSize); + List templist = wxMsgMapper.findList(record); + for(WxMsg temp:templist){ + + Map params=new HashMap<>(); + params.put("msgId",temp.getId().toString()); + params.put("status","1"); + int success=wxMsgCallbackMapper.queryMsgSendTotal(params); + params.put("status","0"); + int error=wxMsgCallbackMapper.queryMsgSendTotal(params); + temp.setSuccessNumber(success); + temp.setErrorNumber(error); + } + + PageInfo pageInfo = new PageInfo<>(templist); + return pageInfo; } @Override public WxMsg getById(Long id) { - return wxMsgMapper.selectByPrimaryKey(id); + + WxMsg wxMsg = wxMsgMapper.selectByPrimaryKey(id); + Map params=new HashMap<>(); + params.put("msgId",wxMsg.getId().toString()); + params.put("status","1"); + int success=wxMsgCallbackMapper.queryMsgSendTotal(params); + params.put("status","0"); + int error=wxMsgCallbackMapper.queryMsgSendTotal(params); + wxMsg.setSuccessNumber(success); + wxMsg.setErrorNumber(error); + + return wxMsg; } @Override @@ -82,6 +108,7 @@ public class WxMsgServiceImpl implements WxMsgService { for(String phone:phoneSplit){ phoneSet.add(phone); } + wxMsg.setExpectSendNumber(phoneSet.size());//预计发送数量 StringBuffer sb=new StringBuffer(); for(String phone:phoneSet){ sb.append(phone).append(","); @@ -155,11 +182,6 @@ public class WxMsgServiceImpl implements WxMsgService { return ""; } - private String parseexcle(String tenantId, WxMsg excelpath) { - - return null; - } - @Override public void deleteById(Long id) { wxMsgMapper.deleteByPrimaryKey(id); @@ -167,6 +189,7 @@ public class WxMsgServiceImpl implements WxMsgService { public ResultData sendmsg(WxMsg wxMsg) { + logger.info("发送短信开始..."); //从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); wxMsgConfig.setTenantId(wxMsg.getTenantId()); @@ -218,7 +241,7 @@ public class WxMsgServiceImpl implements WxMsgService { String result = HttpUtil.doPost(requestUrl, params); JSONObject jsonObjectResult = JSONObject.parseObject(result); String ret = jsonObjectResult.get("ret").toString(); - + String batchNo = jsonObjectResult.get("data").toString(); if (ret.equals("1")) { wxMsg.setSendstatus(EnumMsgStatus.MSG_SEND_SUCCESS.getCode()); } else { @@ -234,7 +257,9 @@ public class WxMsgServiceImpl implements WxMsgService { wxMsgMapper.updateByPrimaryKeySelective(wxMsg); } + logger.info("发送短信结束..."); if (ret.equals("1")) { + addMsgCallback(wxMsg,batchNo); return new ResultData(Result.SUCCESS, "短信发送中,您可在短信明细中查看发送状态"); } else { return new ResultData(ErrorCode.MSG_SEND_ERROR.getCode(), "短信发送发败"); @@ -243,8 +268,8 @@ public class WxMsgServiceImpl implements WxMsgService { } - public void addMsgCallback(WxMsg wxmsg){ - + public void addMsgCallback(WxMsg wxmsg, String batchNo){ + logger.info("发送时主动添加回调记录开始..."); String phones = wxmsg.getPhones(); String[] split = phones.split(","); final IdWorker idWorker = IdWorker.get(); @@ -252,10 +277,14 @@ public class WxMsgServiceImpl implements WxMsgService { WxMsgCallback wxMsgCallback = new WxMsgCallback(); wxMsgCallback.setId(idWorker.nextId()); wxMsgCallback.setPhone(phone); - //批次号或任务ID + wxMsgCallback.setTenantId(wxmsg.getTenantId()); + wxMsgCallback.setBatchNo(batchNo); + wxMsgCallback.setMsgId(wxmsg.getId()); + wxMsgCallback.setStatus(EnumMsgStatus.MSG_SEND_FAIL.getCode()); + wxMsgCallback.setCreatetime(new Date()); wxMsgCallbackMapper.insertSelective(wxMsgCallback); } - + logger.info("发送时主动添加回调记录结束..."); } diff --git a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml index f5ab6abc6..6cd8ac6ff 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml @@ -12,10 +12,14 @@ + + + + - `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime` + `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime`,`updatetime`,`msg_id`,`callback_id` @@ -85,7 +89,16 @@ + + + +