From c885a03818d37dceb22c558b9f23164e1f2ae749 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期五, 27 十二月 2024 10:43:58 +0800 Subject: [PATCH] add:阿里云短信模板获取签名和模板信息3 --- src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java | 17 +++++ src/main/java/com/mzl/flower/web/v2/sms/SmsTaskDetailController.java | 24 ++++++- src/main/java/com/mzl/flower/service/impl/sms/SmsTaskDetailServiceImpl.java | 24 +++++-- src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java | 7 + src/main/java/com/mzl/flower/dto/response/sms/SmsPhoneResultVO.java | 17 +++++ src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java | 21 +++++-- src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDetailQueryDTO.java | 11 +++ src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java | 25 +++++-- src/main/resources/mapper/sms/SmsTaskDetailMapper.xml | 22 ------ 9 files changed, 119 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDetailQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDetailQueryDTO.java new file mode 100644 index 0000000..634169f --- /dev/null +++ b/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDetailQueryDTO.java @@ -0,0 +1,11 @@ +package com.mzl.flower.dto.request.sms; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SmsTaskDetailQueryDTO { + @ApiModelProperty(value = "任务ID") + private Long smsTaskId; + +} diff --git a/src/main/java/com/mzl/flower/dto/response/sms/SmsPhoneResultVO.java b/src/main/java/com/mzl/flower/dto/response/sms/SmsPhoneResultVO.java new file mode 100644 index 0000000..0288899 --- /dev/null +++ b/src/main/java/com/mzl/flower/dto/response/sms/SmsPhoneResultVO.java @@ -0,0 +1,17 @@ +package com.mzl.flower.dto.response.sms; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SmsPhoneResultVO { + + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("接收号码") + private String phone; + + @ApiModelProperty("发送结果") + private String result; +} diff --git a/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java b/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java index 768aad3..dfd75d2 100644 --- a/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java +++ b/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java @@ -4,20 +4,29 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data public class SmsTaskDetailVO extends AbstractTransDTO { @ApiModelProperty(value = "任务详情id") private Long id; - @ApiModelProperty("短信任务表ID") - private Long smsTaskId; + @ApiModelProperty("任务名称") + private String smsTaskName; - @ApiModelProperty("短信模板表ID") - private Long smsTemplateId; + @ApiModelProperty("模板名称") + private String smsTemplateName; - @ApiModelProperty("接收号码") - private String phone; + @ApiModelProperty("号码数量") + private Long totalNum; - @ApiModelProperty("发送结果") - private String result; + @ApiModelProperty("成功数量") + private Long successNum; + + @ApiModelProperty("失败数量") + private Long failureNum; + + @ApiModelProperty("发送中数量") + private Long sendingNum; + } diff --git a/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java b/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java index d0c1bfb..0342bbe 100644 --- a/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java +++ b/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java @@ -1,11 +1,14 @@ package com.mzl.flower.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.dto.request.sms.SmsTaskDetailQueryDTO; import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO; +import com.mzl.flower.dto.response.sms.SmsPhoneResultVO; import com.mzl.flower.dto.response.sms.SmsTaskDetailVO; import com.mzl.flower.entity.SmsTaskDetailDO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -19,5 +22,17 @@ */ public interface SmsTaskDetailMapper extends BaseMapper<SmsTaskDetailDO> { - List<SmsTaskDetailVO> queryPage(@Param("dto") SmsTaskQueryDTO dto, Page page); + List<SmsPhoneResultVO> queryPage(@Param("dto") SmsTaskDetailQueryDTO dto, Page page); + + + @Select("SELECT\n" + + "\tt.id,\n" + + "\tt.NAME AS smsTaskName ,\n" + + "\tt.num as totalNum,\n" + + "\tst.`name` as smsTemplateName\n" + + "FROM\n" + + "\tt_sms_task t\n" + + "\tLEFT JOIN t_sms_template st ON t.sms_template_id = st.id\n" + + "\tleft join t_sms_task_detail std ON t.id = std.sms_task_id") + SmsTaskDetailVO getCountBySmsTaskId(Long id); } diff --git a/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskDetailServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskDetailServiceImpl.java index cd6634b..df99b19 100644 --- a/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskDetailServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskDetailServiceImpl.java @@ -1,23 +1,24 @@ package com.mzl.flower.service.impl.sms; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mzl.flower.config.exception.ValidationException; +import com.mzl.flower.dto.request.sms.SmsTaskDetailQueryDTO; +import com.mzl.flower.dto.response.sms.SmsPhoneResultVO; import com.mzl.flower.dto.response.sms.SmsTaskDetailVO; -import com.mzl.flower.dto.response.sms.SmsTaskVO; import com.mzl.flower.entity.SmsTaskDetailDO; import com.mzl.flower.mapper.SmsTaskDetailMapper; -import com.mzl.flower.mapper.SmsTaskMapper; import com.mzl.flower.service.sms.SmsTaskDetailService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import java.util.List; /** * <p> - * 服务实现类 + * 服务实现类 * </p> * * @author @TaoJie @@ -29,10 +30,19 @@ public class SmsTaskDetailServiceImpl extends ServiceImpl<SmsTaskDetailMapper, SmsTaskDetailDO> implements SmsTaskDetailService { private final SmsTaskDetailMapper smsTaskDetailMapper; + @Override - public Page<SmsTaskDetailVO> queryPage(SmsTaskQueryDTO dto, Page page) { - List<SmsTaskDetailVO> list = smsTaskDetailMapper.queryPage(dto, page); + public Page<SmsPhoneResultVO> queryPage(SmsTaskDetailQueryDTO dto, Page page) { + if (StringUtils.isEmpty(dto.getSmsTaskId())) { + throw new ValidationException("任务ID不能为空"); + } + List<SmsPhoneResultVO> list = smsTaskDetailMapper.queryPage(dto, page); page.setRecords(list); return page; } + + @Override + public SmsTaskDetailVO getCountBySmsTaskId(Long id) { + return smsTaskDetailMapper.getCountBySmsTaskId(id); + } } diff --git a/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java index bac4c2e..accd06b 100644 --- a/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java @@ -137,10 +137,13 @@ try { // 下载Excel文件到本地临时文件 File tempFile = File.createTempFile("temp", ".xlsx"); - ossClient.getObject(new GetObjectRequest(bucketName, smsTaskDTO.getFileUrl()), tempFile); + String fileUrl = smsTaskDTO.getFileUrl(); + String objectKey = fileUrl.replaceFirst("^https?://[^/]+/", ""); // 去掉协议部分 + ossClient.getObject(new GetObjectRequest(bucketName, objectKey), tempFile); // 解析Excel文件 - try (FileInputStream inputStream = new FileInputStream(tempFile); Workbook workbook = new XSSFWorkbook(inputStream)) { + try (FileInputStream inputStream = new FileInputStream(tempFile); + Workbook workbook = new XSSFWorkbook(inputStream)) { Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 int rowCount = sheet.getPhysicalNumberOfRows(); @@ -156,8 +159,14 @@ Row row = sheet.getRow(i); if (row != null) { Cell cell = row.getCell(0); // 假设手机号在第一列 - if (cell != null && cell.getCellType() == CellType.STRING) { - String phoneNumber = cell.getStringCellValue(); + if (cell != null ) { + String phoneNumber = ""; + if (cell.getCellType() == CellType.STRING) { + phoneNumber = cell.getStringCellValue(); + } else if (cell.getCellType() == CellType.NUMERIC) { + // 将数字类型的手机号转换为字符串 + phoneNumber = String.valueOf((long) cell.getNumericCellValue()); + } if (!PHONE_NUMBER_PATTERN.matcher(phoneNumber).matches()) { message.append("第" + (i + 1) + "行手机号" + phoneNumber + "格式不正确"); isValid = false; @@ -166,7 +175,7 @@ phones.append(phoneNumber).append("\n"); } } else { - message.append("行上的单元格为空或无效 " + (i + 1)); + message.append("第" + (i + 1)+ "行上的单元格为空或无效 "); isValid = false; break; // 退出循环 } @@ -181,7 +190,7 @@ throw new ValidationException(message.toString()); } else { smsTaskDTO.setPhones(phones.toString()); - smsTaskDTO.setNum((long) rowCount); + smsTaskDTO.setNum((long) rowCount - 1); } } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java b/src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java index 2e52455..073a846 100644 --- a/src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java +++ b/src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java @@ -2,7 +2,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO; +import com.mzl.flower.dto.request.sms.SmsTaskDetailQueryDTO; +import com.mzl.flower.dto.response.sms.SmsPhoneResultVO; import com.mzl.flower.dto.response.sms.SmsTaskDetailVO; import com.mzl.flower.entity.SmsTaskDetailDO; @@ -16,6 +17,8 @@ */ public interface SmsTaskDetailService extends IService<SmsTaskDetailDO> { - Page<SmsTaskDetailVO> queryPage(SmsTaskQueryDTO dto, Page page); + Page<SmsPhoneResultVO> queryPage(SmsTaskDetailQueryDTO dto, Page page); + + SmsTaskDetailVO getCountBySmsTaskId(Long id); } diff --git a/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskDetailController.java b/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskDetailController.java index 581c6aa..8d04941 100644 --- a/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskDetailController.java +++ b/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskDetailController.java @@ -5,7 +5,9 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; +import com.mzl.flower.dto.request.sms.SmsTaskDetailQueryDTO; import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO; +import com.mzl.flower.dto.response.sms.SmsPhoneResultVO; import com.mzl.flower.dto.response.sms.SmsTaskDetailVO; import com.mzl.flower.service.sms.SmsTaskDetailService; import io.swagger.annotations.Api; @@ -16,20 +18,32 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.constraints.NotNull; + /** -* @author @TaoJie -* @since 2024-12-25 -*/ + * @author @TaoJie + * @since 2024-12-25 + */ @Api(value = "任务详情管理", tags = "任务详情管理") @RestController @RequestMapping("/v2/sms-task-detail") @RequiredArgsConstructor -public class SmsTaskDetailController extends BaseController { +public class SmsTaskDetailController extends BaseController { private final SmsTaskDetailService smsTaskDetailService; + @GetMapping("/list") @ApiOperation(value = "任务详情列表", httpMethod = "GET") - public ResponseEntity<ReturnDataDTO<Page<SmsTaskDetailVO>>> getSmsTaskList(Page page, SmsTaskQueryDTO dto) { + public ResponseEntity<ReturnDataDTO<Page<SmsPhoneResultVO>>> getSmsTaskList(Page page, SmsTaskDetailQueryDTO dto) { return returnData(R.SUCCESS.getCode(), smsTaskDetailService.queryPage(dto, page)); } + @GetMapping("/taskStatistics") + @ApiOperation(value = "任务详情列表", httpMethod = "GET") + public ResponseEntity<ReturnDataDTO<SmsTaskDetailVO> >taskStatistics(@NotNull(message = "id不能为空") Long id ) { + return returnData(R.SUCCESS.getCode(), smsTaskDetailService.getCountBySmsTaskId(id)); + } + + + + } diff --git a/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml b/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml index f946e3b..6d43a68 100644 --- a/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml +++ b/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml @@ -5,27 +5,9 @@ <select id="queryPage" resultType="com.mzl.flower.dto.response.sms.SmsTaskDetailVO"> select t.* from t_sms_task_detail t where t.deleted= 0 - <if test="dto.id!=null "> - and t.id = #{dto.id} + <if test="dto.smsTaskId!=null "> + and t.sms_task_id = #{dto.smsTaskId} </if> - <if test="dto.result != null and dto.result != ''"> - and t.result like concat('%', #{dto.result}, '%') - </if> - <if test="dto.phone != null and dto.phone != ''"> - and t.phone like concat('%', #{dto.phone}, '%') - </if> - - <if test="dto.startDate!=null "> - <![CDATA[ - AND t.create_time >= #{dto.startDate} - ]]> - </if> - <if test="dto.endDate!=null "> - <![CDATA[ - AND t.create_time <= #{dto.endDate} - ]]> - </if> - </select> </mapper> -- Gitblit v1.9.3