东宝商城

msb-dongbao-mall-parent            父项目
    msb-dongbao-common 公共包
        msb-dongbao-common-base 公共基础类
        msb-dongbao-common-util 工具类
    msb-dongbao-api 业务模块接口层
        msb-dongbao-oms-api 订单中心接口
        msb-dongbao-pms-api 商品中心接口
        msb-dongbao-ums-api 用户中心接口
        msb-dongbao-pay-api 支付中心接口
        msb-dongbao-cart-api 购物车接口
        msb-dongbao-dictionary-api 基础字典接口
        msb-dongbao-sms-api 优惠中心接口
        msb-dongbao-cms-api 内容中心接口
    msb-dongbao-service 业务模块实现层
        msb-dongbao-oms 订单中心模块实现
        msb-dongbao-pms 商品中心模块实现
        msb-dongbao-ums 用户中心模块实现
        msb-dongbao-pay 支付中心模块实现
        msb-dongbao-cart 购物车模块实现
        msb-dongbao-dictionary 基础字典模块实现
        msb-dongbao-sms 优惠中心模块实现
        msb-dongbao-cms 内容中心模块实现
    msb-dongbao-application web应用模块

        msb-dongbao-manager-web 后台管理应用
        msb-dongbao-portal-web 商城门户网站
    msb-dongbao-job 定时任务模块

    msb-dongbao-generator 代码生成器
安装docker
1. 安装docker。参考我的docker安装文档。

2. 拉取镜像。

   ```sh
   拉取镜像:
   docker pull mysql:5.7
   ```

3. 在本地创建目录(存放数据库文件)

   容器中的文件,映射到宿主机。

   ```sh
   mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
   ```

4. 创建*.cnf

   ```sh
   在/root/mysql/conf中创建 *.cnf 文件(叫什么都行)
   touch my.cnf
   ```

5. 启动docker

   ```sh
   docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
数据库就创建好了。后续。

   ```sh
   docker start mysql

6  创建数据库

```sql
CREATE TABLE `ums_member` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(64) DEFAULT NULL,
  `password` varchar(64) DEFAULT NULL,
  `icon` varchar(500) DEFAULT NULL COMMENT '头像',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `nick_name` varchar(200) DEFAULT NULL COMMENT '昵称',
  `note` varchar(500) DEFAULT NULL COMMENT '备注信息',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
  `status` int(1) DEFAULT '1' COMMENT '帐号启用状态:0->禁用;1->启用',
  PRIMARY KEY (`id`),
  UNIQUE KEY `un_name` (`username`) USING BTREE COMMENT '用户名唯一'
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COMMENT='后台用户表';

2. 数据库时间问题。

   1. 容器中

   ```sh
   查询docker进程。
   [root@localhost ~]# docker ps
   CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
   ab8bcc896217        mysql:5.7           "docker-entrypoint.s…"   12 days ago         Up 7 hours          0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
   [root@localhost ~]# 
   
   进入容器,执行bash,用linux命令操作里面的任何东西
   [root@localhost ~]# docker exec -it mysql bash
   
   docker里
   root@ab8bcc896217:/# 
   将时区改成日本
   root@ab8bcc896217:/# cp /usr/share/zoneinfo/Japan /etc/localtime 
   退出容器
   root@ab8bcc896217:/# exit
   exit
   docker外。
   重启docker mysql
   [root@localhost ~]# docker restart mysql
   mysql
   [root@localhost ~]# 
docker exec -it mysql bash

cp /usr/share/zoneinfo/PRC /etc/localtime
将时区改为中国
docker restart mysql
重启docker中的mysql

2. 本地机器没有和ntp同步。

