格式化代码

This commit is contained in:
zhongzb
2023-05-28 19:39:51 +08:00
parent 53201465f2
commit 7a812cd9e4
113 changed files with 332 additions and 523 deletions

View File

@@ -1,14 +1,11 @@
package com.abin.mallchat.common.chat.dao; package com.abin.mallchat.common.chat.dao;
import cn.hutool.core.util.StrUtil;
import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum; import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
import com.abin.mallchat.common.chat.mapper.MessageMapper; import com.abin.mallchat.common.chat.mapper.MessageMapper;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp; import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.utils.CursorUtils; import com.abin.mallchat.common.common.utils.CursorUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -2,7 +2,6 @@ package com.abin.mallchat.common.chat.dao;
import com.abin.mallchat.common.chat.domain.entity.MessageMark; import com.abin.mallchat.common.chat.domain.entity.MessageMark;
import com.abin.mallchat.common.chat.mapper.MessageMarkMapper; import com.abin.mallchat.common.chat.mapper.MessageMarkMapper;
import com.abin.mallchat.common.chat.service.IMessageMarkService;
import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum; import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -1,8 +1,6 @@
package com.abin.mallchat.common.chat.dao; package com.abin.mallchat.common.chat.dao;
import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.chat.domain.entity.Room; import com.abin.mallchat.common.chat.domain.entity.Room;
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
import com.abin.mallchat.common.chat.domain.enums.RoomTypeEnum; import com.abin.mallchat.common.chat.domain.enums.RoomTypeEnum;
import com.abin.mallchat.common.chat.mapper.RoomMapper; import com.abin.mallchat.common.chat.mapper.RoomMapper;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;

View File

