package com.ycl.service.message.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ycl.common.util.CommonUtils;
|
import com.ycl.dto.message.MessageSmsParam;
|
import com.ycl.entity.message.Message;
|
import com.ycl.entity.message.SmsAudit;
|
import com.ycl.entity.user.UmsDepartManage;
|
import com.ycl.exception.ApiException;
|
import com.ycl.mapper.message.MessageMapper;
|
import com.ycl.mapper.message.SmsAuditMapper;
|
import com.ycl.mapper.user.UmsDepartManageMapper;
|
import com.ycl.service.message.ISmsAuditService;
|
import com.ycl.service.user.UmsAdminService;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 短信审核 服务实现类
|
* </p>
|
*
|
* @author mg
|
* @since 2022-10-17
|
*/
|
@Service
|
public class SmsAuditServiceImpl extends ServiceImpl<SmsAuditMapper, SmsAudit> implements ISmsAuditService {
|
|
@Resource
|
private UmsDepartManageMapper umsDepartManageMapper;
|
@Resource
|
private MessageMapper messageMapper;
|
|
@Resource
|
private UmsAdminService adminService;
|
|
@Override
|
public IPage<SmsAudit> list(SmsAudit smsAudit) {
|
Page<SmsAudit> page = new Page<>(smsAudit.getCurrent(), smsAudit.getPageSize());
|
/*LambdaQueryWrapper<SmsAudit> queryWrapper = new LambdaQueryWrapper<>();
|
if (smsAudit.getAuditId() != null) {
|
queryWrapper.eq(SmsAudit::getAuditId, smsAudit.getAuditId());
|
}
|
if (smsAudit.getAuditStatus() != null) {
|
queryWrapper.eq(SmsAudit::getAuditStatus, smsAudit.getAuditStatus());
|
}
|
queryWrapper.orderByDesc(SmsAudit::getCreateTime);
|
Page<SmsAudit> result = baseMapper.selectPage(page, queryWrapper);*/
|
Page<SmsAudit> result = baseMapper.selectCondPage(page, smsAudit);
|
return result;
|
}
|
|
@Override
|
public void startAuditSms(Message message) {
|
String[] arr = message.getTargetTo().split(",");
|
List<Long> ids = new ArrayList<>();
|
for (int i = 0; i < arr.length; i++) {
|
ids.add(Long.parseLong(arr[i]));
|
}
|
//查询部门
|
LambdaQueryWrapper<UmsDepartManage> queryDeptWrapper = new LambdaQueryWrapper<>();
|
queryDeptWrapper.in(UmsDepartManage::getUserId, ids);
|
List<UmsDepartManage> depts = umsDepartManageMapper.selectList(queryDeptWrapper);
|
//部门去重
|
List<UmsDepartManage> uniques = depts.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getDepartId()))), ArrayList::new));
|
List<Long> deptLeadIds = uniques.stream().map(UmsDepartManage::getDepartId).collect(Collectors.toList());
|
LambdaQueryWrapper<UmsDepartManage> queryDeptLeadWrapper = new LambdaQueryWrapper<>();
|
queryDeptLeadWrapper.in(UmsDepartManage::getDepartId, deptLeadIds).eq(UmsDepartManage::getIsLeader, 1);
|
List<UmsDepartManage> deptLeads = umsDepartManageMapper.selectList(queryDeptLeadWrapper);
|
|
//审核去重
|
List<UmsDepartManage> uniqueLeads = deptLeads.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getUserId()))), ArrayList::new));
|
//添加短信审核
|
List<SmsAudit> audits = new ArrayList<>();
|
for (UmsDepartManage depart : uniqueLeads) {
|
SmsAudit audit = new SmsAudit();
|
audit.setMessageId(message.getId());
|
audit.setAuditId(depart.getUserId());
|
//待审核状态
|
audit.setAuditStatus(0);
|
Long userId = Long.parseLong(message.getTargetFrom());
|
audit.setCreateUser(userId);
|
audit.setCreateTime(new Date());
|
audit.setUpdateUser(userId);
|
audit.setUpdateTime(new Date());
|
audits.add(audit);
|
}
|
saveBatch(audits);
|
}
|
|
@Override
|
public Boolean checkSms(MessageSmsParam messageSmsParam) {
|
switch (messageSmsParam.getStatus()) {
|
//未通过
|
case 0:
|
noPassMethod(messageSmsParam);
|
break;
|
//通过
|
case 1:
|
passMethod(messageSmsParam);
|
break;
|
default:
|
throw new ApiException("未匹配到该类型");
|
}
|
return true;
|
}
|
|
@Transactional
|
public void passMethod(MessageSmsParam messageSmsParam) {
|
Message message = messageMapper.selectById(messageSmsParam.getMessageId());
|
if (CommonUtils.isEmpty(message)) {
|
throw new ApiException("未找到该审核短信消息");
|
}
|
//id换成手机号
|
String targetToPhone = adminService.getTargetTo(message.getTargetTo(), message.getChannelCode());
|
message.setTargetTo(targetToPhone);
|
|
Message updateMessage = new Message();
|
updateMessage.setSendTime(new Date());
|
updateMessage.setIsScan(1);
|
updateMessage.setUpdateTime(new Date());
|
updateMessage.setUpdateUser(messageSmsParam.getUpdateUser());
|
|
LambdaQueryWrapper<Message> updateWrapper = new LambdaQueryWrapper<>();
|
updateWrapper.eq(Message::getMessageNumber, message.getMessageNumber());
|
messageMapper.update(updateMessage, updateWrapper);
|
//审核短信更新
|
updateSmsAudit(messageSmsParam);
|
}
|
|
@Transactional
|
public void noPassMethod(MessageSmsParam messageSmsParam) {
|
//审核短信更新
|
updateSmsAudit(messageSmsParam);
|
}
|
|
public void updateSmsAudit(MessageSmsParam messageSmsParam) {
|
SmsAudit smsAudit = packageData(messageSmsParam);
|
LambdaQueryWrapper<SmsAudit> smsAuditUpdate = new LambdaQueryWrapper<>();
|
smsAuditUpdate.eq(SmsAudit::getMessageId, messageSmsParam.getMessageId());
|
baseMapper.update(smsAudit, smsAuditUpdate);
|
}
|
|
public SmsAudit packageData(MessageSmsParam messageSmsParam) {
|
SmsAudit smsAudit = new SmsAudit();
|
smsAudit.setMessageId(messageSmsParam.getMessageId());
|
smsAudit.setAuditStatus(messageSmsParam.getStatus());
|
smsAudit.setAuditOpinion(messageSmsParam.getAuditOpinion());
|
smsAudit.setAuditResult(messageSmsParam.getResult());
|
smsAudit.setRealAuditId(messageSmsParam.getUpdateUser());
|
smsAudit.setUpdateTime(new Date());
|
smsAudit.setUpdateUser(messageSmsParam.getUpdateUser());
|
return smsAudit;
|
}
|
}
|