diff --git a/src/main/java/com/qniao/zsh/api/command/login/admin/LoginAdminCommandController.java b/src/main/java/com/qniao/zsh/api/command/login/admin/LoginAdminCommandController.java index c377b1d..10fbdce 100644 --- a/src/main/java/com/qniao/zsh/api/command/login/admin/LoginAdminCommandController.java +++ b/src/main/java/com/qniao/zsh/api/command/login/admin/LoginAdminCommandController.java @@ -1,10 +1,13 @@ package com.qniao.zsh.api.command.login.admin; -import cn.hutool.json.JSONUtil; +import com.qniao.zsh.api.command.login.admin.response.LoginInfoVo; +import com.qniao.zsh.api.command.login.admin.response.LoginVo; +import com.qniao.zsh.application.service.login.LoginApplicationService; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotBlank; /** * @author wh @@ -13,11 +16,23 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("admin") public class LoginAdminCommandController { + @Resource + private LoginApplicationService loginApplicationService; + + + @ApiOperation("登录转发") + @PostMapping("/login") + public LoginVo login(@NotBlank(message = "用户名不能为空")@RequestParam("username")String username, + @NotBlank(message = "密码不能为空")@RequestParam("password")String password) { + + return loginApplicationService.requestOps(username, password); + + } + @ApiOperation("登录转发") + @GetMapping("/login-info") + public LoginInfoVo login(@NotBlank(message = "Token失效")@RequestHeader("Authorization")String authorization) { + + return loginApplicationService.loginInfo(authorization); - @ApiOperation("Vben的getUserInfo信息") - @GetMapping("/info") - public String vbenUserInfo(){ - String info = "{\"code\":0,\"result\":{\"userId\":\"1\",\"username\":\"vben\",\"realName\":\"Vben Admin\",\"avatar\":\"\",\"desc\":\"manager\",\"password\":\"123456\",\"token\":\"fakeToken1\",\"homePath\":\"/dashboard/analysis\",\"roles\":[{\"roleName\":\"Super Admin\",\"value\":\"super\"}]},\"message\":\"ok\",\"type\":\"success\"}"; - return JSONUtil.toJsonStr(info); } } diff --git a/src/main/java/com/qniao/zsh/api/command/login/admin/request/LoginDto.java b/src/main/java/com/qniao/zsh/api/command/login/admin/request/LoginDto.java new file mode 100644 index 0000000..b010eec --- /dev/null +++ b/src/main/java/com/qniao/zsh/api/command/login/admin/request/LoginDto.java @@ -0,0 +1,22 @@ +package com.qniao.zsh.api.command.login.admin.request; + + +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +/** + * @author wh + * @date 2023/4/6 + */ +@Data +public class LoginDto { + @NotNull(message = "用户名不能为空") + private String username; + @NotNull(message = "密码不能为空") + private String password; + + +} + diff --git a/src/main/java/com/qniao/zsh/api/command/login/admin/response/LoginInfoVo.java b/src/main/java/com/qniao/zsh/api/command/login/admin/response/LoginInfoVo.java new file mode 100644 index 0000000..6d35dbb --- /dev/null +++ b/src/main/java/com/qniao/zsh/api/command/login/admin/response/LoginInfoVo.java @@ -0,0 +1,21 @@ +package com.qniao.zsh.api.command.login.admin.response; + +import lombok.Data; + +/** + * @author wh + * @date 2023/4/8 + */ +@Data +public class LoginInfoVo { + + private String userId; + + private String realName; + + private String avatar; + + private String desc; + + +} diff --git a/src/main/java/com/qniao/zsh/api/command/login/admin/response/LoginVo.java b/src/main/java/com/qniao/zsh/api/command/login/admin/response/LoginVo.java new file mode 100644 index 0000000..4130205 --- /dev/null +++ b/src/main/java/com/qniao/zsh/api/command/login/admin/response/LoginVo.java @@ -0,0 +1,20 @@ +package com.qniao.zsh.api.command.login.admin.response; + +import lombok.Data; + +/** + * @author wh + * @date 2023/4/7 + */ +@Data +public class LoginVo { + private String userId; + + private String token; + + private String role; + + private Integer code; + + private String message; +} diff --git a/src/main/java/com/qniao/zsh/application/service/login/LoginApplicationService.java b/src/main/java/com/qniao/zsh/application/service/login/LoginApplicationService.java new file mode 100644 index 0000000..4c31aca --- /dev/null +++ b/src/main/java/com/qniao/zsh/application/service/login/LoginApplicationService.java @@ -0,0 +1,75 @@ +package com.qniao.zsh.application.service.login; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.Header; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.qniao.zsh.api.command.login.admin.response.LoginInfoVo; +import com.qniao.zsh.api.command.login.admin.response.LoginVo; +import com.qniao.zsh.infrastructure.config.LoginRequestConfig; +import com.qniao.zsh.infrastructure.exception.LoginFailedException; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author wh + * @date 2023/4/6 + */ +@Service +@EnableAsync +public class LoginApplicationService { + public LoginVo requestOps(String username, String password) { + //链式构建请求 + Map paramMap = new HashMap<>(2); + paramMap.put("username", username); + paramMap.put("password", password); + HttpResponse response = HttpRequest.post(LoginRequestConfig.LOGINURL) + .form(paramMap) + .timeout(20000) + .execute(); + LoginVo loginVo = new LoginVo(); + loginVo.setToken(response.header(Header.AUTHORIZATION)); + if (loginVo.getToken() == null){ + throw new LoginFailedException(); + }else { + String loginInfo = HttpRequest.get(LoginRequestConfig.LOGININFOURL) + .header(Header.AUTHORIZATION, loginVo.getToken()) + .timeout(20000) + .execute().body(); + JSONObject jsonInfo = JSONUtil.parseObj(loginInfo); + loginVo.setCode(Integer.valueOf(jsonInfo.getStr("code"))); + loginVo.setMessage(jsonInfo.getStr("message")); + //重新从返回的data赋值 + String jsonData = jsonInfo.getStr("data"); + jsonInfo = JSONUtil.parseObj(jsonData); + loginVo.setUserId(jsonInfo.getStr("adminId")); + loginVo.setRole(jsonInfo.getStr("position")); + + } + + return loginVo; + } + public LoginInfoVo loginInfo(String token){ + LoginInfoVo loginInfoVo = new LoginInfoVo(); + String loginInfo = HttpRequest.get(LoginRequestConfig.LOGININFOURL) + .header(Header.AUTHORIZATION, token) + .timeout(20000) + .execute().body(); + JSONObject jsonInfo = JSONUtil.parseObj(loginInfo); + String jsonData = jsonInfo.getStr("data"); + jsonInfo = JSONUtil.parseObj(jsonData); + loginInfoVo.setUserId(jsonInfo.getStr("adminId")); + loginInfoVo.setRealName(jsonInfo.getStr("name")); + loginInfoVo.setAvatar(jsonInfo.getStr("avatar")); + loginInfoVo.setDesc(jsonInfo.getStr("position")); + + return loginInfoVo; + } + + +} diff --git a/src/main/java/com/qniao/zsh/domain/aggregate/user/entity/User.java b/src/main/java/com/qniao/zsh/domain/aggregate/user/entity/User.java new file mode 100644 index 0000000..a40bad6 --- /dev/null +++ b/src/main/java/com/qniao/zsh/domain/aggregate/user/entity/User.java @@ -0,0 +1,14 @@ +package com.qniao.zsh.domain.aggregate.user.entity; + +import org.mc.ddd.infrastructure.persistent.Entity; + +/** + * @author wh + * @date 2023/4/6 + */ +public class User extends Entity { + /** + * 头像地址 + */ + private String avatarUrl; +} diff --git a/src/main/java/com/qniao/zsh/infrastructure/config/LoginRequestConfig.java b/src/main/java/com/qniao/zsh/infrastructure/config/LoginRequestConfig.java new file mode 100644 index 0000000..4888bf9 --- /dev/null +++ b/src/main/java/com/qniao/zsh/infrastructure/config/LoginRequestConfig.java @@ -0,0 +1,28 @@ +package com.qniao.zsh.infrastructure.config; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +/** + * @author wh + * @date + */ +@Configuration +public class LoginRequestConfig implements InitializingBean { + @Value("${login-request}") + private String loginUrl; + + @Value("${loginInfo-request}") + private String loginInfo; + + public static String LOGINURL; + public static String LOGININFOURL; + + @Override + public void afterPropertiesSet() { + LOGINURL = loginUrl; + LOGININFOURL = loginInfo; + + } +} diff --git a/src/main/java/com/qniao/zsh/infrastructure/exception/AuthExceptionCode.java b/src/main/java/com/qniao/zsh/infrastructure/exception/AuthExceptionCode.java new file mode 100644 index 0000000..0d851db --- /dev/null +++ b/src/main/java/com/qniao/zsh/infrastructure/exception/AuthExceptionCode.java @@ -0,0 +1,37 @@ +package com.qniao.zsh.infrastructure.exception; + +public interface AuthExceptionCode { + int AuthMethodKeyDuplication = 51001; + + int AuthMethodProcessorNull = 51002; + + int ExistedChildrenItem = 51003; + + int SendingIntervalTooShort = 51004; + + int CaptchaInvalid = 51005; + + int AuthSessionNotExisted = 51006; + + int AccountFieldNotExisted = 51007; + + int PasswordFieldNotExisted = 51008; + + int AccountInvalid = 51009; + + int PasswordInvalid = 51010; + + int PasswordReInputError = 51011; + + int NotMatchItem = 51012; + + int AccountPatternError = 51013; + + int PasswordPatternError = 51014; + + int PasswordEncodingError = 51015; + + int PasswordNotMatchUser = 51016; + + int AccountExisted = 51017; +} diff --git a/src/main/java/com/qniao/zsh/infrastructure/exception/LoginFailedException.java b/src/main/java/com/qniao/zsh/infrastructure/exception/LoginFailedException.java new file mode 100644 index 0000000..42873bd --- /dev/null +++ b/src/main/java/com/qniao/zsh/infrastructure/exception/LoginFailedException.java @@ -0,0 +1,13 @@ +package com.qniao.zsh.infrastructure.exception; + +import org.mc.ddd.infrastructure.exception.BizException; + +/** + * @author wh + * @date 2023/4/7 + */ +public class LoginFailedException extends BizException { + public LoginFailedException() { + super(AuthExceptionCode.PasswordNotMatchUser,"账号或密码错误"); + } +} diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 8ab4fa7..1f20e07 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -5,8 +5,8 @@ mysql-user-password: 704177820 redis-database-index: 2 redis-host: 8.135.8.221 redis-port: 6379 -eureka-enable : true -register-eureka-url : http://eureka:123456@8.135.8.221:8000/eureka/ +eureka-enable: true +register-eureka-url: http://eureka:123456@8.135.8.221:8000/eureka/ message-push-host: http://8.135.8.221:7050 redis-password: qnredis fake_captcha_enable: true @@ -46,6 +46,11 @@ xxl.job.executor.logretentiondays: 30 #Linux spier-dirdirectory: /opt/ztb-information-spider/papernews_spider +#登录请求url +login-request: https://api-ops-ztb-test.qniao.cn/ztb-supply-chain-service/admin/login +#登录信息返回url +loginInfo-request: https://api-ops-ztbsc-test.qniao.cn/ztb-supply-chain-service/admin/employee/get/login-info + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c96241c..a002736 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,7 +17,7 @@ configuration: server: - port: 7023 + port: 8023 servlet: context-path: /ztb-spider-service