提交 1d6948d8 作者: xiaowang 提交者: 余乾开

用户信息修改同步动态信息

上级 b0e4dab1
package com.mmc.csf.user.vo;
import com.mmc.csf.release.model.group.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj @Date: 2023/5/16 21:18
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UserAccountVO implements Serializable {
private static final long serialVersionUID = 7067111726054578883L;
@ApiModelProperty(value = "用户id")
@NotNull(
message = "用户id不能为空",
groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "用户类型")
private Integer accountType;
@ApiModelProperty(value = "用户uid")
private String uid;
@ApiModelProperty(value = "用户账号")
private String accountNo;
@ApiModelProperty(value = "手机号")
private String phoneNum;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "用户头像")
private String userImg;
@ApiModelProperty(value = "用户性别:0未知、1男、2女")
private Integer userSex;
@ApiModelProperty(value = "用户邮箱")
@Email
private String email;
@ApiModelProperty(value = "用户来源,0自然流、1海报、2抖音、3公众号、4社群、5招投标、6官网")
private Integer source;
@ApiModelProperty(value = "用户可用状态:0禁用、1可用")
private Integer accountStatus;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "账号类型:0后台管理账号 ; 100云享飞-客户端;")
private Integer portType;
@ApiModelProperty(value = "注册时间")
private Date createTime;
@ApiModelProperty(value = "企业认证状态, 0未通过,1通过")
private Integer companyAuthStatus;
@ApiModelProperty(value = "合作标签id")
private Integer cooperationTagId;
@ApiModelProperty(value = "企业名称")
private String companyName;
@ApiModelProperty(value = "合作标签名称")
private String tagName;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
}
...@@ -24,16 +24,16 @@ ...@@ -24,16 +24,16 @@
</dependency> </dependency>
<!-- Eureka 客户端, 客户端向 Eureka Server 注册的时候会提供一系列的元数据信息, 例如: 主机, 端口, 健康检查url等 <!-- Eureka 客户端, 客户端向 Eureka Server 注册的时候会提供一系列的元数据信息, 例如: 主机, 端口, 健康检查url等
Eureka Server 接受每个客户端发送的心跳信息, 如果在某个配置的超时时间内未接收到心跳信息, 实例会被从注册列表中移除 --> Eureka Server 接受每个客户端发送的心跳信息, 如果在某个配置的超时时间内未接收到心跳信息, 实例会被从注册列表中移除 -->
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>--> <!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>--> <!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
<!-- <exclusions>--> <!-- <exclusions>-->
<!-- <exclusion>--> <!-- <exclusion>-->
<!-- <groupId>com.google.guava</groupId>--> <!-- <groupId>com.google.guava</groupId>-->
<!-- <artifactId>guava</artifactId>--> <!-- <artifactId>guava</artifactId>-->
<!-- </exclusion>--> <!-- </exclusion>-->
<!-- </exclusions>--> <!-- </exclusions>-->
<!-- </dependency>--> <!-- </dependency>-->
<!-- 引入 Feign, 可以以声明的方式调用微服务 --> <!-- 引入 Feign, 可以以声明的方式调用微服务 -->
<dependency> <dependency>
...@@ -95,11 +95,11 @@ ...@@ -95,11 +95,11 @@
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
</dependency> </dependency>
<!-- &lt;!&ndash; RabbitMQ &ndash;&gt;--> <!-- &lt;!&ndash; RabbitMQ &ndash;&gt;-->
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>--> <!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-amqp</artifactId>--> <!-- <artifactId>spring-boot-starter-amqp</artifactId>-->
<!-- </dependency>--> <!-- </dependency>-->
<!-- easypoi导出 --> <!-- easypoi导出 -->
<dependency> <dependency>
...@@ -115,6 +115,18 @@ ...@@ -115,6 +115,18 @@
<artifactId>easypoi-annotation</artifactId> <artifactId>easypoi-annotation</artifactId>
</dependency> </dependency>
<!-- RabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.5.0</version> <!-- 支持开源所有版本 -->
</dependency>
</dependencies> </dependencies>
......
package com.mmc.csf.release.constant;
/**
* @author: zj @Date: 2023/6/26 17:57
*/
public class RabbitmqConstant {
public static final String USER_INFO_UPDATE_FANOUT_EXCHANGE = "USER_INFO_UPDATE_FANOUT_EXCHANGE";
public static final String USER_INFO_UPDATE_FANOUT_FORUM_QUEUE =
"USER_INFO_UPDATE_FANOUT_FORUM_QUEUE";
}
...@@ -131,4 +131,8 @@ public interface DynamicDAO { ...@@ -131,4 +131,8 @@ public interface DynamicDAO {
void deleteDynamic(Integer dynamicId); void deleteDynamic(Integer dynamicId);
void hiddenDynamic(Integer dynamicId); void hiddenDynamic(Integer dynamicId);
List<ForumDynamicDO> listDynamicByUserId(Integer id);
void batchDeleteDynamic(List<Integer> dynamicIds);
} }
package com.mmc.csf.release.mq.listener;
import com.alibaba.fastjson.JSONObject;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.mmc.csf.release.constant.RabbitmqConstant;
import com.mmc.csf.release.dao.DynamicDAO;
import com.mmc.csf.release.dao.LikeDAO;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.user.vo.UserAccountVO;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author LW
*
* @date 2023/6/29 10:35 概要:
*/
@Slf4j
@Component
public class MqConsumer {
@Autowired DynamicDAO dynamicDAO;
@Autowired LikeDAO likeDAO;
@RabbitListener(queues = RabbitmqConstant.USER_INFO_UPDATE_FANOUT_FORUM_QUEUE)
public void subscribeFanoutQueue(@Payload String userAccount, Channel channel, Message message) {
UserAccountVO userAccountVO = JSONObject.parseObject(userAccount, UserAccountVO.class);
log.info("用户信息更改====>论坛消费者消费开始:用户信息是---->{}", userAccount);
if (userAccountVO.getDeleted() != null && userAccountVO.getDeleted().equals(1)) {
// 删除关于该用户的所有动态及评论和点赞信息
List<ForumDynamicDO> forumDynamicList = dynamicDAO.listDynamicByUserId(userAccountVO.getId());
if (CollectionUtils.isNotEmpty(forumDynamicList)) {
List<Integer> dynamicIds =
forumDynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList());
dynamicDAO.batchDeleteDynamic(dynamicIds);
}
}
log.info("用户信息更改====>论坛消费者消费结束。");
}
}
...@@ -68,23 +68,13 @@ spring: ...@@ -68,23 +68,13 @@ spring:
#初始化最小 #初始化最小
min-idle: 1 min-idle: 1
#rabbitMQ #rabbitMQ
#rabbitMQ
rabbitmq: rabbitmq:
host: 119.23.248.181 host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672 port: 5672
username: admin username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: mmc123456 password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: / virtual-host: dev
listener:
simple:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency: 3 #消费者最小数量
max-concurrency: 10 # 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry:
enabled: true #是否开启消费者重试(为false时关闭消费者重试)
max-attempts: 3 # 最大重试重新投递消息次数
initial-interval: 900s #重试重新投递消息间隔时间(单位秒)
default-requeue-rejected: false #重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true #eureka eureka.client.register-with-eureka=true
eureka: eureka:
......
...@@ -70,22 +70,11 @@ spring: ...@@ -70,22 +70,11 @@ spring:
min-idle: 1 min-idle: 1
#rabbitMQ #rabbitMQ
rabbitmq: rabbitmq:
host: 119.23.248.181 host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672 port: 5672
username: admin username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: mmc123456 password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: / virtual-host: /
listener:
simple:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency: 3 #消费者最小数量
max-concurrency: 10 # 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry:
enabled: true #是否开启消费者重试(为false时关闭消费者重试)
max-attempts: 3 # 最大重试重新投递消息次数
initial-interval: 900s #重试重新投递消息间隔时间(单位秒)
default-requeue-rejected: false #重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true #eureka eureka.client.register-with-eureka=true
eureka: eureka:
......
...@@ -69,22 +69,11 @@ spring: ...@@ -69,22 +69,11 @@ spring:
min-idle: 1 min-idle: 1
#rabbitMQ #rabbitMQ
rabbitmq: rabbitmq:
host: 119.23.248.181 host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672 port: 5672
username: admin username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: mmc123456 password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: / virtual-host: prod
listener:
simple:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency: 3 #消费者最小数量
max-concurrency: 10 # 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry:
enabled: true #是否开启消费者重试(为false时关闭消费者重试)
max-attempts: 3 # 最大重试重新投递消息次数
initial-interval: 900s #重试重新投递消息间隔时间(单位秒)
default-requeue-rejected: false #重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true #eureka eureka.client.register-with-eureka=true
eureka: eureka:
......
...@@ -52,6 +52,14 @@ ...@@ -52,6 +52,14 @@
from forum_dynamic from forum_dynamic
where id = #{dynamicId} where id = #{dynamicId}
</delete> </delete>
<delete id="batchDeleteDynamic">
delete from forum_dynamic
<where>
<foreach collection="list" item="d" open="id in (" close=")" separator="," index="index">
#{d}
</foreach>
</where>
</delete>
<select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO"> <select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id, select id,
version, version,
...@@ -150,4 +158,19 @@ ...@@ -150,4 +158,19 @@
where root_path = #{dynamicId} where root_path = #{dynamicId}
and is_deleted = 0 and is_deleted = 0
</select> </select>
<select id="listDynamicByUserId" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,
version,
user_account_id,
root_path,
description,
location,
lat,
lon,
likes_count,
comments_count,
create_time
from forum_dynamic
where user_account_id = #{id}
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论