Browse Source

发送短信模块引入和注册信息保存

tangbin 1 year ago
parent
commit
c11a6e6180
34 changed files with 1276 additions and 13 deletions
  1. 1 1
      yezhu-admin/src/main/java/com/kioor/modules/message/controller/SmsController.java
  2. 27 1
      yezhu-api/pom.xml
  3. 1 1
      yezhu-api/src/main/java/com/kioor/common/controller/ApiTestController.java
  4. 137 0
      yezhu-api/src/main/java/com/kioor/common/controller/SmsController.java
  5. 56 0
      yezhu-api/src/main/java/com/kioor/common/controller/SysSmsLogController.java
  6. 22 0
      yezhu-api/src/main/java/com/kioor/common/dao/SysSmsDao.java
  7. 14 0
      yezhu-api/src/main/java/com/kioor/common/dao/SysSmsLogDao.java
  8. 47 0
      yezhu-api/src/main/java/com/kioor/common/dto/SysSmsDTO.java
  9. 55 0
      yezhu-api/src/main/java/com/kioor/common/dto/SysSmsLogDTO.java
  10. 55 0
      yezhu-api/src/main/java/com/kioor/common/entity/SysSmsEntity.java
  11. 63 0
      yezhu-api/src/main/java/com/kioor/common/entity/SysSmsLogEntity.java
  12. 17 0
      yezhu-api/src/main/java/com/kioor/common/group/AliyunGroup.java
  13. 17 0
      yezhu-api/src/main/java/com/kioor/common/group/FastDFSGroup.java
  14. 17 0
      yezhu-api/src/main/java/com/kioor/common/group/LocalGroup.java
  15. 17 0
      yezhu-api/src/main/java/com/kioor/common/group/MinioGroup.java
  16. 17 0
      yezhu-api/src/main/java/com/kioor/common/group/QcloudGroup.java
  17. 17 0
      yezhu-api/src/main/java/com/kioor/common/group/QiniuGroup.java
  18. 25 0
      yezhu-api/src/main/java/com/kioor/common/service/SysSmsLogService.java
  19. 32 0
      yezhu-api/src/main/java/com/kioor/common/service/SysSmsService.java
  20. 66 0
      yezhu-api/src/main/java/com/kioor/common/service/impl/SysSmsLogServiceImpl.java
  21. 91 0
      yezhu-api/src/main/java/com/kioor/common/service/impl/SysSmsServiceImpl.java
  22. 42 0
      yezhu-api/src/main/java/com/kioor/common/sms/AbstractSmsService.java
  23. 110 0
      yezhu-api/src/main/java/com/kioor/common/sms/AliyunSmsService.java
  24. 69 0
      yezhu-api/src/main/java/com/kioor/common/sms/QcloudSmsService.java
  25. 70 0
      yezhu-api/src/main/java/com/kioor/common/sms/QiniuSmsService.java
  26. 75 0
      yezhu-api/src/main/java/com/kioor/common/sms/SmsConfig.java
  27. 44 0
      yezhu-api/src/main/java/com/kioor/common/sms/SmsFactory.java
  28. 36 1
      yezhu-api/src/main/java/com/kioor/user/controller/ApiRegisterController.java
  29. 1 1
      yezhu-api/src/main/java/com/kioor/user/controller/ApiUserController.java
  30. 4 0
      yezhu-api/src/main/java/com/kioor/user/dto/RegisterDTO.java
  31. 16 7
      yezhu-api/src/main/java/com/kioor/user/dto/UserDTO.java
  32. 1 1
      yezhu-api/src/main/resources/application.yml
  33. 7 0
      yezhu-api/src/main/resources/mapper/common/SysSmsDao.xml
  34. 7 0
      yezhu-api/src/main/resources/mapper/common/SysSmsLogDao.xml

+ 1 - 1
yezhu-admin/src/main/java/com/kioor/modules/message/controller/SmsController.java

