|
|
@ -81,8 +81,8 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
private WxmpMsgSendRecordService wxmpMsgSendRecordService; |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 保存系统授权信息 |
|
|
|
* @return void |
|
|
|
* @Description 保存系统授权信息 |
|
|
|
* @author wxz |
|
|
|
* @date 2020.10.21 17:29 |
|
|
|
*/ |
|
|
@ -121,7 +121,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
String userId = msg.getUserId(); |
|
|
|
String clientType = msg.getClientType(); |
|
|
|
String customerId = msg.getCustomerId(); |
|
|
|
String templateId = msg.getTemplateId(); |
|
|
|
String templateId = null; |
|
|
|
String openId = null; |
|
|
|
//通过userId获取openId
|
|
|
|
try { |
|
|
@ -134,14 +134,14 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
staffBasicInfoFormDTO.setStaffId(userId); |
|
|
|
openId = epmetUserOpenFeignClient.getStaffBasicInfo(staffBasicInfoFormDTO).getData().getOpenId(); |
|
|
|
} else { |
|
|
|
throw new WxSubscribeException("clientType有误",openId); |
|
|
|
throw new WxSubscribeException("clientType有误", "", openId); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
throw new WxSubscribeException("连接User服务失败",""); |
|
|
|
throw new WxSubscribeException("连接User服务失败", "", ""); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isBlank(openId)) { |
|
|
|
throw new WxSubscribeException("openId获取失败",""); |
|
|
|
throw new WxSubscribeException("openId获取失败", "", ""); |
|
|
|
} |
|
|
|
|
|
|
|
//获取accessToken
|
|
|
@ -150,11 +150,21 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
try { |
|
|
|
authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(key.toString()); |
|
|
|
} catch (Exception e) { |
|
|
|
throw new WxSubscribeException("连接缓存服务器失败",openId); |
|
|
|
throw new WxSubscribeException("连接缓存服务器失败", "", openId); |
|
|
|
} |
|
|
|
String accessToken = (String) authorizerRefreshToken.get(WxmpMessageConstant.AUTHORIZER_ACCESS_TOKEN); |
|
|
|
if (StringUtils.isBlank(accessToken)) { |
|
|
|
throw new WxSubscribeException("accessToken获取失败",openId); |
|
|
|
throw new WxSubscribeException("accessToken获取失败", "", openId); |
|
|
|
} |
|
|
|
|
|
|
|
//获取模板id
|
|
|
|
if (WxmpMessageConstant.RESI.equals(clientType)) { |
|
|
|
templateId = wxmpResiUserSubscribeDao.getResiSubscribeTemplateId(openId, templateId, customerId); |
|
|
|
} else if (WxmpMessageConstant.WORK.equals(clientType)) { |
|
|
|
templateId = wxmpWorkUserSubscribeDao.getWorkSubscribeTemplateId(openId, templateId, customerId); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(templateId)) { |
|
|
|
throw new WxSubscribeException("获取模板id失败", "", openId); |
|
|
|
} |
|
|
|
|
|
|
|
//判断用户是否有次数
|
|
|
@ -166,10 +176,10 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
} |
|
|
|
if (count == null) { |
|
|
|
//用户未订阅
|
|
|
|
throw new WxSubscribeException("用户未订阅",openId); |
|
|
|
throw new WxSubscribeException("用户未订阅", templateId, openId); |
|
|
|
} |
|
|
|
if (count == 0) { |
|
|
|
throw new WxSubscribeException("用户可用额度不足",openId); |
|
|
|
throw new WxSubscribeException("用户可用额度不足", templateId, openId); |
|
|
|
} |
|
|
|
|
|
|
|
//发送消息
|
|
|
@ -216,7 +226,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
logger.error("消息{}发送成功但订阅条数-1失败", JSON.toJSONString(msg)); |
|
|
|
} |
|
|
|
//存表
|
|
|
|
int saveRes = wxmpMsgSendRecordService.saveRecord(initRecord(msg,openId,WxmpMessageConstant.SUCCESS)); |
|
|
|
int saveRes = wxmpMsgSendRecordService.saveRecord(initRecord(msg, templateId, openId, WxmpMessageConstant.SUCCESS)); |
|
|
|
if (saveRes == 0) { |
|
|
|
logger.error("消息{}发送成功但存入记录表失败", JSON.toJSONString(msg)); |
|
|
|
} |
|
|
@ -236,7 +246,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
} |
|
|
|
|
|
|
|
//抛出错误
|
|
|
|
throw new WxSubscribeException(String.valueOf(resultMap.get(WxmpMessageConstant.ERR_MSG)),openId); |
|
|
|
throw new WxSubscribeException(String.valueOf(resultMap.get(WxmpMessageConstant.ERR_MSG)),templateId, openId); |
|
|
|
} |
|
|
|
|
|
|
|
succecssCount++; |
|
|
@ -248,7 +258,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
// }
|
|
|
|
if (e instanceof WxSubscribeException) { |
|
|
|
//存表
|
|
|
|
WxmpMsgSendRecordEntity wxmpMsgSendRecordEntity = initRecord(msg, ((WxSubscribeException) e).getOpenId(), WxmpMessageConstant.ERROR); |
|
|
|
WxmpMsgSendRecordEntity wxmpMsgSendRecordEntity = initRecord(msg, ((WxSubscribeException) e).getTemplateId(), ((WxSubscribeException) e).getOpenId(), WxmpMessageConstant.ERROR); |
|
|
|
wxmpMsgSendRecordEntity.setReason(errMsg); |
|
|
|
int saveRes = wxmpMsgSendRecordService.saveRecord(wxmpMsgSendRecordEntity); |
|
|
|
if (saveRes == 0) { |
|
|
@ -262,12 +272,13 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { |
|
|
|
} |
|
|
|
logger.info("{}条消息中的{}条发送成功", msgList.size(), succecssCount); |
|
|
|
} |
|
|
|
|
|
|
|
//初始化记录对象
|
|
|
|
private WxmpMsgSendRecordEntity initRecord(WxSubscribeMessageFormDTO msg, String openId, String status){ |
|
|
|
private WxmpMsgSendRecordEntity initRecord(WxSubscribeMessageFormDTO msg, String templateId, String openId, String status) { |
|
|
|
WxmpMsgSendRecordEntity wxmpMsgSendRecordEntity = new WxmpMsgSendRecordEntity(); |
|
|
|
wxmpMsgSendRecordEntity.setCustomerId(msg.getCustomerId()); |
|
|
|
wxmpMsgSendRecordEntity.setClientType(msg.getClientType()); |
|
|
|
wxmpMsgSendRecordEntity.setTemplateId(msg.getTemplateId()); |
|
|
|
wxmpMsgSendRecordEntity.setTemplateId(templateId); |
|
|
|
wxmpMsgSendRecordEntity.setUserId(msg.getUserId()); |
|
|
|
wxmpMsgSendRecordEntity.setWxOpenId(openId); |
|
|
|
wxmpMsgSendRecordEntity.setBehaviorType(msg.getBehaviorType()); |
|
|
|