记得上下班打卡 | git大法好,push需谨慎

Commit eab013ce authored by jiangxiulong's avatar jiangxiulong

add table applet

parent 03a67ff7
package com.liquidnet.service.sweet.service; package com.liquidnet.service.sweet.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetAppletSubMsg; import com.liquidnet.service.sweet.entity.SweetAppletSubMsg;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
...@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface ISweetAppletSubMsgService extends IService<SweetAppletSubMsg> { public interface ISweetAppletSubMsgService extends IService<SweetAppletSubMsg> {
ResponseDto sendMsg();
} }
...@@ -182,14 +182,14 @@ public class WechatMaConfigure { ...@@ -182,14 +182,14 @@ public class WechatMaConfigure {
// router.setMessageDuplicateChecker(wxMessageInMemoryDuplicateChecker); // router.setMessageDuplicateChecker(wxMessageInMemoryDuplicateChecker);
// 订阅事件 // 订阅事件
/*router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT) router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event("subscribe_msg_popup_event") .event("subscribe_msg_popup_event")
.handler(subscribeHandler) .handler(subscribeHandler)
.end();*/ .end();
router.rule().async(false) /*router.rule().async(false)
.content("订阅消息") .content("订阅消息")
.handler(subscribeHandler) .handler(subscribeHandler)
.end(); .end();*/
// 取消订阅事件 // 取消订阅事件
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT) router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
......
package com.liquidnet.service.sweet.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.service.impl.SweetAppletSubMsgServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 小程序订阅消息记录表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2021-11-22
*/
@Api(tags = "小程序-订阅消息")
@Slf4j
@Validated
@RestController
@RequestMapping("/appletSubMsg")
public class SweetAppletSubMsgController {
@Autowired
private SweetAppletSubMsgServiceImpl subMsgService;
@GetMapping("send")
@ApiOperation("发送模版消息")
public ResponseDto send() {
return subMsgService.sendMsg();
}
}
package com.liquidnet.service.sweet.service.impl; package com.liquidnet.service.sweet.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.kylin.api.FeignKylinPerformancesClient;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.sweet.config.WechatMaConfigure;
import com.liquidnet.service.sweet.entity.SweetAppletSubMsg; import com.liquidnet.service.sweet.entity.SweetAppletSubMsg;
import com.liquidnet.service.sweet.mapper.SweetAppletSubMsgMapper; import com.liquidnet.service.sweet.mapper.SweetAppletSubMsgMapper;
import com.liquidnet.service.sweet.service.ISweetAppletSubMsgService; import com.liquidnet.service.sweet.service.ISweetAppletSubMsgService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/** /**
* <p> * <p>
...@@ -15,6 +35,119 @@ import org.springframework.stereotype.Service; ...@@ -15,6 +35,119 @@ import org.springframework.stereotype.Service;
* @since 2021-11-22 * @since 2021-11-22
*/ */
@Service @Service
@Slf4j
public class SweetAppletSubMsgServiceImpl extends ServiceImpl<SweetAppletSubMsgMapper, SweetAppletSubMsg> implements ISweetAppletSubMsgService { public class SweetAppletSubMsgServiceImpl extends ServiceImpl<SweetAppletSubMsgMapper, SweetAppletSubMsg> implements ISweetAppletSubMsgService {
@Autowired
private SweetAppletSubMsgMapper subMsgMapper;
@Autowired
private FeignKylinPerformancesClient feignKylinPerformancesClient;
@Autowired
WechatMaConfigure wechatMaConfigure;
@Override
public ResponseDto sendMsg() {
List<SweetAppletSubMsg> msgList = subMsgMapper.selectList(
Wrappers.lambdaQuery(SweetAppletSubMsg.class)
.eq(SweetAppletSubMsg::getIsPush, 1)
);
ArrayList<String> msgIdList = CollectionUtil.arrayListString();
if (!CollectionUtils.isEmpty(msgList)) {
for (SweetAppletSubMsg info : msgList) {
try {
String msgId = info.getMsgId();
ResponseDto<KylinPerformanceVo> kylinPerformanceVo = feignKylinPerformancesClient.detail(info.getTargetId(), 0, 0, "");
KylinPerformanceVo performanceVoData = kylinPerformanceVo.getData();
if (null == performanceVoData || ObjectUtils.isEmpty(performanceVoData)) {
log.info("无演出数据:[getPerformancesId=[{}]", info.getTargetId());
continue;
}
KylinTicketTimesVo kylinTicketTimesVo = performanceVoData.getTicketTimeList().get(0);
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime);
String sellTime = performanceVoData.getSellTime();
LocalDateTime sellTimeLocal = LocalDateTime.parse(sellTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime sellTimeLocalNew = sellTimeLocal.minusMinutes(5);
String sellTimeLocalNewStr = DateUtil.Formatter.yyyyMMddHHmmss.format(sellTimeLocalNew);
String stopSellTime = performanceVoData.getStopSellTime();
if (1 == DateUtil.compareStrDay(nowTimeStr, stopSellTime)) { // 超过售卖期 不推 删redis
log.info("超过售卖期:[nowTimeStr=[{}], [stopSellTime=[{}]",
nowTimeStr, stopSellTime);
msgIdList.add(msgId);
continue;
}
if (-1 == DateUtil.compareStrDay(nowTimeStr, sellTimeLocalNewStr)) { // 还没到售卖期
log.info("还没到售卖期:[nowTimeStr=[{}], [sellTimeLocalNewStr=[{}]",
nowTimeStr, sellTimeLocalNewStr);
continue;
}
// 发送订阅消息接口
boolean subMessage = sendSubMessage(info);
if (subMessage) {
msgIdList.add(msgId);
}
} catch (Exception e) {
log.error("小程序演出订阅提醒消息处理异常", e);
}
}
if (!CollectionUtils.isEmpty(msgIdList)) {
SweetAppletSubMsg update = new SweetAppletSubMsg();
update.setIsPush(2);
update.setUpdatedAt(LocalDateTime.now());
subMsgMapper.update(
update,
Wrappers.lambdaUpdate(SweetAppletSubMsg.class)
.in(SweetAppletSubMsg::getMsgId, msgIdList)
);
}
}
return ResponseDto.success();
}
/**
* 微信小程序推送订阅消息
*/
public boolean sendSubMessage(SweetAppletSubMsg info) {
WxMaSubscribeMessage subscribeMessage = new WxMaSubscribeMessage();
subscribeMessage.setPage("pages/index/index");
subscribeMessage.setTemplateId(info.getTemplateId());
subscribeMessage.setToUser(info.getOpenId());
ArrayList<WxMaTemplateData> wxMaSubscribeData = new ArrayList<>();
WxMaTemplateData wxMaSubscribeData1 = new WxMaTemplateData();
wxMaSubscribeData1.setName("thing1");
wxMaSubscribeData1.setValue("豪华版");
//每个参数 存放到大集合中
wxMaSubscribeData.add(wxMaSubscribeData1);
// 第二个内容:用户昵称
WxMaTemplateData wxMaSubscribeData2 = new WxMaTemplateData();
wxMaSubscribeData2.setName("time2");
wxMaSubscribeData2.setValue("2021-07-09 23:20:30");
wxMaSubscribeData.add(wxMaSubscribeData2);
// 第三个内容:领取方式
WxMaTemplateData wxMaSubscribeData3 = new WxMaTemplateData();
wxMaSubscribeData3.setName("thing3");
wxMaSubscribeData3.setValue("请联系您的专属");
wxMaSubscribeData.add(wxMaSubscribeData3);
try {
//获取微信小程序配置:
WxMaService wxService = wechatMaConfigure.getWxMaService(info.getAppletType());
//进行推送
wxService.getMsgService().sendSubscribeMsg(subscribeMessage);
return true;
} catch (Exception e) {
log.error("sendSubMessageException e{}", e);
}
return false;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment