Pārlūkot izejas kodu

注册接口防止密码重置BUG

yingp 6 gadi atpakaļ
vecāks
revīzija
3b9f5077a1

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

@@ -12,7 +12,7 @@ import org.junit.runners.MethodSorters;
  * @date 2019/4/22
  */
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class MobileAccountServiceTest extends AbstractGRpcServerTest{
+public class MobileAccountServiceTest extends AbstractGRpcServerTest {
 
     private AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub;
 
@@ -22,22 +22,40 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
     }
 
     @Test
-    public void testA_signin(){
+    public void testA_signin() {
         try {
             AccountSigninResponse response = accountServiceBlockingStub.signin(AccountSigninRequest.newBuilder()
-                    .setMobile("13798490565")
+                    .setMobile("15018524229")
                     .setPassword("111111")
                     .setDeviceInfo(DeviceInfo.newBuilder()
                             .setOs(DeviceInfo.OS.ANDROID))
                     .build());
             ResponseHeader header = response.getResponseHeader();
             if (header.getSuccess()) {
+                AuthedToken authedToken = response.getAuthedToken();
+                System.out.println(authedToken);
+                Authentication.set(authedToken.getToken());
                 System.out.println(response.getAccount());
                 if (response.getActiveCompanyId() > 0) {
                     System.out.println("current selected company " + response.getActiveCompanyId());
-                } else if (response.getCompanyCount() > 0){
+                } else if (response.getCompanyCount() > 0) {
                     response.getCompanyList().forEach(System.out::println);
                 }
+                if (response.getMessageConfigCount() > 0) {
+                    response.getMessageConfigList().forEach(System.out::println);
+                }
+                if (response.getAppGroupConfigCount() > 0) {
+                    response.getAppGroupConfigList().forEach(appGroupConfig -> {
+                        System.out.println(appGroupConfig.getName());
+                        appGroupConfig.getAppConfigList().forEach(System.out::println);
+                    });
+                }
+                if (response.getHomeConfigCount() > 0) {
+                    response.getHomeConfigList().forEach(System.out::println);
+                }
+                if (response.getUnreadMessageCountCount() > 0) {
+                    response.getUnreadMessageCountList().forEach(System.out::println);
+                }
             } else {
                 // error return by ResponseHeader
                 System.err.println(header.getCode() + "," + header.getMessage());
@@ -102,7 +120,7 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
                 if (response.getActiveCompanyId() > 0) {
                     System.out.println("current selected company " + response.getActiveCompanyId());
                 }
-                if (response.getCompanyCount() > 0){
+                if (response.getCompanyCount() > 0) {
                     response.getCompanyList().forEach(System.out::println);
                 }
             } else {

+ 24 - 7
runtime/mobile-grpc-server/src/test/java/com/usoftchina/uu/mobile/grpc/test/MobileAccountServiceTest.java

@@ -17,7 +17,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class MobileAccountServiceTest extends AbstractGRpcServerTest{
+public class MobileAccountServiceTest extends AbstractGRpcServerTest {
 
     private AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub;
 
@@ -27,23 +27,40 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
     }
 
     @Test
-    public void testA_signin(){
+    public void testA_signin() {
         try {
             AccountSigninResponse response = accountServiceBlockingStub.signin(AccountSigninRequest.newBuilder()
-                    .setMobile("13798490565")
-                    .setPassword("fghjFGHJ12")
+                    .setMobile("15018524229")
+                    .setPassword("111111")
                     .setDeviceInfo(DeviceInfo.newBuilder()
                             .setOs(DeviceInfo.OS.ANDROID))
                     .build());
             ResponseHeader header = response.getResponseHeader();
             if (header.getSuccess()) {
-                Authentication.set(response.getAuthedToken().getToken());
+                AuthedToken authedToken = response.getAuthedToken();
+                System.out.println(authedToken);
+                Authentication.set(authedToken.getToken());
                 System.out.println(response.getAccount());
                 if (response.getActiveCompanyId() > 0) {
                     System.out.println("current selected company " + response.getActiveCompanyId());
-                } else if (response.getCompanyCount() > 0){
+                } else if (response.getCompanyCount() > 0) {
                     response.getCompanyList().forEach(System.out::println);
                 }
+                if (response.getMessageConfigCount() > 0) {
+                    response.getMessageConfigList().forEach(System.out::println);
+                }
+                if (response.getAppGroupConfigCount() > 0) {
+                    response.getAppGroupConfigList().forEach(appGroupConfig -> {
+                        System.out.println(appGroupConfig.getName());
+                        appGroupConfig.getAppConfigList().forEach(System.out::println);
+                    });
+                }
+                if (response.getHomeConfigCount() > 0) {
+                    response.getHomeConfigList().forEach(System.out::println);
+                }
+                if (response.getUnreadMessageCountCount() > 0) {
+                    response.getUnreadMessageCountList().forEach(System.out::println);
+                }
             } else {
                 // error return by ResponseHeader
                 System.err.println(header.getCode() + "," + header.getMessage());
@@ -109,7 +126,7 @@ public class MobileAccountServiceTest extends AbstractGRpcServerTest{
                 if (response.getActiveCompanyId() > 0) {
                     System.out.println("current selected company " + response.getActiveCompanyId());
                 }
-                if (response.getCompanyCount() > 0){
+                if (response.getCompanyCount() > 0) {
                     response.getCompanyList().forEach(System.out::println);
                 }
             } else {

+ 13 - 6
services/account-service/src/main/java/com/usoftchina/uu/account/service/impl/AccountServiceImpl.java

@@ -59,8 +59,12 @@ public class AccountServiceImpl implements AccountApi {
                 if (null != localExists) {
                     ExceptionCode.USER_MOBILE_EXIST.occur();
                 } else {
-                    accountDTO = mergeAccountFromSso(accountDTO, password);
-                    return insert(accountDTO);
+                    boolean isNew = ssoRegisterAccount(accountDTO, password);
+                    insert(accountDTO);
+                    if (!isNew) {
+                        // 这里是因为账户中心已存在该账户,所以抛出异常
+                        ExceptionCode.USER_MOBILE_EXIST.occur();
+                    }
                 }
             }
         } else {
@@ -81,7 +85,7 @@ public class AccountServiceImpl implements AccountApi {
                     accountDTO.setId(localExists.getId());
                     return updateByPrimaryKey(accountDTO);
                 } else {
-                    accountDTO = mergeAccountFromSso(accountDTO, password);
+                    ssoRegisterAccount(accountDTO, password);
                     return insert(accountDTO);
                 }
             }
@@ -102,12 +106,13 @@ public class AccountServiceImpl implements AccountApi {
     }
 
     /**
+     * 到账户中心判断账户
      * 如果账户中心存在同手机号的用户,则获取过来并合并属性
      *
      * @param accountDTO
-     * @return
+     * @return 新注册到账户中心 true,账户中心已存在账户 false
      */
-    private AccountDTO mergeAccountFromSso(AccountDTO accountDTO, String password) {
+    private boolean ssoRegisterAccount(AccountDTO accountDTO, String password) {
         SsoResult<SsoUser> result = ssoUserApi.getUserByMobile(accountDTO.getMobile());
         if (result.isSuccess()) {
             SsoUser user = result.getContent();
@@ -124,14 +129,16 @@ public class AccountServiceImpl implements AccountApi {
                     AccountDTO.Sex sex = SsoUser.Sex.isFemale(user.getSex()) ? AccountDTO.Sex.FEMALE : AccountDTO.Sex.MALE;
                     accountDTO.setSex(sex.getValue());
                 }
+                return false;
             } else {
                 accountDTO = registerToSso(accountDTO, password);
+                return true;
             }
         } else {
             logger.error("SSO Server Error, api: getUserByMobile, code: {}, message: {}", result.getErrCode(), result.getErrMsg());
             ExceptionCode.UNKNOWN_ERROR.occur("账户中心异常: %s", result.getErrMsg());
         }
-        return accountDTO;
+        return false;
     }
 
     /**