@@ -114,7 +114,7 @@ public class SmsController {
     @LogOperation("发送短信")
     @Parameters({
             @Parameter(name = "smsCode", description = "短信编码", required = true),
-            @Parameter(name = "mobile", description = "手机号", required = true),
+            @Parameter(name = "mobile", description = "手机号", required = true),
             @Parameter(name = "params", description = "参数", required = true)
     })
     @RequiresPermissions("sys:sms:all")

+ 27 - 1
yezhu-api/pom.xml

@@ -20,7 +20,33 @@
 			<artifactId>yezhu-dynamic-datasource</artifactId>
 			<version>4.2.0</version>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-core</artifactId>
+            <version>5.8.16</version>
+            <scope>compile</scope>
+        </dependency>
+		<dependency>
+			<groupId>com.aliyun</groupId>
+			<artifactId>aliyun-java-sdk-core</artifactId>
+			<version>3.2.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.aliyun</groupId>
+			<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+			<version>1.1.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.github.qcloudsms</groupId>
+			<artifactId>qcloudsms</artifactId>
+			<version>1.0.5</version>
+		</dependency>
+		<dependency>
+			<groupId>com.qiniu</groupId>
+			<artifactId>qiniu-java-sdk</artifactId>
+			<version>7.2.27</version>
+		</dependency>
+    </dependencies>
 
 	<build>
 		<finalName>${project.artifactId}</finalName>

+ 1 - 1
yezhu-api/src/main/java/com/kioor/common/ApiTestController.java → yezhu-api/src/main/java/com/kioor/common/controller/ApiTestController.java

@@ -6,7 +6,7 @@
  * 版权所有,侵权必究!
  */
 
-package com.kioor.common;
+package com.kioor.common.controller;
 
 import com.kioor.annotation.Login;
 import com.kioor.annotation.LoginUser;

+ 137 - 0
yezhu-api/src/main/java/com/kioor/common/controller/SmsController.java

@@ -0,0 +1,137 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.controller;
+
+import com.kioor.common.annotation.LogOperation;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.page.PageData;
+import com.kioor.common.utils.Result;
+import com.kioor.common.validator.ValidatorUtils;
+import com.kioor.common.validator.group.AliyunGroup;
+import com.kioor.common.validator.group.QcloudGroup;
+import com.kioor.common.validator.group.QiniuGroup;
+import com.kioor.modules.message.dto.SysSmsDTO;
+import com.kioor.modules.message.service.SysSmsService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * 短信服务
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("sys/sms")
+@Tag(name = "短信服务")
+public class SmsController {
+    private final SysSmsService sysSmsService;
+
+    @GetMapping("page")
+    @Operation(summary = "分页")
+    @Parameters({
+            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
+            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
+            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段"),
+            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
+    })
+    @RequiresPermissions("sys:sms:all")
+    public Result<PageData<SysSmsDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        PageData<SysSmsDTO> page = sysSmsService.page(params);
+
+        return new Result<PageData<SysSmsDTO>>().ok(page);
+    }
+
+    @PostMapping
+    @Operation(summary = "保存")
+    @LogOperation("保存")
+    @RequiresPermissions("sys:sms:all")
+    public Result save(@RequestBody SysSmsDTO dto) {
+        //校验数据
+        if (dto.getPlatform() == Constant.SmsService.ALIYUN.getValue()) {
+            //校验阿里云数据
+            ValidatorUtils.validateEntity(dto.getConfig(), AliyunGroup.class);
+        } else if (dto.getPlatform() == Constant.SmsService.QCLOUD.getValue()) {
+            //校验腾讯云数据
+            ValidatorUtils.validateEntity(dto.getConfig(), QcloudGroup.class);
+        } else if (dto.getPlatform() == Constant.SmsService.QINIU.getValue()) {
+            //校验七牛数据
+            ValidatorUtils.validateEntity(dto.getConfig(), QiniuGroup.class);
+        }
+
+        sysSmsService.save(dto);
+
+        return new Result();
+    }
+
+    @PutMapping
+    @Operation(summary = "修改")
+    @LogOperation("修改")
+    @RequiresPermissions("sys:sms:all")
+    public Result update(@RequestBody SysSmsDTO dto) {
+        //校验数据
+        if (dto.getPlatform() == Constant.SmsService.ALIYUN.getValue()) {
+            //校验阿里云数据
+            ValidatorUtils.validateEntity(dto.getConfig(), AliyunGroup.class);
+        } else if (dto.getPlatform() == Constant.SmsService.QCLOUD.getValue()) {
+            //校验腾讯云数据
+            ValidatorUtils.validateEntity(dto.getConfig(), QcloudGroup.class);
+        } else if (dto.getPlatform() == Constant.SmsService.QINIU.getValue()) {
+            //校验七牛数据
+            ValidatorUtils.validateEntity(dto.getConfig(), QiniuGroup.class);
+        }
+
+        sysSmsService.update(dto);
+
+        return new Result();
+    }
+
+    @GetMapping("{id}")
+    @Operation(summary = "信息")
+    @RequiresPermissions("sys:sms:all")
+    public Result<SysSmsDTO> info(@PathVariable("id") Long id) {
+        SysSmsDTO sms = sysSmsService.get(id);
+
+        return new Result<SysSmsDTO>().ok(sms);
+    }
+
+    @PostMapping("send")
+    @Operation(summary = "发送短信")
+    @LogOperation("发送短信")
+    @Parameters({
+            @Parameter(name = "smsCode", description = "短信编码", required = true),
+            @Parameter(name = "mobile", description = "手机好号", required = true),
+            @Parameter(name = "params", description = "参数", required = true)
+    })
+    @RequiresPermissions("sys:sms:all")
+    public Result send(String smsCode, String mobile, String params) {
+        sysSmsService.send(smsCode, mobile, params);
+
+        return new Result();
+    }
+
+    @DeleteMapping
+    @Operation(summary = "删除")
+    @LogOperation("删除")
+    @RequiresPermissions("sys:sms:all")
+    public Result delete(@RequestBody Long[] ids) {
+        sysSmsService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+
+}

+ 56 - 0
yezhu-api/src/main/java/com/kioor/common/controller/SysSmsLogController.java

@@ -0,0 +1,56 @@
+package com.kioor.common.controller;
+
+import com.kioor.common.annotation.LogOperation;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.page.PageData;
+import com.kioor.common.utils.Result;
+import com.kioor.modules.message.dto.SysSmsLogDTO;
+import com.kioor.modules.message.service.SysSmsLogService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * 短信日志
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("sys/smslog")
+@Tag(name = "短信日志")
+public class SysSmsLogController {
+    private final SysSmsLogService sysSmsLogService;
+
+    @GetMapping("page")
+    @Operation(summary = "分页")
+    @Parameters({
+            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
+            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
+            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段"),
+            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
+    })
+    @RequiresPermissions("sys:smslog:all")
+    public Result<PageData<SysSmsLogDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        PageData<SysSmsLogDTO> page = sysSmsLogService.page(params);
+
+        return new Result<PageData<SysSmsLogDTO>>().ok(page);
+    }
+
+    @DeleteMapping
+    @Operation(summary = "删除")
+    @LogOperation("删除")
+    @RequiresPermissions("sys:smslog:all")
+    public Result delete(@RequestBody Long[] ids) {
+        sysSmsLogService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+}

+ 22 - 0
yezhu-api/src/main/java/com/kioor/common/dao/SysSmsDao.java

@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.dao;
+
+import com.kioor.common.entity.SysSmsEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 短信
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface SysSmsDao extends BaseDao<SysSmsEntity> {
+	
+}

+ 14 - 0
yezhu-api/src/main/java/com/kioor/common/dao/SysSmsLogDao.java

@@ -0,0 +1,14 @@
+package com.kioor.common.dao;
+
+import com.kioor.common.entity.SysSmsLogEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 短信日志
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface SysSmsLogDao extends BaseDao<SysSmsLogEntity> {
+	
+}

+ 47 - 0
yezhu-api/src/main/java/com/kioor/common/dto/SysSmsDTO.java

@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.kioor.common.sms.SmsConfig;
+import com.kioor.common.utils.DateUtils;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 短信
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "短信")
+public class SysSmsDTO implements Serializable {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "短信编码")
+    private String smsCode;
+
+    @Schema(description = "平台类型")
+    private Integer platform;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "短信配置")
+    private SmsConfig config;
+
+    @Schema(description = "创建时间")
+    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+    private Date createDate;
+
+}

