zhongrj
2023-05-24 3a8b3037e31dfc698205a047b897cb6843f7e180
短信发送记录保存修改,新增短信发送结果保存即关联
8 files modified
7 files added
421 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java 73 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsRecordController.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsResultController.java 112 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsRecord.java 31 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsResult.java 39 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsRecordMapper.java 12 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsRecordMapper.xml 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsResultMapper.java 23 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsResultMapper.xml 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsRecordService.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsResultService.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsRecordServiceImpl.java 18 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsResultServiceImpl.java 33 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsRecordVO.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsResultVO.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
@@ -4,7 +4,9 @@
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.sm.sms.entity.SmsRecord;
import cn.gistack.sm.sms.entity.SmsRequest;
import cn.gistack.sm.sms.entity.SmsResult;
import cn.gistack.sm.sms.service.ISmsRecordService;
import cn.gistack.sm.sms.service.ISmsResultService;
import cn.gistack.sm.sms.util.SmsUtils;
import cn.gistack.system.user.entity.User;
import cn.gistack.system.user.feign.IUserClient;
@@ -35,6 +37,8 @@
    private final ISmsRecordService smsRecordService;
    private final ISmsResultService smsResultService;
    private final BladeRedis bladeRedis;
    private final IUserClient userClient;
@@ -64,7 +68,10 @@
            String sendMsg = SmsUtils.sendMsg(request);
            JSONObject jsonObject = JSON.parseObject(sendMsg);
            // 记录发送记录操作
            saveSendRecord(request, sendMsg);
            SmsResult smsResult = saveSendResult(request, 1);
            if (null != smsResult){
                saveSendRecord(request, sendMsg,smsResult.getId());
            }
            // 保存验证码到 redis
            saveCodeForRedis(request.getUserNumber(), randNumber);
            // 返回发送信息
