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

Commit fc901360 authored by jiangxiulong's avatar jiangxiulong

sweet 关注

parent 9a8222af
......@@ -4,10 +4,7 @@ import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
......@@ -479,6 +476,16 @@ public abstract class DateUtil {
return dayLast + " 23:59:59";
}
/**
* 秒级时间戳转 LocalDateTime
* @param epochMilli 秒级时间戳
* @return LocalDateTime
*/
public static LocalDateTime ofEpochMilli(long epochMilli){
// return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneOffset.of("+8"));
return LocalDateTime.ofEpochSecond(epochMilli,0, ZoneOffset.ofHours(8));
}
public static void main(String[] args) {
}
}
......@@ -18,6 +18,8 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_REMIND="sweet:remind:unionId:";
public static final String REDIS_KEY_SWEET_REMIND_ALL = "sweet:remind:unionId*";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:";
public enum ManualPosition {
artist("艺人"),
signingTime("签售时间"),
......
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 正在现场服务号关注事件储存用户信息表
* </p>
*
* @author jiangxiulong
* @since 2021-08-03
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetWechatUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* user_id
*/
private String userId;
/**
* openId
*/
@TableField("openId")
private String openId;
/**
* unionId
*/
@TableField("unionId")
private String unionId;
/**
* 昵称
*/
private String nickname;
/**
* 性别
*/
@TableField("sexDesc")
private String sexDesc;
/**
* 性别 男1
*/
private Integer sex;
/**
* 头像
*/
@TableField("headImgUrl")
private String headImgUrl;
/**
* zh_CN
*/
private String language;
/**
* 国家
*/
private String country;
/**
* 省
*/
private String province;
/**
* 市
*/
private String city;
/**
* 关注时间
*/
@TableField("subscribeTime")
private LocalDateTime subscribeTime;
/**
* ADD_SCENE_SEARCH 关注方式
*/
@TableField("subscribeScene")
private String subscribeScene;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetWechatUser obj = new SweetWechatUser();
public static SweetWechatUser getNew() {
try {
return (SweetWechatUser) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetWechatUser();
}
}
}
package com.liquidnet.service.sweet.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
......@@ -8,8 +14,10 @@ import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Map;
/**
......@@ -23,6 +31,11 @@ import java.util.Map;
@Component
@Slf4j
public class SubscribeHandler implements WxMpMessageHandler {
@Autowired
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) throws WxErrorException {
......@@ -34,7 +47,32 @@ public class SubscribeHandler implements WxMpMessageHandler {
return null;
}
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
// 记录用户信息
SweetWechatUser userInfo = sweetWechatUserMapper.selectOne(Wrappers.lambdaQuery(SweetWechatUser.class).eq(SweetWechatUser::getOpenId, wxMpUser.getOpenId()));
SweetWechatUser sweetWechatUser = SweetWechatUser.getNew();
sweetWechatUser.setOpenId(wxMpUser.getOpenId());
sweetWechatUser.setUnionId(wxMpUser.getUnionId());
sweetWechatUser.setNickname(wxMpUser.getNickname());
sweetWechatUser.setSexDesc(wxMpUser.getSexDesc());
sweetWechatUser.setSex(wxMpUser.getSex());
sweetWechatUser.setHeadImgUrl(wxMpUser.getHeadImgUrl());
sweetWechatUser.setLanguage(wxMpUser.getLanguage());
sweetWechatUser.setCountry(wxMpUser.getCountry());
sweetWechatUser.setProvince(wxMpUser.getProvince());
sweetWechatUser.setCity(wxMpUser.getCity());
sweetWechatUser.setSubscribeTime(DateUtil.ofEpochMilli(wxMpUser.getSubscribeTime()));
sweetWechatUser.setSubscribeScene(wxMpUser.getSubscribeScene());
if (null == userInfo) {
sweetWechatUser.setUserId(IDGenerator.nextSnowId());
sweetWechatUserMapper.insert(sweetWechatUser);
} else {
sweetWechatUser.setUpdatedAt(LocalDateTime.now());
sweetWechatUserMapper.update(sweetWechatUser, Wrappers.lambdaUpdate(SweetWechatUser.class).eq(SweetWechatUser::getUserId, userInfo.getUserId()));
}
String unionId = wxMpUser.getUnionId();
if (!unionId.isEmpty()) {
redisDataUtils.setSweetWechatUser(sweetWechatUser);
}
return null;
}
......
package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
/**
* <p>
* 正在现场服务号关注事件储存用户信息表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-08-03
*/
public interface SweetWechatUserMapper extends BaseMapper<SweetWechatUser> {
}
package com.liquidnet.service.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
/**
* <p>
* 正在现场服务号关注事件储存用户信息表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-08-03
*/
public interface ISweetWechatUserService extends IService<SweetWechatUser> {
}
package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.service.ISweetWechatUserService;
import org.springframework.stereotype.Service;
/**
* <p>
* 正在现场服务号关注事件储存用户信息表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-08-03
*/
@Service
public class SweetWechatUserServiceImpl extends ServiceImpl<SweetWechatUserMapper, SweetWechatUser> implements ISweetWechatUserService {
}
......@@ -10,10 +10,7 @@ import com.liquidnet.service.sweet.dto.SweetManualAppletDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistList2Dto;
import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistStageListDto;
import com.liquidnet.service.sweet.entity.SweetManualNotify;
import com.liquidnet.service.sweet.entity.SweetManualShop;
import com.liquidnet.service.sweet.entity.SweetManualSort;
import com.liquidnet.service.sweet.entity.SweetRichtext;
import com.liquidnet.service.sweet.entity.*;
import com.liquidnet.service.sweet.mapper.*;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
import com.liquidnet.service.sweet.vo.SweetRemindVo;
......@@ -266,4 +263,10 @@ public class RedisDataUtils {
redisUtil.set(redisKey, sweetRemindVo);
}
// 正在现场服务号关注事件储存用户信息
public void setSweetWechatUser(SweetWechatUser sweetWechatUser) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(sweetWechatUser.getUnionId());
redisUtil.set(redisKey, sweetWechatUser);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.SweetWechatUserMapper">
</mapper>
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