Browse Source

BUG修复

yingp 6 years ago
parent
commit
0d850f140f
32 changed files with 283 additions and 152 deletions
  1. 3 1
      apis/account-api/src/main/java/com/usoftchina/uu/account/dto/AccountDTO.java
  2. 3 1
      apis/account-api/src/main/java/com/usoftchina/uu/account/dto/CompanyDTO.java
  3. 3 1
      apis/account-api/src/main/java/com/usoftchina/uu/account/dto/DeviceInfoDTO.java
  4. 3 1
      apis/account-api/src/main/java/com/usoftchina/uu/account/dto/EmailCheckToken.java
  5. 3 1
      apis/account-api/src/main/java/com/usoftchina/uu/account/dto/TokenDTO.java
  6. 3 1
      apis/app-api/src/main/java/com/usoftchina/uu/app/dto/AppConfigDTO.java
  7. 2 1
      apis/app-api/src/main/java/com/usoftchina/uu/app/dto/AppGroupDTO.java
  8. 3 1
      apis/app-api/src/main/java/com/usoftchina/uu/app/dto/CompanyAppConfigDTO.java
  9. 2 1
      apis/app-api/src/main/java/com/usoftchina/uu/app/dto/CompanyAppGroupDTO.java
  10. 3 1
      apis/home-api/src/main/java/com/usoftchina/uu/home/dto/CompanyHomeConfigDTO.java
  11. 3 1
      apis/home-api/src/main/java/com/usoftchina/uu/home/dto/HomeConfigDTO.java
  12. 3 1
      apis/message-api/src/main/java/com/usoftchina/uu/message/dto/CompanyMessageConfigDTO.java
  13. 3 1
      apis/message-api/src/main/java/com/usoftchina/uu/message/dto/MessageConfigDTO.java
  14. 3 1
      apis/message-api/src/main/java/com/usoftchina/uu/message/dto/MessageDTO.java
  15. 2 1
      apis/message-api/src/main/java/com/usoftchina/uu/message/dto/SendMessageDTO.java
  16. 3 1
      apis/message-api/src/main/java/com/usoftchina/uu/message/dto/UnreadMessageCountDTO.java
  17. 1 0
      apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/AbstractGRpcServerTest.java
  18. 21 0
      apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/Authentication.java
  19. 1 1
      apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileAccountServiceTest.java
  20. 29 0
      apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileClientAuthenticationInterceptor.java
  21. 13 0
      external/baidu-push-feign-client/src/main/java/com/usoftchina/uu/baidu/config/BaiduConfig.java
  22. 0 4
      external/baidu-push-feign-client/src/main/java/com/usoftchina/uu/baidu/config/BaiduFeignConfig.java
  23. 14 0
      external/sso-feign-client/src/main/java/com/usoftchina/sso/config/SsoConfig.java
  24. 0 4
      external/sso-feign-client/src/main/java/com/usoftchina/sso/config/SsoFeignConfig.java
  25. 1 0
      runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/AbstractGRpcServerTest.java
  26. 21 0
      runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/Authentication.java
  27. 3 1
      runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileAccountServiceTest.java
  28. 29 0
      runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileClientAuthenticationInterceptor.java
  29. 19 4
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/interceptor/MobileAuthenticationInterceptor.java
  30. 82 1
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImpl.java
  31. 0 117
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImplWithoutAuth.java
  32. 4 4
      shared/core/src/main/java/com/usoftchina/uu/exception/ExceptionCode.java

+ 3 - 1
apis/account-api/src/main/java/com/usoftchina/uu/account/dto/AccountDTO.java

@@ -1,12 +1,14 @@
 package com.usoftchina.uu.account.dto;
 
+import java.io.Serializable;
+
 /**
  * 个人账户
  *
  * @author yingp
  * @date 2019/4/16
  */
