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