wl
2023-01-04 aeea62d121a1a8fd4475da30f1ef8b44b4776c7b
fix: 店铺消息发送
8个文件已修改
130 ■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/entity/message/Message.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/message/MessageVO.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/message/MessageMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/trend/TrendAnalysisMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java
@@ -46,6 +46,17 @@
        return CommonResult.success(iMessageService.sendMessage(message));
    }
    @ApiOperation(value = "发送消息通过手机号码")
    @RequestMapping(value = "/send_message_phone", method = RequestMethod.POST)
    public CommonResult sendMessageByPhoneNumber( @RequestBody Message message) {
        AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //设置创建人
        message.setCreateUser(user.getUserId());
        return CommonResult.success(iMessageService.sendMessageByPhone(message));
    }
    @ApiOperation(value = "暂存消息")
    @PostMapping("/saveMessage")
    @ResponseBody
ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java
@@ -53,4 +53,5 @@
    @ApiModelProperty(value = "响应结果")
    private String respondResult;
}
ycl-platform/src/main/java/com/ycl/entity/message/Message.java
@@ -169,4 +169,7 @@
    @ApiModelProperty(value = "响应结果")
    private String respondResult;
    @ApiModelProperty(value = "电话号码")
    private String phoneNumber;
}
ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java
@@ -23,4 +23,6 @@
    Page<MessageVO> list(MessageParam messageParam);
    Boolean deleteMessages(List<Long> ids);
    String sendMessageByPhone(Message message);
}
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
@@ -82,26 +82,29 @@
    @Transactional(rollbackFor = Exception.class)
    public String sendMessage(Message message) {
        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);
        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);
            }
        }
        ArrayList<Long> ids = new ArrayList<>();
        message.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
        for (String receive : message.getTargetTo().split(",")) {
            Message sendMessage = new Message();
            BeanUtils.copyProperties(message, sendMessage);
            sendMessage.setCreateTime(new Date());
            sendMessage.setSendTime(new Date());
            sendMessage.setTargetTo(receive);
            sendMessage.setSendTime(new Date());
            this.save(sendMessage);
            ids.add(sendMessage.getId());
        if (message.getId()==null) {
            for (String receive : message.getTargetTo().split(",")) {
                Message sendMessage = new Message();
                BeanUtils.copyProperties(message, sendMessage);
                sendMessage.setCreateTime(new Date());
                sendMessage.setSendTime(new Date());
                sendMessage.setTargetTo(receive);
                sendMessage.setSendTime(new Date());
                this.save(sendMessage);
                ids.add(sendMessage.getId());
            }
        }
        switch (message.getChannelCode()) {
            //邮件发送
@@ -176,6 +179,63 @@
        }
    }
    @Override
    @SneakyThrows
    public String sendMessageByPhone(Message message) {
        Message sendMessage = new Message();
        BeanUtils.copyProperties(message, sendMessage);
        sendMessage.setCreateTime(new Date());
        sendMessage.setSendTime(new Date());
        sendMessage.setSendTime(new Date());
        this.save(sendMessage);
        String context = "【" + message.getHead() + "】" + message.getBody();
        String addSerial = "";
        SendReq sendReq = new SendReq();
        sendReq.setEcName(ecName);
        sendReq.setApId(apId);
        sendReq.setSign(sign);
        sendReq.setContext(context);
        sendReq.setMobiles(message.getPhoneNumber());
        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")) {
            sendedMessage.setStatus(2);
            sendedMessage.setRespondResult("发送成功");
            sendedMessage.setId(sendMessage.getId());
            sendedMessage.setUpdateTime(new Date());
            sendedMessage.setSendTime(new Date());
            messageMapper.updateById(sendedMessage);
            return "send message success!";
        } 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!";
        }
    }
    //发送邮件
    @SneakyThrows
    private void sendMail(Message message) {
ycl-platform/src/main/java/com/ycl/vo/message/MessageVO.java
@@ -64,6 +64,9 @@
    @ApiModelProperty(value = "发送者")
    private String targetFrom;
    @ApiModelProperty(value = "接收者")
    private Integer targetTo;
    /**
     * 发送时间
     */
@@ -76,9 +79,6 @@
    @ApiModelProperty(value = "状态0-未发布1-已发布")
    private Integer status;
    @ApiModelProperty(value = "创建人")
    private String createUser;
    /**
     * 创建时间
     */
@@ -88,4 +88,10 @@
    @ApiModelProperty(value = "响应结果")
    private String respondResult;
    @ApiModelProperty(value = "代码")
    private String channelCode;
    @ApiModelProperty(value = "消息类型")
    private Integer messageType;
}
ycl-platform/src/main/resources/mapper/message/MessageMapper.xml
@@ -37,7 +37,7 @@
            resultType="com.ycl.vo.message.MessageVO">
        SELECT
        t1.id,
        t2.username as targetFrom,
        t1.target_from,
        t3.column_name as messageTypeName,
        t1.`status`,
        t1.body,
@@ -45,10 +45,12 @@
        t1.create_time,
        t1.respond_result,
        t1.head,
        t1.target_to,
        t1.message_type,
        t1.channel_code,
        t4.username as createUser
        FROM
        `ums_message` t1
        LEFT JOIN ums_admin t2 ON t1.target_from = t2.id
        left join ums_admin t4 on t1.create_user = t4.id
        LEFT JOIN ums_message_column t3 ON t3.id = t1.message_type
        <where>
ycl-platform/src/main/resources/mapper/trend/TrendAnalysisMapper.xml
@@ -21,7 +21,6 @@
        </where>
        GROUP BY
        t1.video_point_id
        ORDER BY
        count DESC
    </select>