package com.ots.project.exam.service.impl; import com.ots.common.enums.SenderType; import com.ots.common.enums.SendtaskStatus; import com.ots.common.utils.DateUtils; import com.ots.common.utils.text.Convert; import com.ots.framework.config.VueConfig; import com.ots.project.exam.domain.EntTestMember; import com.ots.project.exam.domain.EntTestSendtask; import com.ots.project.exam.dto.SendTask; import com.ots.project.exam.mapper.EntTestSendtaskMapper; import com.ots.project.exam.service.IEntTestSendtaskService; import com.ots.project.system.user.domain.User; import com.ots.project.system.user.service.IUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.MessageFormat; import java.util.Arrays; import java.util.List; import java.util.Objects; import static com.ots.common.enums.ResponseCode.*; /** * 评测邀请发送任务Service业务层处理 * * @author ots * @date 2019-12-19 */ @Service @Slf4j public class EntTestSendtaskServiceImpl implements IEntTestSendtaskService { @Autowired private EntTestSendtaskMapper entTestSendtaskMapper; @Autowired private EntTestMemberServiceImpl entTestMemberService; @Autowired private EntTestPackageServiceImpl entTestPackageService; @Autowired private VueConfig vueConfig; @Autowired private IUserService userService; /** * 查询评测邀请发送任务 * * @param id 评测邀请发送任务ID * @return 评测邀请发送任务 */ @Override public EntTestSendtask selectEntTestSendtaskById(Long id) { return entTestSendtaskMapper.selectEntTestSendtaskById(id); } /** * 查询评测邀请发送任务列表 * * @param entTestSendtask 评测邀请发送任务 * @return 评测邀请发送任务 */ @Override public List selectEntTestSendtaskList(EntTestSendtask entTestSendtask) { return entTestSendtaskMapper.selectEntTestSendtaskList(entTestSendtask); } /** * 新增评测邀请发送任务 * * @param entTestSendtask 评测邀请发送任务 * @return 结果 */ @Override public int insertEntTestSendtask(EntTestSendtask entTestSendtask) { entTestSendtask.setCreateTime(DateUtils.getNowDate()); return entTestSendtaskMapper.insertEntTestSendtask(entTestSendtask); } /** * 修改评测邀请发送任务 * * @param entTestSendtask 评测邀请发送任务 * @return 结果 */ @Override public int updateEntTestSendtask(EntTestSendtask entTestSendtask) { entTestSendtask.setUpdateTime(DateUtils.getNowDate()); return entTestSendtaskMapper.updateEntTestSendtask(entTestSendtask); } /** * 删除评测邀请发送任务对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteEntTestSendtaskByIds(String ids) { return entTestSendtaskMapper.deleteEntTestSendtaskByIds(Convert.toStrArray(ids)); } /** * 删除评测邀请发送任务信息 * * @param id 评测邀请发送任务ID * @return 结果 */ public int deleteEntTestSendtaskById(Long id) { return entTestSendtaskMapper.deleteEntTestSendtaskById(id); } @Override public int insertEntTestSendtaskFromMemberIds(SendTask sendTask) { String memberIds = sendTask.getMemberIds(); String[] split = memberIds.split(","); TEST_MEMBER_EMPTY.assertNotEmpty(split); TEST_SEND_ERROR.assertIsTrue(sendTask.getContent().indexOf("{url}")>0); List memberList = Arrays.asList(split); String memberId = memberList.get(0); Long testId = entTestMemberService.selectEntTestMemberById(Long.parseLong(memberId)).getTestId(); Long userId = entTestPackageService.selectEntTestPackageById(testId).getUserId(); User user = userService.selectUserById(userId); memberList.forEach(p -> { EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(Long.parseLong(p)); EntTestSendtask entTestSendtask = new EntTestSendtask(); BeanUtils.copyProperties(sendTask, entTestSendtask); entTestSendtask.setTestId(entTestMember.getTestId()); entTestSendtask.setUserId(userId); entTestSendtask.setMemberId(entTestMember.getMemberId()); entTestSendtask.setStatus(SendtaskStatus.Untreated.getStatus()); if (Objects.equals(entTestSendtask.getType(), SenderType.email.getType())) { entTestSendtask.setAddressee(entTestMember.getMemberEmail()); } else if (Objects.equals(entTestSendtask.getType(), SenderType.sms.getType())) { TEL_IS_NOLL.assertNotNull(entTestMember.getMemberPhone()); entTestSendtask.setAddressee(entTestMember.getMemberPhone()); } //生成链接专属地址 String url = vueConfig.getUrl(); String token = entTestMember.getToken(); String urlNew = MessageFormat.format(url, token); //替换链接地址 String content = entTestSendtask.getContent(); String replace = content.replace("{url}", urlNew); //替换公司名称 String content2 = replace.replace("{Company}",user.getUserName()); //替换用户名称 String content3 = content2.replace("{FullName}",entTestMember.getMemberName()); entTestSendtask.setContent(content3); entTestSendtask.setCreateTime(DateUtils.getNowDate()); entTestSendtaskMapper.insertEntTestSendtask(entTestSendtask); }); return 1; } }