xielq 4 жил өмнө
parent
commit
e32ed2dc8c
27 өөрчлөгдсөн 1146 нэмэгдсэн , 0 устгасан
  1. 8 0
      README.md
  2. 80 0
      pom.xml
  3. 87 0
      usoft-sso-rest-api/pom.xml
  4. 51 0
      usoft-sso-rest-api/src/main/proto/ISSORestService.proto
  5. 74 0
      usoft-sso-rest-api/src/main/proto/SSORestEntity.proto
  6. 40 0
      usoft-sso-rest-domain/pom.xml
  7. 85 0
      usoft-sso-rest-domain/src/main/java/com/usoft/sso/rest/domain/SSODomain.java
  8. 48 0
      usoft-sso-rest-domain/src/main/java/com/usoft/sso/rest/domain/config/SSOGrpcConfig.java
  9. 91 0
      usoft-sso-rest-service/pom.xml
  10. 17 0
      usoft-sso-rest-service/src/main/java/com/usoft/sso/rest/SsoRestServiceStart.java
  11. 68 0
      usoft-sso-rest-service/src/main/java/com/usoft/sso/rest/service/impl/EnterpriseController.java
  12. 93 0
      usoft-sso-rest-service/src/main/java/com/usoft/sso/rest/service/impl/UserController.java
  13. 3 0
      usoft-sso-rest-service/src/main/resources/application-dev.properties
  14. 2 0
      usoft-sso-rest-service/src/main/resources/application-prod.properties
  15. 4 0
      usoft-sso-rest-service/src/main/resources/application-test.properties
  16. 9 0
      usoft-sso-rest-service/src/main/resources/application.properties
  17. 42 0
      usoft-sso-rest-service/src/main/resources/logback-dev.xml
  18. 33 0
      usoft-sso-rest-service/src/main/resources/logback-product.xml
  19. 47 0
      usoft-sso-rest-service/src/main/resources/logback-test.xml
  20. 21 0
      usoft-sso-rest-service/src/test/java/com/usoft/sso/rest/service/DefaultTest.java
  21. 26 0
      usoft-sso-rest-service/src/test/java/com/usoft/sso/rest/service/impl/EnterpriseControllerTest.java
  22. 41 0
      usoft-sso-rest-service/src/test/java/com/usoft/sso/rest/service/impl/UserControllerTest.java
  23. 38 0
      usoft-sso-rest-utils/pom.xml
  24. 27 0
      usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/common/RespUtil.java
  25. 30 0
      usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/common/TypeChangeUtil.java
  26. 52 0
      usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/common/VerifyParamsUtil.java
  27. 29 0
      usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/exception/SSORuntimeException.java

+ 8 - 0
README.md

@@ -0,0 +1,8 @@
+##开发环境如下:开发者使用
+###账号服务
+####grpc端: 
+发布地址:http://10.10.100.200:5001/view/usoft-fx/job/ufinance-sso-grpc-Pdev/build?token=xlq   
+访问地址:192.168.253.3:28810
+####rest端:   
+发布地址:http://10.10.100.200:5001/view/usoft-fx/job/ufinance-sso-rest-Pdev/build?token=xlq   
+访问地址:192.168.253.3:28800

+ 80 - 0
pom.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.usoft.sso</groupId>
+    <artifactId>usoft-sso-rest-parent</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0.0-SNAPSHOT</version>
+    <modules>
+        <module>usoft-sso-rest-api</module>
+        <module>usoft-sso-rest-domain</module>
+        <module>usoft-sso-rest-service</module>
+        <module>usoft-sso-rest-utils</module>
+    </modules>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <protoc-gen-grpc-java.version>1.11.0</protoc-gen-grpc-java.version>
+
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>com.usoft.framework</groupId>
+                <artifactId>usoft-rest-dependencies</artifactId>
+                <version>dev-1.0-SNAPSHOT</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+
+    </dependencyManagement>
+
+    <distributionManagement>
+        <!-- 发布release仓库 -->
+        <repository>
+            <id>platform-release</id>
+            <name>platform-release</name>
+            <url>http://113.105.74.141:8081/artifactory/libs-release-local</url>
+        </repository>
+        <!-- 发布快照版本 -->
+        <snapshotRepository>
+            <id>platform-snapshots</id>
+            <name>platform-snapshots</name>
+            <url>http://113.105.74.141:8081/artifactory/libs-snapshot-local</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <profiles>
+        <profile>
+            <!-- 开发环境 -->
+            <id>dev</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <spring.active.profile>dev</spring.active.profile>
+            </properties>
+        </profile>
+        <profile>
+            <!-- 测试环境 -->
+            <id>test</id>
+            <properties>
+                <spring.active.profile>test</spring.active.profile>
+            </properties>
+        </profile>
+        <profile>
+            <!-- 生产环境 -->
+            <id>prod</id>
+            <properties>
+                <spring.active.profile>prod</spring.active.profile>
+            </properties>
+        </profile>
+    </profiles>
+</project>

