mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-14 14:13:42 +08:00
用户徽章佩戴和发放
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package com.abin.mallchat.common.chat.domain.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* Description: 消息标记请求
|
||||
* Author: <a href="https://github.com/zongzibinbin">abin</a>
|
||||
* Date: 2023-03-29
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ChatMessageMarkDTO {
|
||||
@ApiModelProperty("消息id")
|
||||
private Long msgId;
|
||||
|
||||
@ApiModelProperty("标记类型 1点赞 2举报")
|
||||
private Integer markType;
|
||||
|
||||
@ApiModelProperty("动作类型 1确认 2取消")
|
||||
private Integer actType;
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.DefaultParameterNameDiscoverer;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.expression.EvaluationContext;
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.ExpressionParser;
|
||||
@@ -35,6 +36,7 @@ import java.util.*;
|
||||
@Slf4j
|
||||
@Aspect
|
||||
@Component
|
||||
@Order(0)//确保比事务注解先执行,分布式锁在事务外
|
||||
public class RedissonLockAspect {
|
||||
@Autowired
|
||||
private LockService lockService;
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
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 lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
@Getter
|
||||
public class ItemReceiveEvent extends ApplicationEvent {
|
||||
private UserBackpack userBackpack;
|
||||
|
||||
public ItemReceiveEvent(Object source, UserBackpack userBackpack) {
|
||||
super(source);
|
||||
this.userBackpack = userBackpack;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.abin.mallchat.common.common.event;
|
||||
|
||||
import com.abin.mallchat.common.chat.domain.dto.ChatMessageMarkDTO;
|
||||
import lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
@Getter
|
||||
public class MessageMarkEvent extends ApplicationEvent {
|
||||
private ChatMessageMarkDTO dto;
|
||||
|
||||
public MessageMarkEvent(Object source, ChatMessageMarkDTO dto) {
|
||||
super(source);
|
||||
this.dto = dto;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.abin.mallchat.common.common.event;
|
||||
|
||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||
import lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
@Getter
|
||||
public class MessageSendEvent extends ApplicationEvent {
|
||||
private Long msgId;
|
||||
|
||||
public MessageSendEvent(Object source, Long msgId) {
|
||||
super(source);
|
||||
this.msgId = msgId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.abin.mallchat.common.common.event;
|
||||
|
||||
import com.abin.mallchat.common.user.domain.entity.User;
|
||||
import lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
@Getter
|
||||
public class UserOfflineEvent extends ApplicationEvent {
|
||||
private User user;
|
||||
|
||||
public UserOfflineEvent(Object source, User user) {
|
||||
super(source);
|
||||
this.user = user;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.abin.mallchat.common.common.event;
|
||||
|
||||
import com.abin.mallchat.common.user.domain.entity.User;
|
||||
import lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
public class UserOnlineEvent extends ApplicationEvent {
|
||||
private User user;
|
||||
|
||||
public UserOnlineEvent(Object source, User user) {
|
||||
super(source);
|
||||
this.user = user;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.abin.mallchat.common.common.event;
|
||||
|
||||
import com.abin.mallchat.common.user.domain.entity.User;
|
||||
import lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
@Getter
|
||||
public class UserRegisterEvent extends ApplicationEvent {
|
||||
private User user;
|
||||
|
||||
public UserRegisterEvent(Object source, User user) {
|
||||
super(source);
|
||||
this.user = user;
|
||||
}
|
||||
}
|
||||
@@ -18,8 +18,8 @@ import java.util.stream.Collectors;
|
||||
public enum ItemEnum {
|
||||
MODIFY_NAME_CARD(1L, ItemTypeEnum.MODIFY_NAME_CARD, "改名卡"),
|
||||
LIKE_BADGE(2L, ItemTypeEnum.BADGE, "爆赞徽章"),
|
||||
REG_TOP10_BADGE(2L, ItemTypeEnum.BADGE, "爆赞徽章"),
|
||||
REG_TOP100_BADGE(2L, ItemTypeEnum.BADGE, "爆赞徽章"),
|
||||
REG_TOP10_BADGE(3L, ItemTypeEnum.BADGE, "前十注册徽章"),
|
||||
REG_TOP100_BADGE(4L, ItemTypeEnum.BADGE, "前100注册徽章"),
|
||||
;
|
||||
|
||||
private final Long id;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.abin.mallchat.common.user.service.impl;
|
||||
import com.abin.mallchat.common.common.annotation.RedissonLock;
|
||||
import com.abin.mallchat.common.common.domain.enums.IdempotentEnum;
|
||||
import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum;
|
||||
import com.abin.mallchat.common.common.event.ItemReceiveEvent;
|
||||
import com.abin.mallchat.common.user.dao.ItemConfigDao;
|
||||
import com.abin.mallchat.common.user.dao.UserBackpackDao;
|
||||
import com.abin.mallchat.common.user.domain.entity.ItemConfig;
|
||||
@@ -11,7 +12,10 @@ import com.abin.mallchat.common.user.domain.enums.ItemTypeEnum;
|
||||
import com.abin.mallchat.common.user.service.IUserBackpackService;
|
||||
import com.abin.mallchat.common.user.service.cache.ItemCache;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.context.event.SpringApplicationEvent;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -31,6 +35,8 @@ public class UserBackpackServiceImpl implements IUserBackpackService {
|
||||
private ItemConfigDao itemConfigDao;
|
||||
@Autowired
|
||||
private ItemCache itemCache;
|
||||
@Autowired
|
||||
private ApplicationEventPublisher applicationEventPublisher;
|
||||
|
||||
@Override
|
||||
@RedissonLock(key = "#uid")
|
||||
@@ -56,6 +62,8 @@ public class UserBackpackServiceImpl implements IUserBackpackService {
|
||||
.idempotent(idempotent)
|
||||
.build();
|
||||
userBackpackDao.save(insert);
|
||||
//用户收到物品的事件
|
||||
applicationEventPublisher.publishEvent(new ItemReceiveEvent(this, insert));
|
||||
}
|
||||
|
||||
private String getIdempotent(Long itemId, IdempotentEnum idempotentEnum, String businessId) {
|
||||
|
||||
Reference in New Issue
Block a user