|
@@ -1,11 +1,36 @@
|
|
|
package com.ichaoj.ams.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.ichaoj.ams.entity.AmsAirdropProject;
|
|
|
+import com.ichaoj.ams.entity.AmsAirdropTask;
|
|
|
import com.ichaoj.ams.entity.AmsAuto;
|
|
|
+import com.ichaoj.ams.entity.AmsStrategy;
|
|
|
import com.ichaoj.ams.mapper.AmsAutoMapper;
|
|
|
+import com.ichaoj.ams.request.auto.CreateAuto;
|
|
|
+import com.ichaoj.ams.request.auto.PageAutoRequest;
|
|
|
+import com.ichaoj.ams.request.auto.UpdateAuto;
|
|
|
+import com.ichaoj.ams.response.auto.AutoResponse;
|
|
|
+import com.ichaoj.ams.service.IAmsAirdropProjectService;
|
|
|
+import com.ichaoj.ams.service.IAmsAirdropTaskService;
|
|
|
import com.ichaoj.ams.service.IAmsAutoService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.ichaoj.ams.service.IAmsStrategyService;
|
|
|
+import com.ichaoj.common.exception.ErrorServiceException;
|
|
|
+import com.ichaoj.common.model.PublicPage;
|
|
|
+import com.ichaoj.common.model.PublicUserInfo;
|
|
|
+import com.ichaoj.mybatis.service.SuperWhaleServiceImpl;
|
|
|
+import com.ichaoj.web.context.SuperWhaleContext;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 自动化 服务实现类
|
|
@@ -15,6 +40,110 @@ import org.springframework.stereotype.Service;
|
|
|
* @since 2023-05-10
|
|
|
*/
|
|
|
@Service
|
|
|
-public class AmsAutoServiceImpl extends ServiceImpl<AmsAutoMapper, AmsAuto> implements IAmsAutoService {
|
|
|
+public class AmsAutoServiceImpl extends SuperWhaleServiceImpl<AmsAutoMapper, AmsAuto> implements IAmsAutoService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IAmsAirdropTaskService taskService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IAmsStrategyService strategyService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IAmsAirdropProjectService projectService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PublicPage<AutoResponse> pageAuto(PageAutoRequest autoRequest) {
|
|
|
+ LambdaQueryWrapper<AmsAuto> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper
|
|
|
+ .like(StrUtil.isNotBlank(autoRequest.getQueryValue()), AmsAuto::getAutoName, autoRequest.getQueryValue())
|
|
|
+ .orderByDesc(AmsAuto::getCreateTime);
|
|
|
+ Page<AmsAuto> result = this.page(this.buildPageObj(autoRequest), wrapper);
|
|
|
+ return this.convertPublicPage(result, s -> BeanUtil.copyProperties(s, AutoResponse.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void createAuto(CreateAuto createAuto) {
|
|
|
+ AmsAirdropProject project = verifyProject(createAuto.getProjectId());
|
|
|
+ AmsAuto amsAuto = BeanUtil.copyProperties(createAuto, AmsAuto.class);
|
|
|
+ setAmsAuto(createAuto.getTaskIds(), createAuto.getStrategyIds(), amsAuto, project.getAmsProjectId());
|
|
|
+ amsAuto.setCreateTime(LocalDateTime.now());
|
|
|
+ this.save(amsAuto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateAuto(UpdateAuto updateAuto) {
|
|
|
+ AmsAirdropProject project = verifyProject(updateAuto.getProjectId());
|
|
|
+ AmsAuto auto = BeanUtil.copyProperties(updateAuto, AmsAuto.class);
|
|
|
+ setAmsAuto(updateAuto.getTaskIds(), updateAuto.getStrategyIds(), auto, project.getAmsProjectId());
|
|
|
+ auto.setUpdateTime(LocalDateTime.now());
|
|
|
+ this.updateById(auto);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 验证项目id
|
|
|
+ *
|
|
|
+ * @param projectId 项目id
|
|
|
+ * @return 项目实体
|
|
|
+ */
|
|
|
+ private AmsAirdropProject verifyProject(String projectId) {
|
|
|
+ if (StrUtil.isBlank(projectId)) {
|
|
|
+ throw new ErrorServiceException("projectId is required!");
|
|
|
+ }
|
|
|
+ AmsAirdropProject project = projectService.getById(projectId);
|
|
|
+ if (project == null) {
|
|
|
+ throw new ErrorServiceException("Airdrop Project Error!");
|
|
|
+ }
|
|
|
+ return project;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 给实体amsAuto赋任务、策略和用户id的值
|
|
|
+ *
|
|
|
+ * @param taskIds 任务id
|
|
|
+ * @param strategyIds 策略id
|
|
|
+ * @param amsAuto 实体
|
|
|
+ * @param projectId 项目id
|
|
|
+ */
|
|
|
+ private void setAmsAuto(List<String> taskIds, List<String> strategyIds, AmsAuto amsAuto, String projectId) {
|
|
|
+ if (CollectionUtil.isNotEmpty(taskIds)) {
|
|
|
+ String ids = getValidTaskIds(taskIds, projectId);
|
|
|
+ amsAuto.setTaskIds(ids);
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(strategyIds)) {
|
|
|
+ String ids = getValidStrategyIds(strategyIds);
|
|
|
+ amsAuto.setStrategyIds(ids);
|
|
|
+ }
|
|
|
+ amsAuto.setUserId(SuperWhaleContext.getContext(PublicUserInfo.class).getUserId());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 筛选出有效的任务id
|
|
|
+ *
|
|
|
+ * @param ids 任务id
|
|
|
+ * @param projectId 项目id
|
|
|
+ * @return 以 , 分割的任务id
|
|
|
+ */
|
|
|
+ private String getValidTaskIds(List<String> ids, String projectId) {
|
|
|
+ LambdaQueryWrapper<AmsAirdropTask> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper
|
|
|
+ .eq(AmsAirdropTask::getAirdropProjectId, projectId)
|
|
|
+ .in(AmsAirdropTask::getAmsTaskId, ids);
|
|
|
+ List<AmsAirdropTask> tasks = taskService.list(wrapper);
|
|
|
+ return tasks.stream()
|
|
|
+ .filter(t -> CollectionUtil.isNotEmpty(tasks))
|
|
|
+ .map(AmsAirdropTask::getAmsTaskId).collect(Collectors.joining(","));
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 筛选出有效的策略id
|
|
|
+ *
|
|
|
+ * @param ids 策略id
|
|
|
+ * @return 以 , 分割的策略id
|
|
|
+ */
|
|
|
+ private String getValidStrategyIds(List<String> ids) {
|
|
|
+ List<AmsStrategy> strategies = strategyService.listByIds(ids);
|
|
|
+ return strategies.stream()
|
|
|
+ .filter(s -> CollectionUtil.isNotEmpty(strategies))
|
|
|
+ .map(AmsStrategy::getAmsStrategyId).collect(Collectors.joining(","));
|
|
|
+ }
|
|
|
}
|