+ 87 - 0
usoft-sso-rest-api/pom.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>usoft-sso-rest-parent</artifactId>
+        <groupId>com.usoft.sso</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>usoft-sso-rest-api</artifactId>
+    <packaging>jar</packaging>
+    <version>${spring.active.profile}-SNAPSHOT</version>
+    <dependencies>
+        <dependency>
+            <groupId>io.grpc</groupId>
+            <artifactId>grpc-all</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <extensions>
+            <extension>
+                <groupId>kr.motd.maven</groupId>
+                <artifactId>os-maven-plugin</artifactId>
+                <version>1.5.0.Final</version>
+            </extension>
+        </extensions>
+        <plugins>
+            <plugin>
+                <groupId>org.xolstice.maven.plugins</groupId>
+                <artifactId>protobuf-maven-plugin</artifactId>
+                <version>0.5.1</version>
+                <configuration>
+                    <protocArtifact>com.google.protobuf:protoc:3.4.0:exe:${os.detected.classifier}
+                    </protocArtifact>
+                    <!--此处注释掉原因:不生成接口调用类,只生成实体类-->
+                    <!--<pluginId>grpc-java</pluginId>
+                    <pluginArtifact>
+                        io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.version}:exe:${os.detected.classifier}
+                    </pluginArtifact>-->
+                </configuration>
+                <extensions>true</extensions>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>compile</goal>
+                            <!--<goal>compile-custom</goal>-->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>3.0.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.12.4</version>
+                <configuration>
+                    <!-- 设置打包过程中不编译单元测试代码 TEST -->
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 51 - 0
usoft-sso-rest-api/src/main/proto/ISSORestService.proto

@@ -0,0 +1,51 @@
+syntax = "proto3";
+import "SSORestEntity.proto";
+package sso;
+option java_multiple_files = true;
+option java_package = "com.usoft.sso.rest.api.protobuf";
+
+//用户信息
+service SSOUserService {
+    /********************用户信息*********************/
+    // 账户中心保存用户信息接口-restAPI /api/public/user, method:post, type:kv
+    rpc saveUserInfo (SaveUserInfoReq) returns (SaveUserInfoResp) {
+    }
+    // 账户中心用户 绑定/解绑-restAPI /api/public/user/bindUser, method:post, type:json
+    rpc bindUserInfo (BindUserInfoReq) returns (BindUserInfoResp) {
+    }
+    /********************企业信息*********************/
+    // 企业信息保存+更换管理员同步信息接口-restAPI /api/public/enterprise, method:post, type:kv
+    rpc updateEntInfo (UpdateEntInfoReq) returns (UpdateEntInfoResp) {
+    }
+}
+
+// 账户中心保存用户信息接口 请求参数
+message SaveUserInfoReq {
+    UserInfo userInfo = 1; //用户信息
+    repeated UserInfo ui = 2; //用户信息列表
+
+}
+// 账户中心保存用户信息接口 响应参数
+message SaveUserInfoResp {
+    RespHeader RespHeader = 1;
+}
+//账户中心用户 绑定/解绑 请求参数
+message BindUserInfoReq {
+    int64 userUU = 1; // 用户uu号
+    int64 spaceUU = 2; // 企业uu号
+    string type = 3; //  类型(bind为绑定,unbind为解绑)
+}
+//账户中心用户 绑定/解绑 响应参数
+message BindUserInfoResp {
+    RespHeader RespHeader = 1;
+}
+
+//企业信息保存+更换管理员同步信息接口 请求参数
+message UpdateEntInfoReq {
+    EnterpriseInfo enterpriseInfo = 1; // 企业信息
+    UserInfo userInfo = 2; // 用户信息
+}
+//企业信息保存+更换管理员同步信息接口 响应参数
+message UpdateEntInfoResp {
+    RespHeader RespHeader = 1;
+}

+ 74 - 0
usoft-sso-rest-api/src/main/proto/SSORestEntity.proto

@@ -0,0 +1,74 @@
+syntax = "proto3";
+
+package sso;
+option java_multiple_files = true;
+option java_package = "com.usoft.sso.rest.api.entity";
+
+// 每次响应的头信息
+message RespHeader {
+    int32 code = 1; // 状态码 0.正常 非0.异常
+    string msg = 2; // 错误信息 code!=0时,有值
+}
+
+// 用户信息
+message UserInfo {
+    int32 id = 1; // 主键
+    int64 userUU = 2; // 用户UU号
+    string userImage = 3; //头像
+    string userCity = 4; //城市
+    string userCountry = 5; //国家
+    string userEmail = 6; //邮箱
+    int32 emailValidCode = 7; //邮箱有效编码
+    string firstName = 8; //姓
+    string idCard = 9; //身份证号码
+    int32 identityValidCode = 10; //身份认证状态
+    string lastName = 11; //名
+    string mobile = 12; //  手机号
+    int32 mobileValidCode = 13; //手机认证状态
+    string Password = 14; // 密码
+    string userProvince = 15; //省份
+    string qqNumber = 16; //qq号码
+    string realName = 17; // 用户真实姓名
+    string salt = 18; //盐值
+    string vipName = 19; //  会员名
+    string imId = 20; // imid
+    int32 passwordLevel = 21; // 密码强度
+    string birthday = 22; //生日
+    string sex = 23; //  性别
+    string wxUnionid = 24; //微信unionid
+    string bhOpenid = 25; //碧合openid
+}
+
+//企业信息
+message EnterpriseInfo {
+    int32 id = 1; //主键
+    int64 spaceUU = 2; //企业UU号
+    int64 adminUU = 3; //管理员UU号
+    string bank = 4; // 银行
+    string bankAccount = 5; //银行账户
+    string businessCode = 6; // 营业执照号
+    string businessCodeImage = 7; //营业执照
+    string companyAddress = 8; //公司地址
+    string companyCity = 9; //公司所处城市
+    string companyCountry = 10; //公司所处国家
+    string companyProvince = 11; //公司所处省份
+    string corporation = 12; //法定代表人
+    int64 inviteSpaceUu = 13; //邀请企业UU号
+    int64 inviteUserUu = 14; //邀请人UU号
+    string mainBusiness = 15; //主营业务
+    string profession = 16; //行业
+    string spaceName = 17; //企业名称
+    string tags = 18; //经营范围
+    string telephone = 19; //联系电话
+    int32 validCode = 20; //企业认证状态
+    string accessSecret = 21; //企业秘钥
+    string website = 22; //ERP外网地址
+    string inviteTime = 23; //邀请时间
+}
+
+//用户和企业关联
+message UserEnterprise {
+    int32 id = 1; //主键
+    int64 spaceUU = 2; //企业UU
+    int64 userUU = 3; //用户UU
+}

+ 40 - 0
usoft-sso-rest-domain/pom.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>usoft-sso-rest-parent</artifactId>
+        <groupId>com.usoft.sso</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>usoft-sso-rest-domain</artifactId>
+    <packaging>jar</packaging>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.usoft.sso</groupId>
+            <artifactId>usoft-sso-rest-api</artifactId>
+            <version>${spring.active.profile}-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usoft.sso</groupId>
+            <artifactId>usoft-sso-grpc-api</artifactId>
+            <version>${spring.active.profile}-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usoft.sso</groupId>
+            <artifactId>usoft-sso-rest-utils</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usoft.framework</groupId>
+            <artifactId>usoft-protobuf-utils</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 85 - 0
usoft-sso-rest-domain/src/main/java/com/usoft/sso/rest/domain/SSODomain.java

@@ -0,0 +1,85 @@
+package com.usoft.sso.rest.domain;
+
+import com.sso.rest.utils.exception.SSORuntimeException;
+import com.usoft.protobuf.utils.ProtoBufUtil;
+import com.usoft.sso.grpc.api.entity.Enterprise;
+import com.usoft.sso.grpc.api.entity.UserInfo;
+import com.usoft.sso.grpc.api.protobuf.*;
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.usoft.sso.rest.api.protobuf.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: huyy
+ * @date: 2018-08-22 14:57
+ **/
+@Service
+public class SSODomain {
+
+    @Autowired
+    private SSOGrpcServiceGrpc.SSOGrpcServiceBlockingStub ssoUserSBS;
+
+    /**
+     * 账户中心保存用户信息接口
+     *
+     * @param req
+     * @return
+     * @throws InvalidProtocolBufferException
+     */
+    public SaveUserInfoResp.Builder save(SaveUserInfoReq req) throws InvalidProtocolBufferException {
+        // 创建grpc request
+        com.usoft.sso.grpc.api.entity.UserInfo.Builder userInfo = ProtoBufUtil.toProtoBuf(com.usoft.sso.grpc.api.entity.UserInfo.newBuilder(), req.getUserInfo());
+        SaveUserInfoRequest.Builder builder = SaveUserInfoRequest.newBuilder();
+        builder.setUserInfo(userInfo);
+        SaveUserInfoResponse response = ssoUserSBS.save(builder.build());
+        if (response.getResponseHeader().getCode() != 0) {
+            throw new SSORuntimeException(response.getResponseHeader().getCode(), response.getResponseHeader().getMsg());
+        }
+        return SaveUserInfoResp.newBuilder();
+    }
+
+    /**
+     * 账户中心用户 绑定/解绑
+     *
+     * @param req
+     * @return
+     * @throws InvalidProtocolBufferException
+     */
+    public BindUserInfoResp.Builder bindUser(BindUserInfoReq req) throws InvalidProtocolBufferException {
+        //实例化BindUserInfoRequest
+        BindUserInfoRequest.Builder builder = BindUserInfoRequest.newBuilder();
+        //出入请求参数
+        builder.setUserUU(req.getUserUU());
+        builder.setSpaceUU(req.getSpaceUU());
+        builder.setType(req.getType());
+        BindUserInfoResponse response = ssoUserSBS.bindUser(builder.build());
+        if (response.getResponseHeader().getCode() != 0) {
+            throw new SSORuntimeException(response.getResponseHeader().getCode(), response.getResponseHeader().getMsg());
+        }
+        return BindUserInfoResp.newBuilder();
+    }
+
+    /**
+     * 企业信息保存+更换管理员同步信息接口
+     *
+     * @param req
+     * @return
+     * @throws InvalidProtocolBufferException
+     */
+    public UpdateEntInfoResp.Builder update(UpdateEntInfoReq req) throws InvalidProtocolBufferException {
+        // 创建grpc request
+        UserInfo.Builder userInfo = ProtoBufUtil.toProtoBuf(UserInfo.newBuilder(), req.getUserInfo());
+        Enterprise.Builder enterpriseInfo = ProtoBufUtil.toProtoBuf(Enterprise.newBuilder(), req.getEnterpriseInfo());
+        UpdateEntInfoRequest.Builder builder = UpdateEntInfoRequest.newBuilder();
+        builder.setUser(userInfo);
+        builder.setEnterprise(enterpriseInfo);
+        UpdateEntInfoResponse response = ssoUserSBS.update(builder.build());
+        if (response.getResponseHeader().getCode() != 0) {
+            throw new SSORuntimeException(response.getResponseHeader().getCode(), response.getResponseHeader().getMsg());
+        }
+        return UpdateEntInfoResp.newBuilder();
+    }
+
+
+}

