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; /** *

* 影视作品信息表 服务实现类 *

* * @author generator@Fang * @since 2025-05-19 */ @Service @Transactional @RequiredArgsConstructor public class AiContentTaskConfigServiceImpl extends ServiceImpl implements AiContentTaskConfigService { private final AiContentTaskConfigMapper aiContentTaskConfigMapper; private final CustomerMapper customerMapper; private final RoleService roleService; private final DynamicTaskManager dynamicTaskManager; @Override public List getAiContentTaskConfigAll() { return aiContentTaskConfigMapper.getAiContentTaskConfigAllInfo(); } @Override public List getEnabledAiContentTaskConfig() { return aiContentTaskConfigMapper.getEnabledAiContentTaskConfig(); } @Override public Page queryPage(AiContentTaskConfigQueryDTO dto, Page page) { List 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 roleIds = new ArrayList<>(); List 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 roleIds = new ArrayList<>(); List 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 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(); } }); } }