Arison 6 лет назад
Родитель
Сommit
109251116c

+ 3 - 0
lib_common/build.gradle

@@ -46,6 +46,8 @@ dependencies {
     api deps.retrofit.runtime
     api deps.retrofit.gson
     api deps.persistent_cookie
+    
+   
 
     //Dagger
     api deps.dagger.runtime
@@ -56,6 +58,7 @@ dependencies {
     api deps.kotlin.stdlib
     api deps.event_bus
     api deps.gson
+    api deps.fastjson
     api deps.permission
     api deps.utils
     api deps.glide

+ 6 - 0
module_app/build.gradle

@@ -10,6 +10,12 @@ static def buildTime() {
 
 android {
 
+    packagingOptions {
+        exclude 'android/databinding/DataBinderMapper.java'
+        exclude 'android/databinding/DataBindingComponent.java'
+        exclude 'android/databinding/DynamicUtil.java'
+    }
+
     android.applicationVariants.all {
         variant ->
             variant.outputs.all {

+ 2 - 1
module_main/build.gradle

@@ -14,7 +14,7 @@ android {
 
         javaCompileOptions {
             annotationProcessorOptions {
-                arguments = [ moduleName : project.getName() ]
+                arguments = [moduleName: project.getName()]
             }
         }
     }
@@ -50,4 +50,5 @@ dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     annotationProcessor deps.arouter_compiler
     implementation project(':lib_common')
+    compile 'com.android.support.constraint:constraint-layout:1.0.2'
 }

+ 3 - 4
module_main/src/main/AndroidManifest.xml

@@ -3,7 +3,7 @@
     package="com.uas.module.main">
 
     <application android:theme="@style/AppTheme">
-        <activity android:name="com.uas.module.main.MainActivity">
+        <activity android:name=".MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -12,9 +12,8 @@
         </activity>
         <activity
             android:name=".BottomNavigationActivity"
-            android:label="@string/title_activity_fragment_module">
-
-        </activity>
+            android:label="@string/title_activity_fragment_module"></activity>
+        <activity android:name=".HomeActivity"></activity>
     </application>
 
 </manifest>

+ 17 - 0
module_main/src/main/java/com/uas/module/main/HomeActivity.java

@@ -0,0 +1,17 @@
+package com.uas.module.main;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+
+@Route(path = "/app/home")
+public class HomeActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_home);
+        this.setTitle("主界面");
+    }
+}

+ 9 - 0
module_main/src/main/res/layout/activity_home.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.uas.module.main.HomeActivity">
+
+</android.support.constraint.ConstraintLayout>

+ 1 - 7
module_news/src/main/java/com/uas/module/news/main/NewsCenterActivity.java

@@ -15,13 +15,7 @@ import java.util.Calendar;
 import java.util.List;
 import java.util.Locale;
 
-/**
- * <p>类说明</p>
- *
- * @author 张华洋 2017/4/20 22:26
- * @version V1.2.0
- * @name NewsCenterActivity
- */
+
 @Route(path = "/news/center")
 public class NewsCenterActivity extends BaseActivity {
 

+ 2 - 1
module_test/build.gradle

@@ -52,7 +52,8 @@ android {
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     annotationProcessor deps.arouter_compiler
+    implementation deps.grpc
+    implementation deps.constraint_layout
     implementation project(':lib_common')
 
-compile 'com.android.support.constraint:constraint-layout:1.0.2'
 }

+ 202 - 0
module_test/src/main/java/com/uas/module/test/main/TestMainActivity.java

@@ -4,18 +4,220 @@ import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.fastjson.JSON;
+import com.blankj.utilcode.util.LogUtils;
 import com.uas.module.test.R;
+import com.uas.module.test.network.grpc.Authentication;
+import com.uas.module.test.network.grpc.MobileClientAuthenticationInterceptor;
+import com.usoftchina.uu.mobile.grpc.api.AccountInfo;
+import com.usoftchina.uu.mobile.grpc.api.AccountServiceGrpc;
+import com.usoftchina.uu.mobile.grpc.api.AccountSigninRequest;
+import com.usoftchina.uu.mobile.grpc.api.AccountSigninResponse;
+import com.usoftchina.uu.mobile.grpc.api.AccountSignoutRequest;
+import com.usoftchina.uu.mobile.grpc.api.AccountSignoutResponse;
+import com.usoftchina.uu.mobile.grpc.api.AccountSignupRequest;
+import com.usoftchina.uu.mobile.grpc.api.AccountSignupResponse;
+import com.usoftchina.uu.mobile.grpc.api.AuthedToken;
+import com.usoftchina.uu.mobile.grpc.api.DeviceInfo;
+import com.usoftchina.uu.mobile.grpc.api.GetMessageConfigRequest;
+import com.usoftchina.uu.mobile.grpc.api.GetMessageConfigResponse;
+import com.usoftchina.uu.mobile.grpc.api.MessageServiceGrpc;
+import com.usoftchina.uu.mobile.grpc.api.ResponseHeader;
+import com.usoftchina.uu.mobile.grpc.api.SwitchCompanyRequest;
+import com.usoftchina.uu.mobile.grpc.api.SwitchCompanyResponse;
+
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+import io.grpc.StatusRuntimeException;
 
 
 @Route(path = "/test/index")
 public class TestMainActivity extends AppCompatActivity {
+    
+    //10.1.81.83
+    ManagedChannel channel = ManagedChannelBuilder.forAddress("uu-api-test.usoftchina.com", 9620)
+            .intercept(new MobileClientAuthenticationInterceptor())
+            .usePlaintext(true)
+            .build();
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_test_main);
         
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                //注册
+                signup();
+
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+                //登录
+                login();
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+                //切换公司
+                switchCompany();
+                
+                //读取配置
+                getConfig();
+            }
+        }).start();
         
     }
 