+ 48 - 0
usoft-sso-rest-domain/src/main/java/com/usoft/sso/rest/domain/config/SSOGrpcConfig.java

@@ -0,0 +1,48 @@
+package com.usoft.sso.rest.domain.config;
+
+import com.usoft.sso.grpc.api.protobuf.SSOGrpcServiceGrpc;
+import io.grpc.CallOptions;
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * sso GRPC Client 连接配置
+ *
+ * @author: wangcanyi
+ * @date: 2018-07-31 17:57
+ */
+@Configuration
+public class SSOGrpcConfig {
+
+	/**
+	 * 接口连接超时时间,单位毫秒
+	 */
+	public final static CallOptions.Key<Integer> CO_KEY_CONNECTION_TIMEOUT = CallOptions.Key.of("COKey_ConnectionTimeout", 0);
+	@Value("${sso.grpc.host}")
+	private String ssoGrpcHost;
+	@Value("${sso.grpc.port}")
+	private int ssoGrpcPort;
+
+	@Bean(name = "ssoManagedChannel")
+	public ManagedChannel getSsoManagedChannel() {
+		return ManagedChannelBuilder.forAddress(ssoGrpcHost, ssoGrpcPort).usePlaintext().build();
+	}
+
+
+	@Bean(name = "ssoUserSBS")
+	public SSOGrpcServiceGrpc.SSOGrpcServiceBlockingStub getSsoEGUserServiceBlockingStub(ManagedChannel managedChannel) {
+		SSOGrpcServiceGrpc.SSOGrpcServiceBlockingStub UserServiceBlockingStub =
+				SSOGrpcServiceGrpc.newBlockingStub(managedChannel).withOption(CO_KEY_CONNECTION_TIMEOUT, 5000);
+		return UserServiceBlockingStub;
+	}
+
+	@Bean(name = "SSOUserSFS")
+	public SSOGrpcServiceGrpc.SSOGrpcServiceBlockingStub getSsoEGUserServiceFutureStub(ManagedChannel managedChannel) {
+		SSOGrpcServiceGrpc.SSOGrpcServiceBlockingStub UserServiceBlockingStub =
+				SSOGrpcServiceGrpc.newBlockingStub(managedChannel).withOption(CO_KEY_CONNECTION_TIMEOUT, 5000);
+		return UserServiceBlockingStub;
+	}
+}

+ 91 - 0
usoft-sso-rest-service/pom.xml

@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>usoft-sso-rest-parent</artifactId>
+        <groupId>com.usoft.sso</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>usoft-sso-rest-service</artifactId>
+    <packaging>jar</packaging>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.usoft.sso</groupId>
+            <artifactId>usoft-sso-rest-domain</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usoft.sso</groupId>
+            <artifactId>usoft-sso-rest-api</artifactId>
+            <version>${spring.active.profile}-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.uas.sso</groupId>
+            <artifactId>sso-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>usoft-sso-rest-service</finalName>
+        <!-- 开启资源文件过滤  -->
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/resources</directory>
+                <filtering>true</filtering>
+                <targetPath>${project.build.directory}/classes</targetPath>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>1.5.11.RELEASE</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <executable>true</executable>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.12.4</version>
+                <configuration>
+                    <!-- 设置打包过程中不编译单元测试代码 TEST -->
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 17 - 0
usoft-sso-rest-service/src/main/java/com/usoft/sso/rest/SsoRestServiceStart.java

@@ -0,0 +1,17 @@
+package com.usoft.sso.rest;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * Demo Rest 服务
+ *
+ * @author huyy
+ * @date 2018/8/17
+ */
+@SpringBootApplication
+public class SsoRestServiceStart {
+    public static void main(String[] args) throws Exception {
+        SpringApplication.run(SsoRestServiceStart.class);
+    }
+}

+ 68 - 0
usoft-sso-rest-service/src/main/java/com/usoft/sso/rest/service/impl/EnterpriseController.java

