InitStaffWorkStatusConsumer.java 2.36 KB
package cn.fw.dalaran.server.rocketMQ;

import cn.fw.dalaran.common.constants.Constants;
import cn.fw.dalaran.domain.db.Account;
import cn.fw.dalaran.domain.db.ActivityTheme;
import cn.fw.dalaran.service.data.AccountService;
import cn.fw.dalaran.service.data.ActivityThemeService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * @author wmy3969
 * @version 1.0
 * @date 2022/4/13 16:30
 * @Description 新主题开始, 初始化自媒体系统员工账号状态
 */
@Slf4j
@Component
@RequiredArgsConstructor
@RocketMQMessageListener(
        topic = "task-" + Constants.APPLICATION_NAME,
        consumerGroup = Constants.APPLICATION_NAME + "-task-" + Constants.INIT_ACCOUNT_STATUS,
        selectorExpression = Constants.INIT_ACCOUNT_STATUS)
public class InitStaffWorkStatusConsumer implements RocketMQListener<Long> {

    private final AccountService accountService;
    private final ActivityThemeService activityThemeService;

    @Override
    public void onMessage(Long themeId) {
        log.info("收到topic为: task-{}, tag为: {}的消息, 消息内容(themeId): {}", Constants.APPLICATION_NAME, Constants.INIT_ACCOUNT_STATUS, themeId);
        ActivityTheme theme;
        if (Objects.nonNull(theme = activityThemeService.getById(themeId))) {
            if (Objects.equals(theme.getAllShop(), 0)) {
                accountService.lambdaUpdate()
                        .eq(Account::getAccountStatus, 1)
                        .in(Account::getShopId, Arrays.stream(theme.getShopIds().split(","))
                                .map(Long::valueOf)
                                .collect(Collectors.toList())
                        )
                        .set(Account::getAccountStatus, 0)
                        .update();
            } else
                accountService.lambdaUpdate()
                        .eq(Account::getAccountStatus, 1)
                        .set(Account::getAccountStatus, 0)
                        .update();
        } else
            log.info(String.format("id为: %s的活动主题已不存在, 不进行初始化员工账号状态操作", themeId));
    }
}