From 7d7ac69a8af85ab9e67c1dc2c6f52b03d27669e4 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 26 十二月 2024 08:58:19 +0800
Subject: [PATCH] add:阿里云短信模板获取签名和模板信息

---
 src/main/java/com/mzl/flower/web/v2/sms/SmsTemplateController.java          |   90 ++++--
 src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java                |    7 
 src/main/java/com/mzl/flower/web/v2/sms/SmsTaskDetailController.java        |   56 +---
 src/main/resources/mapper/sms/SmsTaskMapper.xml                             |   43 ++-
 src/main/java/com/mzl/flower/service/impl/sms/SmsTaskDetailServiceImpl.java |   18 +
 src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java          |    7 
 src/main/java/com/mzl/flower/service/sms/SmsTaskService.java                |   14 +
 src/main/java/com/mzl/flower/dto/response/sms/SmsTaskVO.java                |   30 ++
 src/main/java/com/mzl/flower/mapper/SmsTaskMapper.java                      |   12 
 src/main/java/com/mzl/flower/service/impl/sms/SmsTemplateServiceImpl.java   |   46 +++
 src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateQueryDTO.java       |   28 ++
 pom.xml                                                                     |    5 
 src/main/java/com/mzl/flower/dto/request/sms/SmsTaskQueryDTO.java           |   37 +++
 src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateDTO.java            |   23 +
 src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java          |   23 +
 src/main/resources/mapper/sms/SmsTaskDetailMapper.xml                       |   38 ++-
 src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDTO.java                |   29 ++
 src/main/java/com/mzl/flower/mapper/SmsTemplateMapper.java                  |    7 
 src/main/java/com/mzl/flower/service/sms/SmsTemplateService.java            |   14 +
 src/main/resources/mapper/sms/SmsTemplateMapper.xml                         |   40 ++-
 src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java       |   46 +++
 src/main/java/com/mzl/flower/web/v2/sms/SmsTaskController.java              |   60 ++--
 22 files changed, 525 insertions(+), 148 deletions(-)

diff --git a/pom.xml b/pom.xml
index ff10f45..700cf89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -275,6 +275,11 @@
             <version>2.4</version>
             <classifier>jdk15</classifier>
         </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dysmsapi20170525</artifactId>
+            <version>3.1.0</version>
+        </dependency>
 
     </dependencies>
 