@@ -0,0 +1,68 @@
+package com.usoft.sso.rest.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.sso.rest.utils.common.RespUtil;
+import com.sso.rest.utils.common.TypeChangeUtil;
+import com.sso.rest.utils.exception.SSORuntimeException;
+import com.usoft.protobuf.utils.ProtoBufUtil;
+import com.usoft.sso.rest.api.entity.EnterpriseInfo;
+import com.usoft.sso.rest.api.entity.RespHeader;
+import com.usoft.sso.rest.api.entity.UserInfo;
+import com.usoft.sso.rest.api.protobuf.UpdateEntInfoReq;
+import com.usoft.sso.rest.api.protobuf.UpdateEntInfoResp;
+import com.usoft.sso.rest.domain.SSODomain;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author: huyy
+ * @date: 2018/8/23 15:11
+ */
+@RestController
+public class EnterpriseController {
+    @Resource
+    private SSODomain ssoDomain;
+    private static final Logger LOGGER = LoggerFactory.getLogger(EnterpriseController.class);
+
+    /**
+     * 企业信息保存+更换管理员同步信息接口
+     *
+     * @param json
+     * @return
+     * @throws UnsupportedEncodingException
+     * @throws InvalidProtocolBufferException
+     */
+    @PostMapping(value = "/api/public/enterprise")
+    public String updateEntInfo(@RequestBody String json) throws UnsupportedEncodingException, InvalidProtocolBufferException {
+        //账户中心传过来的数据比较特别,需要特殊解码
+        JSONObject object = TypeChangeUtil.stringToJSONObj(json);
+        EnterpriseInfo.Builder enBuilder = ProtoBufUtil.toProtoBuf(EnterpriseInfo.newBuilder(), object.toJSONString());
+        UserInfo.Builder userBuilder = ProtoBufUtil.toProtoBuf(UserInfo.newBuilder(), object.toJSONString());
+        UpdateEntInfoResp.Builder resp = UpdateEntInfoResp.newBuilder();
+        UpdateEntInfoReq.Builder req = UpdateEntInfoReq.newBuilder();
+        req.setEnterpriseInfo(enBuilder);
+        req.setUserInfo(userBuilder);
+        try {
+            resp = ssoDomain.update(req.build());
+            resp.setRespHeader(RespHeader.newBuilder());
+            LOGGER.info("更新企业信息[UserController.updateEntInfo]正常,参数:{}", ProtoBufUtil.toJSONHasTryCatch(req.build()));
+        } catch (SSORuntimeException e) {
+            LOGGER.warn("更新企业信息[UserController.updateEntInfo]告警,参数:{}", json, e);
+            RespHeader respHeader = RespUtil.getRespHeader(e.getErrorCode(), e.getErrorMessage());
+            resp.setRespHeader(respHeader);
+        } catch (Exception e) {
+            LOGGER.error("更新企业信息[UserController.updateEntInfo]异常,参数:{}", json, e);
+            RespHeader respHeader = RespUtil.getRespHeader(SSORuntimeException.ERROR_CODE_100, e.getMessage());
+            resp.setRespHeader(respHeader);
+        }
+        return ProtoBufUtil.toJSONHasTryCatch(resp.build());
+    }
+
+}

+ 93 - 0
usoft-sso-rest-service/src/main/java/com/usoft/sso/rest/service/impl/UserController.java