+ 55 - 0
yezhu-api/src/main/java/com/kioor/common/dto/SysSmsLogDTO.java

@@ -0,0 +1,55 @@
+package com.kioor.common.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.kioor.common.utils.DateUtils;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 短信日志
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "短信日志")
+public class SysSmsLogDTO implements Serializable {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "短信编码")
+    private String smsCode;
+
+    @Schema(description = "平台类型")
+    private Integer platform;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "参数1")
+    private String params1;
+
+    @Schema(description = "参数2")
+    private String params2;
+
+    @Schema(description = "参数3")
+    private String params3;
+
+    @Schema(description = "参数4")
+    private String params4;
+
+    @Schema(description = "发送状态  0:失败  1:成功")
+    private Integer status;
+
+    @Schema(description = "创建者")
+    private Long creator;
+
+    @Schema(description = "创建时间")
+    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+    private Date createDate;
+
+
+}

+ 55 - 0
yezhu-api/src/main/java/com/kioor/common/entity/SysSmsEntity.java

@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 短信
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sys_sms")
+public class SysSmsEntity extends BaseEntity {
+    
+    /**
+     * 短信编码
+     */
+    private String smsCode;
+    /**
+     * 平台类型
+     */
+    private Integer platform;
+    /**
+     * 短信配置
+     */
+    private String smsConfig;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 更新者
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updater;
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateDate;
+}

+ 63 - 0
yezhu-api/src/main/java/com/kioor/common/entity/SysSmsLogEntity.java

@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 短信日志
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sys_sms_log")
+public class SysSmsLogEntity extends BaseEntity {
+
+    /**
+     * 短信编码
+     */
+    private String smsCode;
+    /**
+     * 平台类型
+     */
+    private Integer platform;
+    /**
+     * 手机号
+     */
+    private String mobile;
+    /**
+     * 参数1
+     */
+    @TableField("params_1")
+    private String params1;
+    /**
+     * 参数2
+     */
+    @TableField("params_2")
+    private String params2;
+    /**
+     * 参数3
+     */
+    @TableField("params_3")
+    private String params3;
+    /**
+     * 参数4
+     */
+    @TableField("params_4")
+    private String params4;
+    /**
+     * 发送状态  0:失败   1:成功
+     */
+    private Integer status;
+
+}