@@ -2,7 +2,6 @@ package com.abin.mallchat.common.chat.dao;
import com.abin.mallchat.common.chat.domain.entity.WxMsg; import com.abin.mallchat.common.chat.domain.entity.WxMsg;
import com.abin.mallchat.common.chat.mapper.WxMsgMapper; import com.abin.mallchat.common.chat.mapper.WxMsgMapper;
import com.abin.mallchat.common.chat.service.IWxMsgService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -6,8 +6,6 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
/** /**
* Description: 消息标记请求 * Description: 消息标记请求
* Author: <a href="https://github.com/zongzibinbin">abin</a> * Author: <a href="https://github.com/zongzibinbin">abin</a>

View File

@@ -1,17 +1,14 @@
package com.abin.mallchat.common.chat.domain.entity; package com.abin.mallchat.common.chat.domain.entity;
import com.abin.mallchat.common.user.domain.entity.IpInfo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import java.util.Date; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/** /**
* <p> * <p>
@@ -23,7 +20,7 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@TableName(value = "message",autoResultMap = true) @TableName(value = "message", autoResultMap = true)
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@@ -34,7 +31,7 @@ public class Message implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**
@@ -63,6 +60,7 @@ public class Message implements Serializable {
/** /**
* 消息状态 0正常 1删除 * 消息状态 0正常 1删除
*
* @see com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum * @see com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum
*/ */
@TableField("status") @TableField("status")
@@ -76,6 +74,7 @@ public class Message implements Serializable {
/** /**
* 消息类型 1正常文本 2.爆赞 点赞超过103.危险发言举报超5 * 消息类型 1正常文本 2.爆赞 点赞超过103.危险发言举报超5
*
* @see com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum * @see com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum
*/ */
@TableField("type") @TableField("type")

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.common.chat.domain.entity; package com.abin.mallchat.common.chat.domain.entity;
import com.abin.mallchat.common.user.domain.entity.IpDetail;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@@ -1,14 +1,13 @@
package com.abin.mallchat.common.chat.domain.entity; package com.abin.mallchat.common.chat.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
@@ -31,7 +30,7 @@ public class MessageMark implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**
@@ -48,6 +47,7 @@ public class MessageMark implements Serializable {
/** /**
* 标记类型 1点赞 2举报 * 标记类型 1点赞 2举报
*
* @see com.abin.mallchat.common.chat.domain.enums.MessageMarkTypeEnum * @see com.abin.mallchat.common.chat.domain.enums.MessageMarkTypeEnum
*/ */
@TableField("type") @TableField("type")

View File

@@ -1,16 +1,15 @@
package com.abin.mallchat.common.chat.domain.entity; package com.abin.mallchat.common.chat.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import java.util.Date; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/** /**
* <p> * <p>
* 会话表 * 会话表
@@ -29,7 +28,7 @@ public class Room implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**
@@ -40,6 +39,7 @@ public class Room implements Serializable {
/** /**
* 会话类型 1大群聊 2沸点 * 会话类型 1大群聊 2沸点
*
* @see com.abin.mallchat.common.chat.domain.enums.RoomTypeEnum * @see com.abin.mallchat.common.chat.domain.enums.RoomTypeEnum
*/ */
@TableField("type") @TableField("type")

View File

@@ -1,16 +1,15 @@
package com.abin.mallchat.common.chat.domain.entity; package com.abin.mallchat.common.chat.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import java.util.Date; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/** /**
* <p> * <p>
* 微信消息表 * 微信消息表
@@ -29,7 +28,7 @@ public class WxMsg implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**

View File

@@ -16,8 +16,8 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum MessageMarkTypeEnum { public enum MessageMarkTypeEnum {
LIKE(1, "点赞",10,MessageTypeEnum.LIKE), LIKE(1, "点赞", 10, MessageTypeEnum.LIKE),
DISLIKE(2, "点踩",5,MessageTypeEnum.DISLIKE), DISLIKE(2, "点踩", 5, MessageTypeEnum.DISLIKE),
; ;
private final Integer type; private final Integer type;

View File

@@ -1,6 +1,9 @@
package com.abin.mallchat.common.common.annotation; package com.abin.mallchat.common.common.annotation;
import java.lang.annotation.*; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)//运行时生效 @Retention(RetentionPolicy.RUNTIME)//运行时生效

View File

@@ -1,8 +1,9 @@
package com.abin.mallchat.common.common.annotation; package com.abin.mallchat.common.common.annotation;
import org.springframework.core.annotation.AliasFor; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.*; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**

View File

@@ -12,14 +12,8 @@ import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature; import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.*; import java.util.*;
@@ -71,7 +65,7 @@ public class FrequencyControlAspect {
} finally { } finally {
//不管成功还是失败,都增加次数 //不管成功还是失败,都增加次数
keyMap.forEach((k, v) -> { keyMap.forEach((k, v) -> {
RedisUtils.inc(k,v.time(),v.unit()); RedisUtils.inc(k, v.time(), v.unit());
}); });
} }
} }

View File

@@ -1,34 +1,19 @@
package com.abin.mallchat.common.common.aspect; package com.abin.mallchat.common.common.aspect;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.abin.mallchat.common.common.annotation.FrequencyControl;
import com.abin.mallchat.common.common.annotation.RedissonLock; import com.abin.mallchat.common.common.annotation.RedissonLock;
import com.abin.mallchat.common.common.exception.BusinessException;
import com.abin.mallchat.common.common.exception.CommonErrorEnum;
import com.abin.mallchat.common.common.service.LockService; import com.abin.mallchat.common.common.service.LockService;
import com.abin.mallchat.common.common.utils.RedisUtils;
import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.common.common.utils.SpElUtils; import com.abin.mallchat.common.common.utils.SpElUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature; import org.aspectj.lang.reflect.MethodSignature;
import org.aspectj.weaver.ast.Test;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.TimeUnit;
/** /**
* Description: 分布式锁切面 * Description: 分布式锁切面

View File

@@ -1,9 +1,7 @@
package com.abin.mallchat.common.common.config; package com.abin.mallchat.common.common.config;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import net.sf.json.util.JSONUtils;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -11,10 +9,8 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException; import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.data.redis.serializer.SerializationUtils;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import java.net.UnknownHostException;
import java.util.Objects; import java.util.Objects;
@Configuration @Configuration
@@ -36,6 +32,7 @@ public class RedisConfig {
redisTemplate.setHashValueSerializer(jsonRedisSerializer); redisTemplate.setHashValueSerializer(jsonRedisSerializer);
return redisTemplate; return redisTemplate;
} }
public class MyRedisSerializerCustomized extends GenericJackson2JsonRedisSerializer { public class MyRedisSerializerCustomized extends GenericJackson2JsonRedisSerializer {
@Override @Override
public byte[] serialize(Object source) throws SerializationException { public byte[] serialize(Object source) throws SerializationException {
@@ -46,6 +43,7 @@ public class RedisConfig {
} }
return super.serialize(source); return super.serialize(source);
} }
@Override @Override
public <T> T deserialize(byte[] source, Class<T> type) throws SerializationException { public <T> T deserialize(byte[] source, Class<T> type) throws SerializationException {
Assert.notNull(type, Assert.notNull(type,
@@ -53,7 +51,7 @@ public class RedisConfig {
if (source == null || source.length == 0) { if (source == null || source.length == 0) {
return null; return null;
} }
if (type.isAssignableFrom(String.class) || type.isAssignableFrom(Character.class)) { if (type.isAssignableFrom(String.class) || type.isAssignableFrom(Character.class)) {
return (T) new String(source); return (T) new String(source);
} }
return super.deserialize(source, type); return super.deserialize(source, type);
@@ -62,7 +60,7 @@ public class RedisConfig {
@SneakyThrows @SneakyThrows
public static void main(String[] args) { public static void main(String[] args) {
ObjectMapper objectMapper =new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
System.out.println(objectMapper.writeValueAsString(1)); System.out.println(objectMapper.writeValueAsString(1));
System.out.println(objectMapper.writeValueAsString("1")); System.out.println(objectMapper.writeValueAsString("1"));
System.out.println(objectMapper.writeValueAsString(Boolean.TRUE)); System.out.println(objectMapper.writeValueAsString(Boolean.TRUE));

View File

@@ -33,7 +33,7 @@ public enum YesOrNoEnum {
return cache.get(type); return cache.get(type);
} }
public static Integer toStatus(Boolean bool){ public static Integer toStatus(Boolean bool) {
return bool?YES.getStatus():NO.getStatus(); return bool ? YES.getStatus() : NO.getStatus();
} }
} }

View File

@@ -1,7 +1,6 @@
package com.abin.mallchat.common.common.domain.vo.request; package com.abin.mallchat.common.common.domain.vo.request;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.generator.config.querys.XuguQuery;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;

View File

@@ -13,7 +13,7 @@ import javax.validation.constraints.Max;
*/ */
@Data @Data
@ApiModel("基础翻页请求") @ApiModel("基础翻页请求")
public class PageBaseReq{ public class PageBaseReq {
@ApiModelProperty("页面大小") @ApiModelProperty("页面大小")
@Max(50) @Max(50)

View File

@@ -1,8 +1,6 @@
package com.abin.mallchat.common.common.domain.vo.response; package com.abin.mallchat.common.common.domain.vo.response;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.common.common.event; package com.abin.mallchat.common.common.event;
import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.domain.entity.UserBackpack; import com.abin.mallchat.common.user.domain.entity.UserBackpack;
import lombok.Getter; import lombok.Getter;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.common.common.event; package com.abin.mallchat.common.common.event;
import com.abin.mallchat.common.chat.domain.entity.Message;
import lombok.Getter; import lombok.Getter;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;

View File

@@ -4,8 +4,6 @@ import com.abin.mallchat.common.user.domain.entity.User;
import lombok.Getter; import lombok.Getter;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;
import java.util.Date;
@Getter @Getter
public class UserOnlineEvent extends ApplicationEvent { public class UserOnlineEvent extends ApplicationEvent {
private User user; private User user;

View File

@@ -22,19 +22,21 @@ public class GlobalExceptionHandler {
log.info("validation parameters errorThe reason is:{}", message); log.info("validation parameters errorThe reason is:{}", message);
return ApiResult.fail(-1, message.substring(0, message.length() - 1)); return ApiResult.fail(-1, message.substring(0, message.length() - 1));
} }
/** /**
* 处理空指针的异常 * 处理空指针的异常
*/ */
@ExceptionHandler(value = NullPointerException.class) @ExceptionHandler(value = NullPointerException.class)
public ApiResult exceptionHandler( NullPointerException e) { public ApiResult exceptionHandler(NullPointerException e) {
log.error("null point exceptionThe reason is:{}", e.getMessage(), e); log.error("null point exceptionThe reason is:{}", e.getMessage(), e);
return ApiResult.fail(CommonErrorEnum.SYSTEM_ERROR); return ApiResult.fail(CommonErrorEnum.SYSTEM_ERROR);
} }
/** /**
* 未知异常 * 未知异常
*/ */
@ExceptionHandler(value = Exception.class) @ExceptionHandler(value = Exception.class)
public ApiResult systemExceptionHandler( Exception e) { public ApiResult systemExceptionHandler(Exception e) {
log.error("system exceptionThe reason is{}", e.getMessage(), e); log.error("system exceptionThe reason is{}", e.getMessage(), e);
return ApiResult.fail(CommonErrorEnum.SYSTEM_ERROR); return ApiResult.fail(CommonErrorEnum.SYSTEM_ERROR);
} }

View File

@@ -1,23 +1,14 @@
package com.abin.mallchat.common.common.exception; package com.abin.mallchat.common.common.exception;
import cn.hutool.http.ContentType; import cn.hutool.http.ContentType;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.abin.mallchat.common.common.domain.vo.response.ApiResult; import com.abin.mallchat.common.common.domain.vo.response.ApiResult;
import com.google.common.base.Charsets; import com.google.common.base.Charsets;
import io.netty.handler.codec.http.HttpContent;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import org.apache.commons.lang3.CharSet;
import org.apache.commons.lang3.CharSetUtils;
import org.springframework.http.HttpStatus;
import sun.awt.CharsetString;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset;
/** /**
* Description: 业务校验异常码 * Description: 业务校验异常码

View File

@@ -9,7 +9,6 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Supplier; import java.util.function.Supplier;

View File

@@ -4,8 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
import com.abin.mallchat.common.common.exception.BusinessErrorEnum; import com.abin.mallchat.common.common.exception.BusinessErrorEnum;
import com.abin.mallchat.common.common.exception.BusinessException; import com.abin.mallchat.common.common.exception.BusinessException;
import com.abin.mallchat.common.common.exception.ErrorEnum; import com.abin.mallchat.common.common.exception.ErrorEnum;
import com.abin.mallchat.common.user.domain.entity.UserBackpack;
import org.apache.commons.lang3.StringUtils;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.Objects; import java.util.Objects;
@@ -48,14 +46,16 @@ public class AssertUtil {
throwException(msg); throwException(msg);
} }
} }
//如果不是非空对象,则抛异常 //如果不是非空对象,则抛异常
public static void isEmpty(Object obj, String msg) { public static void isEmpty(Object obj, String msg) {
if (!isEmpty(obj)) { if (!isEmpty(obj)) {
throwException(msg); throwException(msg);
} }
} }
public static void equal(Object o1,Object o2, String msg) {
if (!ObjectUtil.equal(o1,o2)) { public static void equal(Object o1, Object o2, String msg) {
if (!ObjectUtil.equal(o1, o2)) {
throwException(msg); throwException(msg);
} }
} }

View File

@@ -2,30 +2,21 @@ package com.abin.mallchat.common.common.utils;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import cn.hutool.core.lang.Tuple;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.abin.mallchat.common.chat.dao.MessageDao;
import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.request.PageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp; import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.domain.vo.response.PageBaseResp;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.errorprone.annotations.Var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ZSetOperations; import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import reactor.util.function.Tuple2;
import java.util.*; import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**

View File

@@ -16,110 +16,122 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
public class FutureUtils { public class FutureUtils {
/** /**
* 设置CF状态为失败 * 设置CF状态为失败
*/ */
public static <T> CompletableFuture<T> failed(Throwable ex) { public static <T> CompletableFuture<T> failed(Throwable ex) {
CompletableFuture<T> completableFuture = new CompletableFuture<>(); CompletableFuture<T> completableFuture = new CompletableFuture<>();
completableFuture.completeExceptionally(ex); completableFuture.completeExceptionally(ex);
return completableFuture; return completableFuture;
} }
/**
* 设置CF状态为成功 /**
*/ * 设置CF状态为成功
public static <T> CompletableFuture<T> success(T result) { */
CompletableFuture<T> completableFuture = new CompletableFuture<>(); public static <T> CompletableFuture<T> success(T result) {
completableFuture.complete(result); CompletableFuture<T> completableFuture = new CompletableFuture<>();
return completableFuture; completableFuture.complete(result);
} return completableFuture;
/** }
* 将List<CompletableFuture<T>> 转为 CompletableFuture<List<T>>
*/ /**
public static <T> CompletableFuture<List<T>> sequence(Collection<CompletableFuture<T>> completableFutures) { * 将List<CompletableFuture<T>> 转为 CompletableFuture<List<T>>
return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0])) */
.thenApply(v -> completableFutures.stream() public static <T> CompletableFuture<List<T>> sequence(Collection<CompletableFuture<T>> completableFutures) {
.map(CompletableFuture::join) return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
.collect(Collectors.toList()) .thenApply(v -> completableFutures.stream()
); .map(CompletableFuture::join)
} .collect(Collectors.toList())
/** );
* 将List<CompletableFuture<List<T>>> 转为 CompletableFuture<List<T>> }
* 多用于分页查询的场景
*/ /**
public static <T> CompletableFuture<List<T>> sequenceList(Collection<CompletableFuture<List<T>>> completableFutures) { * 将List<CompletableFuture<List<T>>> 转为 CompletableFuture<List<T>>
return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0])) * 多用于分页查询的场景
.thenApply(v -> completableFutures.stream() */
.flatMap( listFuture -> listFuture.join().stream()) public static <T> CompletableFuture<List<T>> sequenceList(Collection<CompletableFuture<List<T>>> completableFutures) {
.collect(Collectors.toList()) return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
); .thenApply(v -> completableFutures.stream()
} .flatMap(listFuture -> listFuture.join().stream())
/* .collect(Collectors.toList())
* 将List<CompletableFuture<Map<K, V>>> 转为 CompletableFuture<Map<K, V>> );
* @Param mergeFunction 自定义key冲突时的merge策略 }
*/
public static <K, V> CompletableFuture<Map<K, V>> sequenceMap( /*
Collection<CompletableFuture<Map<K, V>>> completableFutures, BinaryOperator<V> mergeFunction) { * 将List<CompletableFuture<Map<K, V>>> 转为 CompletableFuture<Map<K, V>>
return CompletableFuture * @Param mergeFunction 自定义key冲突时的merge策略
.allOf(completableFutures.toArray(new CompletableFuture<?>[0])) */
.thenApply(v -> completableFutures.stream().map(CompletableFuture::join) public static <K, V> CompletableFuture<Map<K, V>> sequenceMap(
.flatMap(map -> map.entrySet().stream()) Collection<CompletableFuture<Map<K, V>>> completableFutures, BinaryOperator<V> mergeFunction) {
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, mergeFunction))); return CompletableFuture
} .allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
/** .thenApply(v -> completableFutures.stream().map(CompletableFuture::join)
* 将List<CompletableFuture<T>> 转为 CompletableFuture<List<T>>并过滤调null值 .flatMap(map -> map.entrySet().stream())
*/ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, mergeFunction)));
public static <T> CompletableFuture<List<T>> sequenceNonNull(Collection<CompletableFuture<T>> completableFutures) { }
return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
.thenApply(v -> completableFutures.stream() /**
.map(CompletableFuture::join) * 将List<CompletableFuture<T>> 转为 CompletableFuture<List<T>>并过滤调null值
.filter(Objects::nonNull) */
.collect(Collectors.toList()) public static <T> CompletableFuture<List<T>> sequenceNonNull(Collection<CompletableFuture<T>> completableFutures) {
); return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
} .thenApply(v -> completableFutures.stream()
/** .map(CompletableFuture::join)
* 将List<CompletableFuture<List<T>>> 转为 CompletableFuture<List<T>>并过滤调null值 .filter(Objects::nonNull)
* 多用于分页查询的场景 .collect(Collectors.toList())
*/ );
public static <T> CompletableFuture<List<T>> sequenceListNonNull(Collection<CompletableFuture<List<T>>> completableFutures) { }
return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
.thenApply(v -> completableFutures.stream() /**
.flatMap( listFuture -> listFuture.join().stream().filter(Objects::nonNull)) * 将List<CompletableFuture<List<T>>> 转为 CompletableFuture<List<T>>并过滤调null值
.collect(Collectors.toList()) * 多用于分页查询的场景
); */
} public static <T> CompletableFuture<List<T>> sequenceListNonNull(Collection<CompletableFuture<List<T>>> completableFutures) {
/** return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
* 将List<CompletableFuture<Map<K, V>>> 转为 CompletableFuture<Map<K, V>> .thenApply(v -> completableFutures.stream()
* @Param filterFunction 自定义过滤策略 .flatMap(listFuture -> listFuture.join().stream().filter(Objects::nonNull))
*/ .collect(Collectors.toList())
public static <T> CompletableFuture<List<T>> sequence(Collection<CompletableFuture<T>> completableFutures, );
Predicate<? super T> filterFunction) { }
return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
.thenApply(v -> completableFutures.stream() /**
.map(CompletableFuture::join) * 将List<CompletableFuture<Map<K, V>>> 转为 CompletableFuture<Map<K, V>>
.filter(filterFunction) *
.collect(Collectors.toList()) * @Param filterFunction 自定义过滤策略
); */
} public static <T> CompletableFuture<List<T>> sequence(Collection<CompletableFuture<T>> completableFutures,
/** Predicate<? super T> filterFunction) {
* 将List<CompletableFuture<List<T>>> 转为 CompletableFuture<List<T>> return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
* @Param filterFunction 自定义过滤策略 .thenApply(v -> completableFutures.stream()
*/ .map(CompletableFuture::join)
public static <T> CompletableFuture<List<T>> sequenceList(Collection<CompletableFuture<List<T>>> completableFutures, .filter(filterFunction)
Predicate<? super T> filterFunction) { .collect(Collectors.toList())
return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0])) );
.thenApply(v -> completableFutures.stream() }
.flatMap( listFuture -> listFuture.join().stream().filter(filterFunction))
.collect(Collectors.toList()) /**
); * 将List<CompletableFuture<List<T>>> 转为 CompletableFuture<List<T>>
} *
/** * @Param filterFunction 自定义过滤策略
* 将CompletableFuture<Map<K,V>>的list转为 CompletableFuture<Map<K,V>>。 多个map合并为一个map。 如果key冲突采用新的value覆盖。 */
*/ public static <T> CompletableFuture<List<T>> sequenceList(Collection<CompletableFuture<List<T>>> completableFutures,
public static <K, V> CompletableFuture<Map<K, V>> sequenceMap( Predicate<? super T> filterFunction) {
Collection<CompletableFuture<Map<K, V>>> completableFutures) { return CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
return CompletableFuture .thenApply(v -> completableFutures.stream()
.allOf(completableFutures.toArray(new CompletableFuture<?>[0])) .flatMap(listFuture -> listFuture.join().stream().filter(filterFunction))
.thenApply(v -> completableFutures.stream().map(CompletableFuture::join) .collect(Collectors.toList())
.flatMap(map -> map.entrySet().stream()) );
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b))); }
}}
/**
* 将CompletableFuture<Map<K,V>>的list转为 CompletableFuture<Map<K,V>>。 多个map合并为一个map。 如果key冲突采用新的value覆盖。
*/
public static <K, V> CompletableFuture<Map<K, V>> sequenceMap(
Collection<CompletableFuture<Map<K, V>>> completableFutures) {
return CompletableFuture
.allOf(completableFutures.toArray(new CompletableFuture<?>[0]))
.thenApply(v -> completableFutures.stream().map(CompletableFuture::join)
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b)));
}
}

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.common.common.utils; package com.abin.mallchat.common.common.utils;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;

