用户徽章佩戴和发放

This commit is contained in:
zhongzb
2023-05-07 20:22:06 +08:00
parent c8369e31a1
commit b39a1bdf0c
22 changed files with 187 additions and 71 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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) {