Pārlūkot izejas kodu

调整登录及切换公司接口,返回全部配置及统计

yingp 6 gadi atpakaļ
vecāks
revīzija
918929cbe4
19 mainītis faili ar 174 papildinājumiem un 42 dzēšanām
  1. 18 2
      apis/mobile-grpc-api/src/main/proto/account.proto
  2. 2 0
      apis/mobile-grpc-api/src/main/proto/base.proto
  3. 3 1
      services/account-service/src/main/java/com/usoftchina/uu/account/po/Account.java
  4. 3 1
      services/account-service/src/main/java/com/usoftchina/uu/account/po/Company.java
  5. 2 1
      services/account-service/src/main/java/com/usoftchina/uu/account/po/DeviceInfo.java
  6. 2 1
      services/account-service/src/main/java/com/usoftchina/uu/account/po/LoginLog.java
  7. 3 1
      services/app-service/src/main/java/com/usoftchina/uu/app/po/AppConfig.java
  8. 3 1
      services/app-service/src/main/java/com/usoftchina/uu/app/po/AppGroup.java
  9. 3 1
      services/app-service/src/main/java/com/usoftchina/uu/app/vo/AppConfigVO.java
  10. 3 1
      services/app-service/src/main/java/com/usoftchina/uu/app/vo/CompanyAppConfigVO.java
  11. 3 1
      services/home-service/src/main/java/com/usoftchina/uu/home/po/HomeConfig.java
  12. 2 1
      services/message-service/src/main/java/com/usoftchina/uu/message/po/Message.java
  13. 3 1
      services/message-service/src/main/java/com/usoftchina/uu/message/po/MessageConfig.java
  14. 2 1
      services/message-service/src/main/java/com/usoftchina/uu/message/po/MessageHistory.java
  15. 92 6
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImpl.java
  16. 4 7
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAppServiceImpl.java
  17. 7 3
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileHomeServiceImpl.java
  18. 16 9
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileMessageServiceImpl.java
  19. 3 3
      services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/util/MobileBeanMapper.java

+ 18 - 2
apis/mobile-grpc-api/src/main/proto/account.proto

@@ -75,19 +75,35 @@ message AccountSigninResponse {
     int64 activeCompanyId = 4;
     // 账户已绑定公司
     repeated Company company = 5;
+    // 消息中心配置,activeCompanyId != null时返回
+    repeated MessageConfig messageConfig = 6;
+    // 未读消息统计,activeCompanyId != null时返回
+    repeated UnreadMessageCount unreadMessageCount = 7;
+    // 应用中心配置,activeCompanyId != null时返回
+    repeated AppGroupConfig appGroupConfig = 8;
+    // 我的主页配置,activeCompanyId != null时返回
+    repeated HomeConfig homeConfig = 9;
 }
 
 // 切换公司请求参数
 message SwitchCompanyRequest {
-    // 公司ID
+    // 公司ID,null == companyId 表示切换到个人身份
     int64 companyId = 1;
 }
 
 // 切换公司响应参数
 message SwitchCompanyResponse {
     ResponseHeader responseHeader = 1;
-    // 身份令牌
+    // 新的身份令牌
     AuthedToken authedToken = 2;
+    // 新的消息中心配置
+    repeated MessageConfig messageConfig = 3;
+    // 新的未读消息统计
+    repeated UnreadMessageCount unreadMessageCount = 4;
+    // 新的应用中心配置
+    repeated AppGroupConfig appGroupConfig = 5;
+    // 新的我的主页配置
+    repeated HomeConfig homeConfig = 6;
 }
 
 // 获取账户信息请求参数

+ 2 - 0
apis/mobile-grpc-api/src/main/proto/base.proto

@@ -167,4 +167,6 @@ message DeviceInfo {
     string location = 7;
     // 语言
     string lang = 8;
+    // 消息通道
+    string channelId = 9;
 }

+ 3 - 1
services/account-service/src/main/java/com/usoftchina/uu/account/po/Account.java