```sh
如果本机没有需要安装一下。
yum install ntp

同步时间
ntpdate time.nist.gov
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>


使用mybatis-generator-gui生成代码
代码生成器

package com.msb;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.io.File;
import java.util.ArrayList;

/**
* @author lcc
* @version V1.0
* @Package com.msb
* @date 2022/5/4 19:40
*/
public class DongbaoGenerator {
public static void main(String[] args) {
// 构建一个代码生成对象
AutoGenerator mpg = new AutoGenerator();

// 1. 全局配置
GlobalConfig gc = new GlobalConfig();

String separator = File.separator;
gc.setOutputDir("C:\\Users\\Administrator\\msb-dongbao-mall-master-t\\msb-dongbao-mall-parent-v1\\msb-dongbao-service\\msb-dongbao-ums\\src\\main\\java");
gc.setAuthor("lcc");
gc.setOpen(false);//打开目录
gc.setFileOverride(true);//是否覆盖
gc.setServiceName("%sService");//ServiceI前缀。
gc.setIdType(IdType.ID_WORKER);
gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(false);

mpg.setGlobalConfig(gc);

DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://192.168.1.136:3306/dongbao?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);

mpg.setDataSource(dsc);

// 包设置
PackageConfig pc = new PackageConfig();

pc.setParent("com.msb");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setController("controller");

mpg.setPackageInfo(pc);

// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("ums_member");//表名
strategy.setNaming(NamingStrategy.underline_to_camel);// 下划线转他驼峰
strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 列 下划线转脱发
strategy.setEntityLombokModel(true);//lombok 开启
strategy.setLogicDeleteFieldName("deleted");

// 自动填充
TableFill gmtCreate = new TableFill("create_time", FieldFill.INSERT);
TableFill gmtModify = new TableFill("update_time",FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<TableFill>();
tableFills.add(gmtCreate);
tableFills.add(gmtModify);

strategy.setTableFillList(tableFills);

//乐观锁
strategy.setVersionFieldName("version");

// restcontroller
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);// localhost:xxx/hello_2

mpg.setStrategy(strategy);

mpg.execute();
}
}
 

 

package com.msb.controller;

import com.msb.entity.dto.UmsMemberLoginParamDTO;
import com.msb.entity.dto.UmsMemberRegisterParamDTO;
import com.msb.service.UmsMemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author lcc
 * @version V1.0
 * @Package com.msb.controller
 * @date 2022/5/5 10:10
 */
@RestController
@RequestMapping("/ums-member")
public class UserMemberController {
    @Autowired
    UmsMemberService umsMemberService;
    /*注册
    *   private String username;
    private String password;
    private String icon;
    private String email;
    private String nickName;
    * dto 用于展示给前段用户所需字段
    * do 为数据库字段
    * */
    @RequestMapping("/register")
    public String register(@RequestBody UmsMemberRegisterParamDTO umsMemberRegisterParamDTO){
        return  umsMemberService.register(umsMemberRegisterParamDTO);
    }
    
    @RequestMapping("/login")
    public String login(@RequestBody UmsMemberLoginParamDTO umsMemberLoginParamDTO){
        return  umsMemberService.login(umsMemberLoginParamDTO);
    }
}
package com.msb;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@SpringBootApplication
public class MsbDongbaoPortalWebApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(MsbDongbaoPortalWebApplication.class, args);
    }
    
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
    
}
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.136:3306/dongbao?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
  profiles:
    active: dev
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
  mapper-locations:
    - classpath*:/com/msb/mapper/xml/*.xml

server:
  port: 8001
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.msb</groupId>
    <artifactId>msb-dongbao-portal-web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>msb-dongbao-portal-web</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>com.msb</groupId>
        <artifactId>msb-dongbao-application</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.msb</groupId>
            <artifactId>msb-dongbao-ums-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.msb</groupId>
            <artifactId>msb-dongbao-ums</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>5.6.2</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.msb.MsbDongbaoPortalWebApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UmsMemberLoginParamDTO {
    private String username;
    private String password;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UmsMemberRegisterParamDTO {
    
    private String username;
    private String password;
    private String icon;
    private String email;
    private String nickName;
    private String note;
   
}
package com.msb.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 后台用户表
 * </p>
 *
 * @author lcc
 * @since 2022-05-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class UmsMember implements Serializable {

    private static final long serialVersionUID = 1L;

      @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String username;

    private String password;

    /**
     * 头像
     */
    private String icon;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 备注信息
     */
    private String note;

    /**
     * 创建时间
     */
      @TableField(fill = FieldFill.INSERT)
    private Date gmt_create;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmt_modified;
    
    /*最后登陆时间
    * */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private  Date login_time;
    /**
     * 帐号启用状态:0->禁用;1->启用
     */
    private Integer status;


}
public interface UmsMemberService extends IService<UmsMember> {
    
    String register(UmsMemberRegisterParamDTO umsMemberRegisterParamDTO);
    
    String login(UmsMemberLoginParamDTO umsMemberLoginParamDTO);
}
@Service
public class UmsMemberServiceImpl extends ServiceImpl<UmsMemberMapper, UmsMember> implements UmsMemberService {
    @Autowired
    PasswordEncoder passwordEncoder;
    @Autowired
    UmsMemberMapper umsMemberMapper;
    
    public String register(UmsMemberRegisterParamDTO umsMemberRegisterParamDTO){
        //非对称加密  
        String password = umsMemberRegisterParamDTO.getPassword();
        String encode = passwordEncoder.encode(password);
        umsMemberRegisterParamDTO.setPassword(encode);
        //非对称加密
        UmsMember umsMember = new UmsMember();
        BeanUtils.copyProperties(umsMemberRegisterParamDTO, umsMember);
        umsMemberMapper.insert(umsMember);
         return "success";
    }
    
    @Override
    public String login(UmsMemberLoginParamDTO umsMemberLoginParamDTO) {
        UmsMember umsMember = umsMemberMapper.selectByName(umsMemberLoginParamDTO.getUsername());
        if(null!=umsMember){
            String password = umsMember.getPassword();
            if(!passwordEncoder.matches(umsMemberLoginParamDTO.getPassword(), umsMember.getPassword())){
                return "密码不正确";
            }
        }else {
            return "用户不存在";
        }
        System.out.println("登陆成功");
        return "token";
    }
}
@Mapper
public interface UmsMemberMapper extends BaseMapper<UmsMember> {
    
    UmsMember selectByName(@Param("username") String username);
}
<?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.msb.mapper.UmsMemberMapper">
    <select id="selectByName" resultType="com.msb.entity.UmsMember">
        select * from ums_member where username=#{username}
    </select>
</mapper>
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.136:3306/dongbao?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
  profiles:
    active: dev
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
  mapper-locations:
    - classpath*:/com/msb/mapper/xml/*.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.msb</groupId>
    <artifactId>msb-dongbao-ums</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>msb-dongbao-ums</name>
    <description>Demo project for Spring Boot</description>
<parent>
    <groupId>com.msb</groupId>
    <artifactId>msb-dongbao-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.msb</groupId>
            <artifactId>msb-dongbao-ums-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter-test</artifactId>
            <version>3.5.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>5.3.2.RELEASE</version>
            <scope>test</scope>
        </dependency>
   

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>5.4.2</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.msb.MsbDongbaoUmsApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
同一返回值
{
 "code":"状态码",
 "msg":"信息提示",
 "data":""             
}
data:object或者list
@AllArgsConstructor
@NoArgsConstructor
public enum StateCodeEnum {
    /*100-199 用户业务 1开头
    * 200-299 支付业务 2开头
    * 以此类推
    * */
    SUCCESS(200,"请求成功"),
    FAIL(500,"请求失败");
    
    private int code;
    private String msg;
    
    @Override
    public String toString() {
        return "StateCodeEnum{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                '}';
    }
    
    public int getCode() {
        return code;
    }
    
    public void setCode(int code) {
        this.code = code;
    }
    
    public String getMsg() {
        return msg;
    }
    
    public void setMsg(String msg) {
        this.msg = msg;
    }
}
package com.msb.result;

import com.msb.enums.StateCodeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author lcc
 * @version V1.0
 * @Package com.msb.result
 * @date 2022/5/5 17:12
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class ResultWrapper<T> implements Serializable {
    /*状态码*/
    private int code;
    /*提示信息*/
    private String msg;
    /**/
    private T data;
    
    /*返回成功的包装*/
    
    public static ResultWrapper.ResultWrapperBuilder getSuccessBuilder(){
        
        return ResultWrapper.builder().code(StateCodeEnum.SUCCESS.getCode()).msg(StateCodeEnum.SUCCESS.getMsg());
    }
    
    public static ResultWrapper.ResultWrapperBuilder getFailBuilder(){
        
        return ResultWrapper.builder().code(StateCodeEnum.FAIL.getCode()).msg(StateCodeEnum.FAIL.getMsg());
    }
}
把之前的所有返回值string 类型改为标准的返回值类型
为了防止 其他人调用接口需要在顶级父maven项目引入依赖
    <!--spring validation 校验-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

 

 

 

 

 

 

为了解决遗产  返回一个友好页面给前段  需要包装以下异常
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UmsMemberRegisterParamDTO {
    //@NotEmpty(message = "用户名密码不为空")
    @Size(min = 1,max = 8,message = "用户名长度在1-8之间")
    private String username;
    @NotEmpty(message = "密码不能为空")
    private String password;
    private String icon;
    private String email;
    private String nickName;
    private String note;
   
}
@RestControllerAdvice/*因为返回值返回的页面存在*/
public class GlobalExceptionHandler {
    
    @ExceptionHandler(ArithmeticException.class)
    public ResultWrapper customException(){
        /*所有的方法都走这个异常*/
        return ResultWrapper.builder().code(301).msg("同一异常").build();
        
        
    }
}
@ControllerAdvice
public class ValidateHandler extends ResponseEntityExceptionHandler {
    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
                                                                  HttpHeaders headers,
                                                                  HttpStatus status,
                                                                  WebRequest request) {
        StringBuilder sb = new StringBuilder();
        for(FieldError fieldError:ex.getBindingResult().getFieldErrors()){
            String defaultMessage = fieldError.getDefaultMessage();
            sb.append("  "+defaultMessage);
            break;
        }
            return new ResponseEntity<>(ResultWrapper.builder().code(120).msg(sb.toString()).build(),HttpStatus.OK);
    }
}

 

posted @ 2022-05-04 23:04  花心大萝卜li  阅读(150)  评论(0)    收藏  举报