diff --git a/sop-openapi/pom.xml b/sop-openapi/pom.xml
index f035b864..39158e49 100644
--- a/sop-openapi/pom.xml
+++ b/sop-openapi/pom.xml
@@ -6,7 +6,7 @@
com.gitee.sop
sop-parent
- 4.0.3-SNAPSHOT
+ 4.1.0-SNAPSHOT
../pom.xml
com.gitee.sop.openapi
@@ -17,7 +17,7 @@
com.gitee.sop
sop-service-common
- 4.0.3-SNAPSHOT
+ 4.1.0-SNAPSHOT
@@ -87,6 +87,11 @@
1.18.4
provided
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/BaseEntity.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/BaseEntity.java
new file mode 100644
index 00000000..86d61b0d
--- /dev/null
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/BaseEntity.java
@@ -0,0 +1,61 @@
+package com.gitee.sop.openapi.entity;
+
+import com.google.common.base.MoreObjects;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.Date;
+
+/***
+ *
+ * @author wangping created on 2020/11/4 18:59
+ */
+@Data
+@MappedSuperclass
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public abstract class BaseEntity {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ @Column(name = "gmt_create", nullable = false)
+ private Date gmtCreate;
+
+ @Column(name = "gmt_modified")
+ private Date gmtModified;
+
+ @PrePersist
+ protected void prePersist() {
+ if (this.gmtCreate == null) {
+ gmtCreate = new Date();
+ }
+ if (this.gmtModified == null) {
+ gmtModified = new Date();
+ }
+ }
+
+ @PreUpdate
+ protected void preUpdate() {
+ this.gmtModified = new Date();
+ }
+
+ @PreRemove
+ protected void preRemove() {
+ this.gmtModified = new Date();
+ }
+
+ protected MoreObjects.ToStringHelper toStringHelper() {
+ return MoreObjects.toStringHelper(this)
+ .omitNullValues()
+ .add("id", id)
+ .add("gmtCreate", gmtCreate)
+ .add("gmtModified", gmtModified);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper().toString();
+ }
+}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvAuthTokenEntity.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvAuthTokenEntity.java
index 2fae85fa..2058f25b 100644
--- a/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvAuthTokenEntity.java
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvAuthTokenEntity.java
@@ -1,11 +1,9 @@
package com.gitee.sop.openapi.entity;
import lombok.Data;
-import org.springframework.data.annotation.Id;
import javax.persistence.Column;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
+import javax.persistence.Entity;
import javax.persistence.Table;
/***
@@ -14,30 +12,31 @@ import javax.persistence.Table;
*/
@Data
+@Entity
@Table(name = "isv_auth_token")
-public class IsvAuthTokenEntity {
-
- @Id
- @Column(name = "id")
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- /** 数据库字段:id */
- private Long id;
+public class IsvAuthTokenEntity extends BaseEntity {
/** appKey, 数据库字段:app_key */
+ @Column(name = "app_key")
private String appKey;
/** userId, 数据库字段:user_id */
+ @Column(name = "user_id")
private Long userId;
/** 1启用,2禁用, 数据库字段:status */
- private Byte status;
+ @Column(name = "status", columnDefinition = "Bit default '1'")
+ private Boolean status = true;
/** appAuthCode 数据库字段:app_auth_code */
+ @Column(name = "app_auth_code")
private String appAuthCode;
/** appAuthToken 数据库字段:app_auth_token */
+ @Column(name = "app_auth_token")
private String appAuthToken;
/** appRefreshToken 数据库字段:app_refresh_token */
+ @Column(name = "app_refresh_token")
private String appRefreshToken;
}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvInfoEntity.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvInfoEntity.java
index a20d384a..81eb2761 100644
--- a/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvInfoEntity.java
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/entity/IsvInfoEntity.java
@@ -1,11 +1,9 @@
package com.gitee.sop.openapi.entity;
import lombok.Data;
-import org.springframework.data.annotation.Id;
import javax.persistence.Column;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
+import javax.persistence.Entity;
import javax.persistence.Table;
/***
@@ -13,18 +11,23 @@ import javax.persistence.Table;
* @author wangping created on 2020/11/2 16:22
*/
@Data
+@Entity
@Table(name = "isv_info")
-public class IsvInfoEntity {
-
- @Id
- @Column(name = "id")
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- /** 数据库字段:id */
- private Long id;
+public class IsvInfoEntity extends BaseEntity {
/** appKey, 数据库字段:app_key */
+ @Column(name = "app_key")
private String appKey;
/** 1启用,2禁用, 数据库字段:status */
+ @Column(name = "status")
private Byte status;
+
+ /** 1:RSA2,2:MD5 */
+ @Column(name = "sign_type")
+ private Byte signType;
+
+ @Column(name = "remark")
+ private String remark;
+
}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/mapper/IsvAuthTokenMapper.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/mapper/IsvAuthTokenMapper.java
deleted file mode 100644
index eda698cf..00000000
--- a/sop-openapi/src/main/java/com/gitee/sop/openapi/mapper/IsvAuthTokenMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.gitee.sop.openapi.mapper;
-
-import com.gitee.fastmybatis.core.mapper.CrudMapper;
-import com.gitee.sop.openapi.entity.IsvAuthTokenEntity;
-
-/***
- *
- * @author wangping created on 2020/11/2 16:59
- */
-public interface IsvAuthTokenMapper extends CrudMapper {
-}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/mapper/IsvInfoMapper.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/mapper/IsvInfoMapper.java
deleted file mode 100644
index 46bc108d..00000000
--- a/sop-openapi/src/main/java/com/gitee/sop/openapi/mapper/IsvInfoMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.gitee.sop.openapi.mapper;
-
-import com.gitee.fastmybatis.core.mapper.CrudMapper;
-import com.gitee.sop.openapi.entity.IsvInfoEntity;
-
-/***
- *
- * @author wangping created on 2020/11/2 15:52
- */
-public interface IsvInfoMapper extends CrudMapper {
-}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/repository/IsvAuthTokenRepository.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/repository/IsvAuthTokenRepository.java
new file mode 100644
index 00000000..534b806f
--- /dev/null
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/repository/IsvAuthTokenRepository.java
@@ -0,0 +1,17 @@
+package com.gitee.sop.openapi.repository;
+
+import com.gitee.sop.openapi.entity.IsvAuthTokenEntity;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+/***
+ *
+ * @author wangping created on 2020/11/4 19:12
+ */
+public interface IsvAuthTokenRepository extends PagingAndSortingRepository {
+
+ IsvAuthTokenEntity findFirstByAppKeyAndUserIdAndStatusTrue(String appKey, Long userId);
+
+ IsvAuthTokenEntity findFirstByUserIdAndStatusTrue(Long userId);
+
+ IsvAuthTokenEntity findFirstByAppAuthCode(String appAuthCode);
+}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/repository/IsvInfoRepository.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/repository/IsvInfoRepository.java
new file mode 100644
index 00000000..218915b2
--- /dev/null
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/repository/IsvInfoRepository.java
@@ -0,0 +1,14 @@
+package com.gitee.sop.openapi.repository;
+
+import com.gitee.sop.openapi.entity.IsvInfoEntity;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+/***
+ *
+ * @author wangping created on 2020/11/4 19:11
+ */
+public interface IsvInfoRepository extends PagingAndSortingRepository {
+
+ IsvInfoEntity findFirstByAppKey(String appKey);
+
+}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthCodeService.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthCodeService.java
index b904028c..1daa402e 100644
--- a/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthCodeService.java
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthCodeService.java
@@ -5,9 +5,9 @@ import com.gitee.fastmybatis.core.query.Query;
import com.gitee.sop.openapi.config.RedisOperator;
import com.gitee.sop.openapi.entity.IsvAuthTokenEntity;
import com.gitee.sop.openapi.entity.IsvInfoEntity;
-import com.gitee.sop.openapi.mapper.IsvAuthTokenMapper;
-import com.gitee.sop.openapi.mapper.IsvInfoMapper;
import com.gitee.sop.openapi.po.AuthCodePo;
+import com.gitee.sop.openapi.repository.IsvAuthTokenRepository;
+import com.gitee.sop.openapi.repository.IsvInfoRepository;
import com.gitee.sop.openapi.vo.AuthCodeVo;
import com.gitee.sop.openapi.util.MD5GeneratorUtil;
import com.gitee.sop.openapi.util.RedisKeyUtil;
@@ -24,15 +24,15 @@ import org.springframework.transaction.annotation.Transactional;
@Service
public class AuthCodeService implements AuthService {
- private final IsvInfoMapper isvInfoMapper;
- private final IsvAuthTokenMapper isvAuthTokenMapper;
+ private final IsvInfoRepository isvInfoRepository;
+ private final IsvAuthTokenRepository isvAuthTokenRepository;
private final RedisOperator redisOperator;
- public AuthCodeService(final IsvInfoMapper isvInfoMapper,
- final IsvAuthTokenMapper isvAuthTokenMapper,
+ public AuthCodeService(final IsvInfoRepository isvInfoRepository,
+ final IsvAuthTokenRepository isvAuthTokenRepository,
final RedisOperator redisOperator) {
- this.isvInfoMapper = isvInfoMapper;
- this.isvAuthTokenMapper = isvAuthTokenMapper;
+ this.isvInfoRepository = isvInfoRepository;
+ this.isvAuthTokenRepository = isvAuthTokenRepository;
this.redisOperator = redisOperator;
}
@@ -40,7 +40,7 @@ public class AuthCodeService implements AuthService {
@Transactional
public AuthCodeVo getCode(AuthCodePo authCodePo) {
- IsvInfoEntity isvInfo = isvInfoMapper.getByColumn("app_key", authCodePo.getAppId());
+ IsvInfoEntity isvInfo = isvInfoRepository.findFirstByAppKey(authCodePo.getAppId());
if (isvInfo == null || isvInfo.getStatus().intValue() == FORBIDDEN) {
log.error("appId已禁用:{}", authCodePo.getAppId());
throw new ServiceException("应用ID未申请或已被禁用");
@@ -48,11 +48,7 @@ public class AuthCodeService implements AuthService {
String authCode = MD5GeneratorUtil.generateValue();
- Query query = new Query()
- .eq("app_key", authCodePo.getAppId())
- .eq("user_id", authCodePo.getUserId())
- .eq("status", ENABLE_TOKEN);
- IsvAuthTokenEntity authTokenEntity = isvAuthTokenMapper.getByQuery(query);
+ IsvAuthTokenEntity authTokenEntity = isvAuthTokenRepository.findFirstByAppKeyAndUserIdAndStatusTrue(authCodePo.getAppId(), authCodePo.getUserId());
AuthCodeVo authCodeVo = new AuthCodeVo();
authCodeVo.setCode(authCode);
if (authTokenEntity == null) {
@@ -61,11 +57,9 @@ public class AuthCodeService implements AuthService {
authTokenEntity.setAppAuthCode(authCode);
authTokenEntity.setAppKey(authCodePo.getAppId());
authTokenEntity.setUserId(authCodePo.getUserId());
- isvAuthTokenMapper.save(authTokenEntity);
- } else {
- authTokenEntity.setAppAuthCode(authCode);
- isvAuthTokenMapper.update(authTokenEntity);
}
+ authTokenEntity.setAppAuthCode(authCode);
+ isvAuthTokenRepository.save(authTokenEntity);
// 写入redis缓存
try {
@@ -87,14 +81,14 @@ public class AuthCodeService implements AuthService {
.eq("user_id", userId)
.eq("status", ENABLE_TOKEN);
- IsvAuthTokenEntity authTokenEntity = isvAuthTokenMapper.getByQuery(query);
+ IsvAuthTokenEntity authTokenEntity = isvAuthTokenRepository.findFirstByUserIdAndStatusTrue(userId);
if (authTokenEntity == null) {
throw new ServiceException("用户未授权插件应用");
}
try {
- authTokenEntity.setStatus(ENABLE_TOKEN);
- isvAuthTokenMapper.update(authTokenEntity);
+ authTokenEntity.setStatus(true);
+ isvAuthTokenRepository.save(authTokenEntity);
} catch (Exception e) {
throw new ServiceException("解除授权失败,系统忙,请稍后!");
}
diff --git a/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthTokenService.java b/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthTokenService.java
index ca8d13f1..f3a2c514 100644
--- a/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthTokenService.java
+++ b/sop-openapi/src/main/java/com/gitee/sop/openapi/service/AuthTokenService.java
@@ -3,9 +3,9 @@ package com.gitee.sop.openapi.service;
import com.alibaba.fastjson.JSONObject;
import com.gitee.sop.openapi.config.RedisOperator;
import com.gitee.sop.openapi.entity.IsvAuthTokenEntity;
-import com.gitee.sop.openapi.mapper.IsvAuthTokenMapper;
import com.gitee.sop.openapi.po.AuthCodePo;
import com.gitee.sop.openapi.po.AuthTokePo;
+import com.gitee.sop.openapi.repository.IsvAuthTokenRepository;
import com.gitee.sop.openapi.util.GrantType;
import com.gitee.sop.openapi.util.MD5GeneratorUtil;
import com.gitee.sop.openapi.util.RedisKeyUtil;
@@ -21,12 +21,12 @@ import org.springframework.stereotype.Service;
public class AuthTokenService implements AuthService {
private final RedisOperator redisOperator;
- private final IsvAuthTokenMapper isvAuthTokenMapper;
+ private final IsvAuthTokenRepository isvAuthTokenRepository;
public AuthTokenService(final RedisOperator redisOperator,
- final IsvAuthTokenMapper isvAuthTokenMapper) {
+ final IsvAuthTokenRepository isvAuthTokenRepository) {
this.redisOperator = redisOperator;
- this.isvAuthTokenMapper = isvAuthTokenMapper;
+ this.isvAuthTokenRepository = isvAuthTokenRepository;
}
@@ -45,7 +45,7 @@ public class AuthTokenService implements AuthService {
if (codePo == null) {
throw new ServiceException("Can not found user by code");
}
- IsvAuthTokenEntity authTokenEntity = isvAuthTokenMapper.getByColumn("app_auth_code", authTokePo.getCode());
+ IsvAuthTokenEntity authTokenEntity = isvAuthTokenRepository.findFirstByAppAuthCode(authTokePo.getCode());
if (authTokenEntity == null) {
throw new ServiceException("Can not found user by code");
}
@@ -55,10 +55,10 @@ public class AuthTokenService implements AuthService {
String refreshToken = MD5GeneratorUtil.generateValue();
- authTokenEntity.setStatus((byte) AUTHORIZED);
+ authTokenEntity.setStatus(true);
authTokenEntity.setAppAuthToken(authToken);
authTokenEntity.setAppRefreshToken(refreshToken);
- isvAuthTokenMapper.update(authTokenEntity);
+ isvAuthTokenRepository.save(authTokenEntity);
String authTokenKey = RedisKeyUtil.getAuthTokenKey(authToken);
String refreshTokenKey = RedisKeyUtil.getRefreshTokenKey(refreshToken);
diff --git a/sop-openapi/src/main/resources/application.properties b/sop-openapi/src/main/resources/application.properties
index b208c10a..3ce313c5 100644
--- a/sop-openapi/src/main/resources/application.properties
+++ b/sop-openapi/src/main/resources/application.properties
@@ -1,6 +1,28 @@
-spring.profiles.active=dev
+spring.profiles.active=standalone
server.port=8089
spring.application.name=open-apis
# ע
-spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
\ No newline at end of file
+spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
+
+
+## ݿ
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://localhost:3306/sop?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.hikari.connectionInitSql=set names utf8mb4
+
+#ӳ
+spring.datasource.hikari.pool-name=HikariCP
+spring.datasource.hikari.max-lifetime=500000
+spring.datasource.hikari.minimum-idle=2
+spring.datasource.hikari.idle-timeout=60000
+spring.datasource.hikari.maximum-pool-size=10
+spring.datasource.hikari.connection-test-query=select 1
+
+# Naming strategy
+spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+spring.jpa.hibernate.globally_quoted_identifiers=true
+spring.jpa.properties.hibernate.globally_quoted_identifiers=true
+spring.jpa.show-sql=false
\ No newline at end of file