feat(host-info): 添加主播AI操作状态更新功能
- 新增 `/update_ai_operation` 接口,支持根据主播ID和租户ID更新AI操作状态 - 添加请求参数校验和幂等性检查逻辑 - 删除旧日志文件并添加新日志文件
This commit is contained in:
@@ -3,6 +3,7 @@ package com.yupi.springbootinit.controller;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.yupi.springbootinit.common.BaseResponse;
|
import com.yupi.springbootinit.common.BaseResponse;
|
||||||
import com.yupi.springbootinit.common.ResultUtils;
|
import com.yupi.springbootinit.common.ResultUtils;
|
||||||
|
import com.yupi.springbootinit.model.dto.host.HostAiOperationUpdateRequest;
|
||||||
import com.yupi.springbootinit.model.dto.host.HostInfoDTO;
|
import com.yupi.springbootinit.model.dto.host.HostInfoDTO;
|
||||||
import com.yupi.springbootinit.model.dto.host.ServerLiveHostDetailDTO;
|
import com.yupi.springbootinit.model.dto.host.ServerLiveHostDetailDTO;
|
||||||
import com.yupi.springbootinit.model.entity.NewHosts;
|
import com.yupi.springbootinit.model.entity.NewHosts;
|
||||||
@@ -58,6 +59,14 @@ public class HostInfoController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/update_ai_operation")
|
||||||
|
public BaseResponse<Boolean> updateAiOperation(@RequestBody HostAiOperationUpdateRequest request) {
|
||||||
|
String hostsId = request == null ? null : request.getHostsId();
|
||||||
|
Long tenantId = request == null ? null : request.getTenantId();
|
||||||
|
log.info("更新主播AI操作状态,hostsId: {}, tenantId: {}", hostsId, tenantId);
|
||||||
|
return ResultUtils.success(hostInfoService.updateAiOperation(request));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据主播ID和租户ID查询直播明细
|
* 根据主播ID和租户ID查询直播明细
|
||||||
* @param detailDTO 查询条件(包含hostsId和tenantId)
|
* @param detailDTO 查询条件(包含hostsId和tenantId)
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.yupi.springbootinit.model.dto.host;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主播 AI 操作状态更新请求
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel("主播 AI 操作状态更新请求")
|
||||||
|
public class HostAiOperationUpdateRequest implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "主播ID", required = true, example = "host123")
|
||||||
|
private String hostsId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "租户ID", required = true, example = "1001")
|
||||||
|
private Long tenantId;
|
||||||
|
}
|
||||||
@@ -3,14 +3,10 @@ package com.yupi.springbootinit.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.yupi.springbootinit.model.dto.host.HistoryDataDTO;
|
import com.yupi.springbootinit.model.dto.host.HostAiOperationUpdateRequest;
|
||||||
import com.yupi.springbootinit.model.dto.host.HostInfoDTO;
|
import com.yupi.springbootinit.model.dto.host.HostInfoDTO;
|
||||||
import com.yupi.springbootinit.model.entity.NewHosts;
|
import com.yupi.springbootinit.model.entity.NewHosts;
|
||||||
import com.yupi.springbootinit.model.vo.hosts.NewHostsVO;
|
import com.yupi.springbootinit.model.vo.hosts.NewHostsVO;
|
||||||
import com.yupi.springbootinit.model.vo.hosts.SevenDaysData;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @author: ziin
|
* @author: ziin
|
||||||
@@ -21,4 +17,6 @@ public interface HostInfoService extends IService<NewHosts> {
|
|||||||
|
|
||||||
Page<NewHostsVO> getConditionHosts(HostInfoDTO hostInfoDTO);
|
Page<NewHostsVO> getConditionHosts(HostInfoDTO hostInfoDTO);
|
||||||
|
|
||||||
|
boolean updateAiOperation(HostAiOperationUpdateRequest request);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,34 @@
|
|||||||
package com.yupi.springbootinit.service.impl;
|
package com.yupi.springbootinit.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.yupi.springbootinit.common.ErrorCode;
|
||||||
|
import com.yupi.springbootinit.exception.BusinessException;
|
||||||
import com.yupi.springbootinit.mapper.NewHostsMapper;
|
import com.yupi.springbootinit.mapper.NewHostsMapper;
|
||||||
|
import com.yupi.springbootinit.model.dto.host.HostAiOperationUpdateRequest;
|
||||||
import com.yupi.springbootinit.model.dto.host.HostInfoDTO;
|
import com.yupi.springbootinit.model.dto.host.HostInfoDTO;
|
||||||
import com.yupi.springbootinit.model.entity.NewHosts;
|
import com.yupi.springbootinit.model.entity.NewHosts;
|
||||||
import com.yupi.springbootinit.model.vo.hosts.NewHostsVO;
|
import com.yupi.springbootinit.model.vo.hosts.NewHostsVO;
|
||||||
import com.yupi.springbootinit.service.HostInfoService;
|
import com.yupi.springbootinit.service.HostInfoService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @author: ziin
|
* @author: ziin
|
||||||
* @date: 2025/6/10 19:04
|
* @date: 2025/6/10 19:04
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public class HostInfoServiceImpl extends ServiceImpl<NewHostsMapper, NewHosts> implements HostInfoService {
|
public class HostInfoServiceImpl extends ServiceImpl<NewHostsMapper, NewHosts> implements HostInfoService {
|
||||||
|
|
||||||
|
private static final byte AI_OPERATION_ENABLED = 1;
|
||||||
|
private static final byte NOT_DELETED = 0;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private NewHostsMapper newHostsMapper;
|
private NewHostsMapper newHostsMapper;
|
||||||
|
|
||||||
@@ -31,5 +38,34 @@ public class HostInfoServiceImpl extends ServiceImpl<NewHostsMapper, NewHosts> i
|
|||||||
return newHostsMapper.selectPageByCondition(page, hostInfoDTO);
|
return newHostsMapper.selectPageByCondition(page, hostInfoDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateAiOperation(HostAiOperationUpdateRequest request) {
|
||||||
|
validateAiOperationUpdateRequest(request);
|
||||||
|
List<NewHosts> matchedHosts = lambdaQuery()
|
||||||
|
.eq(NewHosts::getHostsId, request.getHostsId())
|
||||||
|
.eq(NewHosts::getTenantId, request.getTenantId())
|
||||||
|
.eq(NewHosts::getDeleted, NOT_DELETED)
|
||||||
|
.list();
|
||||||
|
if (matchedHosts.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
boolean allAiOperationEnabled = matchedHosts.stream()
|
||||||
|
.allMatch(host -> Objects.equals(host.getAiOperation(), AI_OPERATION_ENABLED));
|
||||||
|
if (allAiOperationEnabled) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return lambdaUpdate()
|
||||||
|
.eq(NewHosts::getHostsId, request.getHostsId())
|
||||||
|
.eq(NewHosts::getTenantId, request.getTenantId())
|
||||||
|
.eq(NewHosts::getDeleted, NOT_DELETED)
|
||||||
|
.set(NewHosts::getAiOperation, AI_OPERATION_ENABLED)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateAiOperationUpdateRequest(HostAiOperationUpdateRequest request) {
|
||||||
|
if (request == null || StrUtil.isBlank(request.getHostsId()) || request.getTenantId() == null) {
|
||||||
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "hostsId和tenantId不能为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user