+ 17 - 0
yezhu-api/src/main/java/com/kioor/common/group/AliyunGroup.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.group;
+
+/**
+ * 阿里云
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface AliyunGroup {
+}

+ 17 - 0
yezhu-api/src/main/java/com/kioor/common/group/FastDFSGroup.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.group;
+
+/**
+ * FastDFS
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface FastDFSGroup {
+}

+ 17 - 0
yezhu-api/src/main/java/com/kioor/common/group/LocalGroup.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.group;
+
+/**
+ * 本地上传
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface LocalGroup {
+}

+ 17 - 0
yezhu-api/src/main/java/com/kioor/common/group/MinioGroup.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.group;
+
+/**
+ * MinIO
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface MinioGroup {
+}

+ 17 - 0
yezhu-api/src/main/java/com/kioor/common/group/QcloudGroup.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.group;
+
+/**
+ * 腾讯云
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface QcloudGroup {
+}

+ 17 - 0
yezhu-api/src/main/java/com/kioor/common/group/QiniuGroup.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.group;
+
+/**
+ * 七牛
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface QiniuGroup {
+}

+ 25 - 0
yezhu-api/src/main/java/com/kioor/common/service/SysSmsLogService.java

@@ -0,0 +1,25 @@
+package com.kioor.common.service;
+
+
+import com.kioor.common.dto.SysSmsLogDTO;
+import com.kioor.common.entity.SysSmsLogEntity;
+
+import java.util.LinkedHashMap;
+
+/**
+ * 短信日志
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface SysSmsLogService extends CrudService<SysSmsLogEntity, SysSmsLogDTO> {
+
+    /**
+     * 保存短信发送记录
+     * @param smsCode   短信编码
+     * @param platform  平台
+     * @param mobile    手机号
+     * @param params    短信参数
+     * @param status    发送状态
+     */
+    void save(String smsCode, Integer platform, String mobile, LinkedHashMap<String, String> params, Integer status);
+}

+ 32 - 0
yezhu-api/src/main/java/com/kioor/common/service/SysSmsService.java

@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.service;
+
+
+import com.kioor.common.dto.SysSmsDTO;
+import com.kioor.common.entity.SysSmsEntity;
+
+/**
+ * 短信
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface SysSmsService extends CrudService<SysSmsEntity, SysSmsDTO> {
+
+    /**
+     * 发送短信
+     * @param smsCode   短信编码
+     * @param mobile   手机号
+     * @param params   短信参数
+     */
+    void send(String smsCode, String mobile, String params);
+
+    SysSmsEntity getBySmsCode(String smsCode);
+
+}

+ 66 - 0
yezhu-api/src/main/java/com/kioor/common/service/impl/SysSmsLogServiceImpl.java

@@ -0,0 +1,66 @@
+package com.kioor.common.service.impl;
+
+import cn.hutool.core.map.MapUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.kioor.common.dao.SysSmsLogDao;
+import com.kioor.common.dto.SysSmsLogDTO;
+import com.kioor.common.entity.SysSmsLogEntity;
+import com.kioor.common.service.SysSmsLogService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 短信日志
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Service
+public class SysSmsLogServiceImpl extends CrudServiceImpl<SysSmsLogDao, SysSmsLogEntity, SysSmsLogDTO> implements SysSmsLogService {
+
+    @Override
+    public QueryWrapper<SysSmsLogEntity> getWrapper(Map<String, Object> params){
+        String smsCode = (String)params.get("smsCode");
+        String mobile = (String)params.get("mobile");
+        String status = (String)params.get("status");
+
+        QueryWrapper<SysSmsLogEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(smsCode), "sms_code", smsCode);
+        wrapper.like(StringUtils.isNotBlank(mobile), "mobile", mobile);
+        wrapper.eq(StringUtils.isNotBlank(status), "status", status);
+
+        return wrapper;
+    }
+
+    @Override
+    public void save(String smsCode, Integer platform, String mobile, LinkedHashMap<String, String> params, Integer status) {
+
+        SysSmsLogEntity smsLog = new SysSmsLogEntity();
+        smsLog.setSmsCode(smsCode);
+        smsLog.setPlatform(platform);
+        smsLog.setMobile(mobile);
+
+        //设置短信参数
+        if(MapUtil.isNotEmpty(params)){
+            int index = 1;
+            for(String value : params.values()){
+                if(index == 1){
+                    smsLog.setParams1(value);
+                }else if(index == 2){
+                    smsLog.setParams2(value);
+                }else if(index == 3){
+                    smsLog.setParams3(value);
+                }else if(index == 4){
+                    smsLog.setParams4(value);
+                }
+                index++;
+            }
+        }
+
+        smsLog.setStatus(status);
+
+        baseDao.insert(smsLog);
+    }
+}

