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> 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; } 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; } 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; } 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; } 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; } 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; } 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); } 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); } 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); } 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; } } 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; } } 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; } } 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); } 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); } 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); } 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; } } 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; } } 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); } } 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> 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> 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>