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