linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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<EntTestSendtask> 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<String> 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;
    }
}