提交 e51d1a2c 作者: zhenjie

消息队列-用户信息修改同步

上级 2537de8a
......@@ -63,5 +63,6 @@ public class UserAccountVO implements Serializable {
private String companyName;
@ApiModelProperty(value = "合作标签名称")
private String tagName;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
}
......@@ -57,10 +57,16 @@
</dependency>
<!-- RabbitMQ -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-amqp</artifactId>-->
<!-- </dependency>-->
<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>
<!-- <dependency>-->
<!-- <groupId>com.github.xiaoymin</groupId>-->
......
......@@ -106,6 +106,13 @@ public class UserAccountController extends BaseController{
return userAccountService.feignGetUserRcdInfo(userAccountId);
}
@ApiOperation(value = "账号-删除")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("removeAppAccount")
public ResultBody removeAppAccount(@RequestParam Integer userAccountId, HttpServletRequest request) {
return userAccountService.removeAppAccount(userAccountId);
}
}
package com.mmc.iuav.user.mq;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author: zj
* @Date: 2023/6/26 17:43
*/
@Configuration
public class FanoutExchangeConfig {
@Bean
public FanoutExchange fanoutExchange(){
return new FanoutExchange(RabbitmqConstant.USER_INFO_UPDATE_FANOUT_EXCHANGE);
}
@Bean
public Queue fanoutQueue1() {
return new Queue(RabbitmqConstant.USER_INFO_UPDATE_FANOUT_FORUM_QUEUE, true);
}
@Bean
public Binding bindingFanout1() {
Binding binding = BindingBuilder.bind(fanoutQueue1()).to(fanoutExchange());
return binding;
}
}
package com.mmc.iuav.user.mq;
import com.mmc.iuav.user.model.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.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;
/**
* @author: zj
* @Date: 2023/6/26 19:47
*/
@Slf4j
@Component
public class MqConsumer {
// @RabbitListener(queues = RabbitmqConstant.USER_INFO_UPDATE_FANOUT_FORUM_QUEUE)
// public void subscribeFanoutQueue(@Payload UserAccountVO userAccountVO, Channel channel, Message message){
// log.info("receive:" + userAccountVO);
// }
}
\ No newline at end of file
package com.mmc.iuav.user.mq;
import com.mmc.iuav.user.model.vo.UserAccountVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author: zj
* @Date: 2023/6/27 15:06
*/
public interface MqProducer {
/**
* 用户信息变更
* @param userAccountVO
*/
public void sentUserInfoChangedMsg(UserAccountVO userAccountVO);
}
package com.mmc.iuav.user.mq;
/**
* @author: zj
* @Date: 2023/6/26 17:57
*/
public class RabbitmqConstant {
public final static String USER_INFO_UPDATE_FANOUT_EXCHANGE = "USER_INFO_UPDATE_FANOUT_EXCHANGE";
public final static String USER_INFO_UPDATE_FANOUT_FORUM_QUEUE = "USER_INFO_UPDATE_FANOUT_FORUM_QUEUE";
}
package com.mmc.iuav.user.mq.impl;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.iuav.user.model.vo.UserAccountVO;
import com.mmc.iuav.user.mq.MqProducer;
import com.mmc.iuav.user.mq.RabbitmqConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author: zj
* @Date: 2023/6/27 15:51
*/
@Slf4j
@Component
public class MqProducerImpl implements MqProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void sentUserInfoChangedMsg(UserAccountVO userAccountVO) {
log.info("sentUserInfoChangedMsg:{}", JSONObject.toJSONString(userAccountVO));
rabbitTemplate.convertAndSend(RabbitmqConstant.USER_INFO_UPDATE_FANOUT_EXCHANGE, "", userAccountVO);
}
}
......@@ -159,4 +159,11 @@ public interface UserAccountService {
* @return
*/
ResultBody listAppUser(UserAccountQO userAccountQO);
/**
* 删除小程序用户
* @param userAccountId
* @return
*/
ResultBody removeAppAccount(Integer userAccountId);
}
......@@ -17,6 +17,7 @@ import com.mmc.iuav.user.model.qo.UserAccountQO;
import com.mmc.iuav.user.model.vo.BUserAccountVO;
import com.mmc.iuav.user.model.vo.CompanyAuthVO;
import com.mmc.iuav.user.model.vo.UserAccountVO;
import com.mmc.iuav.user.mq.MqProducer;
import com.mmc.iuav.user.service.CompanyAuthService;
import com.mmc.iuav.user.service.UserAccountService;
import com.mmc.iuav.user.service.WxService;
......@@ -50,6 +51,9 @@ public class UserAccountServiceImpl implements UserAccountService {
@Autowired
private WxService wxService;
@Autowired
private MqProducer mqProducer;
@Override
public UserAccountVO getUserAccountInfoByUnionId(String unionId) {
UserAccountDO userAccountDO = userServiceDao.getUserAccountInfoByUnionId(unionId);
......@@ -88,6 +92,7 @@ public class UserAccountServiceImpl implements UserAccountService {
public ResultBody update(UserAccountVO userAccountVO) {
UserAccountDO userAccountDO = new UserAccountDO(userAccountVO);
userServiceDao.update(userAccountDO);
mqProducer.sentUserInfoChangedMsg(userAccountVO);
return ResultBody.success();
}
......@@ -293,6 +298,16 @@ public class UserAccountServiceImpl implements UserAccountService {
return ResultBody.success(PageResult.buildPage(pageNo, param.getPageSize(), count, userAccountVOS));
}
@Override
public ResultBody removeAppAccount(Integer userAccountId) {
userServiceDao.removeUserAccount(CodeUtil.removeUserAccount(), userAccountId);
UserAccountVO userAccountVO = new UserAccountVO();
userAccountVO.setId(userAccountId);
userAccountVO.setDeleted(1);
mqProducer.sentUserInfoChangedMsg(userAccountVO);
return ResultBody.success();
}
private List<UserAccountDO> buildTagInfo(List<UserAccountDO> userAccountDOList) {
List<CooperationTagDO> cooperationTagDOS = cooperationDao.listTags();
Map<Integer, CooperationTagDO> cooperationTagDOMap = cooperationTagDOS.stream().collect(Collectors.toMap(CooperationTagDO::getId, d -> d, (k1, k2) -> k2));
......
......@@ -41,6 +41,13 @@ spring:
host: redis.default
password: MMC@2022&REDIS
port: 6379
#rabbitMQ
rabbitmq:
host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672
username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: dev
wx:
sub:
......
......@@ -13,6 +13,13 @@ spring:
host: r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password: MMC@2022&REDIS
port: 6379
#rabbitMQ
rabbitmq:
host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672
username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: /
wx:
sub:
......
......@@ -41,6 +41,13 @@ spring:
host: redis.default
password: MMC@2022&REDIS
port: 6379
#rabbitMQ
rabbitmq:
host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672
username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: prod
wx:
sub:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论