+
+    /*注册*/
+    public  void signup() {
+        LogUtils.d("----开始注册---------");
+        //uu-api-test.usoftchina.com
+        AccountSignupRequest request = AccountSignupRequest.newBuilder()
+                .setMobile("15018524229")
+                .setEmail("liuj@usoftchina.com")
+                .setRealname("刘杰")
+                .setSex(AccountInfo.Sex.MALE)
+                .setPassword("111111")
+                .build();
+        try {
+       
+            AccountSignupResponse response = AccountServiceGrpc.newBlockingStub(channel).signup(request);
+            ResponseHeader header = response.getResponseHeader();
+            
+            if (header.getSuccess()) {
+                LogUtils.d("header:"+header.getMessage());
+            } else {
+                LogUtils.d("header:"+header.getCode() + "," + header.getMessage());
+       
+            }
+        } catch (StatusRuntimeException e) {
+            LogUtils.d("header Exception:"+e.getStatus().getCode() + "," + e.getStatus().getDescription());
+           
+        }
+        
+    }
+    
+    /*登录*/
+    public void login(){
+        LogUtils.d("-----开始登录--------");
+        try {
+            AccountSigninResponse response = AccountServiceGrpc.newBlockingStub(channel).signin(AccountSigninRequest.newBuilder()
+                    .setMobile("15018524229")
+                    .setPassword("111111")
+                    .setDeviceInfo(DeviceInfo.newBuilder()
+                            .setOs(DeviceInfo.OS.ANDROID))
+                    .build());
+            ResponseHeader header = response.getResponseHeader();
+            if (header.getSuccess()) {
+                System.out.println(response.getAccount());
+
+
+                AuthedToken token = response.getAuthedToken();
+                LogUtils.d("login token:"+token.getToken());
+                // 登录成功后记录auth信息
+                Authentication.set(token.getToken());
+
+                if (response.getActiveCompanyId() > 0) {
+                    System.out.println("current selected company " + response.getActiveCompanyId());
+                } else if (response.getCompanyCount() > 0) {
+                    LogUtils.d("公司账套:"+JSON.toJSONString(response.getCompanyList()));
+                }
+                if (response.getMessageConfigCount() > 0) {
+                    LogUtils.d("消息配置:"+JSON.toJSONString(response.getMessageConfigList()));
+                }
+                if (response.getAppGroupConfigCount() > 0) {
+                    LogUtils.d("应用组配置:"+JSON.toJSONString(response.getAppGroupConfigList()));
+                }
+                if (response.getHomeConfigCount() > 0) {
+                    LogUtils.d("我的配置:"+JSON.toJSONString(response.getHomeConfigList()));
+                }
+                if (response.getUnreadMessageCountCount() > 0) {
+                    LogUtils.d("未读消息:"+JSON.toJSONString(response.getUnreadMessageCountList()));
+                }
+            } else {
+                // error return by ResponseHeader
+                System.err.println(header.getCode() + "," + header.getMessage());
+            }
+        } catch (StatusRuntimeException e) {
+            // error return by Exception
+            System.err.println(e.getStatus().getCode() + "," + e.getStatus().getDescription());
+        }
+    }
+
+
+    /*切换公司-会产生新的Token*/
+    public void switchCompany() {
+        SwitchCompanyRequest request = SwitchCompanyRequest.newBuilder()
+                .setCompanyId(10050540).build();
+        try {
+            SwitchCompanyResponse response = AccountServiceGrpc.newBlockingStub(channel).switchCompany(request);
+            ResponseHeader header = response.getResponseHeader();
+            if (header.getSuccess()) {
+                // new authentication
+                AuthedToken token = response.getAuthedToken();
+                LogUtils.d("login token:"+token.getToken());
+                // 登录成功后记录auth信息
+                Authentication.set(token.getToken());
+                LogUtils.d(""+response.getAuthedToken());
+            } else {
+                // error return by ResponseHeader
+                System.err.println(header.getCode() + "," + header.getMessage());
+            }
+        } catch (StatusRuntimeException e) {
+            // error return by Exception
+            System.err.println(e.getStatus().getCode() + "," + e.getStatus().getDescription());
+        }
+    }
+
+
+
+    /*退出*/
+    public void signout() {
+        AccountSignoutRequest request = AccountSignoutRequest.newBuilder().build();
+        try {
+            AccountSignoutResponse response = AccountServiceGrpc.newBlockingStub(channel).signout(request);
+            ResponseHeader header = response.getResponseHeader();
+            if (header.getSuccess()) {
+                System.out.println("success");
+            } else {
+                // error return by ResponseHeader
+                System.err.println(header.getCode() + "," + header.getMessage());
+            }
+        } catch (StatusRuntimeException e) {
+            // error return by Exception
+            System.err.println(e.getStatus().getCode() + "," + e.getStatus().getDescription());
+        }
+    }
+    
+    
+    
+    
+    /*消息配置*/
+
+    public void getConfig() {
+        GetMessageConfigRequest request = GetMessageConfigRequest.newBuilder().build();
+        try {
+            GetMessageConfigResponse response = MessageServiceGrpc.newBlockingStub(channel).getConfig(request);
+            ResponseHeader header = response.getResponseHeader();
+            if (header.getSuccess()) {
+                if (response.getConfigCount() > 0) {
+//                    response.getConfigList().forEach(System.out::println);
+                    LogUtils.d("configList:"+JSON.toJSONString(response.getConfigList()));
+                }
+            } else {
+                // error return by ResponseHeader
+                System.err.println(header.getCode() + "," + header.getMessage());
+            }
+        } catch (StatusRuntimeException e) {
+            // error return by Exception
+            System.err.println(e.getStatus().getCode() + "," + e.getStatus().getDescription());
+            e.printStackTrace();
+        }
+    }
 }