@@ -0,0 +1,93 @@
+package com.usoft.sso.rest.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.sso.rest.utils.common.RespUtil;
+import com.sso.rest.utils.common.TypeChangeUtil;
+import com.sso.rest.utils.exception.SSORuntimeException;
+import com.usoft.protobuf.utils.ProtoBufUtil;
+import com.usoft.sso.rest.api.entity.RespHeader;
+import com.usoft.sso.rest.api.entity.UserInfo;
+import com.usoft.sso.rest.api.protobuf.BindUserInfoReq;
+import com.usoft.sso.rest.api.protobuf.BindUserInfoResp;
+import com.usoft.sso.rest.api.protobuf.SaveUserInfoReq;
+import com.usoft.sso.rest.api.protobuf.SaveUserInfoResp;
+import com.usoft.sso.rest.domain.SSODomain;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author: huyy
+ * @date: 2018/8/21 16:32
+ */
+@RestController
+public class UserController {
+    private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
+
+    @Resource
+    private SSODomain ssoDomain;
+
+    /**
+     * 账户中心保存用户信息接口-restAPI api/public/user, method:post, type:kv
+     *
+     * @param
+     * @return
+     */
+    @PostMapping(value = "/api/public/user")
+    public String saveUserInfo(@RequestBody String json) throws UnsupportedEncodingException, InvalidProtocolBufferException {
+        //账户中心传过来的数据比较特别,需要特殊解码
+        JSONObject jsonObject = TypeChangeUtil.stringToJSONObj(json);
+        UserInfo.Builder userInfo = ProtoBufUtil.toProtoBuf(UserInfo.newBuilder(), jsonObject.toJSONString());
+        SaveUserInfoReq.Builder req = SaveUserInfoReq.newBuilder();
+        SaveUserInfoResp.Builder resp = SaveUserInfoResp.newBuilder();
+        req.setUserInfo(userInfo);
+        try {
+            resp = ssoDomain.save(req.build());
+            resp.setRespHeader(RespHeader.newBuilder());
+            LOGGER.info("保存用户信息[UserController.saveUserInfo]正常,参数:{}", ProtoBufUtil.toJSONHasTryCatch(req.build()));
+        } catch (SSORuntimeException e) {
+            LOGGER.warn("保存用户信息[UserController.saveUserInfo]告警,参数:{}", json, e);
+            RespHeader respHeader = RespUtil.getRespHeader(e.getErrorCode(), e.getErrorMessage());
+            resp.setRespHeader(respHeader);
+        } catch (Exception e) {
+            LOGGER.error("保存用户信息[UserController.saveUserInfo]异常,参数:{}", json, e);
+            RespHeader respHeader = RespUtil.getRespHeader(SSORuntimeException.ERROR_CODE_100, e.getMessage());
+            resp.setRespHeader(respHeader);
+        }
+        return ProtoBufUtil.toJSONHasTryCatch(resp.build());
+    }
+
+    /**
+     * 账户中心用户 绑定/解绑-restAPI /api/public/user/bindUser, method:post, type:json
+     *
+     * @param json
+     * @return
+     */
+
+    @PostMapping(value = "/api/public/user/bindUser")
+    public String bindUserInfo(@RequestBody String json) throws UnsupportedEncodingException {
+        //账户中心传过来的数据比较特别,需要特殊解码
+        JSONObject object = TypeChangeUtil.stringToJSONObj(json);
+        BindUserInfoResp.Builder resp = BindUserInfoResp.newBuilder();
+        try {
+            BindUserInfoReq.Builder req = ProtoBufUtil.toProtoBuf(BindUserInfoReq.newBuilder(), object);
+            resp = ssoDomain.bindUser(req.build());
+            resp.setRespHeader(RespHeader.newBuilder());
+            LOGGER.info("账户中心用户 绑定/解绑[UserController.bindUserInfo]正常,参数:{}", ProtoBufUtil.toJSONHasTryCatch(req.build()));
+        } catch (SSORuntimeException e) {
+            LOGGER.warn("账户中心用户 绑定/解绑[UserController.bindUserInfo]告警,参数:{}", json, e);
+            RespHeader respHeader = RespUtil.getRespHeader(e.getErrorCode(), e.getErrorMessage());
+            resp.setRespHeader(respHeader);
+        } catch (Exception e) {
+            LOGGER.error("账户中心用户 绑定/解绑[UserController.bindUserInfo]异常,参数:{}", json, e);
+            RespHeader respHeader = RespUtil.getRespHeader(SSORuntimeException.ERROR_CODE_100, e.getMessage());
+            resp.setRespHeader(respHeader);
+        }
+        return ProtoBufUtil.toJSONHasTryCatch(resp.build());
+    }
+}

+ 3 - 0
usoft-sso-rest-service/src/main/resources/application-dev.properties

@@ -0,0 +1,3 @@
+#sso GRPC 配置地址
+sso.grpc.host=192.168.253.3
+sso.grpc.port=28810

+ 2 - 0
usoft-sso-rest-service/src/main/resources/application-prod.properties

@@ -0,0 +1,2 @@
+
+

+ 4 - 0
usoft-sso-rest-service/src/main/resources/application-test.properties

@@ -0,0 +1,4 @@
+#sso GRPC 配置地址
+sso.grpc.host=127.0.0.1
+sso.grpc.port=28800
+

+ 9 - 0
usoft-sso-rest-service/src/main/resources/application.properties

@@ -0,0 +1,9 @@
+# 指定起作用的profile
+spring.profiles.active=${spring.active.profile}
+
+# 指定其作用的日志配置
+logging.config=classpath:logback-${spring.active.profile}.xml
+#Rest启动端口
+server.port=28800
+
+############################ 公共配置 ###############################

+ 42 - 0
usoft-sso-rest-service/src/main/resources/logback-dev.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- For assistance related to logback-translator or configuration  -->
+<!-- files in general, please contact the logback user mailing list -->
+<!-- at http://www.qos.ch/mailman/listinfo/logback-user             -->
+<!--                                                                -->
+<!-- For professional support please see                            -->
+<!--    http://www.qos.ch/shop/products/professionalSupport         -->
+<!--                                                                -->
+<!--
+  configuration 包含的属性
+  scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
+  scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
+  debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
+ -->
+<configuration>
+
+    <!--appender负责将格式化后的输出发送到目的地 -->
+    <!-- 控制台输出日志 -->
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <!-- layout 负责根据用户意愿对记录请求进行格式化
+             1.第一个字段是自程序启动以来的逝去时间,单位是毫秒。
+             2.第二个字段发出记录请求的线程。
+             3.第三个字段是记录请求的级别。
+             4.第四个字段是与记录请求关联的logger的名称
+             “-”之后是请求的消息文字。
+             -->
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20}[%L] - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!-- root与logger类似,它表示根logger,只有大于等于level级别的日志才交由appender处理,level默认为DEBUG -->
+    <root level="INFO">
+        <appender-ref ref="stdout" />
+    </root>
+
+    <!-- 开发环境 打印sql -->
+    <logger name="dal" level="DEBUG"/>
+
+</configuration>

