From 8b02c916fec8819f4f1b27b21a26cca6c41b5f5d Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期一, 14 七月 2025 09:54:05 +0800 Subject: [PATCH] add:定时任务配置,热门城市 --- src/main/java/com/mzl/flower/service/film/impl/AiContentTaskConfigServiceImpl.java | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 175 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/film/impl/AiContentTaskConfigServiceImpl.java b/src/main/java/com/mzl/flower/service/film/impl/AiContentTaskConfigServiceImpl.java new file mode 100644 index 0000000..7deda13 --- /dev/null +++ b/src/main/java/com/mzl/flower/service/film/impl/AiContentTaskConfigServiceImpl.java @@ -0,0 +1,175 @@ +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(); + } + }); + } + + +} -- Gitblit v1.9.3