123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- package com.book.push.handler;
- import com.book.dao.cps.pojo.*;
- import com.book.dao.cpsshard.entity.Sign;
- import com.book.dao.cpsshard.mapper.SignMapper;
- import com.book.dao.cpsshard.pojo.example.SignExample;
- import com.book.dao.utils.DateUtils;
- import com.book.dao.utils.TimeUtil;
- import com.book.push.cons.SiteCons;
- import com.book.push.service.dao.*;
- import com.book.push.service.push.PushService;
- import com.book.push.service.wx.WxThirdPartService;
- import me.chanjar.weixin.common.session.WxSessionManager;
- import me.chanjar.weixin.mp.api.WxMpService;
- import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
- import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
- import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
- import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
- import me.chanjar.weixin.mp.builder.kefu.NewsBuilder;
- import me.chanjar.weixin.open.api.WxOpenMpService;
- import me.chanjar.weixin.open.api.WxOpenService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Lazy;
- import org.springframework.stereotype.Component;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- import static me.chanjar.weixin.common.api.WxConsts.EventType;
- /**
- * @author 点击菜单事件
- */
- @Component
- public class MenuHandler extends AbstractHandler {
- @Autowired
- private PushService pushService;
- @Autowired
- private UserService userService;
- @Autowired
- private AdminConfigService adminConfigService;
- @Autowired
- private PlatformService platformService;
- @Lazy
- @Autowired
- private WxThirdPartService wxThirdPartService;
- @Autowired
- private SignRecommendService signRecommendService;
- @Autowired
- private SignedRecommendService signedRecommendService;
- @Autowired
- private ManageTitleService manageTitleService;
- @Autowired
- private ManageCoverService manageCoverService;
- @Autowired
- private ConfigService configService;
- @Autowired
- private BookService bookService;
- @Autowired
- private SignMapper signMapper;
- @Override
- public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
- Map<String, Object> context, WxMpService weixinService,
- WxSessionManager sessionManager) {
- if (EventType.VIEW.equals(wxMessage.getEvent())) {
- return null;
- }
- String appid = wxMessage.getToUser();
- User user = userService.selectByOpenId(wxMessage.getFromUser());
- Config config = configService.selectByName(SiteCons.SIGN_KANDIAN);
- int kandian = Integer.valueOf(config.getValue());
- Integer channelId = user.getChannelId();
- AdminConfig adminConfig = adminConfigService.selectByAdminId(channelId);
- Long id = user.getId();
- SignExample example = SignExample.newAndCreateCriteria().andUidEqualTo(id.intValue()).andCreatedateEqualTo(TimeUtil.getCurrentIntDate(TimeUtil.YYYYMMDD)).example();
- Sign sign = signMapper.selectOneByExample(example);
- if ("1".equals(adminConfig.getSignTip())) {
- pushMessage(user, adminConfig, appid, sign != null);
- }
- if (sign == null) {
- sign = new Sign();
- sign.setUid(id.intValue());
- sign.setCreatedate(TimeUtil.getCurrentIntDate(TimeUtil.YYYYMMDD));
- sign.setCreatetime(DateUtils.getNow());
- sign.setKandian(kandian);
- signMapper.insert(sign);
- addKandian(user, kandian);
- }
- return msgAfterSing(appid, user.getOpenid());
- }
- private WxMpXmlOutMessage msgAfterSing(String appid, String openid) {
- //todo 签到后回复
- String msg = "<a href=\"weixin://bizmsgmenu?msgmenucontent=签到&msgmenuid=0\">点我签到</a>";
- WxMpXmlOutTextMessage wxMpXmlOutTextMessage = WxMpXmlOutMessage.TEXT().content(msg)
- .fromUser(appid).toUser(openid)
- .build();
- return wxMpXmlOutTextMessage;
- }
- /**
- * 添加看点
- *
- * @param user
- * @param kandian
- */
- private void addKandian(User user, int kandian) {
- //TODO
- }
- /**
- * 签到推送
- *
- * @param user
- * @param b 是否已经签到
- */
- private void pushMessage(User user, AdminConfig adminConfig, String appid, boolean b) {
- Long bookId;
- if (b) {
- SignRecommand signRecommand = signedRecommendService.selectRandom(user.getSex().toString());
- bookId = signRecommand.getBookId();
- } else {
- SignRecommand signRecommand = signRecommendService.selectRandom(user.getSex().toString());
- bookId = signRecommand.getBookId();
- }
- ManageTitle manageTitle = manageTitleService.selectRandom(user.getSex().toString());
- ManageCover manageCover = manageCoverService.selectRandom("1", user.getSex().toString());
- WxMpKefuMessage.WxArticle wxArticle = new WxMpKefuMessage.WxArticle();
- wxArticle.setTitle(manageTitle.getTitle());
- wxArticle.setPicUrl(manageCover.getImage());
- wxArticle.setUrl(createUrl(bookId, adminConfig, user));
- WxMpKefuMessage build = new NewsBuilder().toUser(user.getOpenid()).addArticle(wxArticle).build();
- Integer platformId = adminConfig.getPlatformId();
- WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
- WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
- long second = 10 * 60 * 60;
- pushService.addWxKefuMessagePushTask(wxMpService, build, second, TimeUnit.SECONDS);
- System.out.println("发送失败");
- }
- private String createUrl(Long bookId, AdminConfig adminConfig, User user) {
- return bookService.createBookUrl(bookId, adminConfig, user);
- }
- }
|