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