+ 91 - 0
yezhu-api/src/main/java/com/kioor/common/service/impl/SysSmsServiceImpl.java

@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+package com.kioor.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.kioor.common.dao.SysSmsDao;
+import com.kioor.common.dto.SysSmsDTO;
+import com.kioor.common.entity.SysSmsEntity;
+import com.kioor.common.exception.ErrorCode;
+import com.kioor.common.exception.RenException;
+import com.kioor.common.service.SysSmsService;
+import com.kioor.common.sms.AbstractSmsService;
+import com.kioor.common.sms.SmsConfig;
+import com.kioor.common.sms.SmsFactory;
+import com.kioor.common.utils.ConvertUtils;
+import com.kioor.common.utils.JsonUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Service
+public class SysSmsServiceImpl extends CrudServiceImpl<SysSmsDao, SysSmsEntity, SysSmsDTO> implements SysSmsService {
+
+    @Override
+    public QueryWrapper<SysSmsEntity> getWrapper(Map<String, Object> params){
+        String platform = (String)params.get("platform");
+
+        QueryWrapper<SysSmsEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(platform), "platform", platform);
+
+        return wrapper;
+    }
+
+    @Override
+    public SysSmsDTO get(Long id) {
+        SysSmsEntity entity = baseDao.selectById(id);
+
+        SysSmsDTO dto = ConvertUtils.sourceToTarget(entity, SysSmsDTO.class);
+        dto.setConfig(JsonUtils.parseObject(entity.getSmsConfig(), SmsConfig.class));
+
+        return dto;
+    }
+
+    @Override
+    public void send(String smsCode, String mobile, String params) {
+        LinkedHashMap<String, String> map;
+        try {
+            map = JsonUtils.parseObject(params, LinkedHashMap.class);
+        }catch (Exception e){
+            throw new RenException(ErrorCode.JSON_FORMAT_ERROR);
+        }
+
+        //短信服务
+        AbstractSmsService service = SmsFactory.build(smsCode);
+        if(service == null){
+            throw new RenException(ErrorCode.SMS_CONFIG);
+        }
+
+        //发送短信
+        service.sendSms(smsCode, mobile, map);
+    }
+
+    @Override
+    public SysSmsEntity getBySmsCode(String smsCode) {
+        QueryWrapper<SysSmsEntity> query = new QueryWrapper<>();
+        query.eq("sms_code", smsCode);
+
+        return baseDao.selectOne(query);
+    }
+
+    @Override
+    public void save(SysSmsDTO dto) {
+        SysSmsEntity entity = ConvertUtils.sourceToTarget(dto, SysSmsEntity.class);
+        entity.setSmsConfig(JsonUtils.toJsonString(dto.getConfig()));
+        baseDao.insert(entity);
+    }
+
+    @Override
+    public void update(SysSmsDTO dto) {
+        SysSmsEntity entity = ConvertUtils.sourceToTarget(dto, SysSmsEntity.class);
+        entity.setSmsConfig(JsonUtils.toJsonString(dto.getConfig()));
+        baseDao.updateById(entity);
+    }
+}

+ 42 - 0
yezhu-api/src/main/java/com/kioor/common/sms/AbstractSmsService.java

@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.sms;
+
+import java.util.LinkedHashMap;
+
+/**
+ * 短信
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public abstract class AbstractSmsService {
+    /**
+     * 短信配置信息
+     */
+    SmsConfig config;
+
+    /**
+     * 发送短信
+     * @param smsCode   短信编码
+     * @param mobile 手机号
+     * @param params 参数
+     */
+    public abstract void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params);
+
+    /**
+     *
+     * 发送短信
+     * @param smsCode   短信编码
+     * @param mobile 手机号
+     * @param params 参数
+     * @param signName  短信签名
+     * @param template 短信模板
+     */
+    public abstract void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params, String signName, String template);
+}

+ 110 - 0
yezhu-api/src/main/java/com/kioor/common/sms/AliyunSmsService.java

