package com.fdkankan.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fdkankan.manage.common.ResultCode;
import com.fdkankan.manage.exception.BusinessException;
import com.fdkankan.manage.common.PageInfo;
import com.fdkankan.manage.entity.AgentAudit;
import com.fdkankan.manage.entity.MailTemplate;
import com.fdkankan.manage.entity.SceneApply;
import com.fdkankan.manage.mapper.ISceneApplyMapper;
import com.fdkankan.manage.service.IMailTemplateService;
import com.fdkankan.manage.service.ISceneApplyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.manage.util.SendMailUtils;
import com.fdkankan.manage.vo.request.AgentAuditListParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
/**
*
* 服务实现类
*
*
* @author
* @since 2022-09-22
*/
@Service
public class SceneApplyServiceImpl extends ServiceImpl implements ISceneApplyService {
@Autowired
IMailTemplateService mailTemplateService;
@Override
public PageInfo pageList(AgentAuditListParam param) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getCompanyName())){
wrapper.like(SceneApply::getCompany,param.getCompanyName());
}
if(StringUtils.isNotBlank(param.getStartTime())&& StringUtils.isNotBlank(param.getEndTime()) ) {
wrapper.between(SceneApply::getCreateTime,param.getStartTime(),param.getEndTime());
}
if(param.getHandleState() == 1){
wrapper.in(SceneApply::getState, Arrays.asList(1,2));
}else {
wrapper.eq(SceneApply::getState, 0);
}
wrapper.orderByDesc(SceneApply::getCreateTime);
Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
return PageInfo.PageInfo(page);
}
@Override
public void sendEmail(Integer sceneApplyId, Integer emailTemplateId) {
SceneApply sceneApply = this.getById(sceneApplyId);
if(sceneApply == null){
throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
}
MailTemplate mailTemplate = mailTemplateService.getById(emailTemplateId);
String msg = mailTemplate.getMsg();
mailTemplate.setMsg( msg.replace("${username}",sceneApply.getName()));
Boolean flag = mailTemplateService.sendMail(sceneApply.getEmail(), mailTemplate,null);
if(!flag){
throw new BusinessException(ResultCode.MAIL_SEND_ERROR);
}
sceneApply.setState(1);
this.updateById(sceneApply);
}
}