-public class AccountDTO {
+public class AccountDTO implements Serializable {
     private Long id;
     /**
      * 真实姓名(考虑是企业应用,非社交类型,不需要昵称)

+ 3 - 1
apis/account-api/src/main/java/com/usoftchina/uu/account/dto/CompanyDTO.java

@@ -1,12 +1,14 @@
 package com.usoftchina.uu.account.dto;
 
+import java.io.Serializable;
+
 /**
  * 公司
  *
  * @author yingp
  * @date 2019/4/16
  */
-public class CompanyDTO {
+public class CompanyDTO implements Serializable {
     private Long id;
     private String name;
     private String secretKey;

+ 3 - 1
apis/account-api/src/main/java/com/usoftchina/uu/account/dto/DeviceInfoDTO.java

@@ -2,13 +2,15 @@ package com.usoftchina.uu.account.dto;
 
 import com.usoftchina.uu.base.DeviceOS;
 
+import java.io.Serializable;
+
 /**
  * 设备信息
  *
  * @author yingp
  * @date 2019/4/17
  */
-public class DeviceInfoDTO {
+public class DeviceInfoDTO implements Serializable {
     private Long accountId;
     /**
      * 客户端发行版本,例如1.0.0

+ 3 - 1
apis/account-api/src/main/java/com/usoftchina/uu/account/dto/EmailCheckToken.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.account.dto;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/25
  */
-public class EmailCheckToken {
+public class EmailCheckToken implements Serializable {
     private String email;
     private String token;
 

+ 3 - 1
apis/account-api/src/main/java/com/usoftchina/uu/account/dto/TokenDTO.java

@@ -2,11 +2,13 @@ package com.usoftchina.uu.account.dto;
 
 import org.apache.commons.lang3.RandomStringUtils;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/18
  */
-public class TokenDTO {
+public class TokenDTO implements Serializable {
     /**
      * 30天
      */

+ 3 - 1
apis/app-api/src/main/java/com/usoftchina/uu/app/dto/AppConfigDTO.java

@@ -3,11 +3,13 @@ package com.usoftchina.uu.app.dto;
 import com.usoftchina.uu.base.CompanyRelate;
 import com.usoftchina.uu.base.ViewType;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/18
  */
-public class AppConfigDTO {
+public class AppConfigDTO implements Serializable {
     /**
      * 组ID
      */

+ 2 - 1
apis/app-api/src/main/java/com/usoftchina/uu/app/dto/AppGroupDTO.java

@@ -1,5 +1,6 @@
 package com.usoftchina.uu.app.dto;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -7,7 +8,7 @@ import java.util.List;
  * @author yingp
  * @date 2019/4/18
  */
-public class AppGroupDTO {
+public class AppGroupDTO implements Serializable {
     private Integer id;
     private String name;
     private List<AppConfigDTO> appConfigList;

+ 3 - 1
apis/app-api/src/main/java/com/usoftchina/uu/app/dto/CompanyAppConfigDTO.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.app.dto;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/25
  */
-public class CompanyAppConfigDTO extends AppConfigDTO{
+public class CompanyAppConfigDTO extends AppConfigDTO implements Serializable {
     /**
      * 是否启用
      */

+ 2 - 1
apis/app-api/src/main/java/com/usoftchina/uu/app/dto/CompanyAppGroupDTO.java

@@ -1,12 +1,13 @@
 package com.usoftchina.uu.app.dto;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author yingp
  * @date 2019/4/25
  */
-public class CompanyAppGroupDTO {
+public class CompanyAppGroupDTO implements Serializable {
     private Integer id;
     private String name;
     private List<CompanyAppConfigDTO> appConfigList;

+ 3 - 1
apis/home-api/src/main/java/com/usoftchina/uu/home/dto/CompanyHomeConfigDTO.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.home.dto;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/25
  */
-public class CompanyHomeConfigDTO extends HomeConfigDTO {
+public class CompanyHomeConfigDTO extends HomeConfigDTO implements Serializable {
     /**
      * 公司是否启用该配置
      */

+ 3 - 1
apis/home-api/src/main/java/com/usoftchina/uu/home/dto/HomeConfigDTO.java

@@ -3,11 +3,13 @@ package com.usoftchina.uu.home.dto;
 import com.usoftchina.uu.base.CompanyRelate;
 import com.usoftchina.uu.base.ViewType;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/25
  */
-public class HomeConfigDTO {
+public class HomeConfigDTO implements Serializable {
     protected Integer id;
     /**
      * 顺序

+ 3 - 1
apis/message-api/src/main/java/com/usoftchina/uu/message/dto/CompanyMessageConfigDTO.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.message.dto;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/23
  */
-public class CompanyMessageConfigDTO extends MessageConfigDTO {
+public class CompanyMessageConfigDTO extends MessageConfigDTO implements Serializable {
     /**
      * 是否启用
      */

+ 3 - 1
apis/message-api/src/main/java/com/usoftchina/uu/message/dto/MessageConfigDTO.java

@@ -3,11 +3,13 @@ package com.usoftchina.uu.message.dto;
 import com.usoftchina.uu.base.CompanyRelate;
 import com.usoftchina.uu.base.ViewType;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/19
  */
-public class MessageConfigDTO {
+public class MessageConfigDTO implements Serializable {
     protected Integer id;
     /**
      * 唯一编码,例如 "uas.todo"

+ 3 - 1
apis/message-api/src/main/java/com/usoftchina/uu/message/dto/MessageDTO.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.message.dto;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/19
  */
-public class MessageDTO {
+public class MessageDTO implements Serializable {
     protected Long id;
     /**
      * 消息类

+ 2 - 1
apis/message-api/src/main/java/com/usoftchina/uu/message/dto/SendMessageDTO.java

@@ -1,12 +1,13 @@
 package com.usoftchina.uu.message.dto;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author yingp
  * @date 2019/4/19
  */
-public class SendMessageDTO {
+public class SendMessageDTO implements Serializable {
     /**
      * 消息类
      */

+ 3 - 1
apis/message-api/src/main/java/com/usoftchina/uu/message/dto/UnreadMessageCountDTO.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.message.dto;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/19
  */
-public class UnreadMessageCountDTO {
+public class UnreadMessageCountDTO implements Serializable {
     private String code;
     private Integer count;
 

+ 1 - 0
apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/AbstractGRpcServerTest.java

@@ -18,6 +18,7 @@ public abstract class AbstractGRpcServerTest {
     @Before
     public final void setupChannels() {
         channel = onChannelBuild(ManagedChannelBuilder.forAddress("10.1.81.83", 9620)
+                .intercept(new MobileClientAuthenticationInterceptor())
                 .usePlaintext()
         ).build();
     }

+ 21 - 0
apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/Authentication.java

@@ -0,0 +1,21 @@
+package com.usoftchina.uu.mobile.grpc.test;
+
+/**
+ * @author yingp
+ * @date 2019/4/25
+ */
+public class Authentication {
+    private static String authentication;
+
+    public static String get() {
+        return authentication;
+    }
+
+    public static void set(String authentication) {
+        Authentication.authentication = authentication;
+    }
+
+    public static boolean isAuthenticated() {
+        return null != authentication;
+    }
+}

+ 1 - 1
apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileAccountServiceTest.java

@@ -26,7 +26,7 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
         try {
             AccountSigninResponse response = accountServiceBlockingStub.signin(AccountSigninRequest.newBuilder()
                     .setMobile("13798490565")
-                    .setPassword("fghjFGHJ12")
+                    .setPassword("111111")
                     .setDeviceInfo(DeviceInfo.newBuilder()
                             .setOs(DeviceInfo.OS.ANDROID))
                     .build());

+ 29 - 0
apis/mobile-grpc-api/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileClientAuthenticationInterceptor.java

@@ -0,0 +1,29 @@
+package com.usoftchina.uu.mobile.grpc.test;
+
+import io.grpc.*;
+
+/**
+ * @author yingp
+ * @date 2019/4/25
+ */
+public class MobileClientAuthenticationInterceptor implements ClientInterceptor {
+    /**
+     * 登录成功获取的token串
+     */
+    private static Metadata.Key<String> AUTH_HEADER_KEY =
+            Metadata.Key.of("authentication", Metadata.ASCII_STRING_MARSHALLER);
+
+    @Override
+    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
+        return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {
+
+            @Override
+            public void start(Listener<RespT> responseListener, Metadata headers) {
+                if (Authentication.isAuthenticated()) {
+                    headers.put(AUTH_HEADER_KEY, Authentication.get());
+                }
+                super.start(responseListener, headers);
+            }
+        };
+    }
+}

+ 13 - 0
external/baidu-push-feign-client/src/main/java/com/usoftchina/uu/baidu/config/BaiduConfig.java

@@ -0,0 +1,13 @@
+package com.usoftchina.uu.baidu.config;
+
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author yingp
+ * @date 2019/4/25
+ */
+@Configuration
+@EnableConfigurationProperties(BaiduPushProperties.class)
+public class BaiduConfig {
+}

+ 0 - 4
external/baidu-push-feign-client/src/main/java/com/usoftchina/uu/baidu/config/BaiduFeignConfig.java

@@ -5,16 +5,12 @@ import com.usoftchina.uu.baidu.exception.feign.BaiduFeignErrorDecoder;
 import com.usoftchina.uu.feign.config.BaseFeignConfig;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
 
 /**
  * @author yingp
  * @date 2019/4/17
  */
-@Configuration
-@EnableConfigurationProperties(BaiduPushProperties.class)
 public class BaiduFeignConfig extends BaseFeignConfig {
 
     @Autowired

+ 14 - 0
external/sso-feign-client/src/main/java/com/usoftchina/sso/config/SsoConfig.java

@@ -0,0 +1,14 @@
+package com.usoftchina.sso.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author yingp
+ * @date 2019/4/25
+ */
+@Configuration
+@EnableConfigurationProperties(SsoProperties.class)
+public class SsoConfig {
+}

+ 0 - 4
external/sso-feign-client/src/main/java/com/usoftchina/sso/config/SsoFeignConfig.java

@@ -5,16 +5,12 @@ import com.usoftchina.sso.auth.feign.SsoSignatureInterceptor;
 import com.usoftchina.uu.feign.config.BaseFeignConfig;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
 
 /**
  * @author yingp
  * @date 2019/4/17
  */
-@Configuration
-@EnableConfigurationProperties(SsoProperties.class)
 public class SsoFeignConfig extends BaseFeignConfig {
 
     @Autowired

+ 1 - 0
runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/AbstractGRpcServerTest.java

@@ -28,6 +28,7 @@ public abstract class AbstractGRpcServerTest {
     public final void setupChannels() {
         if (gRpcServerProperties.isEnabled()) {
             channel = onChannelBuild(ManagedChannelBuilder.forAddress("localhost", getPort())
+                    .intercept(new MobileClientAuthenticationInterceptor())
                     .usePlaintext()
             ).build();
         }

+ 21 - 0
runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/Authentication.java

@@ -0,0 +1,21 @@
+package com.usoftchina.uu.mobile.grpc.test;
+
+/**
+ * @author yingp
+ * @date 2019/4/25
+ */
+public class Authentication {
+    private static String authentication;
+
+    public static String get() {
+        return authentication;
+    }
+
+    public static void set(String authentication) {
+        Authentication.authentication = authentication;
+    }
+
+    public static boolean isAuthenticated() {
+        return null != authentication;
+    }
+}

+ 3 - 1
runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileAccountServiceTest.java

@@ -31,12 +31,13 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
         try {
             AccountSigninResponse response = accountServiceBlockingStub.signin(AccountSigninRequest.newBuilder()
                     .setMobile("13798490565")
-                    .setPassword("123456")
+                    .setPassword("fghjFGHJ12")
                     .setDeviceInfo(DeviceInfo.newBuilder()
                             .setOs(DeviceInfo.OS.ANDROID))
                     .build());
             ResponseHeader header = response.getResponseHeader();
             if (header.getSuccess()) {
+                Authentication.set(response.getAuthedToken().getToken());
                 System.out.println(response.getAccount());
                 if (response.getActiveCompanyId() > 0) {
                     System.out.println("current selected company " + response.getActiveCompanyId());
@@ -78,6 +79,7 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
 
     @Test
     public void testC_switchCompany() {
+
         SwitchCompanyRequest request = SwitchCompanyRequest.newBuilder()
                 .setCompanyId(100001).build();
         try {

+ 29 - 0
runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileClientAuthenticationInterceptor.java

@@ -0,0 +1,29 @@
+package com.usoftchina.uu.mobile.grpc.test;
+
+import io.grpc.*;
+
+/**
+ * @author yingp
+ * @date 2019/4/25
+ */
+public class MobileClientAuthenticationInterceptor implements ClientInterceptor {
+    /**
+     * 登录成功获取的token串
+     */
+    private static Metadata.Key<String> AUTH_HEADER_KEY =
+            Metadata.Key.of("authentication", Metadata.ASCII_STRING_MARSHALLER);
+
+    @Override
+    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
+        return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {
+
+            @Override
+            public void start(Listener<RespT> responseListener, Metadata headers) {
+                if (Authentication.isAuthenticated()) {
+                    headers.put(AUTH_HEADER_KEY, Authentication.get());
+                }
+                super.start(responseListener, headers);
+            }
+        };
+    }
+}

+ 19 - 4
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/interceptor/MobileAuthenticationInterceptor.java

@@ -18,6 +18,10 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
 /**
  * 移动端身份认证
  *
@@ -45,9 +49,18 @@ public class MobileAuthenticationInterceptor implements ServerInterceptor {
     @Autowired
     private DeviceInfoApi deviceInfoApi;
 
+    private static final Set<String> NO_AUTH_METHODS = new HashSet<>(Arrays.asList(
+            "uu.mobile.AccountService/signup",
+            "uu.mobile.AccountService/signin"
+    ));
+
     @Override
     public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
             ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {
+        String method = call.getMethodDescriptor().getFullMethodName();
+        if (NO_AUTH_METHODS.contains(method)) {
+            return next.startCall(call, headers);
+        }
         if (headers.containsKey(AUTH_HEADER_KEY)) {
             TokenDTO tokenDTO = tokenApi.findByPrimaryKey(headers.get(AUTH_HEADER_KEY));
             if (null != tokenDTO) {
@@ -74,14 +87,16 @@ public class MobileAuthenticationInterceptor implements ServerInterceptor {
                     DeviceInfoHolder.clear();
                 }
             } else {
-                logger.error("Authentication Expired On Call {}", call.getMethodDescriptor().getFullMethodName());
+                logger.error("Authentication Expired On Call {}", method);
                 call.close(Status.UNAUTHENTICATED.withDescription("会话过期,请重新登录"), headers);
-                return new ServerCall.Listener<ReqT>() {};
+                return new ServerCall.Listener<ReqT>() {
+                };
             }
         } else {
-            logger.error("No Authentication Provided On Call {}", call.getMethodDescriptor().getFullMethodName());
+            logger.error("No Authentication Provided On Call {}", method);
             call.close(Status.DATA_LOSS.withDescription("没有身份信息"), headers);
-            return new ServerCall.Listener<ReqT>() {};
+            return new ServerCall.Listener<ReqT>() {
+            };
         }
     }
 }

+ 82 - 1
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImplWithAuth.java → services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImpl.java

@@ -8,14 +8,19 @@ import com.usoftchina.uu.account.context.AccountHolder;
 import com.usoftchina.uu.account.context.TokenHolder;
 import com.usoftchina.uu.account.dto.AccountDTO;
 import com.usoftchina.uu.account.dto.CompanyDTO;
+import com.usoftchina.uu.account.dto.DeviceInfoDTO;
 import com.usoftchina.uu.account.dto.TokenDTO;
+import com.usoftchina.uu.exception.ExceptionCode;
 import com.usoftchina.uu.mobile.grpc.api.*;
 import com.usoftchina.uu.mobile.grpc.interceptor.MobileAuthenticationInterceptor;
 import com.usoftchina.uu.mobile.grpc.util.MobileBeanMapper;
 import com.usoftchina.uu.mobile.grpc.util.ResponseUtils;
 import io.grpc.stub.StreamObserver;
 import org.lognet.springboot.grpc.GRpcService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
 
@@ -24,7 +29,9 @@ import java.util.List;
  * @date 2019/4/18
  */
 @GRpcService(interceptors = MobileAuthenticationInterceptor.class)
-public class MobileAccountServiceImplWithAuth extends AccountServiceGrpc.AccountServiceImplBase {
+public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBase {
+    private final static Logger logger = LoggerFactory.getLogger(MobileAccountServiceImpl.class);
+
     @Autowired
     private AccountApi accountApi;
 
@@ -37,6 +44,80 @@ public class MobileAccountServiceImplWithAuth extends AccountServiceGrpc.Account
     @Autowired
     private CompanyApi companyApi;
 
+    @Override
+    public void signup(AccountSignupRequest request, StreamObserver<AccountSignupResponse> responseObserver) {
+        AccountSignupResponse.Builder builder =  AccountSignupResponse.newBuilder();
+        try {
+            AccountDTO accountDTO = getAccountFromRequest(request);
+            boolean success = accountApi.register(accountDTO, request.getPassword());
+            if (success) {
+                builder.setResponseHeader(ResponseUtils.success());
+            } else {
+                builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_REGISTER_FAILED));
+            }
+        } catch (Exception e) {
+            builder.setResponseHeader(ResponseUtils.error(e));
+        }
+        responseObserver.onNext(builder.build());
+        responseObserver.onCompleted();
+    }
+
+    private AccountDTO getAccountFromRequest(AccountSignupRequest request) {
+        AccountDTO accountDTO = new AccountDTO();
+        accountDTO.setSex(request.getSexValue());
+        accountDTO.setRealname(request.getRealname());
+        accountDTO.setEmail(request.getEmail());
+        accountDTO.setAvatarUrl(request.getAvatarUrl());
+        accountDTO.setMobile(request.getMobile());
+        return accountDTO;
+    }
+
+    @Override
+    public void signin(AccountSigninRequest request, StreamObserver<AccountSigninResponse> responseObserver) {
+        AccountSigninResponse.Builder builder = AccountSigninResponse.newBuilder();
+        try {
+            AccountDTO accountDTO = accountApi.findByMobile(request.getMobile());
+            if (null == accountDTO) {
+                builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_NOT_EXIST));
+            } else {
+                boolean success = accountApi.checkPasswordByMobile(request.getMobile(), request.getPassword());
+                if (!success) {
+                    builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_PWD_ERROR));
+                } else {
+                    Long activeCompanyId = null;
+                    List<CompanyDTO> companyDTOList = companyApi.findByAccountId(accountDTO.getId());
+                    // 默认登录
+                    if (!CollectionUtils.isEmpty(companyDTOList)) {
+                        if (companyDTOList.size() == 1) {
+                            activeCompanyId = companyDTOList.get(0).getId();
+                        }
+                        companyDTOList.forEach(companyDTO -> {
+                            builder.addCompany(MobileBeanMapper.map(companyDTO));
+                        });
+                    }
+                    AccountInfo accountInfo = MobileBeanMapper.map(accountDTO);
+                    // 保存设备信息
+                    DeviceInfoDTO deviceInfoDTO = MobileBeanMapper.map(request.getDeviceInfo());
+                    deviceInfoDTO.setAccountId(accountDTO.getId());
+                    deviceInfoApi.save(deviceInfoDTO);
+                    // 保存token信息
+                    TokenDTO tokenDTO = new TokenDTO(accountDTO.getId(), activeCompanyId);
+                    tokenApi.save(tokenDTO);
+                    AuthedToken token = MobileBeanMapper.map(tokenDTO);
+
+                    builder.setAuthedToken(token)
+                            .setAccount(accountInfo)
+                            .setResponseHeader(ResponseUtils.success());
+                }
+            }
+        } catch (Exception e) {
+            logger.error("signin error", e);
+            builder.setResponseHeader(ResponseUtils.error(e));
+        }
+        responseObserver.onNext(builder.build());
+        responseObserver.onCompleted();
+    }
+
     @Override
     public void switchCompany(SwitchCompanyRequest request, StreamObserver<SwitchCompanyResponse> responseObserver) {
         SwitchCompanyResponse.Builder builder = SwitchCompanyResponse.newBuilder();

+ 0 - 117
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImplWithoutAuth.java

@@ -1,117 +0,0 @@
-package com.usoftchina.uu.mobile.grpc.service.impl;
-
-import com.usoftchina.uu.account.api.AccountApi;
-import com.usoftchina.uu.account.api.CompanyApi;
-import com.usoftchina.uu.account.api.DeviceInfoApi;
-import com.usoftchina.uu.account.api.TokenApi;
-import com.usoftchina.uu.account.dto.AccountDTO;
-import com.usoftchina.uu.account.dto.CompanyDTO;
-import com.usoftchina.uu.account.dto.DeviceInfoDTO;
-import com.usoftchina.uu.account.dto.TokenDTO;
-import com.usoftchina.uu.exception.ExceptionCode;
-import com.usoftchina.uu.mobile.grpc.api.*;
-import com.usoftchina.uu.mobile.grpc.util.MobileBeanMapper;
-import com.usoftchina.uu.mobile.grpc.util.ResponseUtils;
-import io.grpc.stub.StreamObserver;
-import org.lognet.springboot.grpc.GRpcService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
-
-import java.util.List;
-
-/**
- * @author yingp
- * @date 2019/4/17
- */
-@GRpcService
-public class MobileAccountServiceImplWithoutAuth extends AccountServiceGrpc.AccountServiceImplBase {
-    private final static Logger logger = LoggerFactory.getLogger(MobileAccountServiceImplWithoutAuth.class);
-
-    @Autowired
-    private AccountApi accountApi;
-
-    @Autowired
-    private CompanyApi companyApi;
-
-    @Autowired
-    private DeviceInfoApi deviceInfoApi;
-
-    @Autowired
-    private TokenApi tokenApi;
-
-    @Override
-    public void signup(AccountSignupRequest request, StreamObserver<AccountSignupResponse> responseObserver) {
-        AccountSignupResponse.Builder builder =  AccountSignupResponse.newBuilder();
-        try {
-            AccountDTO accountDTO = getAccountFromRequest(request);
-            boolean success = accountApi.register(accountDTO, request.getPassword());
-            if (success) {
-                builder.setResponseHeader(ResponseUtils.success());
-            } else {
-                builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_REGISTER_FAILED));
-            }
-        } catch (Exception e) {
-            builder.setResponseHeader(ResponseUtils.error(e));
-        }
-        responseObserver.onNext(builder.build());
-        responseObserver.onCompleted();
-    }
-
-    private AccountDTO getAccountFromRequest(AccountSignupRequest request) {
-        AccountDTO accountDTO = new AccountDTO();
-        accountDTO.setSex(request.getSexValue());
-        accountDTO.setRealname(request.getRealname());
-        accountDTO.setEmail(request.getEmail());
-        accountDTO.setAvatarUrl(request.getAvatarUrl());
-        accountDTO.setMobile(request.getMobile());
-        return accountDTO;
-    }
-
-    @Override
-    public void signin(AccountSigninRequest request, StreamObserver<AccountSigninResponse> responseObserver) {
-        AccountSigninResponse.Builder builder = AccountSigninResponse.newBuilder();
-        try {
-            AccountDTO accountDTO = accountApi.findByMobile(request.getMobile());
-            if (null == accountDTO) {
-                builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_NOT_EXIST));
-            } else {
-                boolean success = accountApi.checkPasswordByMobile(request.getMobile(), request.getPassword());
-                if (!success) {
-                    builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_PWD_ERROR));
-                } else {
-                    Long activeCompanyId = null;
-                    List<CompanyDTO> companyDTOList = companyApi.findByAccountId(accountDTO.getId());
-                    // 默认登录
-                    if (!CollectionUtils.isEmpty(companyDTOList)) {
-                        if (companyDTOList.size() == 1) {
-                            activeCompanyId = companyDTOList.get(0).getId();
-                        }
-                        for (int i = 0, len = companyDTOList.size(); i < len; i++) {
-                            builder.setCompany(i, MobileBeanMapper.map(companyDTOList.get(i)));
-                        }
-                    }
-                    AccountInfo accountInfo = MobileBeanMapper.map(accountDTO);
-                    // 保存设备信息
-                    DeviceInfoDTO deviceInfoDTO = MobileBeanMapper.map(request.getDeviceInfo());
-                    deviceInfoDTO.setAccountId(accountDTO.getId());
-                    deviceInfoApi.save(deviceInfoDTO);
-                    // 保存token信息
-                    TokenDTO tokenDTO = new TokenDTO(accountDTO.getId(), activeCompanyId);
-                    tokenApi.save(tokenDTO);
-                    AuthedToken token = MobileBeanMapper.map(tokenDTO);
-
-                    builder.setAuthedToken(token)
-                            .setAccount(accountInfo)
-                            .setResponseHeader(ResponseUtils.success());
-                }
-            }
-        } catch (Exception e) {
-            logger.error("signin error", e);
-            builder.setResponseHeader(ResponseUtils.error(e));
-        }
-        responseObserver.onNext(builder.build());
-        responseObserver.onCompleted();
-    }
-}

+ 4 - 4
shared/core/src/main/java/com/usoftchina/uu/exception/ExceptionCode.java

@@ -28,9 +28,9 @@ public enum ExceptionCode implements BaseExceptionCode {
 
     // 账户管理相关
     USER_REGISTER_FAILED(50000, "注册失败"),
-    USER_ACCOUNT_ERROR(500001, "账号异常"),
+    USER_ACCOUNT_ERROR(50001, "账号异常"),
     COMPANY_NAME_EXIST(52000, "公司名称已注册"),
-    COMPANY_NOT_EXIST(52003, "企业不存在"),
+    COMPANY_NOT_EXIST(52003, "公司不存在"),
     COMPANY_NOT_BIND(52004, "未绑定该公司"),
     COMPANY_LOCKED(52005, "该公司已锁定"),
     USER_MOBILE_EXIST(53001, "手机号已注册"),
@@ -38,8 +38,8 @@ public enum ExceptionCode implements BaseExceptionCode {
     USER_PWD_ERROR(53003, "密码错误"),
     USER_PWD_NOT_EQUALS(53004, "密码与确认密码不一致"),
     VALID_CODE_ERROR(53005, "验证码错误"),
-    USER_NOT_EXIST(53005, "用户不存在"),
-    USER_NOT_ENABLE(53006, "用户禁止使用"),
+    USER_NOT_EXIST(53006, "用户不存在"),
+    USER_NOT_ENABLE(53007, "用户禁止使用"),
     MISSING_PERMISSIONS(53030, "权限缺失"),
     USER_COMPANY_EXIST(53007, "该账户已在企业服务中"),
     APPLY_DOING_EXIST(54031, "您已申请加入此企业,管理员处理中,请勿重复申请"),