+ 33 - 0
usoft-sso-rest-service/src/main/resources/logback-product.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+    <!-- 文件输出指定项目日志 -->
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>/data/log/usoft/sso.rest.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}[%L] - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!-- 异步输出指定项目日志 -->
+    <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
+        <discardingThreshold>0</discardingThreshold>
+        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
+        <queueSize>512</queueSize>
+        <!-- 添加附加的appender,最多只能添加一个 -->
+        <appender-ref ref="file"/>
+        <includeCallerData>true</includeCallerData>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="async"/>
+    </root>
+
+</configuration>

+ 47 - 0
usoft-sso-rest-service/src/main/resources/logback-test.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <!-- layout 负责根据用户意愿对记录请求进行格式化
+             1.第一个字段是自程序启动以来的逝去时间,单位是毫秒。
+             2.第二个字段发出记录请求的线程。
+             3.第三个字段是记录请求的级别。
+             4.第四个字段是与记录请求关联的logger的名称
+             “-”之后是请求的消息文字。
+             -->
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20}[%L] - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!-- 文件输出指定项目日志 -->
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>/data/log/usoft/sso.rest.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}[%L] - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!-- 异步输出指定项目日志 -->
+    <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
+        <discardingThreshold>0</discardingThreshold>
+        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
+        <queueSize>512</queueSize>
+        <!-- 添加附加的appender,最多只能添加一个 -->
+        <appender-ref ref="file"/>
+        <includeCallerData>true</includeCallerData>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="async"/>
+        <appender-ref ref="stdout"/>
+    </root>
+
+</configuration>

+ 21 - 0
usoft-sso-rest-service/src/test/java/com/usoft/sso/rest/service/DefaultTest.java

@@ -0,0 +1,21 @@
+/**
+ *
+ */
+package com.usoft.sso.rest.service;
+
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+
+/**
+ *
+ */
+public class DefaultTest {
+    protected CloseableHttpClient httpClient;
+    protected String baseUrl = "";
+
+    public DefaultTest() {
+        baseUrl = "http://127.0.0.1:28800";
+        httpClient = HttpClients.createDefault();
+    }
+
+}

+ 26 - 0
usoft-sso-rest-service/src/test/java/com/usoft/sso/rest/service/impl/EnterpriseControllerTest.java

@@ -0,0 +1,26 @@
+package com.usoft.sso.rest.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.sso.common.util.HttpUtil;
+import com.usoft.sso.rest.service.DefaultTest;
+import org.junit.Test;
+import org.springframework.util.Assert;
+
+/**
+ * @author: huyy
+ * @date: 2018/8/23 22:08
+ */
+public class EnterpriseControllerTest extends DefaultTest {
+    @Test
+    public void updateEntInfo() throws Exception {
+        String url = baseUrl;
+        url += "/api/public/enterprise";
+        String formdata = "{\"userUU\":200002757,\"mobileArea\":\"continent\",\"validCode\":0,\"mobile\":\"19923832223\",\"mobileValidCode\":2,\"emailValidCode\":0,\"spaceName\":\"账户中心登录界9988使用公司\",\"businessCode\":\"889999\",\"password\":\"4617d76c1a1e2fb2ae9b4783c81cdedb\",\"vipName\":\"账户中88心\",\"spaceUU\":1,\"adminUU\":100009107,\"email\":\"\",\"identityValidCode\":0,\"registerDate\":1535015275404}";
+        JSONObject json = JSON.parseObject(formdata);
+        HttpUtil.ResponseWrap responseWrap = HttpUtil.doPost(url, json);
+        Assert.isTrue(JSONObject.parseObject(responseWrap.getContent().toString()).getJSONObject("RespHeader").getInteger("code")== 0, " 返回码不为 0");
+        System.out.println("------更新企业信息成功--------");
+    }
+
+}

+ 41 - 0
usoft-sso-rest-service/src/test/java/com/usoft/sso/rest/service/impl/UserControllerTest.java

@@ -0,0 +1,41 @@
+package com.usoft.sso.rest.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.sso.common.util.HttpUtil;
+import com.usoft.sso.rest.service.DefaultTest;
+import org.junit.Test;
+import org.springframework.util.Assert;
+
+import java.io.IOException;
+
+/**
+ * @author: huyy
+ * @date: 2018/8/17 11:41
+ */
+public class UserControllerTest extends DefaultTest {
+    @Test
+    public void bindUserInfo() throws Exception {
+        String url = baseUrl;
+        url += "/api/public/user/bindUser";
+        String formdata = "{\"userUU\":1000027107,\"spaceUU\":1,\"type\":\"bind\"}";
+        JSONObject json = JSON.parseObject(formdata);
+        HttpUtil.ResponseWrap responseWrap = HttpUtil.doPost(url, json);
+        Assert.isTrue(JSONObject.parseObject(responseWrap.getContent().toString()).getJSONObject("RespHeader").getInteger("code")== 0, " 返回码不为 0");
+        System.out.println("------绑定/解绑企业成功--------");
+
+    }
+
+    @Test
+    public void saveUserInfo() throws Exception {
+        String url = baseUrl;
+        url += "/api/public/user";
+        String formdata = "{\"userUU\":1000027107,\"mobileArea\":\"continent\",\"salt\":\"1000027107\",\"fromApp\":\"sso\",\"mobile\":\"14953214789\",\"mobileValidCode\":2,\"emailValidCode\":0,\"passwordLevel\":2,\"password\":\"09fa069fca82609563efc79d2a8d15c4\",\"vipName\":\"24味\",\"hasQuestion\":false,\"email\":\"\",\"identityValidCode\":0,\"registerDate\":1535008214726}";
+        JSONObject json = JSON.parseObject(formdata);
+        HttpUtil.ResponseWrap responseWrap = HttpUtil.doPost(url, json);
+        Assert.isTrue(JSONObject.parseObject(responseWrap.getContent().toString()).getJSONObject("RespHeader").getInteger("code")== 0, " 返回码不为 0");
+        System.out.println("------保存用户信息成功--------");
+
+    }
+
+}

