package com.ichaoj.ams.service.impl;
import cn.hutool.core.bean.BeanUtil;
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.constant.AmsConstant;
import com.ichaoj.ams.entity.AmsAirdropProject;
import com.ichaoj.ams.entity.AmsAirdropTask;
import com.ichaoj.ams.mapper.AmsAirdropTaskMapper;
import com.ichaoj.ams.request.task.PageTaskRequest;
import com.ichaoj.ams.response.task.TaskResponse;
import com.ichaoj.ams.service.IAmsAirdropProjectService;
import com.ichaoj.ams.service.IAmsAirdropTaskService;
import com.ichaoj.common.model.PublicPage;
import com.ichaoj.mybatis.service.SuperWhaleServiceImpl;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
*
* 空投项目任务 服务实现类
*
*
* @author cjwen
* @since 2023-05-10
*/
@Service
public class AmsAirdropTaskServiceImpl extends SuperWhaleServiceImpl implements IAmsAirdropTaskService {
@Resource
@Lazy
private IAmsAirdropProjectService projectService;
@Override
public boolean verifyTaskParam(String taskApi, String taskName, String taskUrl, AmsConstant.TaskType taskType) {
return StrUtil.isNotBlank(taskApi) &&
StrUtil.isNotBlank(taskName) &&
StrUtil.isNotBlank(taskUrl) &&
taskType != null;
}
@Override
public PublicPage pageAirdropProject(PageTaskRequest taskRequest) {
LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
wrapper
.like(StrUtil.isNotBlank(taskRequest.getQueryValue()), AmsAirdropTask::getTaskName, taskRequest.getQueryValue())
.or().eq(StrUtil.isNotBlank(taskRequest.getQueryValue()), AmsAirdropTask::getAmsTaskId, taskRequest.getQueryValue())
.eq(taskRequest.getTaskType() != null, AmsAirdropTask::getTaskType, taskRequest.getTaskType())
.orderByDesc(AmsAirdropTask::getCreateTime);
Page result = this.page(this.buildPageObj(taskRequest), wrapper);
return this.convertPublicPage(result, task -> {
TaskResponse response = BeanUtil.copyProperties(task, TaskResponse.class);
AmsAirdropProject project = projectService.getById(task.getAirdropProjectId());
response.setAmsProjectId(project.getAmsProjectId());
response.setProjectLogo(project.getProjectLogo());
response.setProjectName(project.getProjectName());
return response;
});
}
}