+ 14 - 0
module_test/src/main/java/com/uas/module/test/network/grpc/Authentication.java

@@ -0,0 +1,14 @@
+package com.uas.module.test.network.grpc;
+
+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;
+    }
+}

+ 22 - 0
module_test/src/main/java/com/uas/module/test/network/grpc/MobileClientAuthenticationInterceptor.java

@@ -0,0 +1,22 @@
+package com.uas.module.test.network.grpc;
+
+import io.grpc.*;
+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 - 2
versions.gradle

@@ -35,6 +35,9 @@ versions.arouter_compiler = "1.1.4"
 versions.arouter_api = "1.3.1"
 //MVP
 versions.themvp="1.0.6"
+//GRPC
+versions.grpc_api="1.0.0-SNAPSHOT"
+versions.fastjson="1.2.57"
 
 
 
@@ -90,7 +93,8 @@ deps.rxjava2 = "io.reactivex.rxjava2:rxjava:$versions.rxjava2"
 deps.rx_android = "io.reactivex.rxjava2:rxandroid:$versions.rx_android"
 
 
-//other
+
+deps.fastjson="com.alibaba:fastjson:$versions.fastjson"
 deps.glide = "com.github.bumptech.glide:glide:$versions.glide"
 deps.event_bus = "org.greenrobot:eventbus:$versions.event_bus"
 deps.persistent_cookie = "com.github.franmontiel:PersistentCookieJar:$versions.persistent_cookie"
@@ -105,6 +109,7 @@ deps.arouter_api = "com.alibaba:arouter-api:$versions.arouter_api"
 deps.arouter_compiler = "com.alibaba:arouter-compiler:$versions.arouter_compiler"
 
 deps.themvp="com.kymjs.core:themvp:$versions.themvp"
+deps.grpc="com.usoftchina.uu:android-grpc-api:$versions.grpc_api"
 
 
 
@@ -121,9 +126,15 @@ def addRepos(RepositoryHandler handler) {
     handler.google()
     handler.jcenter()
     handler.mavenCentral()
-    //Add the JitPack repository
     handler.maven { url "https://jitpack.io" }
     handler.maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
+    //usoftchina 
+    handler.mavenLocal()
+    // usoftchina maven release
+    handler.maven { url 'http://maven.ubtob.com/artifactory/libs-release' }
+    // usoftchina maven snapshot
+    handler.maven { url 'http://maven.ubtob.com/artifactory/libs-snapshot' }
+    handler.maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
 }
 
 ext.addRepos = this.&addRepos