diff --git a/coolstore-partner-common/coolstore-partner-common.iml b/coolstore-partner-common/coolstore-partner-common.iml index e709ede93..722cf3d7f 100644 --- a/coolstore-partner-common/coolstore-partner-common.iml +++ b/coolstore-partner-common/coolstore-partner-common.iml @@ -21,5 +21,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-common/pom.xml b/coolstore-partner-common/pom.xml index 7c5cf3ffd..f98b7579f 100644 --- a/coolstore-partner-common/pom.xml +++ b/coolstore-partner-common/pom.xml @@ -54,6 +54,10 @@ org.slf4j slf4j-api + + org.springframework.boot + spring-boot-starter-web + \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java index e983622f8..c3b1d79c7 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java @@ -12,8 +12,16 @@ public class CommonConstants { public static final String REQUEST_ID = "requestId"; + public static final String ACCESS_TOKEN_KEY = "access_token"; + + public static final String REFRESH_TOKEN_KEY = "refresh_token"; + + public static final String DEFAULT_AVATAR = "DefaultAvatar"; + public static final int ACTION_TOKEN_EXPIRE = 14400; + public static final int REFRESH_TOKEN_EXPIRE = 60*60*24*30; + public static final int ZERO = 0; public static final int ONE = 1; public static final int TWO = 2; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AppTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AppTypeEnum.java new file mode 100644 index 000000000..ff567f0aa --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AppTypeEnum.java @@ -0,0 +1,28 @@ +package com.cool.store.enums; + +/** + * @author zhangchenbiao + * @FileName: AppTypeEnum + * @Description: + * @date 2023-05-23 9:41 + */ +public enum AppTypeEnum { + + FEI_SHU("fei_shu", "飞书"); + + private String value; + private String message; + + AppTypeEnum(String value, String message) { + this.value = value; + this.message = message; + } + + public String getValue() { + return value; + } + + public String getMessage() { + return message; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index bf83b7d3d..3d6e47184 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -28,6 +28,13 @@ public enum ErrorCodeEnum { FAIL(400000, "FAIL", null), ACCESS_TOKEN_INVALID(400005, "Invalid token", null), PARAMS_VALIDATE_ERROR(400003, "参数校验失败!", null), + LOGIN_ERROR(400004, "登录失败", null), + ENTERPRISE_INIT(400006, "企业正在初始化,请稍后访问!",null), + NOT_AUTH(400007, "暂无权限,请联系管理员!", null), + USER_FREEZE(1021019,"账号被冻结,请联系管理员",null), + ENTERPRISE_NOT_EXIST(1021020,"企业不存在",null), + USER_NOT_EXIST(1021021,"用户不存在",null), + USER_WAIT_AUDIT(1021018,"账号审核中,请联系企业管理员",null), ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/RoleEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/RoleEnum.java new file mode 100644 index 000000000..3301410c2 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/RoleEnum.java @@ -0,0 +1,115 @@ +package com.cool.store.enums; + +import lombok.Getter; +import lombok.Setter; + +import javax.management.relation.Role; +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +public enum RoleEnum { + + /** + * 管理员 + */ + MASTER("20000000", "管理员", 1,"master"), + /** + * 子管理员 + */ + SUB_MASTER("80000000", "子管理员", 2,"sub_master"), + /** + * 普通员工 + */ + EMPLOYEE("30000000", "未分配", 99999999,"employee"), + /** + * 部门负责人 + */ + DEPT_LEADER("40000000", "部门负责人", 10,"dept_leader"), + /** + * 店长 + */ + SHOPOWNER("50000000", "店长", 3,"shopowner"), + /** + * 运营 + */ + OPERATOR("60000000", "运营", 4,"operator"), + /** + * 店员 + */ + CLERK("70000000", "店员", 5,"clerk"); + + + private static final Map MAP = Arrays.stream(values()).collect( + Collectors.toMap(RoleEnum::getRoleEnum, Function.identity())); + + private static final Map ROLE_ID_MAP = Arrays.stream(values()).collect( + Collectors.toMap(RoleEnum::getId, Function.identity())); + + private String id; + private String name; + @Getter + @Setter + private Integer priority; + + private String roleEnum; + + + RoleEnum(String id, String name, Integer priority, String roleEnum) { + this.id = id; + this.name = name; + this.priority = priority; + this.roleEnum=roleEnum; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public String getRoleEnum() { + return roleEnum; + } + + public static RoleEnum getByCode(String code) { + return MAP.get(code); + } + + /** + * 是否是管理员 及 子管理员 + * @param code + * @return + */ + public static boolean isAdmin(String code){ + if(MASTER.getRoleEnum().equals(code) || SUB_MASTER.getRoleEnum().equals(code)){ + return true; + } + return false; + } + + /** + * 根据id 判断 是否是管理员 及 子管理员 + * @param id + * @return + */ + public static boolean isAdminById(String id){ + if(MASTER.getId().equals(id) || SUB_MASTER.getId().equals(id)){ + return true; + } + return false; + } + + /** + * 是否包含角色id + * @param roleId + * @return + */ + public static boolean isContainsRoleId(String roleId){ + return ROLE_ID_MAP.containsKey(roleId); + } + +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserStatusEnum.java new file mode 100644 index 000000000..1484022e5 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserStatusEnum.java @@ -0,0 +1,52 @@ +package com.cool.store.enums; + +/** + * @author zhangchenbiao + * @FileName: UserStatusEnum + * @Description: 用户状态枚举 + * @date 2021-07-19 16:27 + */ +public enum UserStatusEnum { + //用户状态 0待审核 1正常 2冻结 + WAIT_AUDIT(0,"待审核"), + NORMAL(1,"正常"), + FREEZE(2, "冻结") + ; + + private Integer code; + + private String message; + + UserStatusEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } + + public static String getMessageByCode(Integer code){ + for(UserStatusEnum Enum: UserStatusEnum.values()){ + if(Enum.code.equals(code)){ + return Enum.message; + } + } + return null; + } + + public static Integer getCodeByMessage(String message){ + for(UserStatusEnum Enum: UserStatusEnum.values()){ + if(Enum.message.equals(message)){ + return Enum.code; + } + } + return null; + } + +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/RestTemplateUtil.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/RestTemplateUtil.java new file mode 100644 index 000000000..423f9baf8 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/RestTemplateUtil.java @@ -0,0 +1,637 @@ +package com.cool.store.utils; + +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +/** + * + */ +public class RestTemplateUtil { + + private static final RestTemplate restTemplate = new RestTemplate(); + + // ----------------------------------GET------------------------------------------------------- + + /** + * GET请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, Class responseType) { + return restTemplate.getForEntity(url, responseType); + } + + /** + * 负载均衡请求 + */ + public static ResponseEntity loadGet(String url, Class responseType) { + return getLoadBalanceTemplate().getForEntity(url, responseType); + } + + /** + * GET请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, Class responseType, Object... uriVariables) { + return restTemplate.getForEntity(url, responseType, uriVariables); + } + + /** + * GET请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, Class responseType, Map uriVariables) { + return restTemplate.getForEntity(url, responseType, uriVariables); + } + + /** + * 带请求头的GET请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, Map headers, Class responseType, Object... uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return get(url, httpHeaders, responseType, uriVariables); + } + + /** + * 带请求头的GET请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, HttpHeaders headers, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(headers); + return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的GET请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, Map headers, Class responseType, Map uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return get(url, httpHeaders, responseType, uriVariables); + } + + /** + * 带请求头的GET请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity get(String url, HttpHeaders headers, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(headers); + return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables); + } + + // ----------------------------------POST------------------------------------------------------- + + /** + * POST请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @return + */ + public static ResponseEntity post(String url, Class responseType) { + return restTemplate.postForEntity(url, HttpEntity.EMPTY, responseType); + } + + /** + * POST请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, Object requestBody, Class responseType) { + return restTemplate.postForEntity(url, requestBody, responseType); + } + + public static ResponseEntity loadPost(String url, Object requestBody, Class responseType) { + return getLoadBalanceTemplate().postForEntity(url, requestBody, responseType); + } + + + /** + * POST请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, Object requestBody, Class responseType, Object... uriVariables) { + return restTemplate.postForEntity(url, requestBody, responseType, uriVariables); + } + + /** + * POST请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, Object requestBody, Class responseType, Map uriVariables) { + return restTemplate.postForEntity(url, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的POST请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, Map headers, Object requestBody, Class responseType, Object... uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return post(url, httpHeaders, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的POST请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, HttpHeaders headers, Object requestBody, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); + return post(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的POST请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, Map headers, Object requestBody, Class responseType, Map uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return post(url, httpHeaders, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的POST请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, HttpHeaders headers, Object requestBody, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); + return post(url, requestEntity, responseType, uriVariables); + } + + /** + * 自定义请求头和请求体的POST请求调用方式 + * + * @param url 请求URL + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, HttpEntity requestEntity, Class responseType, Object... uriVariables) { + return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables); + } + + /** + * 自定义请求头和请求体的POST请求调用方式 + * + * @param url 请求URL + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity post(String url, HttpEntity requestEntity, Class responseType, Map uriVariables) { + return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables); + } + + // ----------------------------------PUT------------------------------------------------------- + + /** + * PUT请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, Class responseType, Object... uriVariables) { + return put(url, HttpEntity.EMPTY, responseType, uriVariables); + } + + /** + * PUT请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, Object requestBody, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody); + return put(url, requestEntity, responseType, uriVariables); + } + + /** + * PUT请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, Object requestBody, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody); + return put(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的PUT请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, Map headers, Object requestBody, Class responseType, Object... uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return put(url, httpHeaders, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的PUT请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, HttpHeaders headers, Object requestBody, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); + return put(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的PUT请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, Map headers, Object requestBody, Class responseType, Map uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return put(url, httpHeaders, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的PUT请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, HttpHeaders headers, Object requestBody, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); + return put(url, requestEntity, responseType, uriVariables); + } + + /** + * 自定义请求头和请求体的PUT请求调用方式 + * + * @param url 请求URL + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, HttpEntity requestEntity, Class responseType, Object... uriVariables) { + return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables); + } + + /** + * 自定义请求头和请求体的PUT请求调用方式 + * + * @param url 请求URL + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity put(String url, HttpEntity requestEntity, Class responseType, Map uriVariables) { + return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables); + } + + // ----------------------------------DELETE------------------------------------------------------- + + /** + * DELETE请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Class responseType, Object... uriVariables) { + return delete(url, HttpEntity.EMPTY, responseType, uriVariables); + } + + /** + * DELETE请求调用方式 + * + * @param url 请求URL + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Class responseType, Map uriVariables) { + return delete(url, HttpEntity.EMPTY, responseType, uriVariables); + } + + /** + * DELETE请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Object requestBody, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody); + return delete(url, requestEntity, responseType, uriVariables); + } + + /** + * DELETE请求调用方式 + * + * @param url 请求URL + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Object requestBody, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody); + return delete(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Map headers, Class responseType, Object... uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return delete(url, httpHeaders, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, HttpHeaders headers, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(headers); + return delete(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Map headers, Class responseType, Map uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return delete(url, httpHeaders, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, HttpHeaders headers, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(headers); + return delete(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Map headers, Object requestBody, Class responseType, Object... uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return delete(url, httpHeaders, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, HttpHeaders headers, Object requestBody, Class responseType, Object... uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); + return delete(url, requestEntity, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, Map headers, Object requestBody, Class responseType, Map uriVariables) { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setAll(headers); + return delete(url, httpHeaders, requestBody, responseType, uriVariables); + } + + /** + * 带请求头的DELETE请求调用方式 + * + * @param url 请求URL + * @param headers 请求头参数 + * @param requestBody 请求参数体 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, HttpHeaders headers, Object requestBody, Class responseType, Map uriVariables) { + HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); + return delete(url, requestEntity, responseType, uriVariables); + } + + /** + * 自定义请求头和请求体的DELETE请求调用方式 + * + * @param url 请求URL + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, HttpEntity requestEntity, Class responseType, Object... uriVariables) { + return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables); + } + + /** + * 自定义请求头和请求体的DELETE请求调用方式 + * + * @param url 请求URL + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity delete(String url, HttpEntity requestEntity, Class responseType, Map uriVariables) { + return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables); + } + + // ----------------------------------通用方法------------------------------------------------------- + + /** + * 通用调用方式 + * + * @param url 请求URL + * @param method 请求方法类型 + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,按顺序依次对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, Class responseType, Object... uriVariables) { + return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables); + } + + /** + * 通用调用方式 + * + * @param url 请求URL + * @param method 请求方法类型 + * @param requestEntity 请求头和请求体封装对象 + * @param responseType 返回对象类型 + * @param uriVariables URL中的变量,与Map中的key对应 + * @return ResponseEntity 响应对象封装类 + */ + public static ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, Class responseType, Map uriVariables) { + return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables); + } + + /** + * 获取RestTemplate实例对象,可自由调用其方法 + * + * @return RestTemplate实例对象 + */ + public static RestTemplate getRestTemplate() { + return restTemplate; + } + + public static RestTemplate getLoadBalanceTemplate() { + return SpringContextHolder.getBean(RestTemplate.class); + } + +} \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/SpringContextHolder.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/SpringContextHolder.java new file mode 100644 index 000000000..523c508a9 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/SpringContextHolder.java @@ -0,0 +1,27 @@ +package com.cool.store.utils; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * + * @author xingfeng + * @date 2018/11/26 + */ + +@Component +public class SpringContextHolder implements ApplicationContextAware { + + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextHolder.applicationContext = applicationContext; + } + + public static T getBean(Class clz){ + return applicationContext.getBean(clz); + } +} diff --git a/coolstore-partner-dao/coolstore-partner-dao.iml b/coolstore-partner-dao/coolstore-partner-dao.iml index 44eddfdde..8a308b659 100644 --- a/coolstore-partner-dao/coolstore-partner-dao.iml +++ b/coolstore-partner-dao/coolstore-partner-dao.iml @@ -20,7 +20,6 @@ - @@ -30,7 +29,6 @@ - @@ -40,8 +38,6 @@ - - @@ -67,6 +63,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseConfigDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseConfigDAO.java index 078d3c3a9..07a50d541 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseConfigDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseConfigDAO.java @@ -39,6 +39,13 @@ public class EnterpriseConfigDAO { return enterpriseConfigMapper.getDistinctDbServer(); } + public EnterpriseConfigDO getConfigByCorpIdAndAppType(String corpId, String appType){ + if(StringUtils.isAnyBlank(corpId, appType)){ + return null; + } + return enterpriseConfigMapper.getConfigByCorpIdAndAppType(corpId, appType); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseDAO.java new file mode 100644 index 000000000..26606d068 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseDAO.java @@ -0,0 +1,30 @@ +package com.cool.store.dao; + +import com.cool.store.mapper.EnterpriseMapper; +import com.cool.store.model.entity.EnterpriseDO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author zhangchenbiao + * @FileName: EnterpriseDAO + * @Description: + * @date 2023-05-23 13:52 + */ +@Service +public class EnterpriseDAO { + + @Resource + private EnterpriseMapper enterpriseMapper; + + + public EnterpriseDO getEnterpriseById(String enterpriseId){ + if(StringUtils.isBlank(enterpriseId)){ + return null; + } + return enterpriseMapper.getEnterpriseById(enterpriseId); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java index a58c37149..631f96b49 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java @@ -1,7 +1,12 @@ package com.cool.store.dao; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.mapper.EnterpriseUserMapper; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + /** * @author zhangchenbiao * @date 2023-05-19 02:58 @@ -9,4 +14,15 @@ import org.springframework.stereotype.Service; @Service public class EnterpriseUserDAO { + @Resource + private EnterpriseUserMapper enterpriseUserMapper; + + + public EnterpriseUserDO getUserInfoById(String enterpriseId, String userId){ + if(StringUtils.isAnyBlank(enterpriseId, userId)){ + return null; + } + return enterpriseUserMapper.getUserInfoById(enterpriseId, userId); + } + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LoginRecordDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LoginRecordDAO.java new file mode 100644 index 000000000..271540ce0 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LoginRecordDAO.java @@ -0,0 +1,28 @@ +package com.cool.store.dao; + +import com.cool.store.mapper.LoginRecordMapper; +import com.cool.store.model.entity.LoginRecordDO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author zhangchenbiao + * @FileName: LoginRecordDAO + * @Description: + * @date 2023-05-23 15:48 + */ +@Service +public class LoginRecordDAO { + + @Resource + private LoginRecordMapper loginRecordMapper; + + public void addLoginRecord(String enterpriseId, String userId){ + LoginRecordDO record = new LoginRecordDO(); + record.setUserId(userId); + record.setCreateTime(System.currentTimeMillis()); + loginRecordMapper.insertSelective(record, enterpriseId); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java index fbc1c69a0..bc34287bf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java @@ -1,7 +1,12 @@ package com.cool.store.dao; +import com.cool.store.entity.SysRoleDO; +import com.cool.store.mapper.SysRoleMapper; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + /** * @author zhangchenbiao * @date 2023-05-19 03:00 @@ -9,4 +14,20 @@ import org.springframework.stereotype.Service; @Service public class SysRoleDAO { + @Resource + private SysRoleMapper sysRoleMapper; + + /** + * 获取高优先级的角色 + * @param enterpriseId + * @param userId + * @return + */ + public SysRoleDO getHighestPrioritySysRoleDoByUserId(String enterpriseId, String userId){ + if(StringUtils.isAnyBlank(enterpriseId, userId)){ + return null; + } + return sysRoleMapper.getHighestPrioritySysRoleDoByUserId(enterpriseId, userId); + } + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseConfigMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseConfigMapper.java index 285d4a788..fcf52e09b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseConfigMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseConfigMapper.java @@ -31,4 +31,12 @@ public interface EnterpriseConfigMapper { */ EnterpriseConfigDO getDbInfoByDbName(@Param("dbName")String dbName); + /** + * 根据corpId 和 appType 获取config信息 + * @param corpId + * @param appType + * @return + */ + EnterpriseConfigDO getConfigByCorpIdAndAppType(@Param("corpId")String corpId, @Param("appType")String appType); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseMapper.java new file mode 100644 index 000000000..1e0c7543b --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseMapper.java @@ -0,0 +1,32 @@ +package com.cool.store.mapper; + +import com.cool.store.model.entity.EnterpriseDO; +import org.apache.ibatis.annotations.Param; + +/** + * @author zhangchenbiao + * @date 2023-05-23 11:36 + */ +public interface EnterpriseMapper { + /** + * + * 默认插入方法,只会给有值的字段赋值 + * 会对传进来的字段做判空处理,如果字段为空,则使用数据库默认字段或者null + * dateTime:2023-05-23 11:36 + */ + int insertSelective(EnterpriseDO record); + + /** + * + * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 + * dateTime:2023-05-23 11:36 + */ + int updateByPrimaryKeySelective(EnterpriseDO record); + + /** + * 获取企业信息 + * @param enterpriseId + * @return + */ + EnterpriseDO getEnterpriseById(@Param("enterpriseId") String enterpriseId); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java index e5e0a8c8e..e3581e4ad 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java @@ -22,4 +22,12 @@ public interface EnterpriseUserMapper { * dateTime:2023-05-19 02:58 */ int updateByPrimaryKeySelective(@Param("record") EnterpriseUserDO record, @Param("enterpriseId") String enterpriseId); + + /** + * + * @param enterpriseId + * @param userId + * @return + */ + EnterpriseUserDO getUserInfoById(@Param("enterpriseId")String enterpriseId, @Param("userId")String userId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LoginRecordMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LoginRecordMapper.java new file mode 100644 index 000000000..31ae001cb --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LoginRecordMapper.java @@ -0,0 +1,25 @@ +package com.cool.store.mapper; + +import com.cool.store.model.entity.LoginRecordDO; +import org.apache.ibatis.annotations.Param; + +/** + * @author zhangchenbiao + * @date 2023-05-23 03:46 + */ +public interface LoginRecordMapper { + /** + * + * 默认插入方法,只会给有值的字段赋值 + * 会对传进来的字段做判空处理,如果字段为空,则使用数据库默认字段或者null + * dateTime:2023-05-23 03:46 + */ + int insertSelective(@Param("record") LoginRecordDO record, @Param("enterpriseId") String enterpriseId); + + /** + * + * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 + * dateTime:2023-05-23 03:46 + */ + int updateByPrimaryKeySelective(@Param("record") LoginRecordDO record, @Param("enterpriseId") String enterpriseId); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java index b508820c7..e771d0804 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java @@ -22,4 +22,7 @@ public interface SysRoleMapper { * dateTime:2023-05-19 03:00 */ int updateByPrimaryKeySelective(@Param("record") SysRoleDO record, @Param("enterpriseId") String enterpriseId); + + + SysRoleDO getHighestPrioritySysRoleDoByUserId(@Param("enterpriseId") String enterpriseId, @Param("userId") String userId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseConfigMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseConfigMapper.xml index b0d890c9a..fb37ca221 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseConfigMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseConfigMapper.xml @@ -57,4 +57,13 @@ where db_name = #{dbName} limit 1 + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseMapper.xml new file mode 100644 index 000000000..26b1e8e48 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseMapper.xml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, name, original_name, mobile, province, city, status, logo, is_vip, auth_type, + auth_user_id, industry, logo_name, corp_logo_url, is_authenticated, auth_level, create_time, + update_time, package_begin_date, package_end_date, aliyun_person_group_crop_id, app_type, + tag, dataware_config, is_leave_info, limit_store_count, limit_device_count + + + insert into enterprise + + + name, + + + original_name, + + + mobile, + + + province, + + + city, + + + status, + + + logo, + + + is_vip, + + + auth_type, + + + auth_user_id, + + + industry, + + + logo_name, + + + corp_logo_url, + + + is_authenticated, + + + auth_level, + + + create_time, + + + update_time, + + + package_begin_date, + + + package_end_date, + + + aliyun_person_group_crop_id, + + + app_type, + + + tag, + + + dataware_config, + + + is_leave_info, + + + limit_store_count, + + + limit_device_count, + + + + + #{name}, + + + #{originalName}, + + + #{mobile}, + + + #{province}, + + + #{city}, + + + #{status}, + + + #{logo}, + + + #{isVip}, + + + #{authType}, + + + #{authUserId}, + + + #{industry}, + + + #{logoName}, + + + #{corpLogoUrl}, + + + #{isAuthenticated}, + + + #{authLevel}, + + + #{createTime}, + + + #{updateTime}, + + + #{packageBeginDate}, + + + #{packageEndDate}, + + + #{aliyunPersonGroupCropId}, + + + #{appType}, + + + #{tag}, + + + #{datawareConfig}, + + + #{isLeaveInfo}, + + + #{limitStoreCount}, + + + #{limitDeviceCount}, + + + + + update enterprise + + + name = #{name}, + + + original_name = #{originalName}, + + + mobile = #{mobile}, + + + province = #{province}, + + + city = #{city}, + + + status = #{status}, + + + logo = #{logo}, + + + is_vip = #{isVip}, + + + auth_type = #{authType}, + + + auth_user_id = #{authUserId}, + + + industry = #{industry}, + + + logo_name = #{logoName}, + + + corp_logo_url = #{corpLogoUrl}, + + + is_authenticated = #{isAuthenticated}, + + + auth_level = #{authLevel}, + + + create_time = #{createTime}, + + + update_time = #{updateTime}, + + + package_begin_date = #{packageBeginDate}, + + + package_end_date = #{packageEndDate}, + + + aliyun_person_group_crop_id = #{aliyunPersonGroupCropId}, + + + app_type = #{appType}, + + + tag = #{tag}, + + + dataware_config = #{datawareConfig}, + + + is_leave_info = #{isLeaveInfo}, + + + limit_store_count = #{limitStoreCount}, + + + limit_device_count = #{limitDeviceCount}, + + + where id = #{id} + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml index e425c4ba8..9cb19f248 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml @@ -388,4 +388,14 @@ where id = #{record.id} + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/LoginRecordMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/LoginRecordMapper.xml new file mode 100644 index 000000000..867fcb26e --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/LoginRecordMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + id, user_id, create_time + + + insert into login_record_${enterpriseId} + + + user_id, + + + create_time, + + + + + #{record.userId}, + + + #{record.createTime}, + + + + + update login_record_${enterpriseId} + + + user_id = #{record.userId}, + + + create_time = #{record.createTime}, + + + where id = #{record.id} + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml index 6ccf1128d..3f6325e90 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml @@ -161,4 +161,23 @@ where id = #{record.id} + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties index e3ea012ed..51916cc90 100644 --- a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties +++ b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties @@ -3,4 +3,4 @@ jdbc.url = jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcoll jdbc.user= coolstore jdbc.password = CSCErYcXniNYm7bT -table.name = sys_role_menu_e88b6a2bc1334164b54977a4dbfe5d9d \ No newline at end of file +table.name = login_record_e88b6a2bc1334164b54977a4dbfe5d9d \ No newline at end of file diff --git a/coolstore-partner-model/coolstore-partner-model.iml b/coolstore-partner-model/coolstore-partner-model.iml index 3b1207751..ae178e8ab 100644 --- a/coolstore-partner-model/coolstore-partner-model.iml +++ b/coolstore-partner-model/coolstore-partner-model.iml @@ -22,6 +22,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29,7 +65,6 @@ - @@ -39,14 +74,7 @@ - - - - - - - diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/login/RefreshUser.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/login/RefreshUser.java new file mode 100644 index 000000000..b34c9e1a0 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/login/RefreshUser.java @@ -0,0 +1,26 @@ +package com.cool.store.dto.login; + +/** + * @author zhangchenbiao + * @FileName: RefreshUser + * @Description: + * @date 2023-05-23 14:29 + */ +public class RefreshUser { + + /** + * 用户Id + */ + private String userId; + + /** + * 钉钉业务id + */ + private String corpId; + + /** + * 企业id + */ + private String eid; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/model/entity/EnterpriseDO.java b/coolstore-partner-model/src/main/java/com/cool/store/model/entity/EnterpriseDO.java new file mode 100644 index 000000000..0e99d6836 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/model/entity/EnterpriseDO.java @@ -0,0 +1,101 @@ +package com.cool.store.model.entity; + +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author zhangchenbiao + * @date 2023-05-23 11:36 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EnterpriseDO implements Serializable { + @ApiModelProperty("企业主键") + private String id; + + @ApiModelProperty("企业名称") + private String name; + + @ApiModelProperty("原始名称") + private String originalName; + + @ApiModelProperty("电话") + private String mobile; + + @ApiModelProperty("省") + private String province; + + @ApiModelProperty("市") + private String city; + + @ApiModelProperty("状态") + private Integer status; + + @ApiModelProperty("") + private String logo; + + @ApiModelProperty("用户类型(1:普通用户 2:付费用户 3:试用用户 4:共创用户)") + private Integer isVip; + + @ApiModelProperty("授权人数") + private Integer authType; + + @ApiModelProperty("") + private String authUserId; + + @ApiModelProperty("") + private String industry; + + @ApiModelProperty("logo名称") + private String logoName; + + @ApiModelProperty("企业logo") + private String corpLogoUrl; + + @ApiModelProperty("企业是否认证") + private Integer isAuthenticated; + + @ApiModelProperty("企业认证等级,0:未认证,1:高级认证,2:中级认证,3:初级认证") + private Integer authLevel; + + @ApiModelProperty("注册时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("套餐开始时间") + private Date packageBeginDate; + + @ApiModelProperty("套餐结束时间") + private Date packageEndDate; + + @ApiModelProperty("人员分组的cropId") + private String aliyunPersonGroupCropId; + + @ApiModelProperty("来源类型:默认dingding钉钉,qw企业微信 mobile") + private String appType; + + @ApiModelProperty("企业标签") + private String tag; + + @ApiModelProperty("数仓设置") + private String datawareConfig; + + @ApiModelProperty("是否留资") + private Boolean isLeaveInfo; + + @ApiModelProperty("限制的门店数量") + private Integer limitStoreCount; + + @ApiModelProperty("设备数量") + private Integer limitDeviceCount; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/model/entity/LoginRecordDO.java b/coolstore-partner-model/src/main/java/com/cool/store/model/entity/LoginRecordDO.java new file mode 100644 index 000000000..bbba5c6ec --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/model/entity/LoginRecordDO.java @@ -0,0 +1,28 @@ +package com.cool.store.model.entity; + +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author zhangchenbiao + * @date 2023-05-23 03:46 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LoginRecordDO implements Serializable { + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("用户ID") + private String userId; + + @ApiModelProperty("创建时间") + private Long createTime; +} \ No newline at end of file diff --git a/coolstore-partner-service/coolstore-partner-service.iml b/coolstore-partner-service/coolstore-partner-service.iml index 6aea3b64b..ed510e6c7 100644 --- a/coolstore-partner-service/coolstore-partner-service.iml +++ b/coolstore-partner-service/coolstore-partner-service.iml @@ -22,13 +22,9 @@ - - + - - - @@ -39,9 +35,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + - @@ -64,7 +83,6 @@ - @@ -74,11 +92,12 @@ - + + \ No newline at end of file diff --git a/coolstore-partner-service/pom.xml b/coolstore-partner-service/pom.xml index c2a516840..4fb5720da 100644 --- a/coolstore-partner-service/pom.xml +++ b/coolstore-partner-service/pom.xml @@ -29,6 +29,10 @@ com.coolstore coolstore-partner-model + + org.apache.shiro + shiro-core + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/config/redis/RedisUtilConfig.java b/coolstore-partner-service/src/main/java/com/cool/store/config/redis/RedisUtilConfig.java similarity index 96% rename from coolstore-partner-service/src/main/java/com/cool/store/service/config/redis/RedisUtilConfig.java rename to coolstore-partner-service/src/main/java/com/cool/store/config/redis/RedisUtilConfig.java index 02d0cf1ea..03a440711 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/config/redis/RedisUtilConfig.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/config/redis/RedisUtilConfig.java @@ -1,4 +1,4 @@ -package com.cool.store.service.config.redis; +package com.cool.store.config.redis; import com.cool.store.utils.RedisUtilPool; import org.springframework.beans.factory.annotation.Value; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/config/rest/RestTemplateConfig.java b/coolstore-partner-service/src/main/java/com/cool/store/config/rest/RestTemplateConfig.java new file mode 100644 index 000000000..c1e0cc5e9 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/config/rest/RestTemplateConfig.java @@ -0,0 +1,17 @@ +package com.cool.store.config.rest; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +/** + * @author dong_gui on 2020/5/20. + */ +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } +} \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/context/CurrentUser.java b/coolstore-partner-service/src/main/java/com/cool/store/context/CurrentUser.java similarity index 83% rename from coolstore-partner-service/src/main/java/com/cool/store/service/context/CurrentUser.java rename to coolstore-partner-service/src/main/java/com/cool/store/context/CurrentUser.java index 4c0ceda4c..86baad9fc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/context/CurrentUser.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/context/CurrentUser.java @@ -1,5 +1,6 @@ -package com.cool.store.service.context; +package com.cool.store.context; +import com.cool.store.entity.SysRoleDO; import lombok.Data; @@ -36,4 +37,6 @@ public class CurrentUser { private String roleAuth; private String mainCorpId; + + private SysRoleDO sysRoleDO; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/context/DataSourceContext.java b/coolstore-partner-service/src/main/java/com/cool/store/context/DataSourceContext.java similarity index 94% rename from coolstore-partner-service/src/main/java/com/cool/store/service/context/DataSourceContext.java rename to coolstore-partner-service/src/main/java/com/cool/store/context/DataSourceContext.java index 6542a8fa7..3b48d4227 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/context/DataSourceContext.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/context/DataSourceContext.java @@ -1,4 +1,4 @@ -package com.cool.store.service.context; +package com.cool.store.context; import java.util.ArrayList; import java.util.List; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/context/UserContext.java b/coolstore-partner-service/src/main/java/com/cool/store/context/UserContext.java similarity index 93% rename from coolstore-partner-service/src/main/java/com/cool/store/service/context/UserContext.java rename to coolstore-partner-service/src/main/java/com/cool/store/context/UserContext.java index 6c71db5f3..c18e89a11 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/context/UserContext.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/context/UserContext.java @@ -1,4 +1,4 @@ -package com.cool.store.service.context; +package com.cool.store.context; import com.alibaba.fastjson.JSON; import org.apache.commons.lang3.StringUtils; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java new file mode 100644 index 000000000..f487cf6b2 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java @@ -0,0 +1,43 @@ +package com.cool.store.http; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.utils.RestTemplateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author zhangchenbiao + * @FileName: ISVHttpRequest + * @Description: + * @date 2023-05-23 16:03 + */ +@Service +@Slf4j +public class ISVHttpRequest { + + @Value("${isv.domain:null}") + private String isvDomain; + + @Value("${get.user.id.by.code:null}") + private String getUserIdByCode; + + + public JSONObject getUserIdByCode(String paramStr){ + String url = isvDomain + getUserIdByCode + paramStr; + ResponseEntity responseEntity = null; + try { + responseEntity = RestTemplateUtil.loadGet(url, JSONObject.class); + log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity)); + } catch (Exception e) { + log.info("调用isv出错{}", e); + } + if(Objects.isNull(responseEntity)){ + return null; + } + return responseEntity.getBody(); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/LoginService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/LoginService.java new file mode 100644 index 000000000..1d9187713 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/LoginService.java @@ -0,0 +1,9 @@ +package com.cool.store.service; + + +public interface LoginService { + + + + Object feiShuLogin(String userId, String corpId, Boolean needRefreshToken , String appType, String avatar); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseConfigServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseConfigServiceImpl.java index 2cf10ce56..d6be1c8d0 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseConfigServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseConfigServiceImpl.java @@ -1,8 +1,8 @@ package com.cool.store.service.impl; +import com.cool.store.service.EnterpriseConfigService; import com.cool.store.dao.EnterpriseConfigDAO; import com.cool.store.entity.EnterpriseConfigDO; -import com.cool.store.service.EnterpriseConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LoginServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LoginServiceImpl.java new file mode 100644 index 000000000..6b0b8519a --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LoginServiceImpl.java @@ -0,0 +1,132 @@ +package com.cool.store.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.constants.CommonConstants; +import com.cool.store.context.CurrentUser; +import com.cool.store.context.DataSourceContext; +import com.cool.store.dao.*; +import com.cool.store.dto.login.RefreshUser; +import com.cool.store.entity.EnterpriseConfigDO; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.SysRoleDO; +import com.cool.store.enums.AppTypeEnum; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.UserStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.model.entity.EnterpriseDO; +import com.cool.store.service.LoginService; +import com.cool.store.utils.DataSourceHelper; +import com.cool.store.utils.RedisUtilPool; +import com.github.xiaoymin.knife4j.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.crypto.RandomNumberGenerator; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; +import java.util.Optional; + +/** + * @author zhangchenbiao + * @FileName: LoginServiceImpl + * @Description: + * @date 2023-05-23 9:57 + */ +@Service +@Slf4j +public class LoginServiceImpl implements LoginService { + + @Resource + private EnterpriseConfigDAO enterpriseConfigDAO; + @Resource + private EnterpriseDAO enterpriseDAO; + @Resource + private EnterpriseUserDAO enterpriseUserDAO; + @Resource + private SysRoleDAO sysRoleDAO; + @Resource + private LoginRecordDAO loginRecordDAO; + @Resource + private RedisUtilPool redisUtilPool; + + @Override + public Object feiShuLogin(String userId, String corpId, Boolean needRefreshToken, String appType, String avatar) { + log.info("isvLogin, corpId={}, userId={}, appType={}", corpId, userId, appType); + DataSourceContext.clearDataSourceType(); + if (StringUtils.isEmpty(userId)) { + throw new ServiceException(ErrorCodeEnum.USER_NOT_EXIST); + } + if (StringUtils.isEmpty(corpId)) { + throw new ServiceException(ErrorCodeEnum.ENTERPRISE_NOT_EXIST); + } + EnterpriseConfigDO enterpriseConfig = enterpriseConfigDAO.getConfigByCorpIdAndAppType(corpId, appType); + if (enterpriseConfig == null) { + throw new ServiceException(ErrorCodeEnum.ENTERPRISE_INIT); + } + EnterpriseDO enterprise = enterpriseDAO.getEnterpriseById(enterpriseConfig.getEnterpriseId()); + if (enterprise == null || enterprise.getStatus() == CommonConstants.ZERO) { + throw new ServiceException(ErrorCodeEnum.ENTERPRISE_INIT); + } + CurrentUser currentUser = new CurrentUser(); + RefreshUser refreshUser = new RefreshUser(); + String dbName = enterpriseConfig.getDbName(); + // 切到企业库 + DataSourceContext.setDataSourceType(dbName); + // 查企业用户 + EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(enterprise.getId(), userId); + if(enterpriseUser == null){ + throw new ServiceException(ErrorCodeEnum.NOT_AUTH); + } + //冻结登录 超登用户过滤 + if (enterprise.getStatus() == CommonConstants.HUNDRED && !StringUtils.equals(enterpriseUser.getUserId(), "a100000001")) { + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR.getCode(), "企业被冻结"); + } + SysRoleDO sysRole = sysRoleDAO.getHighestPrioritySysRoleDoByUserId(enterprise.getId(), userId); + if(Objects.isNull(sysRole)){ + log.info("当前用户没角色:{}", userId); + throw new ServiceException(ErrorCodeEnum.NOT_AUTH); + } + if(UserStatusEnum.FREEZE.getCode().equals(enterpriseUser.getUserStatus())){ + throw new ServiceException(ErrorCodeEnum.USER_FREEZE); + } + if(UserStatusEnum.WAIT_AUDIT.getCode().equals(enterpriseUser.getUserStatus())){ + throw new ServiceException(ErrorCodeEnum.USER_WAIT_AUDIT); + } + //用户是否已有头像 + Boolean hasAvatar = StringUtils.isNotEmpty(enterpriseUser.getAvatar()) && !enterpriseUser.getAvatar().contains(CommonConstants.DEFAULT_AVATAR); + String finalAvatar = hasAvatar ? enterpriseUser.getAvatar() : avatar; + enterpriseUser.setAvatar(finalAvatar); + enterpriseUser.setFaceUrl(finalAvatar); + currentUser.setUserId(enterpriseUser.getUserId()); + currentUser.setDbName(enterpriseConfig.getDbName()); + currentUser.setIsAdmin(enterpriseUser.getIsAdmin()); + currentUser.setMainCorpId(enterpriseConfig.getMainCorpId()); + //设置当前登录人使用的企业相关信息 + currentUser.setRoleAuth(sysRole.getRoleAuth()); + currentUser.setSysRoleDO(sysRole); + currentUser.setEnterpriseId(enterprise.getId()); + //生成令牌 + RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); + String token = randomNumberGenerator.nextBytes().toHex(); + String refreshToken = randomNumberGenerator.nextBytes().toHex(); + currentUser.setName(enterpriseUser.getName()); + currentUser.setDingCorpId(enterpriseConfig.getDingCorpId()); + currentUser.setAccessToken(token); + currentUser.setAppType(appType); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("action_token", token); + jsonObject.put("user", currentUser); + redisUtilPool.setString(CommonConstants.ACCESS_TOKEN_KEY + ":" + token, JSON.toJSONString(currentUser), CommonConstants.ACTION_TOKEN_EXPIRE); + jsonObject.put("expire", CommonConstants.ACTION_TOKEN_EXPIRE); + redisUtilPool.setString(currentUser.getUserId(), token); + redisUtilPool.setString(CommonConstants.REFRESH_TOKEN_KEY+":"+refreshToken,JSON.toJSONString(refreshUser), CommonConstants.REFRESH_TOKEN_EXPIRE); + jsonObject.put("refresh_token",refreshToken); + loginRecordDAO.addLoginRecord(currentUser.getEnterpriseId(),currentUser.getUserId()); + log.info("[" + enterpriseUser.getName() + "; action_token:"+ token + "; userId:" + currentUser.getUserId() +"]登入系统成功"); + return jsonObject; + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/utils/DataSourceHelper.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/DataSourceHelper.java similarity index 88% rename from coolstore-partner-service/src/main/java/com/cool/store/service/utils/DataSourceHelper.java rename to coolstore-partner-service/src/main/java/com/cool/store/utils/DataSourceHelper.java index f3f991d29..5eb9f889f 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/utils/DataSourceHelper.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/DataSourceHelper.java @@ -1,7 +1,7 @@ -package com.cool.store.service.utils; +package com.cool.store.utils; -import com.cool.store.service.context.DataSourceContext; -import com.cool.store.service.context.UserContext; +import com.cool.store.context.DataSourceContext; +import com.cool.store.context.UserContext; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/coolstore-partner-webb/coolstore-partner-webb.iml b/coolstore-partner-webb/coolstore-partner-webb.iml index 342a0426b..e79bb2351 100644 --- a/coolstore-partner-webb/coolstore-partner-webb.iml +++ b/coolstore-partner-webb/coolstore-partner-webb.iml @@ -62,6 +62,8 @@ + + diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java index 589d874bc..eec83b2d9 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -1,16 +1,12 @@ package com.cool.store.config; import com.alibaba.fastjson.JSON; -import com.cool.store.constants.CommonConstants; -import com.cool.store.entity.SysRoleDO; import com.cool.store.enums.ErrorCodeEnum; -import com.cool.store.mapper.SysRoleMapper; import com.cool.store.response.ResponseResult; -import com.cool.store.service.context.DataSourceContext; -import com.cool.store.service.context.UserContext; -import com.cool.store.service.utils.DataSourceHelper; +import com.cool.store.context.UserContext; +import com.cool.store.utils.DataSourceHelper; import com.cool.store.utils.RedisUtilPool; -import com.cool.store.service.context.CurrentUser; +import com.cool.store.context.CurrentUser; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java index b78b0ae50..f824ed852 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java @@ -1,7 +1,7 @@ package com.cool.store.config.datasource; import com.cool.store.constants.CommonConstants; -import com.cool.store.service.context.DataSourceContext; +import com.cool.store.context.DataSourceContext; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java index 746dac1b2..edde59a3d 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java @@ -3,9 +3,9 @@ package com.cool.store.config.datasource; import com.cool.store.constants.CommonConstants; import com.cool.store.dto.DatasourceInfoDTO; import com.cool.store.entity.EnterpriseConfigDO; -import com.cool.store.utils.RedisUtilPool; import com.cool.store.service.EnterpriseConfigService; -import com.cool.store.service.context.DataSourceContext; +import com.cool.store.utils.RedisUtilPool; +import com.cool.store.context.DataSourceContext; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.zaxxer.hikari.HikariConfig; diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/LoginController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/LoginController.java index c599ea029..9f814156f 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/LoginController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/LoginController.java @@ -3,10 +3,15 @@ package com.cool.store.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.cool.store.dto.login.FeiShuLoginDTO; +import com.cool.store.enums.AppTypeEnum; import com.cool.store.enums.ErrorCodeEnum; -import com.google.protobuf.ServiceException; +import com.cool.store.exception.ServiceException; +import com.cool.store.http.ISVHttpRequest; +import com.cool.store.service.LoginService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -21,45 +26,37 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j public class LoginController { - /*@PostMapping(value = "/v3/feiShuLogin") + @Autowired + private LoginService loginService; + @Autowired + private ISVHttpRequest isvHttpRequest; + + + @PostMapping(value = "/v3/feiShuLogin") public Object feiShuLogin(@RequestBody FeiShuLoginDTO param) { - log.info("isvLoginV2 data={}", JSONObject.toJSONString(param)); + log.info("feiShuLogin data={}", JSONObject.toJSONString(param)); String code = param.getCode(); String appId = param.getAppId(); - String userId = "", corpId = "", appType = AppTypeEnum.FEI_SHU.getValue(); try { String value = "code=" + code + "&appType=" + appType + "&appId=" + appId; - log.info("url:{}", ding_token_userId + value); - JSONObject userInfo = JSON.parseObject(HttpRequest.sendGet(ding_token_userId, value)); - logger.info("userInfo:{}", JSONObject.toJSONString(userInfo)); + //todo zcb + JSONObject userInfo = isvHttpRequest.getUserIdByCode(value); + log.info("userInfo:{}", JSONObject.toJSONString(userInfo)); userId = userInfo.getString("openId"); corpId = userInfo.getString("corpId"); String errorCode = userInfo.getString("error_code"); if (StringUtils.isBlank(userId) && StringUtils.isNotBlank(errorCode)) { - DingLoginErrorEnum dingLoginErrorEnum = DingLoginErrorEnum.getByCode(Integer.getInteger(errorCode)); - if (dingLoginErrorEnum != null) { - throw new ServiceException(dingLoginErrorEnum.getCode(), dingLoginErrorEnum.getMsg()); - } + throw new ServiceException(ErrorCodeEnum.LOGIN_ERROR); } - } catch (Exception e) { - log.error(e.getMessage(), e); - if (e instanceof ServiceException) { - throw e; - } else { - throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR.getCode(), "用户不存在"); - } - } - - try { - return loginService.isvLogin(userId, corpId, Boolean.TRUE, appType, StringUtils.EMPTY); + return loginService.feiShuLogin(userId, corpId, Boolean.TRUE, appType, StringUtils.EMPTY); } catch (ServiceException e) { log.error(e.getMessage(), e); - throw new ServiceException(e.getErrorCode(), e.getErrorMessage()); + throw new ServiceException(ErrorCodeEnum.LOGIN_ERROR); } catch (Exception e) { log.error(e.getMessage(), e); - throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR.getCode(), "登陆失败"); + throw new ServiceException(ErrorCodeEnum.LOGIN_ERROR); } - }*/ + } } diff --git a/coolstore-partner-webb/src/main/resources/application-ab.properties b/coolstore-partner-webb/src/main/resources/application-ab.properties index c4833f1a2..ce4b48860 100644 --- a/coolstore-partner-webb/src/main/resources/application-ab.properties +++ b/coolstore-partner-webb/src/main/resources/application-ab.properties @@ -35,3 +35,6 @@ mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://tzk.coolcollege.cn:2188 com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://tstore-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code diff --git a/coolstore-partner-webb/src/main/resources/application-dev.properties b/coolstore-partner-webb/src/main/resources/application-dev.properties index 361d20713..802b1b915 100644 --- a/coolstore-partner-webb/src/main/resources/application-dev.properties +++ b/coolstore-partner-webb/src/main/resources/application-dev.properties @@ -38,4 +38,7 @@ mybatis.configuration.call-setters-on-nulls=true mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://dzk.coolcollege.cn:2188 -com.alipay.sofa.rpc.bolt.port=31010 \ No newline at end of file +com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://dstore-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-hd.properties b/coolstore-partner-webb/src/main/resources/application-hd.properties index d0f112448..ca674e7d8 100644 --- a/coolstore-partner-webb/src/main/resources/application-hd.properties +++ b/coolstore-partner-webb/src/main/resources/application-hd.properties @@ -34,4 +34,7 @@ mybatis.configuration.call-setters-on-nulls=true mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://10.7.53.199:2188 -com.alipay.sofa.rpc.bolt.port=31010 \ No newline at end of file +com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://hdstore-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-local.properties b/coolstore-partner-webb/src/main/resources/application-local.properties index 98f915351..64740c502 100644 --- a/coolstore-partner-webb/src/main/resources/application-local.properties +++ b/coolstore-partner-webb/src/main/resources/application-local.properties @@ -41,4 +41,7 @@ mybatis.configuration.call-setters-on-nulls=true mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://localhost:2181 -com.alipay.sofa.rpc.bolt.port=31010 \ No newline at end of file +com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://tstore-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-online.properties b/coolstore-partner-webb/src/main/resources/application-online.properties index 4fc5f624d..b00f3bc88 100644 --- a/coolstore-partner-webb/src/main/resources/application-online.properties +++ b/coolstore-partner-webb/src/main/resources/application-online.properties @@ -34,4 +34,7 @@ mybatis.configuration.call-setters-on-nulls=true mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://10.6.49.221:2188,10.6.49.222:2188,10.6.49.223:2188 -com.alipay.sofa.rpc.bolt.port=31010 \ No newline at end of file +com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://store-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-pre.properties b/coolstore-partner-webb/src/main/resources/application-pre.properties index f0b8ab38d..bf0c5edad 100644 --- a/coolstore-partner-webb/src/main/resources/application-pre.properties +++ b/coolstore-partner-webb/src/main/resources/application-pre.properties @@ -34,4 +34,7 @@ mybatis.configuration.call-setters-on-nulls=true mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://10.7.54.149:2188 -com.alipay.sofa.rpc.bolt.port=31010 \ No newline at end of file +com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://store-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-test.properties b/coolstore-partner-webb/src/main/resources/application-test.properties index d05b5c20c..2b4be7a26 100644 --- a/coolstore-partner-webb/src/main/resources/application-test.properties +++ b/coolstore-partner-webb/src/main/resources/application-test.properties @@ -34,4 +34,7 @@ mybatis.configuration.call-setters-on-nulls=true mybatis.configuration.map-underscore-to-camel-case=true com.alipay.sofa.rpc.registry.address=zookeeper://tzk.coolcollege.cn:2188 -com.alipay.sofa.rpc.bolt.port=31010 \ No newline at end of file +com.alipay.sofa.rpc.bolt.port=31010 + +isv.domain = https://tstore-isv.coolcollege.cn +get.user.id.by.code = /isv/v2/get_user_id_by_code \ No newline at end of file diff --git a/coolstore-partner-webc/coolstore-partner-webc.iml b/coolstore-partner-webc/coolstore-partner-webc.iml index 5d7e05397..1a8f4c002 100644 --- a/coolstore-partner-webc/coolstore-partner-webc.iml +++ b/coolstore-partner-webc/coolstore-partner-webc.iml @@ -62,6 +62,8 @@ + + diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java index 9076b9e4e..6d91370e4 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -3,9 +3,9 @@ package com.cool.store.config; import com.alibaba.fastjson.JSON; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.response.ResponseResult; -import com.cool.store.service.context.CurrentUser; -import com.cool.store.service.context.UserContext; -import com.cool.store.service.utils.DataSourceHelper; +import com.cool.store.context.CurrentUser; +import com.cool.store.context.UserContext; +import com.cool.store.utils.DataSourceHelper; import com.cool.store.utils.RedisUtilPool; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java index b78b0ae50..f824ed852 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSource.java @@ -1,7 +1,7 @@ package com.cool.store.config.datasource; import com.cool.store.constants.CommonConstants; -import com.cool.store.service.context.DataSourceContext; +import com.cool.store.context.DataSourceContext; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java index 746dac1b2..e537f8236 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/datasource/DynamicDataSourceServiceImpl.java @@ -4,8 +4,8 @@ import com.cool.store.constants.CommonConstants; import com.cool.store.dto.DatasourceInfoDTO; import com.cool.store.entity.EnterpriseConfigDO; import com.cool.store.utils.RedisUtilPool; -import com.cool.store.service.EnterpriseConfigService; -import com.cool.store.service.context.DataSourceContext; +import com.cool.store.service.config.EnterpriseConfigService; +import com.cool.store.context.DataSourceContext; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.zaxxer.hikari.HikariConfig; diff --git a/pom.xml b/pom.xml index 8da86a16d..df67557a9 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,11 @@ xercesImpl 2.11.0 + + org.apache.shiro + shiro-core + 1.2.3 +