@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.sms;
+
+import cn.hutool.core.map.MapUtil;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.exception.ErrorCode;
+import com.kioor.common.exception.RenException;
+import com.kioor.common.service.SysSmsLogService;
+import com.kioor.common.utils.JsonUtils;
+import com.kioor.common.utils.SpringContextUtils;
+
+import java.util.LinkedHashMap;
+
+/**
+ * 阿里云短信服务
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class AliyunSmsService extends AbstractSmsService {
+    /**
+     * 短信API产品名称(短信产品名固定,无需修改)
+     */
+    private final String PRODUCT = "Dysmsapi";
+    /**
+     * 短信API产品域名(接口地址固定,无需修改)
+     */
+    private final String DOMAIN = "dysmsapi.aliyuncs.com";
+
+    private IClientProfile profile;
+
+
+    public AliyunSmsService(SmsConfig config){
+        this.config = config;
+
+        //初始化
+        init();
+    }
+
+    private void init(){
+        try {
+            //初始化acsClient,暂不支持region化
+            profile = DefaultProfile.getProfile("cn-hangzhou", config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
+            DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", PRODUCT, DOMAIN);
+        } catch (ClientException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params) {
+        this.sendSms(smsCode, mobile, params, config.getAliyunSignName(), config.getAliyunTemplateCode());
+    }
+
+    @Override
+    public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params, String signName, String template) {
+        System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
+        System.setProperty("sun.net.client.defaultReadTimeout", "30000");
+
+        //组装请求对象
+        SendSmsRequest request = new SendSmsRequest();
+        request.setMethod(MethodType.POST);
+        //待发送手机号,支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
+        //发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如"0085200000000"
+        request.setPhoneNumbers(mobile);
+        //短信签名-可在短信控制台中找到
+        request.setSignName(signName);
+        //短信模板-可在短信控制台中找到
+        request.setTemplateCode(template);
+        //参数
+        if(MapUtil.isNotEmpty(params)){
+            request.setTemplateParam(JsonUtils.toJsonString(params));
+        }
+
+        SendSmsResponse response;
+        try {
+            IAcsClient acsClient = new DefaultAcsClient(profile);
+            response = acsClient.getAcsResponse(request);
+        } catch (ClientException e) {
+            throw new RenException(ErrorCode.SEND_SMS_ERROR, e, "");
+        }
+
+        int status = Constant.SUCCESS;
+        if(!Constant.OK.equalsIgnoreCase(response.getCode())){
+            status = Constant.FAIL;
+        }
+
+        //保存短信记录
+        SysSmsLogService sysSmsLogService = SpringContextUtils.getBean(SysSmsLogService.class);
+        sysSmsLogService.save(smsCode, Constant.SmsService.ALIYUN.getValue(), mobile, params, status);
+
+        if(status == Constant.FAIL){
+            throw new RenException(ErrorCode.SEND_SMS_ERROR, response.getMessage());
+        }
+    }
+}

+ 69 - 0
yezhu-api/src/main/java/com/kioor/common/sms/QcloudSmsService.java