View File

@@ -1,18 +1,18 @@
package com.abin.mallchat.common.common.utils; package com.abin.mallchat.common.common.utils;
import cn.hutool.json.JSONUtil;
import com.auth0.jwt.JWT; import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT; import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier; import com.auth0.jwt.interfaces.JWTVerifier;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.*; import java.util.Date;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
/** /**
* Description: jwt的token生成与解析 * Description: jwt的token生成与解析
@@ -82,7 +82,7 @@ public class JwtUtils {
public Long getUidOrNull(String token) { public Long getUidOrNull(String token) {
return Optional.ofNullable(verifyToken(token)) return Optional.ofNullable(verifyToken(token))
.map(map -> map.get(UID_CLAIM)) .map(map -> map.get(UID_CLAIM))
.map(Claim::asLong) .map(Claim::asLong)
.orElse(null); .orElse(null);
} }

View File

@@ -1,20 +1,16 @@
package com.abin.mallchat.common.common.utils; package com.abin.mallchat.common.common.utils;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.sf.json.util.JSONUtils;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.*; import org.springframework.data.redis.core.*;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.core.script.RedisScript; import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.security.Key;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -218,6 +214,7 @@ public class RedisUtils {
private static String get(String key) { private static String get(String key) {
return key == null ? null : stringRedisTemplate.opsForValue().get(key); return key == null ? null : stringRedisTemplate.opsForValue().get(key);
} }
/** /**
* 普通缓存放入 * 普通缓存放入
* *
@@ -234,6 +231,7 @@ public class RedisUtils {
return false; return false;
} }
} }
public static String getStr(String key) { public static String getStr(String key) {
return get(key, String.class); return get(key, String.class);
} }
@@ -265,7 +263,6 @@ public class RedisUtils {
} }
/** /**
* 普通缓存放入并设置时间 * 普通缓存放入并设置时间
* *
@@ -754,8 +751,9 @@ public class RedisUtils {
public static Boolean zAdd(String key, Object value, double score) { public static Boolean zAdd(String key, Object value, double score) {
return zAdd(key, value.toString(), score); return zAdd(key, value.toString(), score);
} }
public static Boolean zIsMember(String key, Object value) { public static Boolean zIsMember(String key, Object value) {
return Objects.nonNull(stringRedisTemplate.opsForZSet().score(key,value.toString())); return Objects.nonNull(stringRedisTemplate.opsForZSet().score(key, value.toString()));
} }
/** /**

View File

@@ -6,7 +6,6 @@ import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser; import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@@ -29,7 +28,7 @@ public class SpElUtils {
return expression.getValue(context, String.class); return expression.getValue(context, String.class);
} }
public static String getMethodKey(Method method){ public static String getMethodKey(Method method) {
return method.getDeclaringClass()+"#"+method.getName(); return method.getDeclaringClass() + "#" + method.getName();
} }
} }

View File

@@ -3,7 +3,6 @@ package com.abin.mallchat.common.common.utils.discover;
import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.abin.mallchat.common.common.utils.FutureUtils; import com.abin.mallchat.common.common.utils.FutureUtils;
import com.google.errorprone.annotations.Var;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jsoup.Connection; import org.jsoup.Connection;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
@@ -11,13 +10,12 @@ import org.jsoup.nodes.Document;
import org.springframework.data.util.Pair; import org.springframework.data.util.Pair;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.*; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.common.common.utils.discover; package com.abin.mallchat.common.common.utils.discover;
import cn.hutool.core.util.StrUtil;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
/** /**

View File

@@ -2,7 +2,6 @@ package com.abin.mallchat.common.common.utils.discover;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import org.springframework.core.ParameterNameDiscoverer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,12 +1,9 @@
package com.abin.mallchat.common.common.utils.discover; package com.abin.mallchat.common.common.utils.discover;
import cn.hutool.core.date.StopWatch; import cn.hutool.core.date.StopWatch;
import com.google.common.base.Stopwatch;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.Signed;
import java.util.Map; import java.util.Map;
public interface UrlTitleDiscover { public interface UrlTitleDiscover {
@@ -26,7 +23,7 @@ public interface UrlTitleDiscover {
StopWatch stopWatch = new StopWatch(); StopWatch stopWatch = new StopWatch();
stopWatch.start(); stopWatch.start();
String longStr = "这是一个很长的字符串再来 www.github.com其中包含一个URL www.baidu.com,, 一个带有端口号的URL http://www.jd.com:80, 一个带有路径的URL http://mallchat.cn, 还有美团技术文章https://mp.weixin.qq.com/s/hwTf4bDck9_tlFpgVDeIKg "; String longStr = "这是一个很长的字符串再来 www.github.com其中包含一个URL www.baidu.com,, 一个带有端口号的URL http://www.jd.com:80, 一个带有路径的URL http://mallchat.cn, 还有美团技术文章https://mp.weixin.qq.com/s/hwTf4bDck9_tlFpgVDeIKg ";
PrioritizedUrlTitleDiscover discover =new PrioritizedUrlTitleDiscover(); PrioritizedUrlTitleDiscover discover = new PrioritizedUrlTitleDiscover();
Map<String, String> contentTitleMap = discover.getContentTitleMap(longStr); Map<String, String> contentTitleMap = discover.getContentTitleMap(longStr);
System.out.println(contentTitleMap); System.out.println(contentTitleMap);
// //

View File

@@ -2,7 +2,6 @@ package com.abin.mallchat.common.user.dao;
import com.abin.mallchat.common.user.domain.entity.Black; import com.abin.mallchat.common.user.domain.entity.Black;
import com.abin.mallchat.common.user.mapper.BlackMapper; import com.abin.mallchat.common.user.mapper.BlackMapper;
import com.abin.mallchat.common.user.service.IBlackService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -2,8 +2,6 @@ package com.abin.mallchat.common.user.dao;
import com.abin.mallchat.common.user.domain.entity.ItemConfig; import com.abin.mallchat.common.user.domain.entity.ItemConfig;
import com.abin.mallchat.common.user.mapper.ItemConfigMapper; import com.abin.mallchat.common.user.mapper.ItemConfigMapper;
import com.abin.mallchat.common.user.service.IItemConfigService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -1,10 +1,8 @@
package com.abin.mallchat.common.user.dao; package com.abin.mallchat.common.user.dao;
import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum; import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum;
import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.domain.entity.UserBackpack; import com.abin.mallchat.common.user.domain.entity.UserBackpack;
import com.abin.mallchat.common.user.mapper.UserBackpackMapper; import com.abin.mallchat.common.user.mapper.UserBackpackMapper;
import com.abin.mallchat.common.user.service.IUserBackpackService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

View File

@@ -4,7 +4,6 @@ import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.mapper.UserMapper; import com.abin.mallchat.common.user.mapper.UserMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -1,14 +1,15 @@
package com.abin.mallchat.common.user.domain.entity; package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 黑名单 * 黑名单
@@ -27,11 +28,12 @@ public class Black implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**
* 拉黑目标类型 1.ip 2uid * 拉黑目标类型 1.ip 2uid
*
* @see com.abin.mallchat.common.user.domain.enums.BlackTypeEnum * @see com.abin.mallchat.common.user.domain.enums.BlackTypeEnum
*/ */
@TableField("type") @TableField("type")

