package com.fdkankan.agent.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fdkankan.agent.common.PageInfo;
import com.fdkankan.agent.common.util.DateUtils;
import com.fdkankan.agent.config.AgentConfig;
import com.fdkankan.agent.entity.AgentAuthorizeModeling;
import com.fdkankan.agent.entity.AgentNew;
import com.fdkankan.agent.entity.IncrementUseType;
import com.fdkankan.agent.entity.User;
import com.fdkankan.agent.mapper.IAgentAuthorizeModelingMapper;
import com.fdkankan.agent.request.AuthorizeParam;
import com.fdkankan.agent.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.common.util.DataUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author
* @since 2025-03-17
*/
@Service
public class AgentAuthorizeModelingServiceImpl extends ServiceImpl implements IAgentAuthorizeModelingService {
@Autowired
IUserService userService;
@Autowired
IAgentNewService agentNewService;
@Autowired
IIncrementUseTypeService iIncrementUseTypeService;
@Override
public Object pageList(AuthorizeParam param) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getCustomerName())){
wrapper.like(AgentAuthorizeModeling::getCustomerName,param.getCustomerName());
}
if(param.getCustomerType() != null){
wrapper.eq(AgentAuthorizeModeling::getCustomerType,param.getCustomerType());
}
if(param.getUseType() != null){
wrapper.eq(AgentAuthorizeModeling::getUseType,param.getUseType());
}
if(StringUtils.isNotBlank(param.getAuthorizeKey())){
wrapper.like(AgentAuthorizeModeling::getAuthorizeKey,param.getAuthorizeKey());
}
wrapper.and(e -> e.eq(AgentAuthorizeModeling::getCreateAgentId,param.getAgentId())
.or()
.eq(AgentAuthorizeModeling::getAgentId,param.getAgentId()));
wrapper.orderByDesc(AgentAuthorizeModeling::getId);
Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
List sysIds = page.getRecords().stream().map(AgentAuthorizeModeling::getAgentId).collect(Collectors.toList());
HashMap userMap = agentNewService.getMapByIds(sysIds);
HashMap typeMap = iIncrementUseTypeService.getTypeMap();
for (AgentAuthorizeModeling record : page.getRecords()) {
if(userMap.get(record.getAgentId())!=null){
record.setAgentName(userMap.get(record.getAgentId()).getNickName());
}
if(typeMap.get(record.getUseType()) !=null){
record.setUseTypeStr(typeMap.get(record.getUseType()).getName());
}
}
return PageInfo.PageInfo(page);
}
@Override
public Object addOrUpdate(AgentAuthorizeModeling param) {
this.saveOrUpdate(param);
return param;
}
@Autowired
IMailTemplateService mailTemplateService;
@Autowired
AgentConfig agentConfig;
@Override
public void checkExpTime() {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.isNotNull(AgentAuthorizeModeling::getAuthorizeEndTime);
wrapper.eq(AgentAuthorizeModeling::getAuthorizeEndTime,DateUtils.getPlusDay(agentConfig.getAuthExpDay()));
List list = this.list(wrapper);
HashSet agentIds = new HashSet<>();
for (AgentAuthorizeModeling agentAuthorizeModeling : list) {
if(agentAuthorizeModeling.getAgentId() != null){
agentIds.add( agentAuthorizeModeling.getAgentId());
}
}
List agentNews = agentNewService.listByIds(agentIds);
for (AgentNew agentNew : agentNews) {
mailTemplateService.sendAuthExpMail(agentNew.getUserName());
}
}
}