@@ -1,5 +1,7 @@
 package com.usoftchina.uu.account.po;
 
+import java.io.Serializable;
+
 /**
  * 账户信息
  * <pre>
@@ -10,7 +12,7 @@ package com.usoftchina.uu.account.po;
  * @author yingp
  * @date 2019/4/18
  */
-public class Account {
+public class Account implements Serializable {
     private Long id;
     /**
      * 真实姓名(考虑是企业应用,非社交类型,不需要昵称)

+ 3 - 1
services/account-service/src/main/java/com/usoftchina/uu/account/po/Company.java

@@ -2,11 +2,13 @@ package com.usoftchina.uu.account.po;
 
 import com.usoftchina.sso.dto.SsoUserSpace;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/18
  */
-public class Company {
+public class Company implements Serializable {
     private Long id;
     private String name;
     private String secretKey;

+ 2 - 1
services/account-service/src/main/java/com/usoftchina/uu/account/po/DeviceInfo.java

@@ -1,12 +1,13 @@
 package com.usoftchina.uu.account.po;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
  * @author yingp
  * @date 2019/4/17
  */
-public class DeviceInfo {
+public class DeviceInfo implements Serializable {
     private Long accountId;
     /**
      * 客户端发行版本,例如1.0.0

+ 2 - 1
services/account-service/src/main/java/com/usoftchina/uu/account/po/LoginLog.java

@@ -2,13 +2,14 @@ package com.usoftchina.uu.account.po;
 
 import com.usoftchina.uu.util.BeanMapper;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
  * @author yingp
  * @date 2019/4/18
  */
-public class LoginLog {
+public class LoginLog implements Serializable {
     private Long id;
     private Long accountId;
     /**

+ 3 - 1
services/app-service/src/main/java/com/usoftchina/uu/app/po/AppConfig.java

@@ -2,11 +2,13 @@ package com.usoftchina.uu.app.po;
 
 import com.usoftchina.uu.base.CompanyRelate;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/18
  */
-public class AppConfig {
+public class AppConfig implements Serializable {
     protected Integer groupId;
     protected Integer id;
     protected String name;

+ 3 - 1
services/app-service/src/main/java/com/usoftchina/uu/app/po/AppGroup.java

@@ -1,10 +1,12 @@
 package com.usoftchina.uu.app.po;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/18
  */
-public class AppGroup {
+public class AppGroup implements Serializable {
     private Integer id;
     private String name;
     private Integer orderNum;

+ 3 - 1
services/app-service/src/main/java/com/usoftchina/uu/app/vo/AppConfigVO.java

@@ -2,11 +2,13 @@ package com.usoftchina.uu.app.vo;
 
 import com.usoftchina.uu.app.po.AppConfig;
 
+import java.io.Serializable;
+
 /**
  * @author yingp
  * @date 2019/4/19
  */
-public class AppConfigVO extends AppConfig {
+public class AppConfigVO extends AppConfig implements Serializable {
     /**
      * 组名
      */

+ 3 - 1
services/app-service/src/main/java/com/usoftchina/uu/app/vo/CompanyAppConfigVO.java

@@ -1,12 +1,14 @@
 package com.usoftchina.uu.app.vo;
 
+import java.io.Serializable;
+
 /**
  * 基于AppConfigVO,加了针对企业的额外属性
  *
  * @author yingp
  * @date 2019/4/19
  */
-public class CompanyAppConfigVO extends AppConfigVO {
+public class CompanyAppConfigVO extends AppConfigVO implements Serializable {
     /**
      * 是否启用
      */

+ 3 - 1
services/home-service/src/main/java/com/usoftchina/uu/home/po/HomeConfig.java

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

+ 2 - 1
services/message-service/src/main/java/com/usoftchina/uu/message/po/Message.java

@@ -7,6 +7,7 @@ import com.usoftchina.uu.account.dto.CompanyDTO;
 import com.usoftchina.uu.base.Platform;
 import com.usoftchina.uu.util.BeanMapper;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -15,7 +16,7 @@ import java.util.Date;
  * @author yingp
  * @date 2019/4/23
  */
-public class Message {
+public class Message implements Serializable {
     protected Long id;
     /**
      * 消息类

+ 3 - 1
services/message-service/src/main/java/com/usoftchina/uu/message/po/MessageConfig.java

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

+ 2 - 1
services/message-service/src/main/java/com/usoftchina/uu/message/po/MessageHistory.java

@@ -1,5 +1,6 @@
 package com.usoftchina.uu.message.po;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -8,7 +9,7 @@ import java.util.Date;
  * @author yingp
  * @date 2019/4/23
  */
-public class MessageHistory extends Message{
+public class MessageHistory extends Message implements Serializable {
     /**
      * 阅读时间
      */

+ 92 - 6
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAccountServiceImpl.java

@@ -10,7 +10,15 @@ 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.app.api.AppConfigApi;
+import com.usoftchina.uu.app.dto.AppGroupDTO;
 import com.usoftchina.uu.exception.ExceptionCode;
+import com.usoftchina.uu.home.api.HomeConfigApi;
+import com.usoftchina.uu.home.dto.HomeConfigDTO;
+import com.usoftchina.uu.message.api.MessageApi;
+import com.usoftchina.uu.message.api.MessageConfigApi;
+import com.usoftchina.uu.message.dto.MessageConfigDTO;
+import com.usoftchina.uu.message.dto.UnreadMessageCountDTO;
 import com.usoftchina.uu.mobile.grpc.api.*;
 import com.usoftchina.uu.mobile.grpc.interceptor.MobileAuthenticationInterceptor;
 import com.usoftchina.uu.mobile.grpc.util.MobileBeanMapper;
@@ -44,6 +52,18 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
     @Autowired
     private CompanyApi companyApi;
 
+    @Autowired
+    private MessageConfigApi messageConfigApi;
+
+    @Autowired
+    private AppConfigApi appConfigApi;
+
+    @Autowired
+    private HomeConfigApi homeConfigApi;
+
+    @Autowired
+    private MessageApi messageApi;
+
     @Override
     public void signup(AccountSignupRequest request, StreamObserver<AccountSignupResponse> responseObserver) {
         AccountSignupResponse.Builder builder =  AccountSignupResponse.newBuilder();
@@ -56,6 +76,7 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
                 builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.USER_REGISTER_FAILED));
             }
         } catch (Exception e) {
+            logger.error("signup error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -104,6 +125,37 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
                     TokenDTO tokenDTO = new TokenDTO(accountDTO.getId(), activeCompanyId);
                     tokenApi.save(tokenDTO);
                     AuthedToken token = MobileBeanMapper.map(tokenDTO);
+                    // 已选择默认公司的情况下,直接返回全部配置及统计信息
+                    if (null != activeCompanyId) {
+                        // 消息配置
+                        List<MessageConfigDTO> messageConfigDTOList = messageConfigApi.findEnabled(activeCompanyId);
+                        if (!CollectionUtils.isEmpty(messageConfigDTOList)) {
+                            messageConfigDTOList.forEach(messageConfigDTO -> {
+                                builder.addMessageConfig(MobileBeanMapper.map(messageConfigDTO));
+                            });
+                        }
+                        // 未读消息统计
+                        List<UnreadMessageCountDTO> unreadMessageCountDTOList = messageApi.getAllUnreadCount(accountDTO.getId(), activeCompanyId);
+                        if (!CollectionUtils.isEmpty(unreadMessageCountDTOList)) {
+                            unreadMessageCountDTOList.forEach(unreadMessageCountDTO -> {
+                                builder.addUnreadMessageCount(MobileBeanMapper.map(unreadMessageCountDTO));
+                            });
+                        }
+                        // 应用配置
+                        List<AppGroupDTO> appGroupDTOList = appConfigApi.findEnabled(activeCompanyId);
+                        if (!CollectionUtils.isEmpty(appGroupDTOList)) {
+                            appGroupDTOList.forEach(appGroupDTO -> {
+                                builder.addAppGroupConfig(MobileBeanMapper.map(appGroupDTO));
+                            });
+                        }
+                        // 我的主页配置
+                        List<HomeConfigDTO> homeConfigDTOList = homeConfigApi.findEnabled(activeCompanyId);
+                        if (!CollectionUtils.isEmpty(homeConfigDTOList)) {
+                            homeConfigDTOList.forEach(homeConfigDTO -> {
+                                builder.addHomeConfig(MobileBeanMapper.map(homeConfigDTO));
+                            });
+                        }
+                    }
 
                     builder.setAuthedToken(token)
                             .setAccount(accountInfo)
@@ -122,21 +174,52 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
     public void switchCompany(SwitchCompanyRequest request, StreamObserver<SwitchCompanyResponse> responseObserver) {
         SwitchCompanyResponse.Builder builder = SwitchCompanyResponse.newBuilder();
         try {
-            AccountDTO accountDTO = AccountHolder.get();
+            Long accountId = AccountHolder.get().getId();
             Long companyId = request.getCompanyId();
-            if (accountApi.hasBindCompany(accountDTO.getId(), companyId)) {
+            // null == companyId 表示切换到个人身份
+            if (null == companyId || accountApi.hasBindCompany(accountId, companyId)) {
                 // 保存新token
-                TokenDTO tokenDTO = new TokenDTO(accountDTO.getId(), companyId);
+                TokenDTO tokenDTO = new TokenDTO(accountId, companyId);
                 tokenApi.save(tokenDTO);
                 AuthedToken token = MobileBeanMapper.map(tokenDTO);
                 // 删除原token
                 tokenApi.removeByPrimaryKey(TokenHolder.get().getId());
                 TokenHolder.set(tokenDTO);
+                // 下面返回配置及统计信息
+                // 消息配置
+                List<MessageConfigDTO> messageConfigDTOList = messageConfigApi.findEnabled(companyId);
+                if (!CollectionUtils.isEmpty(messageConfigDTOList)) {
+                    messageConfigDTOList.forEach(messageConfigDTO -> {
+                        builder.addMessageConfig(MobileBeanMapper.map(messageConfigDTO));
+                    });
+                }
+                // 未读消息统计
+                List<UnreadMessageCountDTO> unreadMessageCountDTOList = messageApi.getAllUnreadCount(accountId, companyId);
+                if (!CollectionUtils.isEmpty(unreadMessageCountDTOList)) {
+                    unreadMessageCountDTOList.forEach(unreadMessageCountDTO -> {
+                        builder.addUnreadMessageCount(MobileBeanMapper.map(unreadMessageCountDTO));
+                    });
+                }
+                // 应用配置
+                List<AppGroupDTO> appGroupDTOList = appConfigApi.findEnabled(companyId);
+                if (!CollectionUtils.isEmpty(appGroupDTOList)) {
+                    appGroupDTOList.forEach(appGroupDTO -> {
+                        builder.addAppGroupConfig(MobileBeanMapper.map(appGroupDTO));
+                    });
+                }
+                // 我的主页配置
+                List<HomeConfigDTO> homeConfigDTOList = homeConfigApi.findEnabled(companyId);
+                if (!CollectionUtils.isEmpty(homeConfigDTOList)) {
+                    homeConfigDTOList.forEach(homeConfigDTO -> {
+                        builder.addHomeConfig(MobileBeanMapper.map(homeConfigDTO));
+                    });
+                }
 
                 builder.setResponseHeader(ResponseUtils.success())
                         .setAuthedToken(token);
             }
         } catch (Exception e) {
+            logger.error("switchCompany error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -152,13 +235,14 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
 
             List<CompanyDTO> companyDTOList = companyApi.findByAccountId(accountDTO.getId());
             if (null != companyDTOList) {
-                for (int i = 0, len = companyDTOList.size(); i < len; i++) {
-                    builder.setCompany(i, MobileBeanMapper.map(companyDTOList.get(i)));
-                }
+                companyDTOList.forEach(companyDTO -> {
+                    builder.addCompany(MobileBeanMapper.map(companyDTO));
+                });
             }
 
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("getInfo error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -184,6 +268,7 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
 
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("saveInfo error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -200,6 +285,7 @@ public class MobileAccountServiceImpl extends AccountServiceGrpc.AccountServiceI
 
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("signout error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());

+ 4 - 7
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileAppServiceImpl.java

@@ -2,7 +2,6 @@ package com.usoftchina.uu.mobile.grpc.service.impl;
 
 import com.usoftchina.uu.account.context.TokenHolder;
 import com.usoftchina.uu.app.api.AppConfigApi;
-import com.usoftchina.uu.app.api.AppGroupApi;
 import com.usoftchina.uu.app.dto.AppGroupDTO;
 import com.usoftchina.uu.mobile.grpc.api.AppServiceGrpc;
 import com.usoftchina.uu.mobile.grpc.api.GetAppConfigRequest;
@@ -27,9 +26,6 @@ import java.util.List;
 public class MobileAppServiceImpl extends AppServiceGrpc.AppServiceImplBase{
     private final static Logger logger = LoggerFactory.getLogger(MobileAppServiceImpl.class);
 
-    @Autowired
-    private AppGroupApi appGroupApi;
-
     @Autowired
     private AppConfigApi appConfigApi;
 
@@ -41,12 +37,13 @@ public class MobileAppServiceImpl extends AppServiceGrpc.AppServiceImplBase{
             Long companyId = TokenHolder.get().getCompanyId();
             List<AppGroupDTO> appGroupDTOList = appConfigApi.findEnabled(companyId);
             if (!CollectionUtils.isEmpty(appGroupDTOList)) {
-                for (int i = 0, len = appGroupDTOList.size(); i < len; i++) {
-                    builder.setConfig(i, MobileBeanMapper.map(appGroupDTOList.get(i)));
-                }
+                appGroupDTOList.forEach(appGroupDTO -> {
+                    builder.addConfig(MobileBeanMapper.map(appGroupDTO));
+                });
             }
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("getConfig error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());

+ 7 - 3
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileHomeServiceImpl.java

@@ -11,6 +11,8 @@ 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;
 
@@ -22,6 +24,7 @@ import java.util.List;
  */
 @GRpcService(interceptors = MobileAuthenticationInterceptor.class)
 public class MobileHomeServiceImpl extends HomeServiceGrpc.HomeServiceImplBase {
+    private final static Logger logger = LoggerFactory.getLogger(MobileHomeServiceImpl.class);
 
     @Autowired
     private HomeConfigApi homeConfigApi;
@@ -33,12 +36,13 @@ public class MobileHomeServiceImpl extends HomeServiceGrpc.HomeServiceImplBase {
             Long companyId = TokenHolder.get().getCompanyId();
             List<HomeConfigDTO> homeConfigDTOList = homeConfigApi.findEnabled(companyId);
             if (!CollectionUtils.isEmpty(homeConfigDTOList)) {
-                for (int i = 0, len = homeConfigDTOList.size(); i < len; i++) {
-                    builder.setConfig(i, MobileBeanMapper.map(homeConfigDTOList.get(i)));
-                }
+                homeConfigDTOList.forEach(homeConfigDTO -> {
+                    builder.addConfig(MobileBeanMapper.map(homeConfigDTO));
+                });
             }
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("getConfig error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());

+ 16 - 9
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/service/impl/MobileMessageServiceImpl.java

@@ -15,6 +15,8 @@ import com.usoftchina.uu.mobile.grpc.util.ResponseUtils;
 import com.usoftchina.uu.page.PageRequest;
 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;
 
@@ -26,6 +28,7 @@ import java.util.List;
  */
 @GRpcService(interceptors = MobileAuthenticationInterceptor.class)
 public class MobileMessageServiceImpl extends MessageServiceGrpc.MessageServiceImplBase {
+    private final static Logger logger = LoggerFactory.getLogger(MobileMessageServiceImpl.class);
 
     @Autowired
     private MessageConfigApi messageConfigApi;
@@ -40,12 +43,13 @@ public class MobileMessageServiceImpl extends MessageServiceGrpc.MessageServiceI
             Long companyId = TokenHolder.get().getCompanyId();
             List<MessageConfigDTO> messageConfigDTOList = messageConfigApi.findEnabled(companyId);
             if (!CollectionUtils.isEmpty(messageConfigDTOList)) {
-                for (int i = 0, len = messageConfigDTOList.size(); i < len; i++) {
-                    builder.setConfig(i, MobileBeanMapper.map(messageConfigDTOList.get(i)));
-                }
+                messageConfigDTOList.forEach(messageConfigDTO -> {
+                    builder.addConfig(MobileBeanMapper.map(messageConfigDTO));
+                });
             }
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("getConfig error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -60,12 +64,13 @@ public class MobileMessageServiceImpl extends MessageServiceGrpc.MessageServiceI
             Long companyId = TokenHolder.get().getCompanyId();
             List<UnreadMessageCountDTO> unreadMessageCountDTOList = messageApi.getAllUnreadCount(accountId, companyId);
             if (!CollectionUtils.isEmpty(unreadMessageCountDTOList)) {
-                for (int i = 0, len = unreadMessageCountDTOList.size(); i < len; i++) {
-                    builder.setUnread(i, MobileBeanMapper.map(unreadMessageCountDTOList.get(i)));
-                }
+                unreadMessageCountDTOList.forEach(unreadMessageCountDTO -> {
+                    builder.addUnread(MobileBeanMapper.map(unreadMessageCountDTO));
+                });
             }
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("getUnreadCount error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -83,12 +88,13 @@ public class MobileMessageServiceImpl extends MessageServiceGrpc.MessageServiceI
             builder.setPaging(MobileBeanMapper.map(pageInfo));
             List<MessageDTO> messageDTOList = pageInfo.getList();
             if (!CollectionUtils.isEmpty(messageDTOList)) {
-                for (int i = 0, len = messageDTOList.size(); i < len; i++) {
-                    builder.setMessage(i, MobileBeanMapper.map(messageDTOList.get(i)));
-                }
+                messageDTOList.forEach(messageDTO -> {
+                    builder.addMessage(MobileBeanMapper.map(messageDTO));
+                });
             }
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("getMessages error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());
@@ -102,6 +108,7 @@ public class MobileMessageServiceImpl extends MessageServiceGrpc.MessageServiceI
             messageApi.setRead(request.getMessageId(), Platform.UU);
             builder.setResponseHeader(ResponseUtils.success());
         } catch (Exception e) {
+            logger.error("setRead error", e);
             builder.setResponseHeader(ResponseUtils.error(e));
         }
         responseObserver.onNext(builder.build());

+ 3 - 3
services/mobile-grpc-service/src/main/java/com/usoftchina/uu/mobile/grpc/util/MobileBeanMapper.java

@@ -155,9 +155,9 @@ public class MobileBeanMapper {
         AppGroupConfig.Builder builder = AppGroupConfig.newBuilder().setName(appGroupDTO.getName());
         List<AppConfigDTO> appConfigDTOList = appGroupDTO.getAppConfigList();
         if (!CollectionUtils.isEmpty(appConfigDTOList)) {
-            for (int i = 0, len = appConfigDTOList.size(); i < len; i++) {
-                builder.setAppConfig(i, map(appConfigDTOList.get(i)));
-            }
+            appConfigDTOList.forEach(appConfigDTO -> {
+                builder.addAppConfig(map(appConfigDTO));
+            });
         }
         return builder.build();
     }