@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.sms;
+
+import cn.hutool.core.map.MapUtil;
+import com.github.qcloudsms.SmsSingleSender;
+import com.github.qcloudsms.SmsSingleSenderResult;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.exception.ErrorCode;
+import com.kioor.common.exception.RenException;
+import com.kioor.common.service.SysSmsLogService;
+import com.kioor.common.utils.SpringContextUtils;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+/**
+ * 腾讯云短信服务
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class QcloudSmsService extends AbstractSmsService {
+    public QcloudSmsService(SmsConfig config){
+        this.config = config;
+    }
+
+    @Override
+    public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params) {
+        this.sendSms(smsCode, mobile, params, config.getQcloudSignName(), config.getQcloudTemplateId());
+    }
+
+    @Override
+    public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params, String signName, String template) {
+        SmsSingleSender sender = new SmsSingleSender(config.getQcloudAppId(), config.getQcloudAppKey());
+
+        //短信参数
+        ArrayList<String> paramsList = new ArrayList<>();
+        if(MapUtil.isNotEmpty(params)){
+            for(String value : params.values()){
+                paramsList.add(value);
+            }
+        }
+        SmsSingleSenderResult result;
+        try {
+            result = sender.sendWithParam("86", mobile, Integer.parseInt(template), paramsList, signName, null, null);
+        } catch (Exception e) {
+            throw new RenException(ErrorCode.SEND_SMS_ERROR, e, "");
+        }
+
+        int status = Constant.SUCCESS;
+        if(result.result != 0){
+            status = Constant.FAIL;
+        }
+
+        //保存短信记录
+        SysSmsLogService sysSmsLogService = SpringContextUtils.getBean(SysSmsLogService.class);
+        sysSmsLogService.save(smsCode, Constant.SmsService.QCLOUD.getValue(), mobile, params, status);
+
+        if(status == Constant.FAIL){
+            throw new RenException(ErrorCode.SEND_SMS_ERROR, result.errMsg);
+        }
+    }
+}

+ 70 - 0
yezhu-api/src/main/java/com/kioor/common/sms/QiniuSmsService.java

@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.sms;
+
+import com.kioor.common.constant.Constant;
+import com.kioor.common.exception.ErrorCode;
+import com.kioor.common.exception.RenException;
+import com.kioor.common.service.SysSmsLogService;
+import com.kioor.common.utils.SpringContextUtils;
+import com.qiniu.http.Response;
+import com.qiniu.sms.SmsManager;
+import com.qiniu.util.Auth;
+
+import java.util.LinkedHashMap;
+
+/**
+ * 七牛短信服务
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class QiniuSmsService extends AbstractSmsService {
+    private SmsManager smsManager;
+
+    public QiniuSmsService(SmsConfig config){
+        this.config = config;
+
+        //初始化
+        init();
+    }
+
+
+    private void init(){
+        Auth auth = Auth.create(config.getQiniuAccessKey(), config.getQiniuSecretKey());
+        smsManager = new SmsManager(auth);
+    }
+
+    @Override
+    public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params) {
+        this.sendSms(smsCode, mobile, params, null, config.getQiniuTemplateId());
+    }
+
+    @Override
+    public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params, String signName, String template) {
+        Response response;
+        try {
+            response = smsManager.sendSingleMessage(template, mobile, params);
+        } catch (Exception e) {
+            throw new RenException(ErrorCode.SEND_SMS_ERROR, e, "");
+        }
+
+        int status = Constant.SUCCESS;
+        if(!response.isOK()){
+            status = Constant.FAIL;
+        }
+
+        //保存短信记录
+        SysSmsLogService sysSmsLogService = SpringContextUtils.getBean(SysSmsLogService.class);
+        sysSmsLogService.save(smsCode, Constant.SmsService.QCLOUD.getValue(), mobile, params, status);
+
+        if(status == Constant.FAIL){
+            throw new RenException(ErrorCode.SEND_SMS_ERROR, response.error);
+        }
+    }
+}

+ 75 - 0
yezhu-api/src/main/java/com/kioor/common/sms/SmsConfig.java

@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.sms;
+
+
+import com.kioor.common.group.AliyunGroup;
+import com.kioor.common.group.QcloudGroup;
+import com.kioor.common.group.QiniuGroup;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 短信配置信息
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "短信配置信息")
+public class SmsConfig implements Serializable {
+
+
+    @Schema(description = "阿里云AccessKeyId")
+    @NotBlank(message = "{aliyun.accesskeyid.require}", groups = AliyunGroup.class)
+    private String aliyunAccessKeyId;
+
+    @Schema(description = "阿里云AccessKeySecret")
+    @NotBlank(message = "{aliyun.accesskeysecret.require}", groups = AliyunGroup.class)
+    private String aliyunAccessKeySecret;
+
+    @Schema(description = "阿里云短信签名")
+    @NotBlank(message = "{aliyun.signname.require}", groups = AliyunGroup.class)
+    private String aliyunSignName;
+
+    @Schema(description = "阿里云短信模板")
+    @NotBlank(message = "{aliyun.templatecode.require}", groups = AliyunGroup.class)
+    private String aliyunTemplateCode;
+
+    @Schema(description = "腾讯云AppId")
+    @NotNull(message = "{qcloud.appid.require}", groups = QcloudGroup.class)
+    private Integer qcloudAppId;
+
+    @Schema(description = "腾讯云AppKey")
+    @NotBlank(message = "{qcloud.appkey.require}", groups = QcloudGroup.class)
+    private String qcloudAppKey;
+
+    @Schema(description = "腾讯云短信签名")
+    @NotBlank(message = "{qcloud.signname.require}", groups = QcloudGroup.class)
+    private String qcloudSignName;
+
+    @Schema(description = "腾讯云短信模板ID")
+    @NotBlank(message = "{qcloud.templateid.require}", groups = QcloudGroup.class)
+    private String qcloudTemplateId;
+
+    @Schema(description = "七牛accesskey")
+    @NotNull(message = "{qiniu.accesskey.require}", groups = QiniuGroup.class)
+    private String qiniuAccessKey;
+
+    @Schema(description = "七牛SecretKey")
+    @NotBlank(message = "{qiniu.secretkey.require}", groups = QiniuGroup.class)
+    private String qiniuSecretKey;
+
+    @Schema(description = "七牛短信模板ID")
+    @NotBlank(message = "{qiniu.templateId.require}", groups = QiniuGroup.class)
+    private String qiniuTemplateId;
+}

+ 44 - 0
yezhu-api/src/main/java/com/kioor/common/sms/SmsFactory.java

@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.sms;
+
+import com.kioor.common.constant.Constant;
+import com.kioor.common.entity.SysSmsEntity;
+import com.kioor.common.service.SysSmsService;
+import com.kioor.common.utils.JsonUtils;
+import com.kioor.common.utils.SpringContextUtils;
+
+/**
+ * 短信Factory
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class SmsFactory {
+    private static SysSmsService sysSmsService;
+
+    static {
+        SmsFactory.sysSmsService = SpringContextUtils.getBean(SysSmsService.class);
+    }
+
+    public static AbstractSmsService build(String smsCode){
+        //获取短信配置信息
+        SysSmsEntity smsEntity = sysSmsService.getBySmsCode(smsCode);
+        SmsConfig config = JsonUtils.parseObject(smsEntity.getSmsConfig(), SmsConfig.class);
+
+        if(smsEntity.getPlatform() == Constant.SmsService.ALIYUN.getValue()){
+            return new AliyunSmsService(config);
+        }else if(smsEntity.getPlatform() == Constant.SmsService.QCLOUD.getValue()){
+            return new QcloudSmsService(config);
+        }else if(smsEntity.getPlatform() == Constant.SmsService.QINIU.getValue()){
+            return new QiniuSmsService(config);
+        }
+
+        return null;
+    }
+}

+ 36 - 1
yezhu-api/src/main/java/com/kioor/user/controller/ApiRegisterController.java

@@ -8,7 +8,10 @@
 
 package com.kioor.user.controller;
 
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.crypto.digest.DigestUtil;
+import com.kioor.common.redis.RedisUtils;
+import com.kioor.common.service.SysSmsService;
 import com.kioor.common.utils.Result;
 import com.kioor.common.validator.ValidatorUtils;
 import com.kioor.user.dto.RegisterDTO;
@@ -36,19 +39,51 @@ import java.util.Date;
 public class ApiRegisterController {
     private final UserService userService;
 
+    private final SysSmsService sysSmsService;
+
+    private final RedisUtils redisUtils;
+
     @PostMapping("register")
     @Operation(summary = "注册")
     public Result register(@RequestBody RegisterDTO dto) {
         //表单校验
         ValidatorUtils.validateEntity(dto);
-
+        //校验验证码
+        Object codeObj = redisUtils.get(dto.getMobile());
+        if (codeObj == null || !codeObj.toString().equals(dto.getCode())) {
+            return new Result().error("验证码不正确");
+        }
+        //保存用户信息
         UserEntity user = new UserEntity();
         user.setMobile(dto.getMobile());
         user.setUsername(dto.getMobile());
         user.setPassword(DigestUtil.sha256Hex(dto.getPassword()));
         user.setCreateDate(new Date());
+        user.setLevel(0);
+        user.setOpenFlag(1);
+        user.setProhibitionFlag(0);
         userService.insert(user);
 
         return new Result();
     }
+
+    /**
+     * 发送验证码
+     */
+    @PostMapping("sendCode")
+    @Operation(summary = "发送验证码")
+    public Result sendCode(@RequestBody UserEntity user) {
+        //表单校验
+        ValidatorUtils.validateEntity(user);
+        //查询手机号是否注册过
+        UserEntity userEntity = userService.getByMobile(user.getMobile());
+        if (userEntity != null) {
+            return new Result().error("手机号已注册");
+        }
+        //发送验证码
+        String code = RandomUtil.randomNumbers(6);
+        sysSmsService.send("短信编码", user.getMobile(), code);
+        redisUtils.set(user.getMobile(), code, 60);
+        return new Result();
+    }
 }

