package com.mzl.flower.service.film.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.mzl.flower.config.exception.ValidationException;
|
import com.mzl.flower.config.security.SecurityUtils;
|
import com.mzl.flower.dto.BatchDTO;
|
import com.mzl.flower.dto.request.film.AiContentTaskConfigDTO;
|
import com.mzl.flower.dto.request.film.AiContentTaskConfigQueryDTO;
|
import com.mzl.flower.dto.response.film.AiContentTaskConfigVO;
|
import com.mzl.flower.entity.film.AiContentTaskConfig;
|
import com.mzl.flower.entity.system.Role;
|
import com.mzl.flower.mapper.customer.CustomerMapper;
|
import com.mzl.flower.mapper.film.AiContentTaskConfigMapper;
|
import com.mzl.flower.schedule.DynamicTaskManager;
|
import com.mzl.flower.service.film.AiContentTaskConfigService;
|
import com.mzl.flower.service.system.RoleService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.support.TransactionSynchronization;
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 影视作品信息表 服务实现类
|
* </p>
|
*
|
* @author generator@Fang
|
* @since 2025-05-19
|
*/
|
@Service
|
@Transactional
|
@RequiredArgsConstructor
|
public class AiContentTaskConfigServiceImpl extends ServiceImpl<AiContentTaskConfigMapper, AiContentTaskConfig> implements AiContentTaskConfigService {
|
|
private final AiContentTaskConfigMapper aiContentTaskConfigMapper;
|
private final CustomerMapper customerMapper;
|
private final RoleService roleService;
|
|
private final DynamicTaskManager dynamicTaskManager;
|
|
@Override
|
public List<AiContentTaskConfigVO> getAiContentTaskConfigAll() {
|
return aiContentTaskConfigMapper.getAiContentTaskConfigAllInfo();
|
}
|
|
@Override
|
public List<AiContentTaskConfigVO> getEnabledAiContentTaskConfig() {
|
return aiContentTaskConfigMapper.getEnabledAiContentTaskConfig();
|
}
|
|
@Override
|
public Page<AiContentTaskConfigVO> queryPage(AiContentTaskConfigQueryDTO dto, Page page) {
|
List<AiContentTaskConfigVO> list = aiContentTaskConfigMapper.queryPage(dto, page);
|
// 测试前端展示用代码,部署发布不适用
|
page.setRecords(list);
|
|
return page;
|
}
|
|
@Override
|
@Transactional
|
public void deleteAiContentTaskConfig(String id) {
|
AiContentTaskConfig filmWork = aiContentTaskConfigMapper.selectById(id);
|
if (filmWork == null) {
|
throw new ValidationException("找不到id为" + id + "的影视作品");
|
}
|
aiContentTaskConfigMapper.deleteById(id);
|
dynamicTaskManager.refreshTasks(); // 每次删除后刷新定时任务
|
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
@Override
|
public void afterCommit() {
|
dynamicTaskManager.refreshTasks();
|
}
|
});
|
}
|
|
|
@Override
|
@Transactional
|
public void saveAiContentTaskConfig(AiContentTaskConfigDTO aiContentTaskConfigDTO) {
|
//获取当前人员角色,判断是不是编辑角色
|
List<String> roleIds = new ArrayList<>();
|
List<Role> roleList = roleService.getUserRoleList(SecurityUtils.getUserId());
|
for (Role role : roleList) {
|
roleIds.add(role.getId());
|
}
|
// if (!roleIds.contains("8f9ef89f6b2d4d8e9ea1fc8d2f25ce69")) {
|
// throw new ValidationException("非编辑角色不能新增");
|
// }
|
// 转换
|
AiContentTaskConfig aiContentTaskConfig = new AiContentTaskConfig();
|
BeanUtils.copyProperties(aiContentTaskConfigDTO, aiContentTaskConfig);
|
aiContentTaskConfig.create();
|
aiContentTaskConfigMapper.insert(aiContentTaskConfig);
|
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
@Override
|
public void afterCommit() {
|
dynamicTaskManager.refreshTasks();
|
}
|
});
|
}
|
|
@Override
|
@Transactional
|
public void updateAiContentTaskConfig(AiContentTaskConfigDTO aiContentTaskConfigDTO) {
|
AiContentTaskConfig aiContentTaskConfig = new AiContentTaskConfig();
|
|
List<String> roleIds = new ArrayList<>();
|
List<Role> roleList = roleService.getUserRoleList(SecurityUtils.getUserId());
|
for (Role role : roleList) {
|
roleIds.add(role.getId());
|
}
|
// if (!roleIds.contains("8f9ef89f6b2d4d8e9ea1fc8d2f25ce69")) {
|
// throw new ValidationException("非编辑角色不能修改");
|
// }
|
aiContentTaskConfig = aiContentTaskConfigMapper.selectById(aiContentTaskConfigDTO.getId());
|
BeanUtils.copyProperties(aiContentTaskConfigDTO, aiContentTaskConfig,"type");
|
aiContentTaskConfig.update(SecurityUtils.getUserId());
|
|
aiContentTaskConfigMapper.updateById(aiContentTaskConfig);
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
@Override
|
public void afterCommit() {
|
dynamicTaskManager.refreshTasks();
|
}
|
});
|
}
|
|
|
@Override
|
public AiContentTaskConfigVO detail(Long id) {
|
// userId 可以是空,因为用户可以登录
|
|
String userId = SecurityUtils.getUserId();
|
AiContentTaskConfigVO aiContentTaskConfigVO = aiContentTaskConfigMapper.selectInfoById(id, userId);
|
if (aiContentTaskConfigVO == null) {
|
return null;
|
}
|
// CustomerDTO currentCustomer = customerMapper.getCurrentCustomer(aiContentTaskConfigVO.getCreateBy());
|
// if (!ObjectUtils.isEmpty(currentCustomer)) {
|
// aiContentTaskConfigVO.setNickname(currentCustomer.getNickName());
|
// aiContentTaskConfigVO.setAvatar(currentCustomer.getCover());
|
// }
|
|
return aiContentTaskConfigVO;
|
}
|
|
@Override
|
public List<AiContentTaskConfig> getEnabledConfigs() {
|
return aiContentTaskConfigMapper.getAiContentTaskConfigAll();
|
}
|
|
@Override
|
@Transactional
|
public void batchDelete(BatchDTO dto) {
|
aiContentTaskConfigMapper.deleteBatchIds(dto.getIds());
|
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
@Override
|
public void afterCommit() {
|
dynamicTaskManager.refreshTasks();
|
}
|
});
|
}
|
|
|
}
|