You've already forked FrameTour-BE
添加服务消息通知的消息记录和操作统计记录
This commit is contained in:
@ -6,11 +6,19 @@ import com.ycwl.basic.config.WechatConfig;
|
||||
import com.ycwl.basic.constant.NumberConstant;
|
||||
import com.ycwl.basic.constant.WeiXinConstant;
|
||||
import com.ycwl.basic.enums.BizCodeEnum;
|
||||
import com.ycwl.basic.enums.StatisticEnum;
|
||||
import com.ycwl.basic.exception.AppException;
|
||||
import com.ycwl.basic.mapper.MemberMapper;
|
||||
import com.ycwl.basic.mapper.MessageRecordMapper;
|
||||
import com.ycwl.basic.mapper.ScenicMapper;
|
||||
import com.ycwl.basic.mapper.StatisticsMapper;
|
||||
import com.ycwl.basic.model.mobile.messageRecord.MessageRecordEntity;
|
||||
import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq;
|
||||
import com.ycwl.basic.model.wx.WechatAccessTokenVO;
|
||||
import com.ycwl.basic.model.wx.WechatMessageSubscribeForm;
|
||||
import com.ycwl.basic.model.wx.WechatMssVO;
|
||||
import com.ycwl.basic.service.mobile.WxNotifyService;
|
||||
import com.ycwl.basic.utils.SnowFlakeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@ -39,6 +47,12 @@ public class WxNotifyServiceImpl implements WxNotifyService {
|
||||
|
||||
@Autowired
|
||||
private WechatConfig wechatConfig;
|
||||
@Autowired
|
||||
private MessageRecordMapper messageRecordMapper;
|
||||
@Autowired
|
||||
private StatisticsMapper statisticsMapper;
|
||||
@Autowired
|
||||
private MemberMapper memberMapper;
|
||||
|
||||
/**
|
||||
* 缓存accessToken
|
||||
@ -81,31 +95,58 @@ public class WxNotifyServiceImpl implements WxNotifyService {
|
||||
|
||||
@Override
|
||||
public JSONObject pushMessage(WechatMessageSubscribeForm info) {
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
String url = MESSAGE_SEND_URL + getAccessToken();
|
||||
|
||||
// 拼接推送的模板
|
||||
WechatMssVO wxMssVO = new WechatMssVO();
|
||||
wxMssVO.setTouser(info.getOpenId()); // 用户的openId
|
||||
wxMssVO.setTemplate_id(info.getTemplateId()); // 订阅消息模板id
|
||||
wxMssVO.setLang(info.getLang()); // 语言类型
|
||||
wxMssVO.setMiniprogram_state(info.getMiniprogram_state()); // 跳转小程序类型
|
||||
wxMssVO.setPage(info.getPage());
|
||||
Integer scenicServiceNoticeStatus = memberMapper.getScenicServiceNoticeStatus(info.getScenicId(), info.getMemberId());
|
||||
if (scenicServiceNoticeStatus == NumberConstant.ZERO) {
|
||||
log.info("用户已关闭通知");
|
||||
return null;
|
||||
}else {
|
||||
// 发送通知
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
String url = MESSAGE_SEND_URL + getAccessToken();
|
||||
|
||||
// // TODO: 推送的内容
|
||||
// Map<String, WechatTemplateData> map = new HashMap<>();
|
||||
// map.put("msg", new WechatTemplateData("发消息了"));
|
||||
wxMssVO.setData(info.getData());
|
||||
// 拼接推送的模板
|
||||
WechatMssVO wxMssVO = new WechatMssVO();
|
||||
wxMssVO.setTouser(info.getOpenId()); // 用户的openId
|
||||
wxMssVO.setTemplate_id(info.getTemplateId()); // 订阅消息模板id
|
||||
wxMssVO.setLang(info.getLang()); // 语言类型
|
||||
wxMssVO.setMiniprogram_state(info.getMiniprogram_state()); // 跳转小程序类型
|
||||
wxMssVO.setPage(info.getPage());
|
||||
|
||||
// 发送
|
||||
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, wxMssVO, String.class);
|
||||
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody()));
|
||||
Integer errcode = jsonObject.getInteger(WECHAT_ERRCODE);
|
||||
String errmsg = jsonObject.getString(WECHAT_ERRMSG);
|
||||
if (errcode != NumberConstant.ZERO) {
|
||||
throw new AppException(errcode, errmsg);
|
||||
// // TODO: 推送的内容
|
||||
// Map<String, WechatTemplateData> map = new HashMap<>();
|
||||
// map.put("msg", new WechatTemplateData("发消息了"));
|
||||
wxMssVO.setData(info.getData());
|
||||
|
||||
// 发送
|
||||
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, wxMssVO, String.class);
|
||||
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody()));
|
||||
Integer errcode = jsonObject.getInteger(WECHAT_ERRCODE);
|
||||
String errmsg = jsonObject.getString(WECHAT_ERRMSG);
|
||||
if (errcode != NumberConstant.ZERO) {
|
||||
throw new AppException(errcode, errmsg);
|
||||
}
|
||||
|
||||
// 记录消息记录
|
||||
MessageRecordEntity messageRecord = new MessageRecordEntity();
|
||||
messageRecord.setId(SnowFlakeUtil.getLongId());
|
||||
messageRecord.setMemberId(info.getMemberId());
|
||||
messageRecord.setScenicId(info.getScenicId());
|
||||
messageRecord.setTemplateId(info.getTemplateId());
|
||||
messageRecord.setContent(info.getData().toString());
|
||||
messageRecordMapper.insertMessageRecord(messageRecord);
|
||||
|
||||
// 统计消息记录
|
||||
StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq();
|
||||
statisticsRecordAddReq.setScenicId(info.getScenicId());
|
||||
statisticsRecordAddReq.setMemberId(info.getMemberId());
|
||||
statisticsRecordAddReq.setType(StatisticEnum.MESSAGE_PUSH.code);
|
||||
statisticsRecordAddReq.setMorphId(messageRecord.getId());
|
||||
statisticsMapper.addStatisticsRecord(statisticsRecordAddReq);
|
||||
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody()));
|
||||
}
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user