+ 1 - 1
yezhu-api/src/main/java/com/kioor/user/controller/ApiUserController.java

@@ -31,7 +31,7 @@ import java.util.Map;
 @AllArgsConstructor
 @RestController
 @RequestMapping("/api/user")
-@Tag(name = "登录接口")
+@Tag(name = "用户")
 public class ApiUserController {
     private final UserService userService;
     private final TokenService tokenService;

+ 4 - 0
yezhu-api/src/main/java/com/kioor/user/dto/RegisterDTO.java

@@ -28,4 +28,8 @@ public class RegisterDTO {
     @NotBlank(message = "密码不能为空")
     private String password;
 
+    @Schema(description = "验证码")
+    @NotBlank(message = "验证码不能为空")
+    private String code;
+
 }

+ 16 - 7
yezhu-api/src/main/java/com/kioor/user/dto/UserDTO.java

@@ -20,14 +20,23 @@ import lombok.Data;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@Schema(description = "登录表单")
+@Schema(description = "用户信息表单")
 public class UserDTO {
-    @Schema(description = "手机号")
-    @NotBlank(message = "手机号不能为空")
-    private String mobile;
+    @Schema(description = "id")
+    private Long id;
 
-    @Schema(description = "密码")
-    @NotBlank(message = "密码不能为空")
-    private String password;
+    @Schema(description = "用户名")
+    @NotBlank(message = "用户名不能为空")
+    private String username;
+
+    @Schema(description = "签名")
+    private String remarks;
+
+    @Schema(description = "是否对邻居展示")
+    private int openFlag = 1;
+
+    @Schema(description = "房间")
+    @NotBlank(message = "房间不能为空")
+    private Long roomId;
 
 }

+ 1 - 1
yezhu-api/src/main/resources/application.yml

@@ -48,7 +48,7 @@ knife4j:
 
 yezhu:
   redis:
-    open: false  # 是否开启redis缓存  true开启   false关闭
+    open: true  # 是否开启redis缓存  true开启   false关闭
 
 #mybatis
 mybatis-plus:

+ 7 - 0
yezhu-api/src/main/resources/mapper/common/SysSmsDao.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kioor.modules.message.dao.SysSmsDao">
+
+
+</mapper>

+ 7 - 0
yezhu-api/src/main/resources/mapper/common/SysSmsLogDao.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kioor.modules.message.dao.SysSmsLogDao">
+
+
+</mapper>