【应急单】定时解散群聊
This commit is contained in:
+72
@@ -0,0 +1,72 @@
|
||||
package com.renkang.emergency.task;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.mapper.OrderMapper;
|
||||
import com.renkang.im.api.IMHelloApi;
|
||||
import com.renkang.im.vo.ImBaseResult;
|
||||
import com.xxl.job.core.biz.model.ReturnT;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author pj
|
||||
* @version 1.0
|
||||
* @description: 应急单任务
|
||||
* @date 2026/1/8 14:21
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class EmergencyOrderJob {
|
||||
|
||||
private final OrderMapper orderMapper;
|
||||
private final IMHelloApi imHelloApi;
|
||||
|
||||
/**
|
||||
* @author: pj
|
||||
* @description: 解散群组(解散一个月之前已结束的应急单类型是应急就医的群组)
|
||||
* @date 2026/1/8 14:22
|
||||
*/
|
||||
@XxlJob(value = "destroyGroupJob")
|
||||
public ReturnT<String> destroyGroup() {
|
||||
try {
|
||||
int count = 0;
|
||||
log.info("========开始解散群组========");
|
||||
DateTime dateTime = DateUtil.offsetMonth(DateUtil.date(), -1);
|
||||
List<Order> orders = orderMapper.selectList(new LambdaQueryWrapper<Order>()
|
||||
.eq(Order::getOrderStatus, 5)
|
||||
.eq(Order::getInitiatorType, "1")
|
||||
.eq(Order::getDestroyGroup, 0)
|
||||
.lt(Order::getCreateTime, dateTime)
|
||||
);
|
||||
for (Order order : orders) {
|
||||
Result<ImBaseResult> imResultResult = imHelloApi.destroyGroup(order.getSessionId());
|
||||
if (imResultResult.getCode() != 200) {
|
||||
log.error("解散群组失败:{}", order.getSessionId());
|
||||
} else if (imResultResult.getResult().getActionStatus().equals("OK")) {
|
||||
log.error("解散群组成功:{}", order.getSessionId());
|
||||
orderMapper.update(null, new LambdaUpdateWrapper<Order>()
|
||||
.eq(Order::getId, order.getId())
|
||||
.set(Order::getDestroyGroup, 1)
|
||||
);
|
||||
count++;
|
||||
} else {
|
||||
log.error("解散群组失败:{}", order.getSessionId());
|
||||
}
|
||||
}
|
||||
log.info("========结束解散群组,成功解散'" + count + "'个群组========");
|
||||
return ReturnT.SUCCESS;
|
||||
} catch (Exception e) {
|
||||
return ReturnT.FAIL;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user