View File

@@ -1,6 +1,9 @@
package com.abin.mallchat.common.user.domain.entity; package com.abin.mallchat.common.user.domain.entity;
import lombok.*; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;

View File

@@ -1,7 +1,6 @@
package com.abin.mallchat.common.user.domain.entity; package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;
import lombok.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;

View File

@@ -1,13 +1,14 @@
package com.abin.mallchat.common.user.domain.entity; package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 功能物品配置表 * 功能物品配置表
@@ -26,7 +27,7 @@ public class ItemConfig implements Serializable {
/** /**
* id * id
*/ */
@TableId("id") @TableId("id")
private Long id; private Long id;
/** /**

View File

@@ -1,20 +1,14 @@
package com.abin.mallchat.common.user.domain.entity; package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.Objects;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import lombok.experimental.Accessors;
/** /**
* <p> * <p>

View File

@@ -1,14 +1,13 @@
package com.abin.mallchat.common.user.domain.entity; package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
@@ -31,7 +30,7 @@ public class UserBackpack implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**

View File

@@ -3,11 +3,6 @@ package com.abin.mallchat.common.user.domain.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* Description: 物品枚举 * Description: 物品枚举
* Author: <a href="https://github.com/zongzibinbin">abin</a> * Author: <a href="https://github.com/zongzibinbin">abin</a>

View File

@@ -1,9 +1,6 @@
package com.abin.mallchat.common.user.service; package com.abin.mallchat.common.user.service;
import com.abin.mallchat.common.common.domain.enums.IdempotentEnum; import com.abin.mallchat.common.common.domain.enums.IdempotentEnum;
import com.abin.mallchat.common.user.domain.entity.UserBackpack;
import com.abin.mallchat.common.user.domain.enums.ItemEnum;
import com.baomidou.mybatisplus.extension.service.IService;
/** /**
* <p> * <p>
@@ -18,10 +15,11 @@ public interface IUserBackpackService {
/** /**
* 用户获取一个物品 * 用户获取一个物品
* @param uid 用户id *
* @param itemId 物品id * @param uid 用户id
* @param itemId 物品id
* @param idempotentEnum 幂等类型 * @param idempotentEnum 幂等类型
* @param businessId 上层业务发送的唯一标识 * @param businessId 上层业务发送的唯一标识
*/ */
void acquireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId); void acquireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId);
} }

View File

@@ -1,23 +1,12 @@
package com.abin.mallchat.common.user.service.cache; package com.abin.mallchat.common.user.service.cache;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Pair;
import com.abin.mallchat.common.common.constant.RedisKey;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.utils.CursorUtils;
import com.abin.mallchat.common.common.utils.RedisUtils;
import com.abin.mallchat.common.user.dao.ItemConfigDao; import com.abin.mallchat.common.user.dao.ItemConfigDao;
import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.ItemConfig; import com.abin.mallchat.common.user.domain.entity.ItemConfig;
import com.abin.mallchat.common.user.domain.entity.User;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.*; import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* Description: 用户相关缓存 * Description: 用户相关缓存

View File