+ 38 - 0
usoft-sso-rest-utils/pom.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>usoft-sso-rest-parent</artifactId>
+        <groupId>com.usoft.sso</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>usoft-sso-rest-utils</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.usoft.sso</groupId>
+            <artifactId>usoft-sso-rest-api</artifactId>
+            <version>${spring.active.profile}-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usoft.framework</groupId>
+            <artifactId>usoft-exception-utils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 27 - 0
usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/common/RespUtil.java

@@ -0,0 +1,27 @@
+package com.sso.rest.utils.common;
+
+import com.usoft.sso.rest.api.entity.RespHeader;
+
+/**
+ * 响应工具类
+ *
+ * @author: wangcanyi
+ * @date: 2018-07-31 17:57
+ */
+public class RespUtil {
+
+	/**
+	 * 获取自定义响应头
+	 *
+	 * @param code 返回码
+	 * @param msg  返回消息
+	 * @return
+	 */
+	public static RespHeader getRespHeader(int code, String msg) {
+		RespHeader.Builder builder = RespHeader.newBuilder();
+		builder.setCode(code);
+		builder.setMsg(msg);
+		return builder.build();
+	}
+
+}

+ 30 - 0
usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/common/TypeChangeUtil.java

@@ -0,0 +1,30 @@
+package com.sso.rest.utils.common;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+/**
+ * @author: huyy
+ * @date: 2018/8/24 11:42
+ */
+public class TypeChangeUtil {
+    /**
+     * 将账户中心传过来的数据传成JSON对象
+     * @param msg
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    public static JSONObject stringToJSONObj(String msg) throws UnsupportedEncodingException {
+        JSONObject object = new JSONObject();
+        String[] kvs = msg.split("&");
+        for (String kv : kvs) {
+            String[] data = kv.split("=");
+            String key = data[0];
+            String value = data.length == 2 ? URLDecoder.decode(data[1], "UTF-8") : null;
+            object.put(key, value);
+        }
+        return object;
+    }
+}

+ 52 - 0
usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/common/VerifyParamsUtil.java

@@ -0,0 +1,52 @@
+package com.sso.rest.utils.common;
+
+import com.sso.rest.utils.exception.SSORuntimeException;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 参数校验
+ *
+ * @author: wangcanyi
+ * @date: 2018-07-31 17:57
+ */
+public class VerifyParamsUtil {
+
+	/**
+	 * 对象是否为空
+	 *
+	 * @param object  对象
+	 * @param message 错误消息
+	 * @throws SSORuntimeException
+	 */
+	public static void notNull(Object object, String message) throws SSORuntimeException {
+		if (object == null) {
+			throw new SSORuntimeException(-1, message);
+		}
+	}
+
+	/**
+	 * 是否有值
+	 *
+	 * @param text    文本
+	 * @param message 错误消息
+	 * @throws SSORuntimeException
+	 */
+	public static void hasText(String text, String message) throws SSORuntimeException {
+		if (!StringUtils.isBlank(text)) {
+			throw new SSORuntimeException(-1, message);
+		}
+	}
+
+	/**
+	 * 表达式是否正确
+	 *
+	 * @param expression 表达式
+	 * @param message    错误消息
+	 * @throws SSORuntimeException
+	 */
+	public static void isTrue(boolean expression, String message) throws SSORuntimeException {
+		if (!expression) {
+			throw new SSORuntimeException(-1, message);
+		}
+	}
+}

+ 29 - 0
usoft-sso-rest-utils/src/main/java/com/sso/rest/utils/exception/SSORuntimeException.java

@@ -0,0 +1,29 @@
+package com.sso.rest.utils.exception;
+
+import com.usoft.exception.utils.BaseRuntimeException;
+
+/**
+ * @author: huyy
+ * @date: 2018/8/16 10:59
+ */
+public class SSORuntimeException extends BaseRuntimeException {
+    /**
+     * sso公用异常
+     *
+     * @param errorMessage 错误信息
+     */
+    public SSORuntimeException(String errorMessage) {
+        super(errorMessage);
+    }
+
+    /**
+     * sso公用异常
+     *
+     * @param errorCode    错误号
+     * @param errorMessage 错误信息
+     */
+    public SSORuntimeException(int errorCode, String errorMessage) {
+        super(errorCode, errorMessage);
+    }
+
+}