diff --git a/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDTO.java b/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDTO.java
new file mode 100644
index 0000000..fda2f66
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskDTO.java
@@ -0,0 +1,29 @@
+package com.mzl.flower.dto.request.sms;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SmsTaskDTO {
+    @ApiModelProperty(value = "短信任务管理id")
+    private Long id;
+
+    @ApiModelProperty("短信模板ID")
+    private Long smsTemplateId;
+
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ApiModelProperty("任务类型")
+    private String type;
+
+    @ApiModelProperty("导入文件路径")
+    private String fileUrl;
+
+    @ApiModelProperty("手机号")
+    private String phones;
+
+    @ApiModelProperty("发送数量")
+    private Long num;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskQueryDTO.java
new file mode 100644
index 0000000..a3cd3f7
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/sms/SmsTaskQueryDTO.java
@@ -0,0 +1,37 @@
+package com.mzl.flower.dto.request.sms;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SmsTaskQueryDTO {
+    @ApiModelProperty(value = "短信任务管理id")
+    private Long id;
+
+    @ApiModelProperty("短信模板ID")
+    private Long smsTemplateId;
+
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ApiModelProperty("任务类型")
+    private String type;
+
+    @ApiModelProperty("导入文件路径")
+    private String fileUrl;
+
+    @ApiModelProperty("手机号")
+    private String phones;
+
+    @ApiModelProperty("发送数量")
+    private Long num;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startDate;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endDate;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateDTO.java b/src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateDTO.java
new file mode 100644
index 0000000..58ef814
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateDTO.java
@@ -0,0 +1,23 @@
+package com.mzl.flower.dto.request.sms;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+public class SmsTemplateDTO {
+    @ApiModelProperty(value = "短信模板管理id")
+    private Long id;
+
+    @ApiModelProperty("编码")
+    private String code;
+
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ApiModelProperty("描述")
+    private String description;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateQueryDTO.java
new file mode 100644
index 0000000..545bd0d
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/sms/SmsTemplateQueryDTO.java
@@ -0,0 +1,28 @@
+package com.mzl.flower.dto.request.sms;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Data
+public class SmsTemplateQueryDTO {
+    @ApiModelProperty(value = "短信模板管理id")
+    private Long id;
+
+    @ApiModelProperty("编码")
+    private String code;
+
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ApiModelProperty("描述")
+    private String description;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startDate;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endDate;
+}
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
new file mode 100644
index 0000000..768aad3
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskDetailVO.java
@@ -0,0 +1,23 @@
+package com.mzl.flower.dto.response.sms;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SmsTaskDetailVO extends AbstractTransDTO {
+    @ApiModelProperty(value = "任务详情id")
+    private Long id;
+
+    @ApiModelProperty("短信任务表ID")
+    private Long smsTaskId;
+
+    @ApiModelProperty("短信模板表ID")
+    private Long smsTemplateId;
+
+    @ApiModelProperty("接收号码")
+    private String phone;
+
+    @ApiModelProperty("发送结果")
+    private String result;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskVO.java b/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskVO.java
new file mode 100644
index 0000000..1d0fa35
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/sms/SmsTaskVO.java
@@ -0,0 +1,30 @@
+package com.mzl.flower.dto.response.sms;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SmsTaskVO extends AbstractTransDTO {
+    @ApiModelProperty(value = "短信任务管理id")
+    private Long id;
+
+    @ApiModelProperty("短信模板ID")
+    private Long smsTemplateId;
+
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ApiModelProperty("任务类型")
+    private String type;
+
+    @ApiModelProperty("导入文件路径")
+    private String fileUrl;
+
+    @ApiModelProperty("手机号")
+    private String phones;
+
+    @ApiModelProperty("发送数量")
+    private Long num;
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java b/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java
index d543475..d0c1bfb 100644
--- a/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/SmsTaskDetailMapper.java
@@ -1,7 +1,13 @@
 package com.mzl.flower.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO;
+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 java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,5 @@
  */
 public interface SmsTaskDetailMapper extends BaseMapper<SmsTaskDetailDO> {
 
+    List<SmsTaskDetailVO> queryPage(@Param("dto") SmsTaskQueryDTO dto, Page page);
 }
diff --git a/src/main/java/com/mzl/flower/mapper/SmsTaskMapper.java b/src/main/java/com/mzl/flower/mapper/SmsTaskMapper.java
index 50bbf94..d6aee53 100644
--- a/src/main/java/com/mzl/flower/mapper/SmsTaskMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/SmsTaskMapper.java
@@ -1,11 +1,19 @@
 package com.mzl.flower.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO;
+import com.mzl.flower.dto.request.sms.SmsTemplateQueryDTO;
+import com.mzl.flower.dto.response.sms.SmsTaskVO;
 import com.mzl.flower.entity.SmsTaskDO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mzl.flower.entity.SmsTemplateDO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
- *  Mapper 接口
+ * Mapper 接口
  * </p>
  *
  * @author @TaoJie
@@ -13,4 +21,6 @@
  */
 public interface SmsTaskMapper extends BaseMapper<SmsTaskDO> {
 
+    List<SmsTaskVO> queryPage(@Param("dto") SmsTaskQueryDTO dto, Page page);
+
 }
diff --git a/src/main/java/com/mzl/flower/mapper/SmsTemplateMapper.java b/src/main/java/com/mzl/flower/mapper/SmsTemplateMapper.java
index 88afc16..e1ad8cb 100644
--- a/src/main/java/com/mzl/flower/mapper/SmsTemplateMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/SmsTemplateMapper.java
@@ -1,7 +1,12 @@
 package com.mzl.flower.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.sms.SmsTemplateQueryDTO;
 import com.mzl.flower.entity.SmsTemplateDO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,6 @@
  */
 public interface SmsTemplateMapper extends BaseMapper<SmsTemplateDO> {
 
+    List<SmsTemplateDO> queryPage(@Param("dto") SmsTemplateQueryDTO dto, Page page);
+
 }
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 5d3c427..cd6634b 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,10 +1,19 @@
 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.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 java.util.List;
 
 /**
  * <p>
@@ -15,6 +24,15 @@
  * @since 2024-12-25
  */
 @Service
+@Transactional
+@RequiredArgsConstructor
 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);
+        page.setRecords(list);
+        return page;
+    }
 }
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 e97edc3..9fae099 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
@@ -1,10 +1,21 @@
 package com.mzl.flower.service.impl.sms;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.dto.request.sms.SmsTaskDTO;
+import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO;
+import com.mzl.flower.dto.response.sms.SmsTaskVO;
 import com.mzl.flower.entity.SmsTaskDO;
 import com.mzl.flower.mapper.SmsTaskMapper;
 import com.mzl.flower.service.sms.SmsTaskService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,6 +26,39 @@
  * @since 2024-12-25
  */
 @Service
+@Transactional
+@RequiredArgsConstructor
 public class SmsTaskServiceImpl extends ServiceImpl<SmsTaskMapper, SmsTaskDO> implements SmsTaskService {
 
+    private final SmsTaskMapper smsTaskMapper;
+    @Override
+    public void saveSmsTask(SmsTaskDTO smsTaskDTO) {
+        SmsTaskDO smsTaskDO = new SmsTaskDO();
+        BeanUtils.copyProperties(smsTaskDTO, smsTaskDO);
+        smsTaskMapper.insert(smsTaskDO);
+    }
+
+    @Override
+    public void updateSmsTask(SmsTaskDTO smsTaskDTO) {
+        SmsTaskDO smsTaskDO = smsTaskMapper.selectById(smsTaskDTO.getId());
+        BeanUtils.copyProperties(smsTaskDTO, smsTaskDO);
+        smsTaskDO.update(SecurityUtils.getUserId());
+        smsTaskMapper.updateById(smsTaskDO);
+    }
+
+    @Override
+    public void deleteSmsTask(Long id) {
+        SmsTaskDO smsTaskDO = smsTaskMapper.selectById(id);
+        if (smsTaskDO == null) {
+            throw new ValidationException("短信任务ID不存在");
+        }
+        smsTaskMapper.deleteById(id);
+    }
+
+    @Override
+    public Page<SmsTaskVO> queryPage(SmsTaskQueryDTO dto, Page page) {
+        List<SmsTaskVO> list = smsTaskMapper.queryPage(dto, page);
+        page.setRecords(list);
+        return page;
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/sms/SmsTemplateServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/sms/SmsTemplateServiceImpl.java
index dc3b2fc..195ec92 100644
--- a/src/main/java/com/mzl/flower/service/impl/sms/SmsTemplateServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/sms/SmsTemplateServiceImpl.java
@@ -1,10 +1,23 @@
 package com.mzl.flower.service.impl.sms;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.dto.request.sms.SmsTemplateDTO;
+import com.mzl.flower.dto.request.sms.SmsTemplateQueryDTO;
+import com.mzl.flower.dto.response.member.MemberVO;
 import com.mzl.flower.entity.SmsTemplateDO;
+import com.mzl.flower.entity.menber.Member;
+import com.mzl.flower.entity.menber.MemberGrowthRecord;
 import com.mzl.flower.mapper.SmsTemplateMapper;
 import com.mzl.flower.service.sms.SmsTemplateService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,6 +28,39 @@
  * @since 2024-12-25
  */
 @Service
+@Transactional
+@RequiredArgsConstructor
 public class SmsTemplateServiceImpl extends ServiceImpl<SmsTemplateMapper, SmsTemplateDO> implements SmsTemplateService {
 
+    private final SmsTemplateMapper smsTemplateMapper;
+    @Override
+    public void saveSmsTemplate(SmsTemplateDTO smsTemplateDTO) {
+        SmsTemplateDO smsTemplateDO = new SmsTemplateDO();
+        BeanUtils.copyProperties(smsTemplateDTO, smsTemplateDO);
+        smsTemplateMapper.insert(smsTemplateDO);
+    }
+
+    @Override
+    public void updateSmsTemplate(SmsTemplateDTO smsTemplateDTO) {
+        SmsTemplateDO smsTemplateDO = smsTemplateMapper.selectById(smsTemplateDTO.getId());
+        BeanUtils.copyProperties(smsTemplateDTO, smsTemplateDO);
+        smsTemplateDO.update(SecurityUtils.getUserId());
+        smsTemplateMapper.updateById(smsTemplateDO);
+    }
+
+    @Override
+    public void deleteSmsTemplate(Long id) {
+        SmsTemplateDO smsTemplateDO = smsTemplateMapper.selectById(id);
+        if (smsTemplateDO == null) {
+            throw new ValidationException("短信模板ID不存在");
+        }
+        smsTemplateMapper.deleteById(id);
+    }
+
+    @Override
+    public Page<SmsTemplateDO> queryPage(SmsTemplateQueryDTO dto, Page page) {
+        List<SmsTemplateDO> list = smsTemplateMapper.queryPage(dto, page);
+        page.setRecords(list);
+        return page;
+    }
 }
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 7a7683d..2e52455 100644
--- a/src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java
+++ b/src/main/java/com/mzl/flower/service/sms/SmsTaskDetailService.java
@@ -1,7 +1,10 @@
 package com.mzl.flower.service.sms;
 
-import com.mzl.flower.entity.SmsTaskDetailDO;
+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.response.sms.SmsTaskDetailVO;
+import com.mzl.flower.entity.SmsTaskDetailDO;
 
 /**
  * <p>
@@ -13,4 +16,6 @@
  */
 public interface SmsTaskDetailService extends IService<SmsTaskDetailDO> {
 
+    Page<SmsTaskDetailVO> queryPage(SmsTaskQueryDTO dto, Page page);
 }
+
diff --git a/src/main/java/com/mzl/flower/service/sms/SmsTaskService.java b/src/main/java/com/mzl/flower/service/sms/SmsTaskService.java
index 32d9ada..0d53c1d 100644
--- a/src/main/java/com/mzl/flower/service/sms/SmsTaskService.java
+++ b/src/main/java/com/mzl/flower/service/sms/SmsTaskService.java
@@ -1,7 +1,11 @@
 package com.mzl.flower.service.sms;
 
-import com.mzl.flower.entity.SmsTaskDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mzl.flower.dto.request.sms.SmsTaskDTO;
+import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO;
+import com.mzl.flower.dto.response.sms.SmsTaskVO;
+import com.mzl.flower.entity.SmsTaskDO;
 
 /**
  * <p>
@@ -13,4 +17,12 @@
  */
 public interface SmsTaskService extends IService<SmsTaskDO> {
 
+    void saveSmsTask(SmsTaskDTO smsTaskDTO);
+
+    void updateSmsTask(SmsTaskDTO smsTaskDTO);
+
+    void deleteSmsTask(Long id);
+
+    Page<SmsTaskVO> queryPage(SmsTaskQueryDTO dto, Page page);
+
 }
diff --git a/src/main/java/com/mzl/flower/service/sms/SmsTemplateService.java b/src/main/java/com/mzl/flower/service/sms/SmsTemplateService.java
index 41f3fc2..934bc3b 100644
--- a/src/main/java/com/mzl/flower/service/sms/SmsTemplateService.java
+++ b/src/main/java/com/mzl/flower/service/sms/SmsTemplateService.java
@@ -1,11 +1,15 @@
 package com.mzl.flower.service.sms;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.sms.SmsTemplateDTO;
+import com.mzl.flower.dto.request.sms.SmsTemplateQueryDTO;
+import com.mzl.flower.dto.response.member.MemberVO;
 import com.mzl.flower.entity.SmsTemplateDO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>
- *  服务类
+ * 服务类
  * </p>
  *
  * @author @TaoJie
@@ -13,4 +17,12 @@
  */
 public interface SmsTemplateService extends IService<SmsTemplateDO> {
 
+    void saveSmsTemplate(SmsTemplateDTO smsTemplateDTO);
+
+
+    void updateSmsTemplate(SmsTemplateDTO smsTemplateDTO);
+
+    void deleteSmsTemplate(Long id);
+
+    Page<SmsTemplateDO> queryPage(SmsTemplateQueryDTO dto, Page page);
 }
diff --git a/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskController.java b/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskController.java
index a5f22de..b43b2fb 100644
--- a/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskController.java
+++ b/src/main/java/com/mzl/flower/web/v2/sms/SmsTaskController.java
@@ -5,59 +5,63 @@
 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.SmsTaskDTO;
+import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO;
+import com.mzl.flower.dto.request.sms.SmsTemplateDTO;
+import com.mzl.flower.dto.request.sms.SmsTemplateQueryDTO;
+import com.mzl.flower.dto.response.sms.SmsTaskVO;
+import com.mzl.flower.entity.SmsTemplateDO;
+import com.mzl.flower.service.sms.SmsTaskService;
+import com.mzl.flower.service.sms.SmsTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 import com.mzl.flower.entity.SmsTaskDO;
 
 import javax.validation.constraints.Min;
 import javax.validation.constraints.Max;
+import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Positive;
-
-import org.springframework.web.bind.annotation.RestController;
 
 /**
 * @author @TaoJie
 * @since 2024-12-25
 */
+@Api(value = "短信任务管理", tags = "短信任务管理")
 @RestController
 @RequestMapping("/v2/sms-task")
+@RequiredArgsConstructor
 public class SmsTaskController extends BaseController {
 
-    @PostMapping("")
-    public ResponseEntity<ReturnDataDTO> create() {
+    private final SmsTaskService smsTaskService;
+    @PostMapping("/new")
+    @ApiOperation(value = "保存短信任务模板", httpMethod = "POST")
+    public ResponseEntity<ReturnDataDTO> create(@RequestBody SmsTaskDTO smsTaskDTO) {
+        smsTaskService.saveSmsTask(smsTaskDTO);
         return returnData(R.SUCCESS.getCode(), null);
     }
 
-    @PutMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> update(@PathVariable @Positive(message = "{id.positive}") Integer id) {
+    @PostMapping(value = "/edit")
+    @ApiOperation(value = "更新短信任务模板", httpMethod = "POST")
+    public ResponseEntity<ReturnDataDTO> update(@RequestBody SmsTaskDTO smsTaskDTO) {
+        smsTaskService.updateSmsTask(smsTaskDTO);
         return returnData(R.SUCCESS.getCode(), null);
     }
 
-    @DeleteMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> delete(@PathVariable @Positive(message = "{id.positive}") Integer id) {
+    @GetMapping(value = "/delete")
+    @ApiOperation(value = "删除短信任务模板 ", httpMethod = "GET", notes = "ID")
+    public ResponseEntity<ReturnDataDTO> delete(@NotNull(message = "id不能为空") Long id) {
+        smsTaskService.deleteSmsTask(id);
         return returnData(R.SUCCESS.getCode(), null);
     }
 
-    @GetMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) {
-        return null;
+    @GetMapping("/list")
+    @ApiOperation(value = "短信模板任务列表", httpMethod = "GET")
+    public ResponseEntity<ReturnDataDTO<Page<SmsTaskVO>>> getSmsTaskList(Page page, SmsTaskQueryDTO dto) {
+        return returnData(R.SUCCESS.getCode(), smsTaskService.queryPage(dto, page));
     }
 
-    @GetMapping("/page")
-    public ResponseEntity<ReturnDataDTO<Page<SmsTaskDO>>>  page(
-            @RequestParam(name = "page", required = false, defaultValue = "0")
-            @Min(value = 0, message = "{page.number.min}") Integer page,
-            @RequestParam(name = "count", required = false, defaultValue = "10")
-            @Min(value = 1, message = "{page.count.min}")
-            @Max(value = 30, message = "{page.count.max}") Integer count
-    ) {
-        return null;
-    }
 
 }
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 2145c4d..581c6aa 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,61 +5,31 @@
 import com.mzl.flower.base.BaseController;
 import com.mzl.flower.base.R;
 import com.mzl.flower.base.ReturnDataDTO;
-import com.mzl.flower.entity.SmsTemplateDO;
+import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO;
+import com.mzl.flower.dto.response.sms.SmsTaskDetailVO;
+import com.mzl.flower.service.sms.SmsTaskDetailService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
-import com.mzl.flower.entity.SmsTaskDetailDO;
-
-
-import javax.validation.constraints.Min;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Positive;
-
 import org.springframework.web.bind.annotation.RestController;
 
 /**
 * @author @TaoJie
 * @since 2024-12-25
 */
+@Api(value = "任务详情管理", tags = "任务详情管理")
 @RestController
 @RequestMapping("/v2/sms-task-detail")
+@RequiredArgsConstructor
 public class SmsTaskDetailController  extends BaseController {
 
-    @PostMapping("")
-    public ResponseEntity<ReturnDataDTO> create() {
-        return returnData(R.SUCCESS.getCode(), null);
+    private final SmsTaskDetailService smsTaskDetailService;
+    @GetMapping("/list")
+    @ApiOperation(value = "任务详情列表", httpMethod = "GET")
+    public ResponseEntity<ReturnDataDTO<Page<SmsTaskDetailVO>>> getSmsTaskList(Page page, SmsTaskQueryDTO dto) {
+        return returnData(R.SUCCESS.getCode(), smsTaskDetailService.queryPage(dto, page));
     }
-
-    @PutMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> update(@PathVariable @Positive(message = "{id.positive}") Integer id) {
-        return returnData(R.SUCCESS.getCode(), null);
-    }
-
-    @DeleteMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> delete(@PathVariable @Positive(message = "{id.positive}") Integer id) {
-        return returnData(R.SUCCESS.getCode(), null);
-    }
-
-    @GetMapping("/{id}")
-    public  ResponseEntity<ReturnDataDTO> get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) {
-        return returnData(R.SUCCESS.getCode(), null);
-    }
-
-    @GetMapping("/page")
-    public ResponseEntity<ReturnDataDTO<Page<SmsTaskDetailDO>>> page(
-            @RequestParam(name = "page", required = false, defaultValue = "0")
-            @Min(value = 0, message = "{page.number.min}") Integer page,
-            @RequestParam(name = "count", required = false, defaultValue = "10")
-            @Min(value = 1, message = "{page.count.min}")
-            @Max(value = 30, message = "{page.count.max}") Integer count
-    ) {
-        return null;
-    }
-
 }
diff --git a/src/main/java/com/mzl/flower/web/v2/sms/SmsTemplateController.java b/src/main/java/com/mzl/flower/web/v2/sms/SmsTemplateController.java
index 8ab387b..b0adbdf 100644
--- a/src/main/java/com/mzl/flower/web/v2/sms/SmsTemplateController.java
+++ b/src/main/java/com/mzl/flower/web/v2/sms/SmsTemplateController.java
@@ -1,64 +1,90 @@
 package com.mzl.flower.web.v2.sms;
 
 
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyun.dysmsapi20170525.models.QuerySmsTemplateListRequest;
+import com.aliyun.dysmsapi20170525.models.QuerySmsTemplateListResponse;
+import com.aliyun.dysmsapi20170525.models.QuerySmsTemplateListResponseBody;
+import com.aliyun.tea.TeaException;
+import com.aliyun.teautil.models.RuntimeOptions;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mzl.flower.base.BaseController;
 import com.mzl.flower.base.R;
 import com.mzl.flower.base.ReturnDataDTO;
-import com.mzl.flower.dto.response.coupon.CouponTemplatePointVO;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
+import com.mzl.flower.dto.request.sms.SmsTemplateDTO;
+import com.mzl.flower.dto.request.sms.SmsTemplateQueryDTO;
 import com.mzl.flower.entity.SmsTemplateDO;
+import com.mzl.flower.service.sms.SmsTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
 
-import javax.validation.constraints.Min;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Positive;
-
-import org.springframework.web.bind.annotation.RestController;
+import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
 * @author @TaoJie
 * @since 2024-12-25
 */
+@Api(value = "短信模板管理", tags = "短信模板管理")
 @RestController
 @RequestMapping("/v2/sms-template")
+@RequiredArgsConstructor
 public class SmsTemplateController extends BaseController {
 
-    @PostMapping("")
-    public ResponseEntity<ReturnDataDTO> create() {
+    private  final SmsTemplateService smsTemplateService;
+
+    @PostMapping("/new")
+    @ApiOperation(value = "保存短信模板", httpMethod = "POST")
+    public ResponseEntity<ReturnDataDTO> create(@RequestBody SmsTemplateDTO smsTemplateDTO) {
+        smsTemplateService.saveSmsTemplate(smsTemplateDTO);
         return returnData(R.SUCCESS.getCode(), null);
     }
 
-    @PutMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> update(@PathVariable @Positive(message = "{id.positive}") Integer id) {
+    @PostMapping(value = "/edit")
+    @ApiOperation(value = "更新短信模板", httpMethod = "POST")
+    public ResponseEntity<ReturnDataDTO> update(@RequestBody SmsTemplateDTO smsTemplateDTO) {
+        smsTemplateService.updateSmsTemplate(smsTemplateDTO);
         return returnData(R.SUCCESS.getCode(), null);
     }
 
-    @DeleteMapping("/{id}")
-    public ResponseEntity<ReturnDataDTO> delete(@PathVariable @Positive(message = "{id.positive}") Integer id) {
+    @GetMapping(value = "/delete")
+    @ApiOperation(value = "删除短信模板 ", httpMethod = "GET", notes = "ID")
+    public ResponseEntity<ReturnDataDTO> delete(@NotNull(message = "id不能为空") Long id) {
+        smsTemplateService.deleteSmsTemplate(id);
         return returnData(R.SUCCESS.getCode(), null);
     }
 
-    @GetMapping("/{id}")
-    public SmsTemplateDO get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) {
-        return null;
+    @GetMapping("/list")
+    @ApiOperation(value = "短信模板列表", httpMethod = "GET")
+    public ResponseEntity<ReturnDataDTO<Page<SmsTemplateDO>>> getSmsTemplateList(Page page, SmsTemplateQueryDTO dto) {
+        return returnData(R.SUCCESS.getCode(), smsTemplateService.queryPage(dto, page));
     }
 
-    @GetMapping("/page")
-    public ResponseEntity<ReturnDataDTO<Page<SmsTemplateDO>>> page(
-            @RequestParam(name = "page", required = false, defaultValue = "0")
-            @Min(value = 0, message = "{page.number.min}") Integer page,
-            @RequestParam(name = "count", required = false, defaultValue = "10")
-            @Min(value = 1, message = "{page.count.min}")
-            @Max(value = 30, message = "{page.count.max}") Integer count
-    ) {
-        return null;
+    @GetMapping("/template/list")
+    @ApiOperation(value = "短信模板列表", httpMethod = "GET")
+    public ResponseEntity<ReturnDataDTO<Page<SmsTemplateDO>>> getALSmsTemplateList(Page page, SmsTemplateQueryDTO dto) throws Exception {
+        Client client = createClient();
+        QuerySmsTemplateListRequest querySmsTemplateListRequest = new QuerySmsTemplateListRequest();
+        RuntimeOptions runtime = new RuntimeOptions();
+        List<QuerySmsTemplateListResponseBody.QuerySmsTemplateListResponseBodySmsTemplateList> smsTemplateList;
+        try {
+            QuerySmsTemplateListResponse querySmsTemplateListResponse = client.querySmsTemplateListWithOptions(querySmsTemplateListRequest, runtime);
+            smsTemplateList = querySmsTemplateListResponse.getBody().getSmsTemplateList();
+        } catch (TeaException error) {
+            return returnData(R.RUNTIME_EXCEPTION.getCode(), error.getMessage());
+        } catch (Exception _error) {
+            return returnData(R.RUNTIME_EXCEPTION.getCode(), _error.getMessage());
+        }
+        return returnData(R.SUCCESS.getCode(), smsTemplateList);
+    }
+
+    public static Client createClient() throws Exception {
+        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config().setAccessKeyId("LTAI5tFGHa9bwhuEDKH6YPnc").setAccessKeySecret("BrY0BM4pvDXhVKOMLsXzgzlhVe1keQ");
+        config.endpoint = "dysmsapi.aliyuncs.com";
+        return new Client(config);
     }
 
 }
diff --git a/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml b/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml
index 7be742f..f946e3b 100644
--- a/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml
+++ b/src/main/resources/mapper/sms/SmsTaskDetailMapper.xml
@@ -2,18 +2,30 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mzl.flower.mapper.SmsTaskDetailMapper">
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.mzl.flower.entity.SmsTaskDetailDO">
-        <id column="id" property="id" />
-        <result column="deleted" property="deleted" />
-        <result column="create_by" property="createBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="sms_task_id" property="smsTaskId" />
-        <result column="sms_template_id" property="smsTemplateId" />
-        <result column="phone" property="phone" />
-        <result column="result" property="result" />
-    </resultMap>
+    <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>
+        <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>
diff --git a/src/main/resources/mapper/sms/SmsTaskMapper.xml b/src/main/resources/mapper/sms/SmsTaskMapper.xml
index f41ab31..9a453f0 100644
--- a/src/main/resources/mapper/sms/SmsTaskMapper.xml
+++ b/src/main/resources/mapper/sms/SmsTaskMapper.xml
@@ -2,20 +2,33 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mzl.flower.mapper.SmsTaskMapper">
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.mzl.flower.entity.SmsTaskDO">
-        <id column="id" property="id" />
-        <result column="deleted" property="deleted" />
-        <result column="create_by" property="createBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="name" property="name" />
-        <result column="sms_template_id" property="smsTemplateId" />
-        <result column="type" property="type" />
-        <result column="file_url" property="fileUrl" />
-        <result column="phones" property="phones" />
-        <result column="num" property="num" />
-    </resultMap>
+
+    <select id="queryPage" resultType="com.mzl.flower.dto.response.sms.SmsTaskVO">
+        select t.* from t_sms_task t
+        where t.deleted= 0
+        <if test="dto.id!=null ">
+            and t.id = #{dto.id}
+        </if>
+        <if test="dto.code != null and dto.code != ''">
+            and t.code like concat('%', #{dto.code}, '%')
+        </if>
+        <if test="dto.name != null and dto.name != ''">
+            and t.name like concat('%', #{dto.name}, '%')
+        </if>
+        <if test="dto.description != null and dto.description != ''">
+            and t.description like concat('%', #{dto.description}, '%')
+        </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>
diff --git a/src/main/resources/mapper/sms/SmsTemplateMapper.xml b/src/main/resources/mapper/sms/SmsTemplateMapper.xml
index 7f1b9f1..8185740 100644
--- a/src/main/resources/mapper/sms/SmsTemplateMapper.xml
+++ b/src/main/resources/mapper/sms/SmsTemplateMapper.xml
@@ -2,17 +2,33 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mzl.flower.mapper.SmsTemplateMapper">
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.mzl.flower.entity.SmsTemplateDO">
-        <id column="id" property="id" />
-        <result column="deleted" property="deleted" />
-        <result column="create_by" property="createBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="code" property="code" />
-        <result column="name" property="name" />
-        <result column="description" property="description" />
-    </resultMap>
+
+    <select id="queryPage" resultType="com.mzl.flower.entity.SmsTemplateDO">
+        select t.* from t_sms_template t
+        where t.deleted= 0
+        <if test="dto.id!=null ">
+            and t.id = #{dto.id}
+        </if>
+        <if test="dto.code != null and dto.code != ''">
+            and t.code like concat('%', #{dto.code}, '%')
+        </if>
+        <if test="dto.name != null and dto.name != ''">
+            and t.name like concat('%', #{dto.name}, '%')
+        </if>
+        <if test="dto.description != null and dto.description != ''">
+            and t.description like concat('%', #{dto.description}, '%')
+        </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