wl
2023-01-05 1fa316212257ce68dc5b4085b0a5690685b857af
fix: 发送消息
3个文件已修改
135 ■■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java
@@ -17,7 +17,6 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@@ -47,17 +46,19 @@
        AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //设置创建人
        message.setCreateUser(user.getUserId());
        return CommonResult.success(iMessageService.sendMessage(message));
        iMessageService.sendMessage(message);
        return CommonResult.success("send success");
    }
    @ApiOperation(value = "发送消息通过手机号码")
    @RequestMapping(value = "/send_message_phone", method = RequestMethod.POST)
    public CommonResult sendMessageByPhoneNumber( @RequestBody Message message) {
    public CommonResult sendMessageByPhoneNumber(@RequestBody Message message) {
        AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //设置创建人
        message.setCreateUser(user.getUserId());
        return CommonResult.success(iMessageService.sendMessageByPhone(message));
        iMessageService.sendMessageByPhone(message);
        return CommonResult.success("send success");
    }
ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java
@@ -18,11 +18,11 @@
 */
public interface IMessageService extends IService<Message> {
    String sendMessage(Message message);
    void sendMessage(Message message);
    Page<MessageVO> list(MessageParam messageParam);
    Boolean deleteMessages(List<Long> ids);
    String sendMessageByPhone(Message message);
    void sendMessageByPhone(Message message);
}
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
@@ -80,21 +80,21 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String sendMessage(Message message) {
    public void sendMessage(Message message) {
        if (!StringUtils.equals(message.getChannelCode(),ChannelCode.SMS)){
            Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
                    .eq(Message::getTargetTo, message.getTargetTo())
                    .eq(Message::getTargetFrom, message.getTargetFrom())
                    .eq(Message::getBody, message.getBody())
                    .eq(Message::getHead, message.getHead()));
            if (savedMessage != null) {
                messageMapper.deleteById(savedMessage);
            }
        Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
                .eq(Message::getTargetTo, message.getTargetTo())
                .eq(Message::getTargetFrom, message.getTargetFrom())
                .eq(Message::getBody, message.getBody())
                .eq(Message::getStatus, 1)
                .eq(Message::getHead, message.getHead()));
        if (savedMessage != null) {
            messageMapper.deleteById(savedMessage);
        }
        ArrayList<Long> ids = new ArrayList<>();
        message.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
        if (message.getId()==null) {
        if (message.getId() == null) {
            for (String receive : message.getTargetTo().split(",")) {
                Message sendMessage = new Message();
                BeanUtils.copyProperties(message, sendMessage);
@@ -120,75 +120,64 @@
            default:
                throw new ApiException("未匹配到该类型");
        }
        return "send message success!";
    }
    @SneakyThrows
    private void sendSMS(Message message, List<Long> mesIds) {
        String context = "【" + message.getHead() + "】" + message.getBody();
        String addSerial = "";
        SendReq sendReq = new SendReq();
        sendReq.setEcName(ecName);
        sendReq.setApId(apId);
        sendReq.setSign(sign);
        sendReq.setContext(context);
    @Transactional(rollbackFor = Exception.class)
    void sendSMS(Message message, List<Long> mesIds) {
        String[] ids = message.getTargetTo().split(",");
        String[] mobiles = new String[ids.length];
        for (int i = 0; i < ids.length; i++) {
            mobiles[i] = umsAdminMapper.selectById(ids[i]).getMobile();
        }
        sendReq.setMobiles(StringUtils.join(mobiles, ","));
        sendReq.setAddSerial(addSerial);
        StringBuffer mac = new StringBuffer();
        mac.append(ecName);
        mac.append(apId);
        mac.append(sendReq.getMobiles());
        mac.append(context);
        mac.append(sign);
        mac.append(addSerial);
        sendReq.setMac(MD5Util.md5Encrypt32Lower(mac.toString()));
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
        ObjectMapper objectMapper = new ObjectMapper();
        HttpEntity<String> stringHttpEntity = new HttpEntity<>(Base64Utils.encodeToString(objectMapper.writeValueAsBytes(mac)), httpHeaders);
        SendRes sendRes = objectMapper.readValue(restTemplate.postForEntity(url, stringHttpEntity, String.class).getBody(), SendRes.class);
        Message sendedMessage = new Message();
        if (sendRes.getRspcod().equals("success")) {
            for (Long id : mesIds) {
                sendedMessage.setStatus(2);
                sendedMessage.setRespondResult("发送成功");
                sendedMessage.setId(id);
                sendedMessage.setUpdateTime(new Date());
                sendedMessage.setSendTime(new Date());
                messageMapper.updateById(sendedMessage);
        message.setPhoneNumber(StringUtils.join(mobiles, ","));
        Integer messageStatus = sendMessages(message);
        Message messaged = new Message();
        for (Long id : mesIds) {
            if (messageStatus == 2) {
                messaged.setStatus(2);
                messaged.setRespondResult("发送成功");
            }
        } else {
            for (Long id : mesIds) {
                sendedMessage.setStatus(3);
                sendedMessage.setRespondResult("发送失败");
                sendedMessage.setSendTime(new Date());
                sendedMessage.setId(id);
                sendedMessage.setUpdateTime(new Date());
                messageMapper.updateById(sendedMessage);
            if (messageStatus == 3) {
                messaged.setStatus(3);
                messaged.setRespondResult("发送失败");
            }
            messaged.setId(id);
            messaged.setUpdateTime(new Date());
            messaged.setSendTime(new Date());
            messageMapper.updateById(messaged);
        }
    }
    @Override
    @SneakyThrows
    public String sendMessageByPhone(Message message) {
    @Transactional(rollbackFor = Exception.class)
    public void sendMessageByPhone(Message message) {
        Message sendMessage = new Message();
        BeanUtils.copyProperties(message, sendMessage);
        sendMessage.setCreateTime(new Date());
        sendMessage.setSendTime(new Date());
        sendMessage.setSendTime(new Date());
        message.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
        this.save(sendMessage);
        Integer messageStatus = sendMessages(message);
        Message messaged = new Message();
        if (messageStatus == 2) {
            messaged.setStatus(2);
            messaged.setRespondResult("发送成功");
        }
        if (messageStatus == 3) {
            messaged.setStatus(3);
            messaged.setRespondResult("发送失败");
        }
        messaged.setId(sendMessage.getId());
        messaged.setUpdateTime(new Date());
        messaged.setSendTime(new Date());
        messageMapper.updateById(messaged);
    }
    @SneakyThrows
    private Integer sendMessages(Message message) {
        String context = "【" + message.getHead() + "】" + message.getBody();
        String addSerial = "";
        SendReq sendReq = new SendReq();
@@ -216,23 +205,10 @@
        HttpEntity<String> stringHttpEntity = new HttpEntity<>(Base64Utils.encodeToString(objectMapper.writeValueAsBytes(mac)), httpHeaders);
        SendRes sendRes = objectMapper.readValue(restTemplate.postForEntity(url, stringHttpEntity, String.class).getBody(), SendRes.class);
        Message sendedMessage = new Message();
        if (sendRes.getRspcod().equals("success")) {
            sendedMessage.setStatus(2);
            sendedMessage.setRespondResult("发送成功");
            sendedMessage.setId(sendMessage.getId());
            sendedMessage.setUpdateTime(new Date());
            sendedMessage.setSendTime(new Date());
            messageMapper.updateById(sendedMessage);
            return "send message success!";
            return 2;
        } else {
            sendedMessage.setStatus(3);
            sendedMessage.setRespondResult("发送失败");
            sendedMessage.setSendTime(new Date());
            sendedMessage.setId(sendedMessage.getId());
            sendedMessage.setUpdateTime(new Date());
            messageMapper.updateById(sendedMessage);
            return "send message fail!";
            return 3;
        }
    }