@@ -123,16 +130,46 @@
     * 发送记录保存
     * @param request 发送信息
     * @param sendMsg 响应数据
     * @param resultId 发送结果id
     */
    private void saveSendRecord(SMSSendRequest request, String sendMsg) {
    private void saveSendRecord(SMSSendRequest request, String sendMsg,Long resultId) {
        // 在保存明细
        SmsRecord smsRecord = new SmsRecord();
        smsRecord.setPhone(request.getUserNumber());
//        smsRecord.setPhone(request.getUserNumber());
        smsRecord.setTel(request.getUserNumber());
        smsRecord.setContent(request.getMessageContent());
        smsRecord.setTemplateId(request.getTemplateId());
        smsRecord.setResContent(sendMsg);
        smsRecord.setResultId(resultId);
        // 解析 sendMsg
        JSONObject jsonObject = JSON.parseObject(sendMsg);
        smsRecord.setResponseStatus(jsonObject.getString("code"));
        smsRecord.setResponseMsg(jsonObject.getString("msg"));
        //插入记录
        smsRecordService.save(smsRecord);
    }
    /**
     * 发送记录保存
     * @param request 发送信息
     * @param number 号码个数
     */
    private SmsResult saveSendResult(SMSSendRequest request,Integer number) {
        // 先保存结果表
        SmsResult smsResult = new SmsResult();
        smsResult.setTemplateId(request.getTemplateId());
        smsResult.setContent(request.getMessageContent());
        smsResult.setNumber(number);
        //插入记录
        boolean save = smsResultService.save(smsResult);
        if (save){
            return smsResult;
        }
        // 返回
        return null;
    }
    /**
     * 发送邮件提醒
@@ -143,6 +180,12 @@
    public R sendEmailMsg(@RequestBody SmsRequest smsRequest){
        // 处理数据(可能是多个手机号情况)
        List<String> list = Arrays.asList(smsRequest.getPhone().split(","));
        // 保存发送结果
        // 记录保存
        SMSSendRequest request = new SMSSendRequest();
        request.setMessageContent(smsRequest.getContent());
        request.setTemplateId("2431012165299");
        SmsResult smsResult = saveSendResult(request, list.size());
        // 遍历
        for (String phone : list) {
            DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest();
@@ -153,21 +196,23 @@
                // 发送邮件短信
                String dynSendMsg = SmsUtils.dynSendMethod(dynSMSSendRequest);
                // 记录保存
                SMSSendRequest request = new SMSSendRequest();
                request.setUserNumber(phone);
                request.setMessageContent(smsRequest.getContent());
                request.setTemplateId(dynSMSSendRequest.getTemplateId());
                // 记录发送记录操作
                saveSendRecord(request, dynSendMsg);
                if (null != smsResult) {
                    SMSSendRequest smsSendRequest = new SMSSendRequest();
                    smsSendRequest.setUserNumber(phone);
                    smsSendRequest.setMessageContent(smsRequest.getContent());
                    smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
                    // 记录发送记录操作
                    saveSendRecord(smsSendRequest, dynSendMsg,smsResult.getId());
                }
            }else {
                // 手机号有误记录
                // 记录保存
                SMSSendRequest request = new SMSSendRequest();
                request.setUserNumber(phone);
                request.setMessageContent(smsRequest.getContent());
                request.setTemplateId(dynSMSSendRequest.getTemplateId());
                SMSSendRequest smsSendRequest = new SMSSendRequest();
                smsSendRequest.setUserNumber(phone);
                smsSendRequest.setMessageContent(smsRequest.getContent());
                smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
                // 记录发送记录操作
                saveSendRecord(request, "手机号错误未发送...");
                saveSendRecord(smsSendRequest, "手机号错误未发送...",null);
            }
        }
        return R.status(true);
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsRecordController.java
@@ -2,6 +2,7 @@
import cn.gistack.sm.sms.entity.SmsRecord;
import cn.gistack.sm.sms.service.ISmsRecordService;
import cn.gistack.sm.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -40,6 +41,18 @@
   }
   /**
    * 自定义分页列表查询
    * @param query 分页查询对象
    * @param smsRecord
    * @return
    */
   @ApiOperation(value="短信发送记录-自定义分页列表查询", notes="短信发送记录-自定义分页列表查询")
   @GetMapping(value = "/page")
   public R selectSmsRecordPage(SmsRecordVO smsRecord, Query query) {
       return R.data(smsRecordService.selectSmsRecordPage(Condition.getPage(query), smsRecord));
   }
   /**
    * 添加
    */
   @ApiOperation(value="短信发送记录-添加", notes="短信发送记录-添加")
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsResultController.java
New file
@@ -0,0 +1,112 @@
package cn.gistack.sm.sms.controller;
import cn.gistack.sm.sms.entity.SmsResult;
import cn.gistack.sm.sms.service.ISmsResultService;
import cn.gistack.sm.sms.vo.SmsResultVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
 * 短信发送结果控制层
 * @author zhongrj
 * @date 2023-04-23
*/
@Slf4j
@Api(tags="短信发送结果")
@RestController
@RequestMapping("/smsResult/smsResult")
@AllArgsConstructor
public class SmsResultController extends BladeController {
   private ISmsResultService smsResultService;
   /**
    * 分页列表查询
    * @return
    */
   @ApiOperation(value="短信发送结果-分页列表查询", notes="短信发送结果-分页列表查询")
   @GetMapping(value = "/list")
   public R queryPageList(SmsResult smsResult, Query query) {
          IPage<SmsResult> pageList = smsResultService.page(Condition.getPage(query), Condition.getQueryWrapper(smsResult));
       return R.data(pageList);
   }
   /**
    * 自定义分页列表查询
    * @param query 分页查询对象
    * @param smsResult
    * @return
    */
   @ApiOperation(value="短信发送结果-自定义分页列表查询", notes="短信发送结果-自定义分页列表查询")
   @GetMapping(value = "/page")
   public R selectSmsResultPage(SmsResultVO smsResult, Query query) {
       return R.data(smsResultService.selectSmsResultPage(Condition.getPage(query), smsResult));
   }
   /**
    * 添加
    */
   @ApiOperation(value="短信发送结果-添加", notes="短信发送结果-添加")
   @PostMapping(value = "/add")
   public R add(@RequestBody SmsResult smsResult) {
       return R.data(smsResultService.save(smsResult));
   }
   /**
    * 编辑
    * @return
    */
   @ApiOperation(value="短信发送结果-编辑", notes="短信发送结果-编辑")
   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
   public R edit(@RequestBody SmsResult smsResult) {
       return R.data(smsResultService.updateById(smsResult));
   }
   /**
    * 通过id删除
    *
    * @param id
    * @return
    */
   @ApiOperation(value="短信发送结果-通过id删除", notes="短信发送结果-通过id删除")
   @PostMapping(value = "/delete")
   public R delete(@RequestParam(name="id",required=true) String id) {
       return R.data(smsResultService.removeById(id));
   }
   /**
    * 批量删除
    *
    * @param ids
    * @return
    */
   @ApiOperation(value="短信发送结果-批量删除", notes="短信发送结果-批量删除")
   @PostMapping(value = "/deleteBatch")
   public R deleteBatch(@RequestParam(name="ids",required=true) String ids) {
       return R.data(smsResultService.removeByIds(Arrays.asList(ids.split(","))));
   }
   /**
    * 通过id查询
    *
    * @param id
    * @return
    */
   @ApiOperation(value="短信发送结果-通过id查询", notes="短信发送结果-通过id查询")
   @GetMapping(value = "/queryById")
   public R queryById(@RequestParam(name="id",required=true) String id) {
       SmsResult SmsResult = smsResultService.getById(id);
       return R.data(SmsResult);
   }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsRecord.java
@@ -1,6 +1,8 @@
package cn.gistack.sm.sms.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -24,9 +26,15 @@
    private String templateId;
    /**
     * 手机号(可能有多个,以英文逗号分隔)
     * 手机号
     */
    @ApiModelProperty(value = "手机号(可能有多个,以英文逗号分隔)")
    @ApiModelProperty(value = "手机号")
    private String tel;
    /**
     * 手机号(废弃)
     */
    @ApiModelProperty(value = "手机号(废弃)")
    private String phone;
    /**
@@ -41,4 +49,23 @@
    @ApiModelProperty(value = "响应内容")
    private String resContent;
    /**
     * 响应状态
     */
    @ApiModelProperty(value = "响应状态")
    private String responseStatus;
    /**
     * 响应消息
     */
    @ApiModelProperty(value = "响应消息")
    private String responseMsg;
    /**
     * 响应消息
     */
    @ApiModelProperty(value = "响应消息")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long resultId;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsResult.java
New file
@@ -0,0 +1,39 @@
package cn.gistack.sm.sms.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * 短信发送结果
 */
@Data
@TableName("sm_sms_result")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "sm_sms_result对象", description = "短信发送结果")
public class SmsResult extends BaseEntity {
    /**
     * 模板id
     */
    @ApiModelProperty(value = "模板id")
    private String templateId;
    /**
     * 发送号码个数
     */
    @ApiModelProperty(value = "发送号码个数")
    private Integer number;
    /**
     * 消息内容
     */
    @ApiModelProperty(value = "消息内容")
    private String content;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsRecordMapper.java
@@ -1,7 +1,12 @@
package cn.gistack.sm.sms.mapper;
import cn.gistack.sm.sms.entity.SmsRecord;
import cn.gistack.sm.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 短信发送记录
@@ -9,4 +14,11 @@
 */
public interface SmsRecordMapper extends BaseMapper<SmsRecord> {
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsRecord
     * @return
     */
    List<SmsRecordVO> selectSmsRecordPage(IPage<SmsRecordVO> page,@Param("smsRecord") SmsRecordVO smsRecord);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsRecordMapper.xml
@@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.gistack.sm.sms.mapper.SmsRecordMapper">
    <!--自定义分页列表查询-->
    <select id="selectSmsRecordPage" resultType="cn.gistack.sm.sms.vo.SmsRecordVO">
        select * from sm_sms_record where 1=1 and is_deleted = 0
        <if test="smsRecord.phone!=null and smsRecord.phone!=''">
            and phone like concat(concat('%',#{smsRecord.phone}),'%')
        </if>
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsResultMapper.java
New file
@@ -0,0 +1,23 @@
package cn.gistack.sm.sms.mapper;
import cn.gistack.sm.sms.entity.SmsResult;
import cn.gistack.sm.sms.vo.SmsResultVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 短信发送记录
 * @author zhongrj
 */
public interface SmsResultMapper extends BaseMapper<SmsResult> {
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsResult
     * @return
     */
    List<SmsResultVO> selectSmsResultPage(IPage<SmsResultVO> page,@Param("smsResult") SmsResultVO smsResult);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsResultMapper.xml
New file
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.gistack.sm.sms.mapper.SmsResultMapper">
    <!--自定义分页列表查询-->
    <select id="selectSmsResultPage" resultType="cn.gistack.sm.sms.vo.SmsResultVO">
        select * from sm_sms_result where 1=1 and is_deleted = 0
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsRecordService.java
@@ -1,7 +1,17 @@
package cn.gistack.sm.sms.service;
import cn.gistack.sm.sms.entity.SmsRecord;
import cn.gistack.sm.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
public interface ISmsRecordService extends BaseService<SmsRecord> {
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsRecord
     * @return
     */
    Object selectSmsRecordPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsResultService.java
New file
@@ -0,0 +1,17 @@
package cn.gistack.sm.sms.service;
import cn.gistack.sm.sms.entity.SmsResult;
import cn.gistack.sm.sms.vo.SmsResultVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
public interface ISmsResultService extends BaseService<SmsResult> {
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsResult
     * @return
     */
    Object selectSmsResultPage(IPage<SmsResultVO> page, SmsResultVO smsResult);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsRecordServiceImpl.java
@@ -3,6 +3,8 @@
import cn.gistack.sm.sms.entity.SmsRecord;
import cn.gistack.sm.sms.mapper.SmsRecordMapper;
import cn.gistack.sm.sms.service.ISmsRecordService;
import cn.gistack.sm.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
@@ -12,4 +14,20 @@
 */
@Service
public class SmsRecordServiceImpl extends BaseServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsRecord
     * @return
     */
    @Override
    public Object selectSmsRecordPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord) {
        if (null!=smsRecord.getIsExport()){
            // 导出,不分页
            return baseMapper.selectSmsRecordPage(null,smsRecord);
        }
        // 查询返回
        return page.setRecords(baseMapper.selectSmsRecordPage(page,smsRecord));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsResultServiceImpl.java
New file
@@ -0,0 +1,33 @@
package cn.gistack.sm.sms.service.impl;
import cn.gistack.sm.sms.entity.SmsResult;
import cn.gistack.sm.sms.mapper.SmsResultMapper;
import cn.gistack.sm.sms.service.ISmsResultService;
import cn.gistack.sm.sms.vo.SmsResultVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
/**
 * 短信发送结果
 * @author zhongrj
 */
@Service
public class SmsResultServiceImpl extends BaseServiceImpl<SmsResultMapper, SmsResult> implements ISmsResultService {
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsResult
     * @return
     */
    @Override
    public Object selectSmsResultPage(IPage<SmsResultVO> page, SmsResultVO smsResult) {
        if (null!=smsResult.getIsExport()){
            // 导出,不分页
            return baseMapper.selectSmsResultPage(null,smsResult);
        }
        // 查询返回
        return page.setRecords(baseMapper.selectSmsResultPage(page,smsResult));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsRecordVO.java
@@ -9,4 +9,9 @@
 */
@Data
public class SmsRecordVO extends SmsRecord {
    /**
     * 是否导出,不为空是导出,不分页
     */
    private Integer isExport;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsResultVO.java
New file
@@ -0,0 +1,17 @@
package cn.gistack.sm.sms.vo;
import cn.gistack.sm.sms.entity.SmsResult;
import lombok.Data;
/**
 * 短信发送结果vo
 * @author zhongrj
 */
@Data
public class SmsResultVO extends SmsResult {
    /**
     * 是否导出,不为空是导出,不分页
     */
    private Integer isExport;
}