佳能:感动常在
记得很早之前看过的一个广告:男子拿着妻子的相机发呆,父亲尝试安慰着他,然后接过相机给他拍了张照片,突然他进去了相机的世界,相机里的他一直给父亲做手势,直到父亲翻到了最后一张照片,那一张照片有他的妻子,如愿以偿,男子遇到了他去世的妻子,男子快速在手上写着什么,父亲满含泪水,把照片放大打印出来,手上写的是 Leave me…
sql文件链接:https://pan.baidu.com/s/1ZditX-YHPKppYt3GveFfbA?pwd=abcd
新建 heima-leadnews-model\src\main\java\com\heima\model\admin\pojos\AdUser.java
文件:
/*** * 管理员用户信息表*
* @author itheima*/
@Data
@TableName("ad_user")
public class AdUser implements Serializable {private static final long serialVersionUID = 1L;/*** 主键*/private Integer id;/*** 登录用户名*/@TableField("name")private String name;/*** 登录密码*/@TableField("password")private String password;/*** 盐*/@TableField("salt")private String salt;/*** 昵称*/@TableField("nickname")private String nickname;/*** 头像*/@TableField("image")private String image;/*** 手机号*/@TableField("phone")private String phone;/*** 状态0 暂时不可用1 永久不可用9 正常可用*/@TableField("status")private Integer status;/*** 邮箱*/@TableField("email")private String email;/*** 最后一次登录时间*/@TableField("login_time")private Date loginTime;/*** 创建时间*/@TableField("created_time")private Date createdTime;}
新建 heima-leadnews-model\src\main\java\com\heima\model\admin\pojos\ApUserRealname.java
文件:
/*** * APP实名认证信息表*
* @author itheima*/
@Data
@TableName("ap_user_realname")
public class ApUserRealname implements Serializable {private static final long serialVersionUID = 1L;/*** 主键*/@TableId(value = "id", type = IdType.AUTO)private Integer id;/*** 账号ID*/@TableField("user_id")private Integer userId;/*** 用户名称*/@TableField("name")private String name;/*** 资源名称*/@TableField("idno")private String idno;/*** 正面照片*/@TableField("font_image")private String fontImage;/*** 背面照片*/@TableField("back_image")private String backImage;/*** 手持照片*/@TableField("hold_image")private String holdImage;/*** 活体照片*/@TableField("live_image")private String liveImage;/*** 状态0 创建中1 待审核2 审核失败9 审核通过*/@TableField("status")private Short status;/*** 拒绝原因*/@TableField("reason")private String reason;/*** 创建时间*/@TableField("created_time")private Date createdTime;/*** 提交时间*/@TableField("submited_time")private Date submitedTime;/*** 更新时间*/@TableField("updated_time")private Date updatedTime;}
新建 heima-leadnews-service\heima-leadnews-admin\src\main\java\com\heima\admin\AdminApplication.java
文件:
@SpringBootApplication
@EnableDiscoveryClient // 集成当前的注册中心
@MapperScan("com.heima.admin.mapper") // 集成myBatisPlus 扫描mapper
public class AdminApplication {public static void main(String[] args) {SpringApplication.run(AdminApplication.class, args);}
}
新建 heima-leadnews-service\heima-leadnews-admin\src\main\resources\bootstrap.yml
文件:
server:port: 51809
spring:application:name: leadnews-admincloud:nacos:discovery:server-addr: 192.168.200.130:8848config:server-addr: 192.168.200.130:8848file-extension: yml
新建 heima-leadnews-service\heima-leadnews-admin\src\main\resources\logback.xml
文件:
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n utf8 ${LOG_HOME}/leadnews.%d{yyyy-MM-dd}.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 0 512
新建 leadnews-admin
配置:
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/leadnews_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=falseusername: rootpassword: 123456
# 设置Mapper接口所对应的XML文件位置,如果你在Mapper接口中有自定义方法,需要进行该配置
mybatis-plus:mapper-locations: classpath*:mapper/*.xml# 设置别名包扫描路径,通过该属性可以给包中的类注册别名type-aliases-package: com.heima.model.admin.pojos
接口地址:/login/in
请求方式:POST
请求数据类型:application/json
响应数据类型:*/*
接口描述:
请求示例:
{"name": "","password": ""
}
请求参数:
参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema |
---|---|---|---|---|---|
dto | dto | body | true | AdUserDto | AdUserDto |
name | true | string | |||
password | true | string |
响应状态:
状态码 | 说明 | schema |
---|---|---|
200 | OK | ResponseResult |
201 | Created | |
401 | Unauthorized | |
403 | Forbidden | |
404 | Not Found |
响应参数:
参数名称 | 参数说明 | 类型 | schema |
---|---|---|---|
code | integer(int32) | integer(int32) | |
data | object | ||
errorMessage | string | ||
host | string |
响应示例:
{"host":null,"code":1002,"errorMessage":"数据不存在","data":null
}
{"host":null,"code":2,"errorMessage":"密码错误","data":null
}{"host":null,"code":200,"errorMessage":"操作成功","data":{"user":{"id":"3","name":"guest","password":"","salt":"","nickname":"gu","image":null,"phone":"13412345676","status":1,"email":"guest@qq.com","loginTime":1596092403000,"createdTime":1596092406000},"token":"..."}
}
新建 heima-leadnews-model\src\main\java\com\heima\model\admin\dtos\AdLoginDto.java
文件:
@Data
public class AdLoginDto {/*** 用户名*/private String name;/*** 密码*/private String password;
}
新建 heima-leadnews-service\heima-leadnews-admin\src\main\java\com\heima\admin\controller\v1\LoginController.java
文件:
@RestController
@RequestMapping("/api/v1/admin/login")
public class LoginController {@PostMapping("/in")public ResponseResult login(@RequestBody AdLoginDto adLoginDto) {return null;}
}
新建 heima-leadnews-service\heima-leadnews-admin\src\main\java\com\heima\admin\mapper\AdUserMapper.java
文件:
public interface AdUserMapper extends BaseMapper {
}
新建 heima-leadnews-service\heima-leadnews-admin\src\main\java\com\heima\admin\service\AdUserService.java
文件:
public interface AdUserService {/*** 后台系统登录* @param adminLoginDto* @return*/public ResponseResult login(AdLoginDto adminLoginDto);
}
新建 heima-leadnews-service\heima-leadnews-admin\src\main\java\com\heima\admin\service\impl\AdUserServiceImpl.java
文件:
@Service
@Slf4j
public class AdUserServiceImpl extends ServiceImpl implements AdUserService {/*** 后台系统登录* @param dto* @return*/@Overridepublic ResponseResult login(AdLoginDto dto) {//1.检查参数if (StringUtils.isBlank(dto.getName()) || StringUtils.isBlank(dto.getPassword())) {return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID, "用户名或密码为空");}//2.查询用户AdUser adUser = getOne(Wrappers.lambdaQuery().eq(AdUser::getName, dto.getName()));if (adUser == null) {return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);}//3.比对密码String salt = adUser.getSalt();String pswd = dto.getPassword();pswd = DigestUtils.md5DigestAsHex((pswd + salt).getBytes());if (pswd.equals(adUser.getPassword())) {//4.返回数据 jwtMap map = new HashMap<>();map.put("token", AppJwtUtil.getToken(adUser.getId().longValue()));adUser.setSalt("");adUser.setPassword("");map.put("user", adUser);return ResponseResult.okResult(map);} else {return ResponseResult.errorResult(AppHttpCodeEnum.LOGIN_PASSWORD_ERROR);}}
}
编辑 heima-leadnews-service\heima-leadnews-admin\src\main\java\com\heima\admin\controller\v1\LoginController.java
文件:
@RestController
@RequestMapping("/api/v1/admin/login")
public class LoginController {@Autowiredprivate AdUserService adUserService;@PostMapping("/in")public ResponseResult login(@RequestBody AdLoginDto adLoginDto) {return adUserService.login(adLoginDto);}
}
新建 heima-leadnews-gateway\heima-leadnews-admin-gateway\src\main\java\com\heima\admin\gateway\AdminGatewayApplication.java
文件:
@SpringBootApplication
@EnableDiscoveryClient
public class AdminGatewayApplication {public static void main(String[] args) {SpringApplication.run(AdminGatewayApplication.class, args);}
}
新建 heima-leadnews-gateway\heima-leadnews-admin-gateway\src\main\resources\bootstrap.yml
文件:
server:port: 51603
spring:application:name: leadnews-admin-gatewaycloud:nacos:discovery:server-addr: 192.168.200.130:8848config:server-addr: 192.168.200.130:8848file-extension: yml
nocos地址: http://192.168.200.130:8848/nacos
新建 leadnews-admin-gateway
配置:
spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: truecors-configurations:'[/**]': # 匹配所有请求allowedOrigins: "*" #跨域处理 允许所有的域allowedMethods: # 支持的方法- GET- POST- PUT- DELETE- OPTIONroutes:# 平台管理- id: service_6001uri: lb://leadnews-adminpredicates:- Path=/service_6001/**filters:- StripPrefix= 1
启动项目网关和后台微服务两个服务,使用postman进行测试
网关后的请求地址: http://localhost:51809/api/v1/admin/login/in
资源链接: https://pan.baidu.com/s/1R7akEh2ceQNH8CL2pwV-uA?pwd=abcd
解压至 nginx 目录下(同自媒体端nginx)
(nginx包中)新建 D:\code\hm\leadnews\config\nginx-1.18.0\conf\leadnews.conf\heima-leadnews-admin.conf
文件:
upstream heima-admin-gateway{server localhost:51603;
}server {listen 8803;location / {root D:/code/hm/leadnews/config/admin-web/;index index.html;}location ~/service_6001/(.*) {proxy_pass http://heima-admin-gateway/$1;proxy_set_header HOST $host; # 不改变源请求头的值proxy_pass_request_body on; #开启获取请求体proxy_pass_request_headers on; #开启获取请求头proxy_set_header X-Real-IP $remote_addr; # 记录真实发出请求的客户端IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理信息}
}
启动nginx,启动后台微服务和后台网关,后台系统地址: http://localhost:8803/#/login
上一篇:1145. 二叉树着色游戏
下一篇:MySQL 存储引擎