@@ -1,7 +1,6 @@
package com.abin.mallchat.common.user.service.cache; package com.abin.mallchat.common.user.service.cache;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import com.abin.mallchat.common.common.constant.RedisKey; import com.abin.mallchat.common.common.constant.RedisKey;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
@@ -16,14 +15,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.security.PublicKey;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* Description: 用户相关缓存 * Description: 用户相关缓存
@@ -122,12 +117,13 @@ public class UserCache {
@Cacheable(cacheNames = "user", key = "'blackList'") @Cacheable(cacheNames = "user", key = "'blackList'")
public Map<Integer, Set<String>> getBlackMap() { public Map<Integer, Set<String>> getBlackMap() {
Map<Integer, List<Black>> collect = blackDao.list().stream().collect(Collectors.groupingBy(Black::getType)); Map<Integer, List<Black>> collect = blackDao.list().stream().collect(Collectors.groupingBy(Black::getType));
Map<Integer, Set<String>> result =new HashMap<>(); Map<Integer, Set<String>> result = new HashMap<>();
for (Map.Entry<Integer, List<Black>> entry : collect.entrySet()) { for (Map.Entry<Integer, List<Black>> entry : collect.entrySet()) {
result.put(entry.getKey(),entry.getValue().stream().map(Black::getTarget).collect(Collectors.toSet())); result.put(entry.getKey(), entry.getValue().stream().map(Black::getTarget).collect(Collectors.toSet()));
} }
return result; return result;
} }
@CacheEvict(cacheNames = "user", key = "'blackList'") @CacheEvict(cacheNames = "user", key = "'blackList'")
public Map<Integer, Set<String>> evictBlackMap() { public Map<Integer, Set<String>> evictBlackMap() {
return null; return null;

View File

@@ -3,10 +3,8 @@ package com.abin.mallchat.common.user.service.impl;
import cn.hutool.core.lang.TypeReference; import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.thread.NamedThreadFactory; import cn.hutool.core.thread.NamedThreadFactory;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.abin.mallchat.common.common.domain.vo.response.ApiResult;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.dto.IpResult; import com.abin.mallchat.common.user.domain.dto.IpResult;
import com.abin.mallchat.common.user.domain.entity.IpDetail; import com.abin.mallchat.common.user.domain.entity.IpDetail;
@@ -16,14 +14,14 @@ import com.abin.mallchat.common.user.service.IpService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.*; import java.util.concurrent.ExecutorService;
import java.util.jar.Manifest; import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/** /**
* Description: ip * Description: ip

View File

@@ -12,10 +12,8 @@ import com.abin.mallchat.common.user.domain.enums.ItemTypeEnum;
import com.abin.mallchat.common.user.service.IUserBackpackService; import com.abin.mallchat.common.user.service.IUserBackpackService;
import com.abin.mallchat.common.user.service.cache.ItemCache; import com.abin.mallchat.common.user.service.cache.ItemCache;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.SpringApplicationEvent;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Objects; import java.util.Objects;
@@ -39,7 +37,7 @@ public class UserBackpackServiceImpl implements IUserBackpackService {
private ApplicationEventPublisher applicationEventPublisher; private ApplicationEventPublisher applicationEventPublisher;
@Override @Override
@RedissonLock(key = "#uid",waitTime = 5000)//相同用户会同时发奖,需要排队不能直接拒绝 @RedissonLock(key = "#uid", waitTime = 5000)//相同用户会同时发奖,需要排队不能直接拒绝
public void acquireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId) { public void acquireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId) {
String idempotent = getIdempotent(itemId, idempotentEnum, businessId); String idempotent = getIdempotent(itemId, idempotentEnum, businessId);
UserBackpack userBackpack = userBackpackDao.getByIdp(idempotent); UserBackpack userBackpack = userBackpackDao.getByIdp(idempotent);

View File

@@ -56,7 +56,7 @@ jwt:
secret: ${mallchat.jwt.secret} secret: ${mallchat.jwt.secret}
wx: wx:
mp: mp:
# callback: http://f4cd-113-92-129-127.ngrok.io # callback: http://f4cd-113-92-129-127.ngrok.io
callback: ${mallchat.wx.callback} callback: ${mallchat.wx.callback}
configs: configs:
- appId: ${mallchat.wx.appId} # 第一个公众号的appid - appId: ${mallchat.wx.appId} # 第一个公众号的appid

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.custom; package com.abin.mallchat.custom;
import com.abin.mallchat.custom.user.controller.WxPortalController;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -11,7 +10,7 @@ import org.springframework.boot.web.servlet.ServletComponentScan;
* @date 2021/05/27 * @date 2021/05/27
*/ */
@SpringBootApplication(scanBasePackages = {"com.abin.mallchat"}) @SpringBootApplication(scanBasePackages = {"com.abin.mallchat"})
@MapperScan({"com.abin.mallchat.common.**.mapper" }) @MapperScan({"com.abin.mallchat.common.**.mapper"})
@ServletComponentScan @ServletComponentScan
public class MallchatCustomApplication { public class MallchatCustomApplication {

View File

@@ -2,12 +2,10 @@ package com.abin.mallchat.custom.chat.controller;
import com.abin.mallchat.common.common.annotation.FrequencyControl; import com.abin.mallchat.common.common.annotation.FrequencyControl;
import com.abin.mallchat.common.common.annotation.FrequencyControlContainer;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.ApiResult; import com.abin.mallchat.common.common.domain.vo.response.ApiResult;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp; import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.domain.vo.response.IdRespVO; import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.enums.BlackTypeEnum; import com.abin.mallchat.common.user.domain.enums.BlackTypeEnum;
import com.abin.mallchat.common.user.service.cache.UserCache; import com.abin.mallchat.common.user.service.cache.UserCache;
import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageMarkReq; import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageMarkReq;
@@ -18,17 +16,14 @@ import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberStatisticResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp;
import com.abin.mallchat.custom.chat.service.ChatService; import com.abin.mallchat.custom.chat.service.ChatService;
import com.abin.mallchat.common.common.utils.RequestHolder;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Map; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* <p> * <p>
@@ -62,10 +57,11 @@ public class ChatController {
} }
private void filterBlackMember(CursorPageBaseResp<ChatMemberResp> memberPage) { private void filterBlackMember(CursorPageBaseResp<ChatMemberResp> memberPage) {
memberPage.getList().removeIf(a->getBlackUidSet().contains(a.getUid().toString())); memberPage.getList().removeIf(a -> getBlackUidSet().contains(a.getUid().toString()));
} }
private Set<String> getBlackUidSet(){
return userCache.getBlackMap().get(BlackTypeEnum.UID.getType()); private Set<String> getBlackUidSet() {
return userCache.getBlackMap().getOrDefault(BlackTypeEnum.UID.getType(), new HashSet<>());
} }
@GetMapping("public/member/statistic/") @GetMapping("public/member/statistic/")
@@ -81,10 +77,12 @@ public class ChatController {
filterBlackMsg(msgPage); filterBlackMsg(msgPage);
return ApiResult.success(msgPage); return ApiResult.success(msgPage);
} }
private void filterBlackMsg(CursorPageBaseResp<ChatMessageResp> memberPage) { private void filterBlackMsg(CursorPageBaseResp<ChatMessageResp> memberPage) {
memberPage.getList().removeIf(a->getBlackUidSet().contains(a.getFromUser().getUid().toString())); memberPage.getList().removeIf(a -> getBlackUidSet().contains(a.getFromUser().getUid().toString()));
System.out.println(1); System.out.println(1);
} }
@PostMapping("/msg") @PostMapping("/msg")
@ApiOperation("发送消息") @ApiOperation("发送消息")
@FrequencyControl(time = 5, count = 2, target = FrequencyControl.Target.UID) @FrequencyControl(time = 5, count = 2, target = FrequencyControl.Target.UID)

View File

@@ -1,12 +1,10 @@
package com.abin.mallchat.custom.chat.domain.vo.request; package com.abin.mallchat.custom.chat.domain.vo.request;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@@ -19,7 +17,7 @@ import javax.validation.constraints.NotNull;
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class ChatMessageMarkReq{ public class ChatMessageMarkReq {
@NotNull @NotNull
@ApiModelProperty("消息id") @ApiModelProperty("消息id")
private Long msgId; private Long msgId;

View File

@@ -6,7 +6,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;

View File

@@ -5,7 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@@ -23,7 +22,7 @@ import javax.validation.constraints.NotNull;
public class ChatMessageReq { public class ChatMessageReq {
@NotNull @NotNull
@Length( max = 10000,message = "消息内容过长服务器扛不住啊兄dei") @Length(max = 10000, message = "消息内容过长服务器扛不住啊兄dei")
@ApiModelProperty("消息内容") @ApiModelProperty("消息内容")
private String content; private String content;

View File

@@ -1,12 +1,10 @@
package com.abin.mallchat.custom.chat.domain.vo.response; package com.abin.mallchat.custom.chat.domain.vo.response;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date; import java.util.Date;

View File

@@ -5,9 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
/** /**
* Description: 群成员统计信息 * Description: 群成员统计信息

View File

@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@@ -47,7 +48,7 @@ public class ChatMessageResp {
@ApiModelProperty("消息内容") @ApiModelProperty("消息内容")
private String content; private String content;
@ApiModelProperty("消息链接映射") @ApiModelProperty("消息链接映射")
private Map<String,String> urlTitleMap; private Map<String, String> urlTitleMap;
@ApiModelProperty("消息类型 1正常文本 2.爆赞 点赞超过103.危险发言举报超5") @ApiModelProperty("消息类型 1正常文本 2.爆赞 点赞超过103.危险发言举报超5")
private Integer type; private Integer type;
@ApiModelProperty("消息标记") @ApiModelProperty("消息标记")
@@ -82,6 +83,7 @@ public class ChatMessageResp {
@ApiModelProperty("该用户是否已经举报 0否 1是") @ApiModelProperty("该用户是否已经举报 0否 1是")
private Integer userDislike; private Integer userDislike;
} }
@Data @Data
public static class Badge { public static class Badge {
@ApiModelProperty("徽章图像") @ApiModelProperty("徽章图像")

View File

@@ -5,7 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date; import java.util.Date;

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.custom.chat.service; package com.abin.mallchat.custom.chat.service;
import com.abin.mallchat.common.chat.dao.MessageDao;
import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp; import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
@@ -11,10 +10,6 @@ import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberStatisticResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberStatisticResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp;
import com.abin.mallchat.custom.chat.service.adapter.MessageAdapter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -34,21 +29,25 @@ public interface ChatService {
/** /**
* 根据消息获取消息前端展示的物料 * 根据消息获取消息前端展示的物料
*
* @param message * @param message
* @param receiveUid 接受消息的uid可null * @param receiveUid 接受消息的uid可null
* @return * @return
*/ */
ChatMessageResp getMsgResp(Message message,Long receiveUid); ChatMessageResp getMsgResp(Message message, Long receiveUid);
/** /**
* 根据消息获取消息前端展示的物料 * 根据消息获取消息前端展示的物料
*
* @param msgId * @param msgId
* @param receiveUid 接受消息的uid可null * @param receiveUid 接受消息的uid可null
* @return * @return
*/ */
ChatMessageResp getMsgResp(Long msgId,Long receiveUid); ChatMessageResp getMsgResp(Long msgId, Long receiveUid);
/** /**
* 获取群成员列表 * 获取群成员列表
*
* @param request * @param request
* @return * @return
*/ */
@@ -56,13 +55,15 @@ public interface ChatService {
/** /**
* 获取消息列表 * 获取消息列表
*
* @param request * @param request
* @return * @return
*/ */
CursorPageBaseResp<ChatMessageResp> getMsgPage(ChatMessagePageReq request,@Nullable Long receiveUid); CursorPageBaseResp<ChatMessageResp> getMsgPage(ChatMessagePageReq request, @Nullable Long receiveUid);
/** /**
* 获取会话列表 * 获取会话列表
*
* @param request * @param request
* @param uid * @param uid
* @return * @return

View File

@@ -1,23 +1,16 @@
package com.abin.mallchat.custom.chat.service.adapter; package com.abin.mallchat.custom.chat.service.adapter;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.domain.enums.ChatActiveStatusEnum; import com.abin.mallchat.common.user.domain.enums.ChatActiveStatusEnum;
import com.abin.mallchat.common.user.service.cache.UserCache; import com.abin.mallchat.common.user.service.cache.UserCache;
import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**

View File

@@ -6,7 +6,6 @@ import com.abin.mallchat.common.chat.domain.entity.MessageExtra;
import com.abin.mallchat.common.chat.domain.entity.MessageMark; import com.abin.mallchat.common.chat.domain.entity.MessageMark;
import com.abin.mallchat.common.chat.domain.enums.MessageMarkTypeEnum; import com.abin.mallchat.common.chat.domain.enums.MessageMarkTypeEnum;
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum; import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum; import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum;
import com.abin.mallchat.common.common.utils.discover.PrioritizedUrlTitleDiscover; import com.abin.mallchat.common.common.utils.discover.PrioritizedUrlTitleDiscover;
import com.abin.mallchat.common.user.domain.entity.IpDetail; import com.abin.mallchat.common.user.domain.entity.IpDetail;
@@ -15,8 +14,6 @@ import com.abin.mallchat.common.user.domain.entity.ItemConfig;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq; import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.sun.org.apache.regexp.internal.RE;
import org.yaml.snakeyaml.error.Mark;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@@ -1,17 +1,10 @@
package com.abin.mallchat.custom.chat.service.adapter; package com.abin.mallchat.custom.chat.service.adapter;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.chat.domain.entity.Room; import com.abin.mallchat.common.chat.domain.entity.Room;
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**

View File

@@ -14,9 +14,10 @@ import com.abin.mallchat.common.common.annotation.RedissonLock;
import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum; import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq; import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp; import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.event.MessageMarkEvent;
import com.abin.mallchat.common.common.event.MessageSendEvent;
import com.abin.mallchat.common.common.exception.BusinessException; import com.abin.mallchat.common.common.exception.BusinessException;
import com.abin.mallchat.common.common.utils.AssertUtil; import com.abin.mallchat.common.common.utils.AssertUtil;
import com.abin.mallchat.common.common.utils.discover.PrioritizedUrlTitleDiscover;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.ItemConfig; import com.abin.mallchat.common.user.domain.entity.ItemConfig;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
@@ -30,13 +31,11 @@ import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberStatisticResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberStatisticResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp;
import com.abin.mallchat.custom.chat.service.ChatService;
import com.abin.mallchat.custom.chat.service.adapter.MemberAdapter; import com.abin.mallchat.custom.chat.service.adapter.MemberAdapter;
import com.abin.mallchat.custom.chat.service.adapter.MessageAdapter;
import com.abin.mallchat.custom.chat.service.adapter.RoomAdapter; import com.abin.mallchat.custom.chat.service.adapter.RoomAdapter;
import com.abin.mallchat.custom.chat.service.helper.ChatMemberHelper; import com.abin.mallchat.custom.chat.service.helper.ChatMemberHelper;
import com.abin.mallchat.common.common.event.MessageMarkEvent;
import com.abin.mallchat.common.common.event.MessageSendEvent;
import com.abin.mallchat.custom.chat.service.ChatService;
import com.abin.mallchat.custom.chat.service.adapter.MessageAdapter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -22,6 +22,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
private CollectorInterceptor collectorInterceptor; private CollectorInterceptor collectorInterceptor;
@Autowired @Autowired
private BlackInterceptor blackInterceptor; private BlackInterceptor blackInterceptor;
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(tokenInterceptor) registry.addInterceptor(tokenInterceptor)

View File

@@ -10,14 +10,9 @@ import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpoints
import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping; import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestHandlerSelectors;
@@ -59,6 +54,7 @@ public class SwaggerConfig {
.paths(PathSelectors.any()) .paths(PathSelectors.any())
.build(); .build();
} }
/** /**
* 增加如下配置可解决Spring Boot 6.x 与Swagger 3.0.0 不兼容问题 * 增加如下配置可解决Spring Boot 6.x 与Swagger 3.0.0 不兼容问题
**/ **/
@@ -74,6 +70,7 @@ public class SwaggerConfig {
boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath); boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null); return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
} }
private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) { private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT)); return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
} }

View File

@@ -1,28 +1,24 @@
package com.abin.mallchat.custom.common.config; package com.abin.mallchat.custom.common.config;
import com.abin.mallchat.custom.user.service.handler.*; import com.abin.mallchat.custom.user.service.handler.LogHandler;
import com.abin.mallchat.custom.user.service.handler.MsgHandler;
import com.abin.mallchat.custom.user.service.handler.ScanHandler;
import com.abin.mallchat.custom.user.service.handler.SubscribeHandler;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import me.chanjar.weixin.common.redis.JedisWxRedisOps;
import me.chanjar.weixin.mp.api.WxMpMessageRouter; import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static me.chanjar.weixin.common.api.WxConsts.EventType; import static me.chanjar.weixin.common.api.WxConsts.EventType;
import static me.chanjar.weixin.common.api.WxConsts.EventType.SUBSCRIBE; import static me.chanjar.weixin.common.api.WxConsts.EventType.SUBSCRIBE;
import static me.chanjar.weixin.common.api.WxConsts.EventType.UNSUBSCRIBE;
import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType;
import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType.EVENT; import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType.EVENT;
import static me.chanjar.weixin.mp.constant.WxMpEventConstants.CustomerService.*;
import static me.chanjar.weixin.mp.constant.WxMpEventConstants.POI_CHECK_NOTIFY;
/** /**
* wechat mp configuration * wechat mp configuration

View File

@@ -1,12 +1,12 @@
package com.abin.mallchat.custom.common.event.listener; package com.abin.mallchat.custom.common.event.listener;
import com.abin.mallchat.common.common.event.ItemReceiveEvent;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.ItemConfig; import com.abin.mallchat.common.user.domain.entity.ItemConfig;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.domain.entity.UserBackpack; import com.abin.mallchat.common.user.domain.entity.UserBackpack;
import com.abin.mallchat.common.user.domain.enums.ItemTypeEnum; import com.abin.mallchat.common.user.domain.enums.ItemTypeEnum;
import com.abin.mallchat.common.user.service.cache.ItemCache; import com.abin.mallchat.common.user.service.cache.ItemCache;
import com.abin.mallchat.common.common.event.ItemReceiveEvent;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;

View File

@@ -7,9 +7,9 @@ import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.common.chat.domain.enums.MessageMarkTypeEnum; import com.abin.mallchat.common.chat.domain.enums.MessageMarkTypeEnum;
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum; import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
import com.abin.mallchat.common.common.domain.enums.IdempotentEnum; import com.abin.mallchat.common.common.domain.enums.IdempotentEnum;
import com.abin.mallchat.common.common.event.MessageMarkEvent;
import com.abin.mallchat.common.user.domain.enums.ItemEnum; import com.abin.mallchat.common.user.domain.enums.ItemEnum;
import com.abin.mallchat.common.user.service.IUserBackpackService; import com.abin.mallchat.common.user.service.IUserBackpackService;
import com.abin.mallchat.common.common.event.MessageMarkEvent;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;

View File

@@ -2,8 +2,8 @@ package com.abin.mallchat.custom.common.event.listener;
import com.abin.mallchat.common.chat.dao.MessageDao; import com.abin.mallchat.common.chat.dao.MessageDao;
import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.Message;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.abin.mallchat.common.common.event.MessageSendEvent; import com.abin.mallchat.common.common.event.MessageSendEvent;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import com.abin.mallchat.custom.chat.service.ChatService; import com.abin.mallchat.custom.chat.service.ChatService;
import com.abin.mallchat.custom.user.service.WebSocketService; import com.abin.mallchat.custom.user.service.WebSocketService;
import com.abin.mallchat.custom.user.service.adapter.WSAdapter; import com.abin.mallchat.custom.user.service.adapter.WSAdapter;

View File

@@ -1,9 +1,9 @@
package com.abin.mallchat.custom.common.event.listener; package com.abin.mallchat.custom.common.event.listener;
import com.abin.mallchat.common.common.event.UserOfflineEvent;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.service.cache.UserCache; import com.abin.mallchat.common.user.service.cache.UserCache;
import com.abin.mallchat.common.common.event.UserOfflineEvent;
import com.abin.mallchat.custom.user.service.WebSocketService; import com.abin.mallchat.custom.user.service.WebSocketService;
import com.abin.mallchat.custom.user.service.adapter.WSAdapter; import com.abin.mallchat.custom.user.service.adapter.WSAdapter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -1,10 +1,10 @@
package com.abin.mallchat.custom.common.event.listener; package com.abin.mallchat.custom.common.event.listener;
import com.abin.mallchat.common.common.event.UserOnlineEvent;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.service.IpService; import com.abin.mallchat.common.user.service.IpService;
import com.abin.mallchat.common.user.service.cache.UserCache; import com.abin.mallchat.common.user.service.cache.UserCache;
import com.abin.mallchat.common.common.event.UserOnlineEvent;
import com.abin.mallchat.custom.user.service.WebSocketService; import com.abin.mallchat.custom.user.service.WebSocketService;
import com.abin.mallchat.custom.user.service.adapter.WSAdapter; import com.abin.mallchat.custom.user.service.adapter.WSAdapter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -1,12 +1,11 @@
package com.abin.mallchat.custom.common.event.listener; package com.abin.mallchat.custom.common.event.listener;
import com.abin.mallchat.common.common.domain.enums.IdempotentEnum; import com.abin.mallchat.common.common.domain.enums.IdempotentEnum;
import com.abin.mallchat.common.common.event.UserRegisterEvent;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.common.user.domain.enums.ItemEnum; import com.abin.mallchat.common.user.domain.enums.ItemEnum;
import com.abin.mallchat.common.user.service.IUserBackpackService; import com.abin.mallchat.common.user.service.IUserBackpackService;
import com.abin.mallchat.common.common.event.UserOnlineEvent;
import com.abin.mallchat.common.common.event.UserRegisterEvent;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;

View File

@@ -1,6 +1,5 @@
package com.abin.mallchat.custom.common.intecepter; package com.abin.mallchat.custom.common.intecepter;
import cn.hutool.extra.servlet.ServletUtil;
import com.abin.mallchat.common.common.domain.dto.RequestInfo; import com.abin.mallchat.common.common.domain.dto.RequestInfo;
import com.abin.mallchat.common.common.exception.HttpErrorEnum; import com.abin.mallchat.common.common.exception.HttpErrorEnum;
import com.abin.mallchat.common.common.utils.RequestHolder; import com.abin.mallchat.common.common.utils.RequestHolder;
@@ -11,14 +10,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.Set; import java.util.Set;
/** /**
@@ -27,7 +23,7 @@ import java.util.Set;
@Order(2) @Order(2)
@Slf4j @Slf4j
@Component @Component
public class BlackInterceptor implements HandlerInterceptor{ public class BlackInterceptor implements HandlerInterceptor {
@Autowired @Autowired
private UserCache userCache; private UserCache userCache;
@@ -36,18 +32,19 @@ public class BlackInterceptor implements HandlerInterceptor{
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Map<Integer, Set<String>> blackMap = userCache.getBlackMap(); Map<Integer, Set<String>> blackMap = userCache.getBlackMap();
RequestInfo requestInfo = RequestHolder.get(); RequestInfo requestInfo = RequestHolder.get();
if(inBlackList(requestInfo.getUid(),blackMap.get(BlackTypeEnum.UID.getType()))){ if (inBlackList(requestInfo.getUid(), blackMap.get(BlackTypeEnum.UID.getType()))) {
HttpErrorEnum.ACCESS_DENIED.sendHttpError(response); HttpErrorEnum.ACCESS_DENIED.sendHttpError(response);
return false; return false;
} }
if(inBlackList(requestInfo.getIp(),blackMap.get(BlackTypeEnum.IP.getType()))){ if (inBlackList(requestInfo.getIp(), blackMap.get(BlackTypeEnum.IP.getType()))) {
HttpErrorEnum.ACCESS_DENIED.sendHttpError(response); HttpErrorEnum.ACCESS_DENIED.sendHttpError(response);
return false; return false;
} }
return true; return true;
} }
private boolean inBlackList(Object target, Set<String> blackSet){
if(Objects.isNull(target)||Objects.isNull(blackSet)){ private boolean inBlackList(Object target, Set<String> blackSet) {
if (Objects.isNull(target) || Objects.isNull(blackSet)) {
return false; return false;
} }
return blackSet.contains(target.toString()); return blackSet.contains(target.toString());

View File

@@ -1,14 +1,12 @@
package com.abin.mallchat.custom.common.intecepter; package com.abin.mallchat.custom.common.intecepter;
import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.servlet.ServletUtil;
import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.common.common.domain.dto.RequestInfo; import com.abin.mallchat.common.common.domain.dto.RequestInfo;
import com.abin.mallchat.common.common.utils.RequestHolder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -20,7 +18,7 @@ import java.util.Optional;
@Order(1) @Order(1)
@Slf4j @Slf4j
@Component @Component
public class CollectorInterceptor implements HandlerInterceptor{ public class CollectorInterceptor implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

View File

@@ -2,15 +2,10 @@ package com.abin.mallchat.custom.common.intecepter;
import com.abin.mallchat.common.common.constant.MDCKey; import com.abin.mallchat.common.common.constant.MDCKey;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.*; import javax.servlet.*;
import javax.servlet.FilterConfig;
import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.util.UUID; import java.util.UUID;

View File

@@ -1,29 +1,17 @@
package com.abin.mallchat.custom.common.intecepter; package com.abin.mallchat.custom.common.intecepter;
import cn.hutool.http.HttpUtil;
import com.abin.mallchat.common.common.constant.MDCKey; import com.abin.mallchat.common.common.constant.MDCKey;
import com.abin.mallchat.common.common.exception.HttpErrorEnum; import com.abin.mallchat.common.common.exception.HttpErrorEnum;
import com.abin.mallchat.custom.user.service.LoginService; import com.abin.mallchat.custom.user.service.LoginService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;

View File

@@ -2,8 +2,8 @@ package com.abin.mallchat.custom.common.intecepter;
import cn.hutool.core.date.StopWatch; import cn.hutool.core.date.StopWatch;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.common.common.domain.dto.RequestInfo; import com.abin.mallchat.common.common.domain.dto.RequestInfo;
import com.abin.mallchat.common.common.utils.RequestHolder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;

View File

@@ -6,8 +6,8 @@ import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.custom.user.domain.vo.request.user.ModifyNameReq; import com.abin.mallchat.custom.user.domain.vo.request.user.ModifyNameReq;
import com.abin.mallchat.custom.user.domain.vo.request.user.WearingBadgeReq; import com.abin.mallchat.custom.user.domain.vo.request.user.WearingBadgeReq;
import com.abin.mallchat.custom.user.domain.vo.response.user.BadgeResp; import com.abin.mallchat.custom.user.domain.vo.response.user.BadgeResp;
import com.abin.mallchat.custom.user.service.UserService;
import com.abin.mallchat.custom.user.domain.vo.response.user.UserInfoResp; import com.abin.mallchat.custom.user.domain.vo.response.user.UserInfoResp;
import com.abin.mallchat.custom.user.service.UserService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -53,7 +53,7 @@ public class UserController {
@PutMapping("/badge") @PutMapping("/badge")
@ApiOperation("佩戴徽章") @ApiOperation("佩戴徽章")
public ApiResult<Void> wearingBadge(@Valid @RequestBody WearingBadgeReq req) { public ApiResult<Void> wearingBadge(@Valid @RequestBody WearingBadgeReq req) {
userService.wearingBadge(RequestHolder.get().getUid(),req); userService.wearingBadge(RequestHolder.get().getUid(), req);
return ApiResult.success(); return ApiResult.success();
} }
} }

View File

@@ -55,8 +55,8 @@ public class WxPortalController {
WxOAuth2AccessToken accessToken = wxService.getOAuth2Service().getAccessToken(code); WxOAuth2AccessToken accessToken = wxService.getOAuth2Service().getAccessToken(code);
WxOAuth2UserInfo userInfo = wxService.getOAuth2Service().getUserInfo(accessToken, "zh_CN"); WxOAuth2UserInfo userInfo = wxService.getOAuth2Service().getUserInfo(accessToken, "zh_CN");
wxMsgService.authorize(userInfo); wxMsgService.authorize(userInfo);
}catch (Exception e){ } catch (Exception e) {
log.error("callBack error",e); log.error("callBack error", e);
} }
RedirectView redirectView = new RedirectView(); RedirectView redirectView = new RedirectView();
redirectView.setUrl("https://mp.weixin.qq.com/s/m1SRsBG96kLJW5mPe4AVGA"); redirectView.setUrl("https://mp.weixin.qq.com/s/m1SRsBG96kLJW5mPe4AVGA");

View File

@@ -4,9 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
/** /**
* Description: 记录和前端连接的一些映射信息 * Description: 记录和前端连接的一些映射信息

View File

@@ -15,11 +15,11 @@ import java.util.stream.Collectors;
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum WSReqTypeEnum { public enum WSReqTypeEnum {
LOGIN(1, "请求登录二维码"), LOGIN(1, "请求登录二维码"),
HEARTBEAT(2, "心跳包"), HEARTBEAT(2, "心跳包"),
AUTHORIZE(3, "登录认证"), AUTHORIZE(3, "登录认证"),
; ;
private final Integer type; private final Integer type;
private final String desc; private final String desc;

View File

@@ -5,7 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@@ -23,7 +22,7 @@ import javax.validation.constraints.NotNull;
public class ModifyNameReq { public class ModifyNameReq {
@NotNull @NotNull
@Length(max = 6,message = "用户名可别取太长,不然我记不住噢") @Length(max = 6, message = "用户名可别取太长,不然我记不住噢")
@ApiModelProperty("用户名") @ApiModelProperty("用户名")
private String name; private String name;

View File

@@ -5,8 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;

View File

@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/** /**
* Description: * Description:

View File

@@ -11,6 +11,7 @@ import lombok.Data;
public class WSBaseReq { public class WSBaseReq {
/** /**
* 请求类型 1.请求登录二维码2心跳检测 * 请求类型 1.请求登录二维码2心跳检测
*
* @see com.abin.mallchat.custom.user.domain.enums.WSReqTypeEnum * @see com.abin.mallchat.custom.user.domain.enums.WSReqTypeEnum
*/ */
private Integer type; private Integer type;

View File

@@ -11,6 +11,7 @@ import lombok.Data;
public class WSBaseResp<T> { public class WSBaseResp<T> {
/** /**
* ws推送给前端的消息 * ws推送给前端的消息
*
* @see com.abin.mallchat.custom.user.domain.enums.WSRespTypeEnum * @see com.abin.mallchat.custom.user.domain.enums.WSRespTypeEnum
*/ */
private Integer type; private Integer type;

View File

@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/** /**
* Description: * Description:

View File

@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/** /**
* Description: * Description:

View File

@@ -1,15 +1,7 @@
package com.abin.mallchat.custom.user.domain.vo.response.ws; package com.abin.mallchat.custom.user.domain.vo.response.ws;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMemberResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp; import com.abin.mallchat.custom.chat.domain.vo.response.ChatMessageResp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
/** /**
* Description: 用户消息推送 * Description: 用户消息推送

View File

@@ -5,8 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,8 +1,5 @@
package com.abin.mallchat.custom.user.service; package com.abin.mallchat.custom.user.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/** /**
* Description: 登录相关处理类 * Description: 登录相关处理类
* Author: <a href="https://github.com/zongzibinbin">abin</a> * Author: <a href="https://github.com/zongzibinbin">abin</a>
@@ -36,6 +33,7 @@ public interface LoginService {
/** /**
* 如果token有效返回uid * 如果token有效返回uid
*
* @param token * @param token
* @return * @return
*/ */

View File

@@ -1,11 +1,9 @@
package com.abin.mallchat.custom.user.service; package com.abin.mallchat.custom.user.service;
import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.custom.user.domain.vo.request.user.ModifyNameReq; import com.abin.mallchat.custom.user.domain.vo.request.user.ModifyNameReq;
import com.abin.mallchat.custom.user.domain.vo.request.user.WearingBadgeReq; import com.abin.mallchat.custom.user.domain.vo.request.user.WearingBadgeReq;
import com.abin.mallchat.custom.user.domain.vo.response.user.BadgeResp; import com.abin.mallchat.custom.user.domain.vo.response.user.BadgeResp;
import com.abin.mallchat.custom.user.domain.vo.response.user.UserInfoResp; import com.abin.mallchat.custom.user.domain.vo.response.user.UserInfoResp;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
@@ -17,10 +15,11 @@ import java.util.List;
* @author <a href="https://github.com/zongzibinbin">abin</a> * @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-03-19 * @since 2023-03-19
*/ */
public interface UserService { public interface UserService {
/** /**
* 获取前端展示信息 * 获取前端展示信息
*
* @param uid * @param uid
* @return * @return
*/ */
@@ -28,6 +27,7 @@ public interface UserService {
/** /**
* 修改用户名 * 修改用户名
*
* @param uid * @param uid
* @param req * @param req
*/ */
@@ -35,12 +35,14 @@ public interface UserService {
/** /**
* 用户徽章列表 * 用户徽章列表
*
* @param uid * @param uid
*/ */
List<BadgeResp> badges(Long uid); List<BadgeResp> badges(Long uid);
/** /**
* 佩戴徽章 * 佩戴徽章
*
* @param uid * @param uid
* @param req * @param req
*/ */
@@ -48,6 +50,7 @@ public interface UserService {
/** /**
* 用户注册 * 用户注册
*
* @param openId * @param openId
*/ */
void register(String openId); void register(String openId);

View File

@@ -1,32 +1,25 @@
package com.abin.mallchat.custom.user.service; package com.abin.mallchat.custom.user.service;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.abin.mallchat.common.common.config.ThreadPoolConfig;
import com.abin.mallchat.common.user.dao.UserDao; import com.abin.mallchat.common.user.dao.UserDao;
import com.abin.mallchat.common.user.domain.entity.User; import com.abin.mallchat.common.user.domain.entity.User;
import com.abin.mallchat.custom.user.service.adapter.TextBuilder; import com.abin.mallchat.custom.user.service.adapter.TextBuilder;
import com.abin.mallchat.custom.user.service.adapter.UserAdapter; import com.abin.mallchat.custom.user.service.adapter.UserAdapter;
import io.netty.channel.Channel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo; import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
/** /**
* Description: 处理与微信api的交互逻辑 * Description: 处理与微信api的交互逻辑
@@ -91,7 +84,7 @@ public class WxMsgService {
public void authorize(WxOAuth2UserInfo userInfo) { public void authorize(WxOAuth2UserInfo userInfo) {
User user = userDao.getByOpenId(userInfo.getOpenid()); User user = userDao.getByOpenId(userInfo.getOpenid());
//更新用户信息 //更新用户信息
if(Objects.isNull(user.getName())){ if (Objects.isNull(user.getName())) {
fillUserInfo(user.getId(), userInfo); fillUserInfo(user.getId(), userInfo);
} }
//触发用户登录成功操作 //触发用户登录成功操作

View File

@@ -15,8 +15,8 @@ public class ImageBuilder extends AbstractBuilder {
WxMpService service) { WxMpService service) {
WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content) WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build(); .build();
return m; return m;
} }

View File

@@ -14,8 +14,8 @@ public class TextBuilder extends AbstractBuilder {
public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage,
WxMpService service) { WxMpService service) {
WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content) WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build(); .build();
return m; return m;
} }
} }

Some files were not shown because too many files have changed in this diff Show More