Просмотр исходного кода

风险管理12月3日提交代码-liu.bolan-天津麦顿bug

Liu.bolan 4 лет назад
Родитель
Сommit
e272d7d590
22 измененных файлов с 897 добавлено и 267 удалено
  1. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  2. 4 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt
  3. 381 151
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/protoclasses/ManageServiceMI2.java
  4. 6 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt
  5. 8 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt
  6. 243 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/PromptBoxDialog.kt
  7. 10 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/treeview/TreeNode.java
  8. 15 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/treeview/TreeViewAdapter.java
  9. 2 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/treeview/helper/TreeHelper.java
  10. 6 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  11. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/ExposureViewModel.kt
  12. 123 70
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/HnstMainFragment.kt
  13. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/AddContractActivity.kt
  14. 24 12
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reference/ReferenceAdapter.java
  15. 6 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleSetActivity.kt
  16. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleSetViewModel.kt
  17. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/spotaudit/SpotAuditActivity.kt
  18. 12 9
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginActivity.kt
  19. 29 9
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/SeaKingMainFragment.kt
  20. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalActivity.kt
  21. 4 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/yrdzpurchase/swaps/TransferSwapsAdapter.java
  22. 14 1
      RMA/app/src/main/res/layout/layout_item_transfer_content.xml

+ 2 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt

@@ -841,6 +841,7 @@ class AccountManager {
         operatetype: Int,
         modifyremark: String = "",
         rolename: String,
+        menutypes : Long = 0,
         memberfuncmenus: List<ManageServiceMI2.MemberFuncMenu>,
         callback: (isCompleted: Boolean, err: Error?) -> Unit
     ) {
@@ -850,7 +851,7 @@ class AccountManager {
         }
 
         val reqPacket = AccountAdapter.getManagerRoleOperateReqInfo(
-            autoid, operatetype, modifyremark, rolename, memberfuncmenus
+            autoid, operatetype, modifyremark, rolename,menutypes, memberfuncmenus
         )
 
         tradeSocketManager.send(

+ 4 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt

@@ -485,6 +485,7 @@ class AccountAdapter {
             operatetype : Int,
             modifyremark : String = "",
             rolename : String = "",
+            menutypes : Long = 0,//uint64 菜单类型 1:管理端 2:PC(C#) 3:移动(云平台) 4:终端(交易所) 5:PC(云平台)(修改必填)
             memberfuncmenus : List<ManageServiceMI2.MemberFuncMenu>
         ) : Packet50{
             val builder = ManageServiceMI2.ManagerRoleOperateReq.newBuilder()
@@ -507,6 +508,9 @@ class AccountAdapter {
             builder.modifierid = loginInfo.loginID
 
             builder.modifyremark = modifyremark
+            if (menutypes != 0L){
+                builder.addMenutypes(menutypes)
+            }
             if (rolename.isNotEmpty()){
                 builder.rolename = rolename
             }

+ 381 - 151
RMA/app/src/main/java/cn/muchinfo/rma/protobuf/protoclasses/ManageServiceMI2.java

@@ -39,6 +39,7 @@ public final class ManageServiceMI2 {
 
     /**
      * <pre>
+     * uint64
      * </pre>
      *
      * <code>optional uint64 DeliveryGoodsID = 2;</code>
@@ -264,13 +265,7 @@ public final class ManageServiceMI2 {
      */
     double getRiskRatio();
   }
-  /**
-   * <pre>
 
-   * </pre>
-   *
-   * Protobuf type {@code ManageServiceMI2.Erms2WRRContractRisk}
-   */
   public static final class Erms2WRRContractRisk extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:ManageServiceMI2.Erms2WRRContractRisk)
@@ -55299,10 +55294,39 @@ public final class ManageServiceMI2 {
 
     /**
      * <pre>
+     * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+     * </pre>
+     *
+     * <code>repeated uint64 menutypes = 8;</code>
+     * @return A list containing the menutypes.
+     */
+    java.util.List<java.lang.Long> getMenutypesList();
+    /**
+     * <pre>
+     * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+     * </pre>
+     *
+     * <code>repeated uint64 menutypes = 8;</code>
+     * @return The count of menutypes.
+     */
+    int getMenutypesCount();
+    /**
+     * <pre>
+     * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+     * </pre>
+     *
+     * <code>repeated uint64 menutypes = 8;</code>
+     * @param index The index of the element to return.
+     * @return The menutypes at the given index.
+     */
+    long getMenutypes(int index);
+
+    /**
+     * <pre>
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     java.util.List<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu> 
         getMemberfuncmenusList();
@@ -55311,7 +55335,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu getMemberfuncmenus(int index);
     /**
@@ -55319,7 +55343,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     int getMemberfuncmenusCount();
     /**
@@ -55327,7 +55351,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     java.util.List<? extends cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder> 
         getMemberfuncmenusOrBuilderList();
@@ -55336,7 +55360,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder getMemberfuncmenusOrBuilder(
         int index);
@@ -55360,6 +55384,7 @@ public final class ManageServiceMI2 {
     private ManagerRoleOperateReq() {
       modifyremark_ = "";
       rolename_ = "";
+      menutypes_ = emptyLongList();
       memberfuncmenus_ = java.util.Collections.emptyList();
     }
 
@@ -55439,11 +55464,32 @@ public final class ManageServiceMI2 {
               rolename_ = bs;
               break;
             }
-            case 66: {
+            case 64: {
               if (!((mutable_bitField0_ & 0x00000080) != 0)) {
-                memberfuncmenus_ = new java.util.ArrayList<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu>();
+                menutypes_ = newLongList();
+                mutable_bitField0_ |= 0x00000080;
+              }
+              menutypes_.addLong(input.readUInt64());
+              break;
+            }
+            case 66: {
+              int length = input.readRawVarint32();
+              int limit = input.pushLimit(length);
+              if (!((mutable_bitField0_ & 0x00000080) != 0) && input.getBytesUntilLimit() > 0) {
+                menutypes_ = newLongList();
                 mutable_bitField0_ |= 0x00000080;
               }
+              while (input.getBytesUntilLimit() > 0) {
+                menutypes_.addLong(input.readUInt64());
+              }
+              input.popLimit(limit);
+              break;
+            }
+            case 74: {
+              if (!((mutable_bitField0_ & 0x00000100) != 0)) {
+                memberfuncmenus_ = new java.util.ArrayList<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu>();
+                mutable_bitField0_ |= 0x00000100;
+              }
               memberfuncmenus_.add(
                   input.readMessage(cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.PARSER, extensionRegistry));
               break;
@@ -55464,6 +55510,9 @@ public final class ManageServiceMI2 {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000080) != 0)) {
+          menutypes_.makeImmutable(); // C
+        }
+        if (((mutable_bitField0_ & 0x00000100) != 0)) {
           memberfuncmenus_ = java.util.Collections.unmodifiableList(memberfuncmenus_);
         }
         this.unknownFields = unknownFields.build();
@@ -55750,14 +55799,53 @@ public final class ManageServiceMI2 {
       }
     }
 
-    public static final int MEMBERFUNCMENUS_FIELD_NUMBER = 8;
+    public static final int MENUTYPES_FIELD_NUMBER = 8;
+    private com.google.protobuf.Internal.LongList menutypes_;
+    /**
+     * <pre>
+     * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+     * </pre>
+     *
+     * <code>repeated uint64 menutypes = 8;</code>
+     * @return A list containing the menutypes.
+     */
+    @java.lang.Override
+    public java.util.List<java.lang.Long>
+        getMenutypesList() {
+      return menutypes_;
+    }
+    /**
+     * <pre>
+     * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+     * </pre>
+     *
+     * <code>repeated uint64 menutypes = 8;</code>
+     * @return The count of menutypes.
+     */
+    public int getMenutypesCount() {
+      return menutypes_.size();
+    }
+    /**
+     * <pre>
+     * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+     * </pre>
+     *
+     * <code>repeated uint64 menutypes = 8;</code>
+     * @param index The index of the element to return.
+     * @return The menutypes at the given index.
+     */
+    public long getMenutypes(int index) {
+      return menutypes_.getLong(index);
+    }
+
+    public static final int MEMBERFUNCMENUS_FIELD_NUMBER = 9;
     private java.util.List<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu> memberfuncmenus_;
     /**
      * <pre>
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     @java.lang.Override
     public java.util.List<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu> getMemberfuncmenusList() {
@@ -55768,7 +55856,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     @java.lang.Override
     public java.util.List<? extends cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder> 
@@ -55780,7 +55868,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     @java.lang.Override
     public int getMemberfuncmenusCount() {
@@ -55791,7 +55879,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     @java.lang.Override
     public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu getMemberfuncmenus(int index) {
@@ -55802,7 +55890,7 @@ public final class ManageServiceMI2 {
      * MemberFuncMenu �����˵�(�����޸ı���)
      * </pre>
      *
-     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+     * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
      */
     @java.lang.Override
     public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder getMemberfuncmenusOrBuilder(
@@ -55845,8 +55933,11 @@ public final class ManageServiceMI2 {
       if (((bitField0_ & 0x00000040) != 0)) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 7, rolename_);
       }
+      for (int i = 0; i < menutypes_.size(); i++) {
+        output.writeUInt64(8, menutypes_.getLong(i));
+      }
       for (int i = 0; i < memberfuncmenus_.size(); i++) {
-        output.writeMessage(8, memberfuncmenus_.get(i));
+        output.writeMessage(9, memberfuncmenus_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -55883,9 +55974,18 @@ public final class ManageServiceMI2 {
       if (((bitField0_ & 0x00000040) != 0)) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, rolename_);
       }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < menutypes_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeUInt64SizeNoTag(menutypes_.getLong(i));
+        }
+        size += dataSize;
+        size += 1 * getMenutypesList().size();
+      }
       for (int i = 0; i < memberfuncmenus_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, memberfuncmenus_.get(i));
+          .computeMessageSize(9, memberfuncmenus_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -55937,6 +56037,8 @@ public final class ManageServiceMI2 {
         if (!getRolename()
             .equals(other.getRolename())) return false;
       }
+      if (!getMenutypesList()
+          .equals(other.getMenutypesList())) return false;
       if (!getMemberfuncmenusList()
           .equals(other.getMemberfuncmenusList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
@@ -55981,6 +56083,10 @@ public final class ManageServiceMI2 {
         hash = (37 * hash) + ROLENAME_FIELD_NUMBER;
         hash = (53 * hash) + getRolename().hashCode();
       }
+      if (getMenutypesCount() > 0) {
+        hash = (37 * hash) + MENUTYPES_FIELD_NUMBER;
+        hash = (53 * hash) + getMenutypesList().hashCode();
+      }
       if (getMemberfuncmenusCount() > 0) {
         hash = (37 * hash) + MEMBERFUNCMENUS_FIELD_NUMBER;
         hash = (53 * hash) + getMemberfuncmenusList().hashCode();
@@ -56142,9 +56248,11 @@ public final class ManageServiceMI2 {
         bitField0_ = (bitField0_ & ~0x00000020);
         rolename_ = "";
         bitField0_ = (bitField0_ & ~0x00000040);
+        menutypes_ = emptyLongList();
+        bitField0_ = (bitField0_ & ~0x00000080);
         if (memberfuncmenusBuilder_ == null) {
           memberfuncmenus_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000080);
+          bitField0_ = (bitField0_ & ~0x00000100);
         } else {
           memberfuncmenusBuilder_.clear();
         }
@@ -56208,10 +56316,15 @@ public final class ManageServiceMI2 {
           to_bitField0_ |= 0x00000040;
         }
         result.rolename_ = rolename_;
+        if (((bitField0_ & 0x00000080) != 0)) {
+          menutypes_.makeImmutable();
+          bitField0_ = (bitField0_ & ~0x00000080);
+        }
+        result.menutypes_ = menutypes_;
         if (memberfuncmenusBuilder_ == null) {
-          if (((bitField0_ & 0x00000080) != 0)) {
+          if (((bitField0_ & 0x00000100) != 0)) {
             memberfuncmenus_ = java.util.Collections.unmodifiableList(memberfuncmenus_);
-            bitField0_ = (bitField0_ & ~0x00000080);
+            bitField0_ = (bitField0_ & ~0x00000100);
           }
           result.memberfuncmenus_ = memberfuncmenus_;
         } else {
@@ -56291,11 +56404,21 @@ public final class ManageServiceMI2 {
           rolename_ = other.rolename_;
           onChanged();
         }
+        if (!other.menutypes_.isEmpty()) {
+          if (menutypes_.isEmpty()) {
+            menutypes_ = other.menutypes_;
+            bitField0_ = (bitField0_ & ~0x00000080);
+          } else {
+            ensureMenutypesIsMutable();
+            menutypes_.addAll(other.menutypes_);
+          }
+          onChanged();
+        }
         if (memberfuncmenusBuilder_ == null) {
           if (!other.memberfuncmenus_.isEmpty()) {
             if (memberfuncmenus_.isEmpty()) {
               memberfuncmenus_ = other.memberfuncmenus_;
-              bitField0_ = (bitField0_ & ~0x00000080);
+              bitField0_ = (bitField0_ & ~0x00000100);
             } else {
               ensureMemberfuncmenusIsMutable();
               memberfuncmenus_.addAll(other.memberfuncmenus_);
@@ -56308,7 +56431,7 @@ public final class ManageServiceMI2 {
               memberfuncmenusBuilder_.dispose();
               memberfuncmenusBuilder_ = null;
               memberfuncmenus_ = other.memberfuncmenus_;
-              bitField0_ = (bitField0_ & ~0x00000080);
+              bitField0_ = (bitField0_ & ~0x00000100);
               memberfuncmenusBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getMemberfuncmenusFieldBuilder() : null;
@@ -56939,12 +57062,119 @@ public final class ManageServiceMI2 {
         return this;
       }
 
+      private com.google.protobuf.Internal.LongList menutypes_ = emptyLongList();
+      private void ensureMenutypesIsMutable() {
+        if (!((bitField0_ & 0x00000080) != 0)) {
+          menutypes_ = mutableCopy(menutypes_);
+          bitField0_ |= 0x00000080;
+         }
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @return A list containing the menutypes.
+       */
+      public java.util.List<java.lang.Long>
+          getMenutypesList() {
+        return ((bitField0_ & 0x00000080) != 0) ?
+                 java.util.Collections.unmodifiableList(menutypes_) : menutypes_;
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @return The count of menutypes.
+       */
+      public int getMenutypesCount() {
+        return menutypes_.size();
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @param index The index of the element to return.
+       * @return The menutypes at the given index.
+       */
+      public long getMenutypes(int index) {
+        return menutypes_.getLong(index);
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @param index The index to set the value at.
+       * @param value The menutypes to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMenutypes(
+          int index, long value) {
+        ensureMenutypesIsMutable();
+        menutypes_.setLong(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @param value The menutypes to add.
+       * @return This builder for chaining.
+       */
+      public Builder addMenutypes(long value) {
+        ensureMenutypesIsMutable();
+        menutypes_.addLong(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @param values The menutypes to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllMenutypes(
+          java.lang.Iterable<? extends java.lang.Long> values) {
+        ensureMenutypesIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, menutypes_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �˵����� 1:����� 2:PC(C#) 3:�ƶ�(��ƽ̨) 4:�ն�(������) 5:PC(��ƽ̨)(�޸ı���)
+       * </pre>
+       *
+       * <code>repeated uint64 menutypes = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMenutypes() {
+        menutypes_ = emptyLongList();
+        bitField0_ = (bitField0_ & ~0x00000080);
+        onChanged();
+        return this;
+      }
+
       private java.util.List<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu> memberfuncmenus_ =
         java.util.Collections.emptyList();
       private void ensureMemberfuncmenusIsMutable() {
-        if (!((bitField0_ & 0x00000080) != 0)) {
+        if (!((bitField0_ & 0x00000100) != 0)) {
           memberfuncmenus_ = new java.util.ArrayList<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu>(memberfuncmenus_);
-          bitField0_ |= 0x00000080;
+          bitField0_ |= 0x00000100;
          }
       }
 
@@ -56956,7 +57186,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public java.util.List<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu> getMemberfuncmenusList() {
         if (memberfuncmenusBuilder_ == null) {
@@ -56970,7 +57200,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public int getMemberfuncmenusCount() {
         if (memberfuncmenusBuilder_ == null) {
@@ -56984,7 +57214,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu getMemberfuncmenus(int index) {
         if (memberfuncmenusBuilder_ == null) {
@@ -56998,7 +57228,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder setMemberfuncmenus(
           int index, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu value) {
@@ -57019,7 +57249,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder setMemberfuncmenus(
           int index, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder builderForValue) {
@@ -57037,7 +57267,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder addMemberfuncmenus(cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu value) {
         if (memberfuncmenusBuilder_ == null) {
@@ -57057,7 +57287,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder addMemberfuncmenus(
           int index, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu value) {
@@ -57078,7 +57308,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder addMemberfuncmenus(
           cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder builderForValue) {
@@ -57096,7 +57326,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder addMemberfuncmenus(
           int index, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder builderForValue) {
@@ -57114,7 +57344,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder addAllMemberfuncmenus(
           java.lang.Iterable<? extends cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu> values) {
@@ -57133,12 +57363,12 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder clearMemberfuncmenus() {
         if (memberfuncmenusBuilder_ == null) {
           memberfuncmenus_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000080);
+          bitField0_ = (bitField0_ & ~0x00000100);
           onChanged();
         } else {
           memberfuncmenusBuilder_.clear();
@@ -57150,7 +57380,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public Builder removeMemberfuncmenus(int index) {
         if (memberfuncmenusBuilder_ == null) {
@@ -57167,7 +57397,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder getMemberfuncmenusBuilder(
           int index) {
@@ -57178,7 +57408,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder getMemberfuncmenusOrBuilder(
           int index) {
@@ -57192,7 +57422,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public java.util.List<? extends cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder> 
            getMemberfuncmenusOrBuilderList() {
@@ -57207,7 +57437,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder addMemberfuncmenusBuilder() {
         return getMemberfuncmenusFieldBuilder().addBuilder(
@@ -57218,7 +57448,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder addMemberfuncmenusBuilder(
           int index) {
@@ -57230,7 +57460,7 @@ public final class ManageServiceMI2 {
        * MemberFuncMenu �����˵�(�����޸ı���)
        * </pre>
        *
-       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 8;</code>
+       * <code>repeated .ManageServiceMI2.MemberFuncMenu memberfuncmenus = 9;</code>
        */
       public java.util.List<cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder> 
            getMemberfuncmenusBuilderList() {
@@ -57243,7 +57473,7 @@ public final class ManageServiceMI2 {
           memberfuncmenusBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenu.Builder, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.MemberFuncMenuOrBuilder>(
                   memberfuncmenus_,
-                  ((bitField0_ & 0x00000080) != 0),
+                  ((bitField0_ & 0x00000100) != 0),
                   getParentForChildren(),
                   isClean());
           memberfuncmenus_ = null;
@@ -93291,113 +93521,113 @@ public final class ManageServiceMI2 {
       "zGroupTAAccount\022\017\n\007OptType\030\t \001(\005\022\022\n\nArea" +
       "UserID\030\n \001(\004\"f\n\020ErmcpBizGroupRsp\022\034\n\006Head" +
       "er\030\001 \001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022" +
-      "\017\n\007RetDesc\030\003 \001(\t\022\022\n\nBizGroupID\030\004 \001(\004\"\345\001\n" +
+      "\017\n\007RetDesc\030\003 \001(\t\022\022\n\nBizGroupID\030\004 \001(\004\"\370\001\n" +
       "\025ManagerRoleOperateReq\022\034\n\006Header\030\001 \001(\0132\014" +
       ".MessageHead\022\016\n\006autoid\030\002 \001(\004\022\023\n\013operatet" +
       "ype\030\003 \001(\r\022\022\n\nareauserid\030\004 \001(\004\022\022\n\nmodifie" +
       "rid\030\005 \001(\004\022\024\n\014modifyremark\030\006 \001(\t\022\020\n\010rolen" +
-      "ame\030\007 \001(\t\0229\n\017memberfuncmenus\030\010 \003(\0132 .Man" +
-      "ageServiceMI2.MemberFuncMenu\"g\n\025ManagerR" +
-      "oleOperateRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageH" +
-      "ead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\016\n" +
-      "\006autoid\030\004 \001(\004\"\203\001\n\023TaaccountOperateReq\022\034\n" +
-      "\006Header\030\001 \001(\0132\014.MessageHead\022\021\n\taccountid" +
-      "\030\002 \001(\004\022\023\n\013tradestatus\030\003 \001(\r\022\022\n\nmodifieri" +
-      "d\030\004 \001(\004\022\022\n\nareauserid\030\005 \001(\004\"h\n\023Taaccount" +
-      "OperateRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead" +
-      "\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\021\n\tac" +
-      "countid\030\004 \001(\004\"\207\001\n\033TaaccountTransfersxmon" +
-      "eyReq\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\021\n\ta" +
-      "ccountid\030\002 \001(\004\022\017\n\007sxmoney\030\003 \001(\001\022\022\n\nmodif" +
-      "ierid\030\004 \001(\004\022\022\n\nareauserid\030\005 \001(\004\"p\n\033Taacc" +
-      "ountTransfersxmoneyRsp\022\034\n\006Header\030\001 \001(\0132\014" +
-      ".MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc" +
-      "\030\003 \001(\t\022\021\n\taccountid\030\004 \001(\004\"\252\002\n\026Loginaccou" +
-      "ntOperateReq\022\034\n\006Header\030\001 \001(\0132\014.MessageHe" +
-      "ad\022\023\n\013operatetype\030\002 \001(\r\022\016\n\006userid\030\003 \001(\004\022" +
-      "\017\n\007loginid\030\004 \001(\004\022\022\n\nareauserid\030\005 \001(\004\022\021\n\t" +
-      "logincode\030\006 \001(\t\022\023\n\013accountname\030\007 \001(\t\022\020\n\010" +
-      "password\030\010 \001(\t\022\016\n\006mobile\030\t \001(\t\022\017\n\007roleid" +
-      "s\030\n \003(\004\0229\n\017logintaaccounts\030\013 \003(\0132 .Manag" +
-      "eServiceMI2.LoginTaaccount\022\022\n\nmodifierid" +
-      "\030\014 \001(\004\"y\n\026LoginaccountOperateRsp\022\034\n\006Head" +
+      "ame\030\007 \001(\t\022\021\n\tmenutypes\030\010 \003(\004\0229\n\017memberfu" +
+      "ncmenus\030\t \003(\0132 .ManageServiceMI2.MemberF" +
+      "uncMenu\"g\n\025ManagerRoleOperateRsp\022\034\n\006Head" +
+      "er\030\001 \001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022" +
+      "\017\n\007RetDesc\030\003 \001(\t\022\016\n\006autoid\030\004 \001(\004\"\203\001\n\023Taa" +
+      "ccountOperateReq\022\034\n\006Header\030\001 \001(\0132\014.Messa" +
+      "geHead\022\021\n\taccountid\030\002 \001(\004\022\023\n\013tradestatus" +
+      "\030\003 \001(\r\022\022\n\nmodifierid\030\004 \001(\004\022\022\n\nareauserid" +
+      "\030\005 \001(\004\"h\n\023TaaccountOperateRsp\022\034\n\006Header\030" +
+      "\001 \001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007" +
+      "RetDesc\030\003 \001(\t\022\021\n\taccountid\030\004 \001(\004\"\207\001\n\033Taa" +
+      "ccountTransfersxmoneyReq\022\034\n\006Header\030\001 \001(\013" +
+      "2\014.MessageHead\022\021\n\taccountid\030\002 \001(\004\022\017\n\007sxm" +
+      "oney\030\003 \001(\001\022\022\n\nmodifierid\030\004 \001(\004\022\022\n\nareaus" +
+      "erid\030\005 \001(\004\"p\n\033TaaccountTransfersxmoneyRs" +
+      "p\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\017\n\007RetCo" +
+      "de\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\021\n\taccountid\030\004" +
+      " \001(\004\"\252\002\n\026LoginaccountOperateReq\022\034\n\006Heade" +
+      "r\030\001 \001(\0132\014.MessageHead\022\023\n\013operatetype\030\002 \001" +
+      "(\r\022\016\n\006userid\030\003 \001(\004\022\017\n\007loginid\030\004 \001(\004\022\022\n\na" +
+      "reauserid\030\005 \001(\004\022\021\n\tlogincode\030\006 \001(\t\022\023\n\013ac" +
+      "countname\030\007 \001(\t\022\020\n\010password\030\010 \001(\t\022\016\n\006mob" +
+      "ile\030\t \001(\t\022\017\n\007roleids\030\n \003(\004\0229\n\017logintaacc" +
+      "ounts\030\013 \003(\0132 .ManageServiceMI2.LoginTaac" +
+      "count\022\022\n\nmodifierid\030\014 \001(\004\"y\n\026Loginaccoun" +
+      "tOperateRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHea" +
+      "d\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\016\n\006u" +
+      "serid\030\004 \001(\004\022\017\n\007loginid\030\005 \001(\004\"\372\001\n\026ErmcpSp" +
+      "otGoodsPriceReq\022\034\n\006Header\030\001 \001(\0132\014.Messag" +
+      "eHead\022\027\n\017DeliveryGoodsID\030\002 \001(\004\022\024\n\014WRStan" +
+      "dardID\030\003 \001(\004\022\030\n\020SpotGoodsBrandID\030\004 \001(\004\022\022" +
+      "\n\nCurrencyID\030\005 \001(\004\022\026\n\016SpotGoodsPrice\030\006 \001" +
+      "(\001\022\021\n\tTradeDate\030\007 \001(\t\022\022\n\nOperateSrc\030\010 \001(" +
+      "\005\022\021\n\tOperateID\030\t \001(\004\022\023\n\013OperateType\030\n \001(" +
+      "\005\"X\n\026ErmcpSpotGoodsPriceRsp\022\034\n\006Header\030\001 " +
+      "\001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007Re" +
+      "tDesc\030\003 \001(\t\"\372\003\n\021ErmcpHedgePlanReq\022\034\n\006Hea" +
+      "der\030\001 \001(\0132\014.MessageHead\022\023\n\013HedgePlanID\030\002" +
+      " \001(\004\022\023\n\013HedgePlanNo\030\003 \001(\t\022\024\n\014ContractTyp" +
+      "e\030\004 \001(\005\022\022\n\nAreaUserID\030\005 \001(\004\022\027\n\017DeliveryG" +
+      "oodsID\030\006 \001(\004\022\023\n\013ProductType\030\007 \001(\005\022\025\n\rSpo" +
+      "tGoodsDesc\030\010 \001(\t\022\017\n\007PlanQty\030\t \001(\001\022\025\n\rCon" +
+      "vertFactor\030\n \001(\001\022\020\n\010PlanTime\030\013 \001(\t\022\021\n\tTr" +
+      "adeDate\030\014 \001(\t\022\020\n\010ApplySrc\030\r \001(\005\022\017\n\007Apply" +
+      "Id\030\016 \001(\004\022\016\n\006Remark\030\017 \001(\t\022\023\n\013OperateType\030" +
+      "\020 \001(\005\022\024\n\014WRStandardID\030\021 \001(\004\022\021\n\tAccountID" +
+      "\030\022 \001(\004\022\023\n\013Tradeuserid\030\023 \001(\004\022\022\n\nCurrencyi" +
+      "d\030\024 \001(\004\022\017\n\007Biztype\030\025 \001(\004\022\017\n\007auditid\030\026 \001(" +
+      "\004\022\020\n\010auditsrc\030\027 \001(\r\022\023\n\013auditremark\030\030 \001(\t" +
+      "\"S\n\021ErmcpHedgePlanRsp\022\034\n\006Header\030\001 \001(\0132\014." +
+      "MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030" +
+      "\003 \001(\t\"\225\006\n\023GldSpotContractInfo\022\021\n\tTradeDa" +
+      "te\030\001 \001(\t\022\022\n\nContractNo\030\002 \001(\t\022\024\n\014Contract" +
+      "Type\030\003 \001(\005\022\016\n\006UserID\030\004 \001(\004\022\021\n\tBuyUserID\030" +
+      "\005 \001(\004\022\022\n\nSellUserID\030\006 \001(\004\022\020\n\010SignDate\030\007 " +
+      "\001(\t\022\032\n\022ContractAttachment\030\010 \001(\014\022\026\n\016Contr" +
+      "actMargin\030\t \001(\001\022\027\n\017DeliveryGoodsID\030\n \001(\004" +
+      "\022\024\n\014WrStandardID\030\013 \001(\004\022\023\n\013ProductType\030\014 " +
+      "\001(\r\022\025\n\rConvertFactor\030\r \001(\001\022\025\n\rSpotGoodsD" +
+      "esc\030\016 \001(\t\022\021\n\tPriceType\030\017 \001(\r\022\013\n\003Qty\030\020 \001(" +
+      "\001\022\r\n\005Price\030\021 \001(\001\022\016\n\006Amount\030\022 \001(\001\022\031\n\021Deli" +
+      "veryStartDate\030\023 \001(\t\022\027\n\017DeliveryEndDate\030\024" +
+      " \001(\t\022\017\n\007GoodsID\030\025 \001(\004\022\021\n\tPriceMove\030\026 \001(\001" +
+      "\022\021\n\tStartDate\030\027 \001(\t\022\017\n\007EndDate\030\030 \001(\t\022\021\n\t" +
+      "PointDesc\030\031 \001(\t\022\024\n\014DeliveryDesc\030\032 \001(\t\022\021\n" +
+      "\tMerUserID\030\033 \001(\004\022\023\n\013TradeUserID\030\034 \001(\004\022\021\n" +
+      "\tPricedQty\030\035 \001(\001\022\024\n\014PricedAmount\030\036 \001(\001\022\030" +
+      "\n\020SpotGoodsBrandID\030\037 \001(\004\022\016\n\006Remark\030  \001(\t" +
+      "\022\022\n\nSaleUserID\030! \001(\004\022\021\n\tAccountID\030\" \001(\004\022" +
+      "\017\n\007BizType\030# \001(\r\022\022\n\nCurrencyID\030$ \001(\r\022\021\n\t" +
+      "SubjectID\030% \001(\004\022\024\n\014BizSubjectID\030& \001(\004\"\352\001" +
+      "\n\036GldErmcpSpotContractOperateReq\022\034\n\006Head" +
+      "er\030\001 \001(\0132\014.MessageHead\022\026\n\016SpotContractID" +
+      "\030\002 \001(\004\022\023\n\013OperateType\030\003 \001(\r\022\022\n\nOperateSr" +
+      "c\030\004 \001(\r\022\016\n\006UserID\030\005 \001(\004\022\016\n\006Remark\030\006 \001(\t\022" +
+      "\024\n\014ClientTicket\030\007 \001(\t\0223\n\004Info\030\010 \001(\0132%.Ma" +
+      "nageServiceMI2.GldSpotContractInfo\"\267\001\n\036G" +
+      "ldErmcpSpotContractOperateRsp\022\034\n\006Header\030" +
+      "\001 \001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007" +
+      "RetDesc\030\003 \001(\t\022\026\n\016SpotContractID\030\004 \001(\004\022\023\n" +
+      "\013OperateType\030\005 \001(\r\022\022\n\nOperateSrc\030\006 \001(\r\022\024" +
+      "\n\014ClientTicket\030\007 \001(\t\"s\n\035ErmcpContractOpe" +
+      "rateApplyInfo\022\030\n\020OperateApplyType\030\001 \001(\r\022" +
+      "\021\n\tRelatedID\030\002 \001(\004\022\022\n\nDetailJson\030\003 \001(\014\022\021" +
+      "\n\tAttachUrl\030\004 \001(\014\"\203\002\n\034ErmcpContractOpera" +
+      "teApplyReq\022\034\n\006Header\030\001 \001(\0132\014.MessageHead" +
+      "\022\026\n\016OperateApplyID\030\002 \001(\004\022\023\n\013OperateType\030" +
+      "\003 \001(\r\022\022\n\nOperateSrc\030\004 \001(\r\022\016\n\006UserID\030\005 \001(" +
+      "\004\022\016\n\006Remark\030\006 \001(\t\022\024\n\014ClientTicket\030\007 \001(\t\022" +
+      "=\n\004Info\030\010 \001(\0132/.ManageServiceMI2.ErmcpCo" +
+      "ntractOperateApplyInfo\022\017\n\007IsAudit\030\t \001(\r\"" +
+      "\265\001\n\034ErmcpContractOperateApplyRsp\022\034\n\006Head" +
       "er\030\001 \001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022" +
-      "\017\n\007RetDesc\030\003 \001(\t\022\016\n\006userid\030\004 \001(\004\022\017\n\007logi" +
-      "nid\030\005 \001(\004\"\372\001\n\026ErmcpSpotGoodsPriceReq\022\034\n\006" +
-      "Header\030\001 \001(\0132\014.MessageHead\022\027\n\017DeliveryGo" +
-      "odsID\030\002 \001(\004\022\024\n\014WRStandardID\030\003 \001(\004\022\030\n\020Spo" +
-      "tGoodsBrandID\030\004 \001(\004\022\022\n\nCurrencyID\030\005 \001(\004\022" +
-      "\026\n\016SpotGoodsPrice\030\006 \001(\001\022\021\n\tTradeDate\030\007 \001" +
-      "(\t\022\022\n\nOperateSrc\030\010 \001(\005\022\021\n\tOperateID\030\t \001(" +
-      "\004\022\023\n\013OperateType\030\n \001(\005\"X\n\026ErmcpSpotGoods" +
-      "PriceRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\017" +
-      "\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\"\372\003\n\021Erm" +
-      "cpHedgePlanReq\022\034\n\006Header\030\001 \001(\0132\014.Message" +
-      "Head\022\023\n\013HedgePlanID\030\002 \001(\004\022\023\n\013HedgePlanNo" +
-      "\030\003 \001(\t\022\024\n\014ContractType\030\004 \001(\005\022\022\n\nAreaUser" +
-      "ID\030\005 \001(\004\022\027\n\017DeliveryGoodsID\030\006 \001(\004\022\023\n\013Pro" +
-      "ductType\030\007 \001(\005\022\025\n\rSpotGoodsDesc\030\010 \001(\t\022\017\n" +
-      "\007PlanQty\030\t \001(\001\022\025\n\rConvertFactor\030\n \001(\001\022\020\n" +
-      "\010PlanTime\030\013 \001(\t\022\021\n\tTradeDate\030\014 \001(\t\022\020\n\010Ap" +
-      "plySrc\030\r \001(\005\022\017\n\007ApplyId\030\016 \001(\004\022\016\n\006Remark\030" +
-      "\017 \001(\t\022\023\n\013OperateType\030\020 \001(\005\022\024\n\014WRStandard" +
-      "ID\030\021 \001(\004\022\021\n\tAccountID\030\022 \001(\004\022\023\n\013Tradeuser" +
-      "id\030\023 \001(\004\022\022\n\nCurrencyid\030\024 \001(\004\022\017\n\007Biztype\030" +
-      "\025 \001(\004\022\017\n\007auditid\030\026 \001(\004\022\020\n\010auditsrc\030\027 \001(\r" +
-      "\022\023\n\013auditremark\030\030 \001(\t\"S\n\021ErmcpHedgePlanR" +
-      "sp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\017\n\007RetC" +
-      "ode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\"\225\006\n\023GldSpotCo" +
-      "ntractInfo\022\021\n\tTradeDate\030\001 \001(\t\022\022\n\nContrac" +
-      "tNo\030\002 \001(\t\022\024\n\014ContractType\030\003 \001(\005\022\016\n\006UserI" +
-      "D\030\004 \001(\004\022\021\n\tBuyUserID\030\005 \001(\004\022\022\n\nSellUserID" +
-      "\030\006 \001(\004\022\020\n\010SignDate\030\007 \001(\t\022\032\n\022ContractAtta" +
-      "chment\030\010 \001(\014\022\026\n\016ContractMargin\030\t \001(\001\022\027\n\017" +
-      "DeliveryGoodsID\030\n \001(\004\022\024\n\014WrStandardID\030\013 " +
-      "\001(\004\022\023\n\013ProductType\030\014 \001(\r\022\025\n\rConvertFacto" +
-      "r\030\r \001(\001\022\025\n\rSpotGoodsDesc\030\016 \001(\t\022\021\n\tPriceT" +
-      "ype\030\017 \001(\r\022\013\n\003Qty\030\020 \001(\001\022\r\n\005Price\030\021 \001(\001\022\016\n" +
-      "\006Amount\030\022 \001(\001\022\031\n\021DeliveryStartDate\030\023 \001(\t" +
-      "\022\027\n\017DeliveryEndDate\030\024 \001(\t\022\017\n\007GoodsID\030\025 \001" +
-      "(\004\022\021\n\tPriceMove\030\026 \001(\001\022\021\n\tStartDate\030\027 \001(\t" +
-      "\022\017\n\007EndDate\030\030 \001(\t\022\021\n\tPointDesc\030\031 \001(\t\022\024\n\014" +
-      "DeliveryDesc\030\032 \001(\t\022\021\n\tMerUserID\030\033 \001(\004\022\023\n" +
-      "\013TradeUserID\030\034 \001(\004\022\021\n\tPricedQty\030\035 \001(\001\022\024\n" +
-      "\014PricedAmount\030\036 \001(\001\022\030\n\020SpotGoodsBrandID\030" +
-      "\037 \001(\004\022\016\n\006Remark\030  \001(\t\022\022\n\nSaleUserID\030! \001(" +
-      "\004\022\021\n\tAccountID\030\" \001(\004\022\017\n\007BizType\030# \001(\r\022\022\n" +
-      "\nCurrencyID\030$ \001(\r\022\021\n\tSubjectID\030% \001(\004\022\024\n\014" +
-      "BizSubjectID\030& \001(\004\"\352\001\n\036GldErmcpSpotContr" +
-      "actOperateReq\022\034\n\006Header\030\001 \001(\0132\014.MessageH" +
-      "ead\022\026\n\016SpotContractID\030\002 \001(\004\022\023\n\013OperateTy" +
-      "pe\030\003 \001(\r\022\022\n\nOperateSrc\030\004 \001(\r\022\016\n\006UserID\030\005" +
-      " \001(\004\022\016\n\006Remark\030\006 \001(\t\022\024\n\014ClientTicket\030\007 \001" +
-      "(\t\0223\n\004Info\030\010 \001(\0132%.ManageServiceMI2.GldS" +
-      "potContractInfo\"\267\001\n\036GldErmcpSpotContract" +
-      "OperateRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead" +
-      "\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\026\n\016Sp" +
-      "otContractID\030\004 \001(\004\022\023\n\013OperateType\030\005 \001(\r\022" +
-      "\022\n\nOperateSrc\030\006 \001(\r\022\024\n\014ClientTicket\030\007 \001(" +
-      "\t\"s\n\035ErmcpContractOperateApplyInfo\022\030\n\020Op" +
-      "erateApplyType\030\001 \001(\r\022\021\n\tRelatedID\030\002 \001(\004\022" +
-      "\022\n\nDetailJson\030\003 \001(\014\022\021\n\tAttachUrl\030\004 \001(\014\"\203" +
-      "\002\n\034ErmcpContractOperateApplyReq\022\034\n\006Heade" +
-      "r\030\001 \001(\0132\014.MessageHead\022\026\n\016OperateApplyID\030" +
-      "\002 \001(\004\022\023\n\013OperateType\030\003 \001(\r\022\022\n\nOperateSrc" +
-      "\030\004 \001(\r\022\016\n\006UserID\030\005 \001(\004\022\016\n\006Remark\030\006 \001(\t\022\024" +
-      "\n\014ClientTicket\030\007 \001(\t\022=\n\004Info\030\010 \001(\0132/.Man" +
-      "ageServiceMI2.ErmcpContractOperateApplyI" +
-      "nfo\022\017\n\007IsAudit\030\t \001(\r\"\265\001\n\034ErmcpContractOp" +
-      "erateApplyRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageH" +
-      "ead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\026\n" +
-      "\016OperateApplyID\030\004 \001(\004\022\023\n\013OperateType\030\005 \001" +
-      "(\r\022\022\n\nOperateSrc\030\006 \001(\r\022\024\n\014ClientTicket\030\007" +
-      " \001(\t\"f\n\017GLDWRStandardEx\022\024\n\014wrstandardid\030" +
-      "\001 \001(\004\022\026\n\016wrstandardname\030\002 \001(\t\022\016\n\006unitid\030" +
-      "\003 \001(\004\022\025\n\rconvertfactor\030\004 \001(\001\"I\n\022GLDDGFac" +
-      "toryItemEx\022\027\n\017dgfactoryitemid\030\001 \001(\004\022\032\n\022d" +
-      "gfactoryitemvalue\030\002 \001(\tB?\n%cn.muchinfo.r" +
-      "ma.protobuf.protoclassesZ\026com.muchinfo.m" +
-      "tp.proto"
+      "\017\n\007RetDesc\030\003 \001(\t\022\026\n\016OperateApplyID\030\004 \001(\004" +
+      "\022\023\n\013OperateType\030\005 \001(\r\022\022\n\nOperateSrc\030\006 \001(" +
+      "\r\022\024\n\014ClientTicket\030\007 \001(\t\"f\n\017GLDWRStandard" +
+      "Ex\022\024\n\014wrstandardid\030\001 \001(\004\022\026\n\016wrstandardna" +
+      "me\030\002 \001(\t\022\016\n\006unitid\030\003 \001(\004\022\025\n\rconvertfacto" +
+      "r\030\004 \001(\001\"I\n\022GLDDGFactoryItemEx\022\027\n\017dgfacto" +
+      "ryitemid\030\001 \001(\004\022\032\n\022dgfactoryitemvalue\030\002 \001" +
+      "(\tB?\n%cn.muchinfo.rma.protobuf.protoclas" +
+      "sesZ\026com.muchinfo.mtp.proto"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -93621,7 +93851,7 @@ public final class ManageServiceMI2 {
     internal_static_ManageServiceMI2_ManagerRoleOperateReq_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_ManageServiceMI2_ManagerRoleOperateReq_descriptor,
-        new java.lang.String[] { "Header", "Autoid", "Operatetype", "Areauserid", "Modifierid", "Modifyremark", "Rolename", "Memberfuncmenus", });
+        new java.lang.String[] { "Header", "Autoid", "Operatetype", "Areauserid", "Modifierid", "Modifyremark", "Rolename", "Menutypes", "Memberfuncmenus", });
     internal_static_ManageServiceMI2_ManagerRoleOperateRsp_descriptor =
       getDescriptor().getMessageTypes().get(36);
     internal_static_ManageServiceMI2_ManagerRoleOperateRsp_fieldAccessorTable = new

+ 6 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt

@@ -358,6 +358,12 @@ class MainActivity : BaseActivity<MainViewModel>() {
         Fresco.initialize(this)
         EventBus.getDefault().register(this)
         initFragmentData()
+        if (SPUtils.getInstance().getString(Constant.oem) == "qyfg"){
+            if (!SPUtils.getInstance().getBoolean(Constant.read_agreement,false)){
+                PromptBoxDialog(viewModel).show()
+            }
+        }
+
         verticalLayout {
             initQuery()
             dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)

+ 8 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt

@@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.ContractTradePositionData
+import cn.muchinfo.rma.global.data.UserNodeCfgAndStatusData
 import cn.muchinfo.rma.global.database.DataBase
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.netcore.packet.Packet40
@@ -32,6 +33,13 @@ class MainViewModel : BaseViewModel() {
 
     val isInitiaDataSuccess: MutableLiveData<Boolean> = MutableLiveData()
 
+    //是否已勾选阅读用户协议
+    val isReadAgreement: MutableLiveData<Boolean> =
+        MutableLiveData<Boolean>().apply { value = false }
+
+    //登录请求的协议
+    val userNodeCfgAndStatus : MutableLiveData<List<UserNodeCfgAndStatusData>> = MutableLiveData()
+
     //查询资金账号信息
     fun getTaAccounts(){
         val params = mutableMapOf<String, String>().apply {

+ 243 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/PromptBoxDialog.kt

@@ -0,0 +1,243 @@
+@file:Suppress("DEPRECATION")
+
+package cn.muchinfo.rma.view
+
+import android.content.Intent
+import android.graphics.Color
+import android.view.Gravity
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.UserNodeCfgAndStatusData
+
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.AgreementActivity
+import cn.muchinfo.rma.view.base.app.Constant
+
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ActivityUtils
+import com.blankj.utilcode.util.AppUtils
+import com.blankj.utilcode.util.SPUtils
+
+import mtp.polymer.com.autowidget.dialog.CustomDialogFragment
+import mtp.polymer.com.autowidget.dialog.createCustomDialog
+import org.jetbrains.anko.*
+
+/**
+ * 企业风管第一次登陆后的提示弹窗
+ */
+fun AppCompatActivity.PromptBoxDialog(
+    viewModel : MainViewModel
+): CustomDialogFragment {
+
+    return createCustomDialog(cancelable = false) { dialog ->
+        backgroundColor = Color.parseColor("#5f000000")
+
+        verticalLayout {
+            background = resources.getDrawable(R.color.white)
+            gravity = Gravity.CENTER_HORIZONTAL
+            textView {
+                text = "温馨提示"
+                textSizeAuto = 34
+                textColorInt = R.color.rma_black_33
+            }.lparams(wrapContent, wrapContent){
+                topMargin = autoSize(30)
+            }
+
+            textView {
+                text = "请仔细阅读相关协议"
+                textSizeAuto = 36
+                textColorInt = R.color.rma_black_33
+            }.lparams(wrapContent, wrapContent){
+                topMargin = autoSize(30)
+                marginStart = autoSize(32)
+                marginEnd = autoSize(32)
+            }
+
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL or Gravity.CENTER_HORIZONTAL
+
+                textView {
+                    onThrottleFirstClick {
+                        val data = UserNodeCfgAndStatusData(agreementname = "用户协议",agreementcontent = "在此特别提醒您(用户)在注册成为用户之前,请认真阅读本《用户协议》(以下简称“协议”),确保您充分理解本协议中各条款。请您审慎阅读并选择接受或不接受本协议。您的注册、登录、使用等行为将视为对本协议的接受,并同意接受本协议各项条款的约束。本协议约定深圳市多元世纪信息技术股份有限公司(以下简称“多元”)与用户之间关于“风管云”软件服务(以下简称“服务“)的权利义务。“用户”是指注册、登录、使用本服务的个人。本协议可由多元随时更新,更新后的协议条款一旦公布即代替原来的协议条款,恕不再另行通知,用户可在本APP中查阅最新版协议条款。在修改协议条款后,如果用户不接受修改后的条款,请立即停止使用喵小瞳提供的服务,用户继续使用服务将被视为接受修改后的协议。\n" +
+                                " \n" +
+                                "一、账号注册\n" +
+                                "1、用户在使用本服务前需要注册一个“多元”账号。“多元”账号应当使用手机号码绑定注册,请用户使用尚未与“多元”账号绑定的手机号码,以及未被服务根据本协议封禁的手机号码注册“多元”账号。服务可以根据用户需求或产品需要对账号注册和绑定的方式进行变更,而无须事先通知用户。\n" +
+                                "2、“多元”系基于“风管云“的APP产品,用户注册时应当授权多元及使用其个人信息方可成功注册“多元”账号。故用户完成注册即表明用户同意服务提取、公开及使用用户的信息。\n" +
+                                "3、鉴于“多元”账号的绑定注册方式,您同意服务在注册时将允许您的手机号码及手机设备识别码等信息用于注册。\n" +
+                                "4、在用户注册及使用本服务时,多元需要搜集能识别用户身份的个人信息以便服务可以在必要时联系用户,或为用户提供更好的使用体验。多元搜集的信息包括但不限于用户的姓名、地址;多元同意对这些信息的使用将受限于第三条用户个人隐私信息保护的约束。\n" +
+                                " \n" +
+                                "二、用户个人隐私信息保护\n" +
+                                "1、如果多元发现或收到他人举报或投诉用户违反本协议约定的,多元有权不经通知随时对相关内容,包括但不限于用户资料、发贴记录进行审查、删除,并视情节轻重对违规账号处以包括但不限于警告、账号封禁 、设备封禁 、功能封禁 的处罚,且通知用户处理结果。\n" +
+                                "2、因违反用户协议被封禁的用户,可以自行与多元联系。其中,被实施功能封禁的用户会在封禁期届满后自动恢复被封禁功能。被封禁用户可提交申诉,多元将对申诉进行审查,并自行合理判断决定是否变更处罚措施。\n" +
+                                "3、用户理解并同意,多元有权依合理判断对违反有关法律法规或本协议规定的行为进行处罚,对违法违规的任何用户采取适当的法律行动,并依据法律法规保存有关信息向有关部门报告等,用户应承担由此而产生的一切法律责任。\n" +
+                                "4、用户理解并同意,因用户违反本协议约定,导致或产生的任何第三方主张的任何索赔、要求或损失,包括合理的律师费,用户应当赔偿多元与合作公司、关联公司,并使之免受损害。\n" +
+                                " \n" +
+                                "三、用户发布内容规范\n" +
+                                "1、本条所述内容是指用户使用服务的过程中所制作、上载、复制、发布、传播的任何内容,包括但不限于账号头像、名称、用户说明等注册信息及认证资料,或文字、语音、图片、视频、图文等发送、回复或自动回复消息和相关链接页面,以及其他使用账号或本服务所产生的内容。\n" +
+                                "2、用户不得利用“多元”账号或本服务制作、上载、复制、发布、传播如下法律、法规和政策禁止的内容:\n" +
+                                "(1) 反对宪法所确定的基本原则的;\n" +
+                                "(2) 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;\n" +
+                                "(3) 损害国家荣誉和利益的;\n" +
+                                "(4) 煽动民族仇恨、民族歧视,破坏民族团结的;\n" +
+                                "(5) 破坏国家宗教政策,宣扬邪教和封建迷信的;\n" +
+                                "(6) 散布谣言,扰乱社会秩序,破坏社会稳定的;\n" +
+                                "(7) 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;\n" +
+                                "(8) 侮辱或者诽谤他人,侵害他人合法权益的;\n" +
+                                "(9) 含有法律、行政法规禁止的其他内容的信息。\n" +
+                                "3、用户不得利用“多元”账号或本服务制作、上载、复制、发布、传播如下干扰“服务”正常运营,以及侵犯其他用户或第三方合法权益的内容:\n" +
+                                "(1) 含有任何性或性暗示的;\n" +
+                                "(2) 含有辱骂、恐吓、威胁内容的;\n" +
+                                "(3) 含有骚扰、垃圾广告、恶意信息、诱骗信息的;\n" +
+                                "(4) 涉及他人隐私、个人信息或资料的;\n" +
+                                "(5) 侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的;\n" +
+                                "(6) 含有其他干扰本服务正常运营和侵犯其他用户或第三方合法权益内容的信息。\n" +
+                                " \n" +
+                                "四、使用规则\n" +
+                                "1、用户在本服务中或通过本服务所传送、发布的任何内容并不反映或代表,也不得被视为反映或代表多元的观点、立场或政策,多元对此不承担任何责任。\n" +
+                                "2、用户不得利用“多元”账号或本服务进行如下行为:\n" +
+                                "(1) 提交、发布虚假信息,或盗用他人头像或资料,冒充、利用他人名义的;\n" +
+                                "(2) 强制、诱导其他用户关注、点击链接页面或分享信息的;\n" +
+                                "(3) 虚构事实、隐瞒真相以误导、欺骗他人的;\n" +
+                                "(4) 利用技术手段批量建立虚假账号的;\n" +
+                                "(5) 利用“多元”账号或本服务从事任何违法犯罪活动的;\n" +
+                                "(6) 制作、发布与以上行为相关的方法、工具,或对此类方法、工具进行运营或传播,无论这些行为是否为商业目的;\n" +
+                                "(7) 其他违反法律法规规定、侵犯其他用户合法权益、干扰“多元”正常运营或服务未明示授权的行为。\n" +
+                                "3、用户须对利用“多元”账号或本服务传送信息的真实性、合法性、无害性、准确性、有效性等全权负责,与用户所传播的信息相关的任何法律责任由用户自行承担,与多元无关。\n" +
+                                "如因此给多元或第三方造成损害的,用户应当依法予以赔偿。\n" +
+                                "4、多元提供的服务中可能包括广告,用户同意在使用过程中显示多元和第三方供应商、合作伙伴提供的广告。除法律法规明确规定外,用户应自行对依该广告信息进行的交易负责,\n" +
+                                "对用户因依该广告信息进行的交易或前述广告商提供的内容而遭受的损失或损害,多元不承担任何责任。\n" +
+                                " \n" +
+                                "五、其他\n" +
+                                "1、多元郑重提醒用户注意本协议中免除多元责任和限制用户权利的条款,请用户仔细阅读,自主考虑风险。未成年人应在法定监护人的陪同下阅读本协议。\n" +
+                                "2、本协议的效力、解释及纠纷的解决,适用于中华人民共和国法律。若用户和多元之间发生任何纠纷或争议,首先应友好协商解决,协商不成的,用户同意将纠纷或争议提交多元住所地有管辖权的人民法院管辖。\n" +
+                                "3、本协议的任何条款无论因何种原因无效或不具可执行性,其余条款仍有效,对双方具有约束力。\n" +
+                                "\n" +
+                                "\n" +
+                                "\n" +
+                                "本《协议》版权由多元所有,多元保留一切对本《协议》解释的权利。")
+                         val intent = Intent()
+                        intent.putExtra("data",data)
+                        intent.setClass(context, AgreementActivity::class.java)
+                        ActivityUtils.startActivity(intent)
+                    }
+                    text = "《用户协议》"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_blue_color
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(15)
+                }
+
+                textView {
+                    onThrottleFirstClick {
+                        val data = UserNodeCfgAndStatusData(agreementname = "隐私政策",agreementcontent = "请选择接受或不接受本协议。您的注册、登录、使用等行为将视为对本协议的接受,并同意接受本协议各项条款的约束。本协议约定深圳市多元世纪产业科技有限公司(以下简称“多元”)与用户之间关于“企业风管云”软件服务(以下简称 “服务”)的权利义务。“用户”是指注册、登录、使用本服务的个人。本协议可由多元随时更新,更新后的协议条款一旦公布即代替原来的协议条款,恕不再另行通知,用户可在本APP中查阅最新版协议条款。在修改协议条款后,如果用户不接受修改后的条款,请立即停止使用多元提供的服务,用户继续使用服务将被视为接受修改后的协议。\n" +
+                                "一、 用户信息收集\n" +
+                                "1. 您在使用我们的产品时,会收集您的相关信息。我们希望通过本《隐私政策》向您说明在您使用我们产品时为何会被收集用户信息。\n" +
+                                "2. 根据证监会【第27号公告】要求,中国期货市场监控中心有限责任公司(以下简称期货市场监控中心)负责接收客户交易终端信息,并共享给期货交易所。期货公司应当按要求采集客户交易终端信息并报送至期货市场监控中心,为达到证监会的监管要求,各期货交易所统一提供了终端的接入SDK,通过SDK采集用户信息,使用标准的格式,透明化的实现了监管要求。\n" +
+                                "3. 本产品对接上海期货交易所(以下简称上期所),所以使用了上期所提供的穿透式监管统一终端接入SDK,该SDK会自动获取客户相关用户信息,加密后上传至上期所。本产品承诺产品本身不收集任何用户信息,所有用户信息收集均为上期所收集,而且收集过程是保密的。\n" +
+                                "二、 应用集成com.tencent.smtt\n" +
+                                "    本应用使用了腾迅X5浏览器组件,用于加载三方资讯新闻类网站,承诺不会加载其它类别网站,也不会通过此浏览器收集用户信息。\n" +
+                                "三、 账号注册\n" +
+                                "\t•\t用户在使用本服务前需要注册一个“多元”账号。“多元”账号应当使用手机号码绑定注册,请用户使用尚未与“多元”账号绑定的手机号码,以及未被服务根据本协议封禁的手机号码注册“多元”账号。服务可以根据用户需求或产品需要对账号注册和绑定的方式进行变更,而无须事先通知用户。\n" +
+                                "\t•\t“多元”系基于“企业风管云“的APP产品,用户注册时应当授权多元及使用其个人信息方可成功注册“多元”账号。故用户完成注册即表明用户同意服务提取、公开及使用用户的信息。\n" +
+                                "\t•\t鉴于“多元”账号的绑定注册方式,您同意服务在注册时将允许您的手机号码及手机设备识别码等信息用于注册。\n" +
+                                "\t•\t在用户注册及使用本服务时,多元需要搜集能识别用户身份的个人信息以便服务可以在必要时联系用户,或为用户提供更好的使用体验。多元搜集的信息包括但不限于用户的姓名、地址;多元同意对这些信息的使用将受限于第三条用户个人隐私信息保护的约束。\n" +
+                                "四、 用户个人隐私信息保护\n" +
+                                "\t•\t如果多元发现或收到他人举报或投诉用户违反本协议约定的,多元有权不经通知随时对相关内容,包括但不限于用户资料、发贴记录进行审查、删除,并视情节轻重对违规账号处以包括但不限于警告、账号封禁 、设备封禁 、功能封禁 的处罚,且通知用户处理结果。\n" +
+                                "\t•\t因违反用户协议被封禁的用户,可以自行与多元联系。其中,被实施功能封禁的用户会在封禁期届满后自动恢复被封禁功能。被封禁用户可提交申诉,多元将对申诉进行审查,并自行合理判断决定是否变更处罚措施。\n" +
+                                "\t•\t用户理解并同意,多元有权依合理判断对违反有关法律法规或本协议规定的行为进行处罚,对违法违规的任何用户采取适当的法律行动,并依据法律法规保存有关信息向有关部门报告等,用户应承担由此而产生的一切法律责任。\n" +
+                                "\t•\t用户理解并同意,因用户违反本协议约定,导致或产生的任何第三方主张的任何索赔、要求或损失,包括合理的律师费,用户应当赔偿多元与合作公司、关联公司,并使之免受损害。\n" +
+                                "五、 用户发布内容规范\n" +
+                                "\t•\t本条所述内容是指用户使用服务的过程中所制作、上载、复制、发布、传播的任何内容,包括但不限于账号头像、名称、用户说明等注册信息及认证资料,或文字、语音、图片、视频、图文等发送、回复或自动回复消息和相关链接页面,以及其他使用账号或本服务所产生的内容。\n" +
+                                "\t•\t用户不得利用“多元”账号或本服务制作、上载、复制、发布、传播如下法律、法规和政策禁止的内容:\n" +
+                                "\t•\t反对宪法所确定的基本原则的;\n" +
+                                "\t•\t危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;\n" +
+                                "\t•\t害国家荣誉和利益的;\n" +
+                                "\t•\t煽动民族仇恨、民族歧视,破坏民族团结的;\n" +
+                                "\t•\t破坏国家宗教政策,宣扬邪教和封建迷信的;\n" +
+                                "\t•\t散布谣言,扰乱社会秩序,破坏社会稳定的;\n" +
+                                "\t•\t散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;\n" +
+                                "\t•\t侮辱或者诽谤他人,侵害他人合法权益的;\n" +
+                                "\t•\t含有法律、行政法规禁止的其他内容的信息。\n" +
+                                "\t•\t用户不得利用“多元”账号或本服务制作、上载、复制、发布、传播如下干扰“服务”正常运营,以及侵犯其他用户或第三方合法权益的内容:\n" +
+                                "\t•\t含有任何性或性暗示的;\n" +
+                                "\t•\t含有辱骂、恐吓、威胁内容的;\n" +
+                                "\t•\t含有骚扰、垃圾广告、恶意信息、诱骗信息的;\n" +
+                                "\t•\t涉及他人隐私、个人信息或资料的;\n" +
+                                "\t•\t侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的;\n" +
+                                "\t•\t含有其他干扰本服务正常运营和侵犯其他用户或第三方合法权益内容的信息。\n" +
+                                "六、 使用规则\n" +
+                                "\t•\t用户在本服务中或通过本服务所传送、发布的任何内容并不反映或代表,也不得被视为反映或代表多元的观点、立场或政策,多元对此不承担任何责任。\n" +
+                                "\t•\t用户不得利用“多元”账号或本服务进行如下行为:\n" +
+                                "\t•\t提交、发布虚假信息,或盗用他人头像或资料,冒充、利用他人名义的;\n" +
+                                "\t•\t强制、诱导其他用户关注、点击链接页面或分享信息的;\n" +
+                                "\t•\t虚构事实、隐瞒真相以误导、欺骗他人的;\n" +
+                                "\t•\t利用技术手段批量建立虚假账号的;\n" +
+                                "\t•\t利用“多元”账号或本服务从事任何违法犯罪活动的;\n" +
+                                "\t•\t制作、发布与以上行为相关的方法、工具,或对此类方法、工具进行运营或传播,无论这些行为是否为商业目的;\n" +
+                                "\t•\t其他违反法律法规规定、侵犯其他用户合法权益、干扰“多元”正常运营或服务未明示授权的行为。\n" +
+                                "\t•\t用户须对利用“多元”账号或本服务传送信息的真实性、合法性、无害性、准确性、有效性等全权负责,与用户所传播的信息相关的任何法律责任由用户自行承担,与多元无关。\n" +
+                                "\t•\t多元提供的服务中可能包括广告,用户同意在使用过程中显示多元和第三方供应商、合作伙伴提供的广告。除法律法规明确规定外,用户应自行对依该广告信息进行的交易负责,对用户因依该广告信息进行的交易或前述广告商提供的内容而遭受的损失或损害,多元不承担任何责任。\n" +
+                                "\n" +
+                                "七、 其他\n" +
+                                "\t•\t多元郑重提醒用户注意本协议中免除多元责任和限制用户权利的条款,请用户仔细阅读,自主考虑风险。未成年人应在法定监护人的陪同下阅读本协议。\n" +
+                                "\t•\t本协议的效力、解释及纠纷的解决,适用于中华人民共和国法律。若用户和多元之间发生任何纠纷或争议,首先应友好协商解决,协商不成的,用户同意将纠纷或争议提交多元住所地有管辖权的人民法院管辖。\n" +
+                                "\t•\t本协议的任何条款无论因何种原因无效或不具可执行性,其余条款仍有效,对双方具有约束力。\n" +
+                                "本《协议》版权由多元所有,多元保留一切对本《协议》解释的权利。\n")
+                         val intent = Intent()
+                        intent.putExtra("data",data)
+                        intent.setClass(context, AgreementActivity::class.java)
+                        ActivityUtils.startActivity(intent)
+                    }
+                    text = "《用户协议》"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_blue_color
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(15)
+                }
+
+
+            }.lparams(matchParent, wrapContent){
+                topMargin = autoSize(40)
+            }
+
+
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL
+
+                emptyView()
+
+                textView {
+                    onThrottleFirstClick {
+                        AppUtils.relaunchApp()
+                        dialog.dismiss()
+                    }
+                    text = "取消"
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent)
+
+                textView {
+                    onThrottleFirstClick {
+                        SPUtils.getInstance().put(Constant.read_agreement,true)
+                        dialog.dismiss()
+                    }
+                    text = "我已阅读并同意"
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent){
+                    marginStart = autoSize(32)
+                    marginEnd = autoSize(32)
+                }
+            }.lparams(matchParent, autoSize(80)){
+                topMargin = autoSize(30)
+                bottomMargin = autoSize(50)
+            }
+
+        }.lparams(matchParent, wrapContent) {
+            topMargin = autoSize(500)
+            marginStart = autoSize(60)
+            marginEnd = autoSize(60)
+        }
+    }
+}

+ 10 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/treeview/TreeNode.java

@@ -44,6 +44,16 @@ public class TreeNode {
 
     private boolean itemClickEnable = true;
 
+    private boolean allSonSelect;
+
+    public boolean isAllSonSelect() {
+        return allSonSelect;
+    }
+
+    public void setAllSonSelect(boolean allSonSelect) {
+        this.allSonSelect = allSonSelect;
+    }
+
     public TreeNode(Object value) {
         this.value = value;
         this.children = new ArrayList<>();

+ 15 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/treeview/TreeViewAdapter.java

@@ -21,11 +21,13 @@ import android.view.ViewGroup;
 import android.widget.Checkable;
 
 import androidx.annotation.NonNull;
+import androidx.appcompat.widget.AppCompatCheckBox;
 import androidx.recyclerview.widget.RecyclerView;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import cn.muchinfo.rma.R;
 import cn.muchinfo.rma.view.autoWidget.treeview.base.BaseNodeViewBinder;
 import cn.muchinfo.rma.view.autoWidget.treeview.base.BaseNodeViewFactory;
 import cn.muchinfo.rma.view.autoWidget.treeview.base.CheckableNodeViewBinder;
@@ -170,6 +172,19 @@ public class TreeViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         }
     }
 
+    /**
+     * 测试要求选择子权限时要去勾选
+     * @param treeNode
+     * @param checked
+     */
+    private void selectChildrenTwo(TreeNode treeNode, boolean checked) {
+        List<TreeNode> impactedChildren = TreeHelper.selectNodeAndChild(treeNode, checked);
+        int index = expandedNodeList.indexOf(treeNode);
+        if (index != -1 && impactedChildren.size() > 0) {
+            notifyItemRangeChanged(index, impactedChildren.size() + 1);
+        }
+    }
+
     private void selectParentIfNeed(TreeNode treeNode, boolean checked) {
         List<TreeNode> impactedParents = TreeHelper.selectParentIfNeedWhenNodeSelected(treeNode, checked);
         if (impactedParents.size() > 0) {

+ 2 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/treeview/helper/TreeHelper.java

@@ -177,6 +177,7 @@ public class TreeHelper {
 
     /**
      * Select the node and node's children,return the visible nodes
+     * 选择节点和节点的子节点,返回可见节点
      */
     public static List<TreeNode> selectNodeAndChild(TreeNode treeNode, boolean select) {
         List<TreeNode> expandChildren = new ArrayList<>();
@@ -221,6 +222,7 @@ public class TreeHelper {
 
     /**
      * Select parent when all the brothers have been selected, otherwise deselect parent,
+     * 当所有的兄弟都被选中时选择parent,否则取消选择parent
      * and check the grand parent recursive.
      */
     public static List<TreeNode> selectParentIfNeedWhenNodeSelected(TreeNode treeNode, boolean select) {

+ 6 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt

@@ -9,7 +9,7 @@ object Constant {
 //    const val baseurl = "http://103.40.249.123:38280/cfg?key=mtp_20" // 天津麦顿
 //    const val baseurl = "http://103.40.249.123:28280/cfg?key=mtp_20"//云融大宗
 //    const val baseurl = "http://103.40.249.123:8280/cfg?key=mtp_20"//千海金外盘
-    const val baseurl = "http://103.40.249.127:28280/cfg?key=mtp_20"
+//    const val baseurl = "http://103.40.249.127:28280/cfg?key=mtp_20"
 
 
 
@@ -17,12 +17,13 @@ object Constant {
 //    const val baseurl = "http://192.168.31.104:8080/cfg?key=test_104"//李倩云融 18611112222
 //    const val baseurl = "http://192.168.31.203:8080/cfg?key=test_203"//李倩云融 18611112222
 //
+//        const val baseurl = "http://192.168.31.137:8080/cfg?key=test_137"// 瑶姐 企业风管
 //    const val baseurl = "http://192.168.31.204:8080/cfg?key=test_204"// 瑶姐 云融 190000000001 123456
 //    const val baseurl = "http://192.168.31.202:8080/cfg?key=test_202"// 瑶姐 云融 190000000001 123456
 //    const val baseurl = "http://192.168.31.205:8080/cfg?key=test_205"// 瑶姐 云融 190000000001 123456
 //    const val baseurl = "http://192.168.31.201:8080/cfg?key=test_201"// 邓工 千海金
 
-//    const val baseurl = "http://192.168.31.175:8080/cfg?key=test_175" // 8888  123123
+    const val baseurl = "http://192.168.31.175:8080/cfg?key=test_175" // 8888  123123
 //    const val baseurl = "http://192.168.31.223:8080/cfg?key=test_223"
 //    const val baseurl = "http://192.168.31.139:8080/cfg?key=test_139"// 邓工
 //
@@ -394,4 +395,7 @@ object Constant {
 
     //是否点击同意登录协议
     const val agree_deal = "agree_deal"
+
+    //是否已同意登陆后的隐私和用户协议
+    const val read_agreement = "read_agreement"
 }

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/ExposureViewModel.kt

@@ -131,7 +131,7 @@ class ExposureViewModel : BaseViewModel(){
             newRightData.add(it.wrstandardname + "\n" + NumberUtils.doubleDistortion(it.qty) + it.enumdicname)
             newRightData.add(NumberUtils.roundNum(it.changeQty,2) + it.mgunitidname)
             newRightData.add(NumberUtils.roundNum(it.relateNo ?: "",2))
-            newRightData.add(NumberUtils.roundNum(it.convertfactor,2) /*+ "\n" + it.convertratio*/)
+            newRightData.add(NumberUtils.roundNum(it.convertratio,2) /*+ "\n" + it.convertratio*/)
             val newData = it.copy(rightData = newRightData)
             newList.add(newData)
         }

+ 123 - 70
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/HnstMainFragment.kt

@@ -276,11 +276,12 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                         }.lparams(matchParent, autoSize(360))
 
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
-                                View.GONE
-                            } else {
-                                View.VISIBLE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.GONE
+                                } else {
+                                    View.VISIBLE
+                                }
                             verticalLayout {
                                 onThrottleFirstClick {
                                     val intent = Intent()
@@ -307,13 +308,25 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                                 it?.currentbalance?.toString(),
                                                 2
                                             )
+
                                         } else {
                                             "****"
                                         }
 
+                                        textColorInt = when {
+                                            it?.currentbalance ?: 0.0 > 0.0 -> {
+                                                R.color.rma_red_color
+                                            }
+                                            it?.currentbalance ?: 0.0 < 0.0 -> {
+                                                R.color.rma_green_color
+                                            }
+                                            else -> {
+                                                R.color.rma_black_33
+                                            }
+                                        }
                                     }
                                     textSizeAuto = 34
-                                    textColorStr = "#00C280"
+
                                 }.lparams(wrapContent, wrapContent) {
                                     marginStart = autoSize(36)
                                     topMargin = autoSize(10)
@@ -381,7 +394,9 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                             verticalLayout {
                                 gravity = Gravity.LEFT
                                 textView {
-                                    text = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    text = if (SPUtils.getInstance()
+                                            .getString(Constant.oem) == "tjmd"
+                                    ) {
                                         "净值"
                                     } else {
                                         "总市值"
@@ -428,7 +443,7 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                                         ), 2
                                                     )
                                                 }
-                                            }else{
+                                            } else {
                                                 text = NumberUtils.roundNum(
                                                     NumberUtils.doubleDistortion(
                                                         it?.valueOfposition?.minus(it.raisedAmount)
@@ -450,16 +465,19 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
 
                         //狗屎一样的设计,,,,,fuck
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
-                                View.VISIBLE
-                            } else {
-                                View.GONE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.VISIBLE
+                                } else {
+                                    View.GONE
+                                }
 
                             verticalLayout {
                                 gravity = Gravity.LEFT
                                 textView {
-                                    text = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    text = if (SPUtils.getInstance()
+                                            .getString(Constant.oem) == "tjmd"
+                                    ) {
                                         "净值"
                                     } else {
                                         "总市值"
@@ -507,7 +525,7 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                                         ), 2
                                                     )
                                                 }
-                                            }else{
+                                            } else {
                                                 text = NumberUtils.roundNum(
                                                     NumberUtils.doubleDistortion(
                                                         it?.valueOfposition?.minus(it.raisedAmount)
@@ -557,9 +575,21 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                             "****"
                                         }
 
+                                        textColorInt = when {
+                                            it?.currentbalance ?: 0.0 > 0.0 -> {
+                                                R.color.rma_red_color
+                                            }
+                                            it?.currentbalance ?: 0.0 < 0.0 -> {
+                                                R.color.rma_green_color
+                                            }
+                                            else -> {
+                                                R.color.rma_black_33
+                                            }
+                                        }
+
                                     }
                                     textSizeAuto = 34
-                                    textColorStr = "#00C280"
+
                                 }.lparams(wrapContent, wrapContent) {
                                     marginStart = autoSize(36)
                                     topMargin = autoSize(10)
@@ -628,11 +658,12 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                         }.lparams(matchParent, autoSize(200))
 
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
-                                View.VISIBLE
-                            } else {
-                                View.GONE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.VISIBLE
+                                } else {
+                                    View.GONE
+                                }
                             verticalLayout {
                                 onThrottleFirstClick {
                                     val intent = Intent()
@@ -663,9 +694,21 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                         } else {
                                             "****"
                                         }
+
+                                        textColorInt = when {
+                                            it?.usedmargin ?: 0.0 > 0.0 -> {
+                                                R.color.rma_red_color
+                                            }
+                                            it?.usedmargin ?: 0.0 < 0.0 -> {
+                                                R.color.rma_green_color
+                                            }
+                                            else -> {
+                                                R.color.rma_black_33
+                                            }
+                                        }
                                     }
                                     textSizeAuto = 34
-                                    textColorStr = "#00C280"
+
                                 }.lparams(wrapContent, wrapContent) {
                                     marginStart = autoSize(36)
                                     topMargin = autoSize(10)
@@ -736,19 +779,21 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                                     "087"
                                                 )
                                             val worth: Double
-                                            worth = if (parmasvalue == "1") {//1.风险净值=期末余额+市值+浮动盈亏(收益权)-其他冻结-出金冻结
-                                                it?.currentbalance?.plus(
-                                                    it.valueOfposition
-                                                )?.plus(it.valueOfposition_keep_watch_profit_and_loss)
-                                                    ?.minus(it.otherfreezemargin)
-                                                    ?.minus(it.outamountfreeze) ?: 0.0
-
-
-                                            } else {//0.净值=期末余额+浮动盈亏(收益权)-其他冻结-出金冻结
-                                                it?.currentbalance?.plus(it.valueOfposition_keep_watch_profit_and_loss)
-                                                    ?.minus(it.otherfreezemargin)
-                                                    ?.minus(it.outamountfreeze) ?: 1.0
-                                            }
+                                            worth =
+                                                if (parmasvalue == "1") {//1.风险净值=期末余额+市值+浮动盈亏(收益权)-其他冻结-出金冻结
+                                                    it?.currentbalance?.plus(
+                                                        it.valueOfposition
+                                                    )
+                                                        ?.plus(it.valueOfposition_keep_watch_profit_and_loss)
+                                                        ?.minus(it.otherfreezemargin)
+                                                        ?.minus(it.outamountfreeze) ?: 0.0
+
+
+                                                } else {//0.净值=期末余额+浮动盈亏(收益权)-其他冻结-出金冻结
+                                                    it?.currentbalance?.plus(it.valueOfposition_keep_watch_profit_and_loss)
+                                                        ?.minus(it.otherfreezemargin)
+                                                        ?.minus(it.outamountfreeze) ?: 1.0
+                                                }
 
                                             var risk = 0.0
                                             if (it?.valueOfposition != 0.0) {
@@ -774,9 +819,11 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                             linearLayout {
                                 onThrottleFirstClick {
                                     if (GlobalDataCollection.instance?.bankAccountSignData?.accountcode.isNullOrEmpty()) {
-                                        if (SPUtils.getInstance().getString(Constant.oem) == "qhj"){
+                                        if (SPUtils.getInstance()
+                                                .getString(Constant.oem) == "qhj"
+                                        ) {
                                             ToastUtils.showLong("请先添加提现账户信息")
-                                        }else{
+                                        } else {
                                             ToastUtils.showLong("请先添加签约账户信息")
                                         }
                                         return@onThrottleFirstClick
@@ -854,11 +901,12 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
 
                             //预售仓单
                             verticalLayout {
-                                visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
-                                    View.GONE//任务 2621
-                                }else{
-                                    View.VISIBLE
-                                }
+                                visibility =
+                                    if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                        View.GONE//任务 2621
+                                    } else {
+                                        View.VISIBLE
+                                    }
                                 onThrottleFirstClick {
                                     val intent = Intent()
                                     intent.setClass(context, BookingWarehouseActivity::class.java)
@@ -882,14 +930,15 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
 
                             //商品订单
                             verticalLayout {
-                                visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
-                                    View.GONE//任务 2621
-                                }else{
-                                    View.VISIBLE
-                                }
+                                visibility =
+                                    if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                        View.GONE//任务 2621
+                                    } else {
+                                        View.VISIBLE
+                                    }
                                 onThrottleFirstClick {
                                     val intent = Intent()
-                                    intent.putExtra("type","1")
+                                    intent.putExtra("type", "1")
                                     intent.setClass(context, ContractOrdersActivity::class.java)
                                     ActivityUtils.startActivity(intent)
                                 }
@@ -913,7 +962,7 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                             verticalLayout {
                                 onThrottleFirstClick {
                                     val intent = Intent()
-                                    intent.putExtra("type","2")
+                                    intent.putExtra("type", "2")
                                     intent.setClass(context, ContractOrdersActivity::class.java)
                                     ActivityUtils.startActivity(intent)
                                 }
@@ -1015,11 +1064,12 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                         itemView()
 
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
-                                View.GONE//任务 2621
-                            }else{
-                                View.VISIBLE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.GONE//任务 2621
+                                } else {
+                                    View.VISIBLE
+                                }
                             onThrottleFirstClick {
                                 val intent = Intent()
                                 intent.setClass(context, FinanceManagementActivity::class.java)
@@ -1069,11 +1119,12 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
 //                        itemView()
 
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
-                                View.GONE//任务 2621
-                            }else{
-                                View.VISIBLE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.GONE//任务 2621
+                                } else {
+                                    View.VISIBLE
+                                }
                             onThrottleFirstClick {
                                 val intent = Intent()
                                 intent.setClass(context, PerformanceTemplateActivity::class.java)
@@ -1179,11 +1230,12 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
 //                        itemView()
 
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
-                                View.GONE//任务 2621
-                            }else{
-                                View.VISIBLE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.GONE//任务 2621
+                                } else {
+                                    View.VISIBLE
+                                }
                             onThrottleFirstClick {
                                 val intent = Intent()
                                 intent.setClass(context, MainFriendActivity::class.java)
@@ -1279,14 +1331,15 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                             }
                         }.lparams(matchParent, autoSize(140))
 
-                         itemView()
+                        itemView()
 
                         linearLayout {
-                            visibility = if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
-                                View.VISIBLE
-                            }else{
-                                View.GONE
-                            }
+                            visibility =
+                                if (SPUtils.getInstance().getString(Constant.oem) == "tjmd") {
+                                    View.VISIBLE
+                                } else {
+                                    View.GONE
+                                }
                             gravity = Gravity.CENTER_VERTICAL
                             onThrottleFirstClick {
                                 val intent = Intent()

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/AddContractActivity.kt

@@ -864,7 +864,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
                             }
 
                             textView {
-                                text = "品        类"
+                                text = "商        品"
                                 textSizeAuto = 31
                                 textColorInt = R.color.rma_black_33
                             }.lparams(wrapContent, wrapContent) {
@@ -876,7 +876,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
                                     text = it?.value
                                     textColorInt = R.color.rma_black_33
                                 }
-                                text = "请选择品"
+                                text = "请选择品"
                                 textSizeAuto = 31
                                 textColorInt = R.color.rma_hint_text_color_ccc
                             }.lparams(wrapContent, wrapContent) {

+ 24 - 12
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reference/ReferenceAdapter.java

@@ -72,16 +72,28 @@ public class ReferenceAdapter extends RecyclerView.Adapter<ReferenceAdapter.Item
         notifyDataSetChanged();
     }
 
-    private void setPosition(int position) {
-        if (this.position == position) {
-            this.position = -1;
-            notifyItemChanged(index);
-        } else {
-            this.position = position;
-            notifyItemChanged(position);
+    private void setOnItemClick(int position){
+        List<GoodsInfo> newDataList = new ArrayList<>();
+        for (int i = 0;i < datas.size();i++){
+            if (position == i){
+                GoodsInfo data1 = datas.get(i);
+                if (data1.getHasquoter() == 0){
+                    data1.setHasquoter(1);
+                }else {
+                    data1.setHasquoter(0);
+                }
+                newDataList.add(data1);
+            }else {
+                GoodsInfo newData = datas.get(i);
+                newData.setHasquoter(0);
+                newDataList.add(newData);
+            }
         }
+        setDatas(newDataList);
     }
 
+
+
     @NonNull
     @Override
     public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
@@ -206,9 +218,9 @@ public class ReferenceAdapter extends RecyclerView.Adapter<ReferenceAdapter.Item
             if (quoteDayData.getPreclose() == 0.0){
                 yesCloseRightData.setValue("--");
             }else {
-                yesCloseRightData.setValue(NumberUtils.roundNum(NumberUtils.doubleDistortion(String.valueOf(quoteDayData.getPreclose())),data.getDecimalplace()));
+                yesCloseRightData.setValue(NumberUtils.roundNum(NumberUtils.doubleDistortion(String.valueOf(quoteDayData.getPresettle())),data.getDecimalplace()));
             }
-            double lowestRightDatColor = quoteDayData.getLowest() - quoteDayData.getPreclose();
+            double lowestRightDatColor = quoteDayData.getLowest() - quoteDayData.getPresettle();
             yesCloseRightData.setColorType("1");
 
             if (lowestRightDatColor > 0){
@@ -323,7 +335,7 @@ public class ReferenceAdapter extends RecyclerView.Adapter<ReferenceAdapter.Item
         if (!mViewHolderList.contains(itemViewHolder)) {
             mViewHolderList.add(itemViewHolder);
         }
-        if (i == this.position) {
+        if (data.getHasquoter() == 1) {
             itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.qhj_click_bg));
             itemViewHolder.allView.setVisibility(View.VISIBLE);
         } else {
@@ -331,11 +343,11 @@ public class ReferenceAdapter extends RecyclerView.Adapter<ReferenceAdapter.Item
             itemViewHolder.allView.setVisibility(View.GONE);
         }
 
-        itemViewHolder.all_click_View.setOnClickListener(view -> setPosition(i));
+        itemViewHolder.all_click_View.setOnClickListener(view -> setOnItemClick(i));
         itemViewHolder.horItemScrollview.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                setPosition(i);
+//                setOnItemClick(i);
             }
         });
 

+ 6 - 6
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleSetActivity.kt

@@ -28,6 +28,7 @@ import org.jetbrains.anko.*
 /**
  * 设置里的新增角色/角色详情
  */
+@Suppress("DEPRECATION")
 class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
 
     lateinit var viewGroup : RelativeLayout
@@ -61,7 +62,6 @@ class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
 
     val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
 
-
     private val addRoleAdapter: BaseAdapter<AccMgrRoleMenuData, AddRoleViewHolder> =
         BaseAdapter { _, _ -> AddRoleViewHolder(this, viewModel,type ?: "") }
 
@@ -184,7 +184,7 @@ class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
                                 ViewGroup.LayoutParams.MATCH_PARENT
                             )
                             viewGroup.addView(view)
-                            addRoleAdapter.setNewData(it)
+//                            addRoleAdapter.setNewData(it)
                         }
                     }
                 }
@@ -210,7 +210,7 @@ class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
                                     finish()
                                 }
                             }else if (type == "2"){
-                                viewModel.ManagerRoleOperateReq(autoid = data.autoid?.toLong() ?: 0,operatetype = 2,rolename = role_name_edittext.text.toString(),memberfuncmenus = getSelectedNodes()){
+                                viewModel.ManagerRoleOperateReq(menutypes = 3,autoid = data.autoid?.toLong() ?: 0,operatetype = 2,rolename = role_name_edittext.text.toString(),memberfuncmenus = getSelectedNodes()){
                                     finish()
                                 }
                             }
@@ -244,7 +244,6 @@ class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
             updataMenuData.resourcecode = it
             updateMenuList.add(updataMenuData.build())
         }
-
         return updateMenuList
     }
 
@@ -260,24 +259,25 @@ class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
                 val secondTreeNode = TreeNode(secondData.Menu?.resourcename,1)
                 secondTreeNode.isSelected = secondData.Menu?.ishadrole ?: false
                 secondTreeNode.code = secondData.Menu?.resourcecode
+                secondTreeNode.parent = firstTreeNode
                 secondData.SubMenu?.forEach { threedata ->
                     //第三层数据组装
                     val threeTreeNode = TreeNode(threedata.Menu?.resourcename,2)
                     threeTreeNode.isSelected = threedata.Menu?.ishadrole ?: false
                     threeTreeNode.code = threedata.Menu?.resourcecode
+                    threeTreeNode.parent = secondTreeNode
                     if (threedata.SubMenu.isNullOrEmpty().not()){
                         threedata.SubMenu?.forEach { fourdata ->
                             //第四层数据组装
                             val fourTreeNode = TreeNode(fourdata.Menu?.resourcename,3)
                             fourTreeNode.isSelected = fourdata.Menu?.ishadrole ?: false
                             fourTreeNode.code = fourdata.Menu?.resourcecode
+                            fourTreeNode.parent = threeTreeNode
                             threeTreeNode.addChild(fourTreeNode)
                         }
                     }
-
                     secondTreeNode.addChild(threeTreeNode)
                 }
-
                 firstTreeNode.addChild(secondTreeNode)
             }
 

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleSetViewModel.kt

@@ -502,6 +502,7 @@ class RoleSetViewModel : BaseViewModel() {
         operatetype: Int,
         modifyremark: String = "",
         rolename: String = "",
+        menutypes : Long = 0,//uint64 菜单类型 1:管理端 2:PC(C#) 3:移动(云平台) 4:终端(交易所) 5:PC(云平台)(修改必填)
         memberfuncmenus: List<ManageServiceMI2.MemberFuncMenu> = arrayListOf(),
         isSuccess: (isCompleted: Boolean) -> Unit
     ) {
@@ -512,7 +513,8 @@ class RoleSetViewModel : BaseViewModel() {
                 rolename = rolename,
                 memberfuncmenus = memberfuncmenus,
                 modifyremark = modifyremark,
-                autoid = autoid
+                autoid = autoid,
+                menutypes = menutypes
             ) { isCompleted, err ->
                 if (isCompleted) {
                     loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))

+ 1 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/spotaudit/SpotAuditActivity.kt

@@ -27,6 +27,7 @@ import org.jetbrains.anko.view
 /**
  * 现货审核页面
  */
+@Suppress("DEPRECATION")
 class SpotAuditActivity : BaseActivity<SpotAuditViewModel>(){
 
     lateinit var segment: QMUITabSegment

+ 12 - 9
RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginActivity.kt

@@ -16,7 +16,6 @@ import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.BuildConfig
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
-import cn.muchinfo.rma.global.toShowTime
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.update.check.UpdateChecker
@@ -109,7 +108,11 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
     private fun buildView() {
         // 沉浸式状态栏
         QMUIStatusBarHelper.translucent(this)
-        isReadAgreement.postValue(SPUtils.getInstance().getBoolean(Constant.agree_deal,false))
+        if (SPUtils.getInstance().getString(Constant.oem) == "tjmd" || SPUtils.getInstance().getString(Constant.oem) == "qhj"){
+            isReadAgreement.postValue(true)
+        }else{
+            isReadAgreement.postValue(SPUtils.getInstance().getBoolean(Constant.agree_deal,false))
+        }
         dialog.bindTaskStatus(context = this, taskUiModelData = viewModel.loadingDialogStatus)
         viewModel.queryUserNodeCfgAndStatus()
         verticalLayout {
@@ -181,7 +184,7 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
                 imageView {
                     onThrottleFirstClick {
                         if (userPopupWindow == null) {
-                            if (userList != null && userList.size > 0) {
+                            if (userList.size > 0) {
                                 userPopupWindow = UserPopupWindow(
                                     userList,
                                     loginCodeEditText,
@@ -197,7 +200,7 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
                                 }
                             }
                         } else {
-                            if (userList != null && userList.size > 0) {
+                            if (userList.size > 0) {
                                 if (!userPopupWindow!!.isShowing) {
                                     userPopupWindow!!.showAsDropDown(loginCodeEditText, 0, 1)
                                 }
@@ -354,10 +357,10 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
                 gravity = Gravity.CENTER_VERTICAL or Gravity.CENTER_HORIZONTAL
                 visibility = View.GONE
                 viewModel.userNodeCfgAndStatus.bindOptional(context){
-                    if (it?.size == 0){
-                        visibility = View.GONE
+                    visibility = if (it?.size == 0){
+                        View.GONE
                     }else{
-                        visibility = View.VISIBLE
+                        View.VISIBLE
                     }
                 }
                 onThrottleFirstClick {
@@ -463,7 +466,7 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
         viewModel.login(
             code = loginCodeEditText!!.text.toString().trim(),
             password = loginPwdEditText!!.text.toString(),
-            byteArray = collectInfo ?: byteArrayOf()
+            byteArray = collectInfo
         ) { isCompleted, err,rsp ->
             GlobalScope.launch(Dispatchers.Main) {
                 if (!isCompleted) {
@@ -513,7 +516,7 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
                             return@getErmcpRoleFuncMenuLists
                         } else {
 
-                            MyApplication.getInstance()?.futureManager?.queryGoodsList { isCompleted, err ->
+                            MyApplication.getInstance()?.futureManager?.queryGoodsList { isCompleted, _ ->
                                 if (isCompleted) {
                                     SPUtils.getInstance()
                                         .put(Constant.QUERY_GOODS_TIME, TimeUtils.getNowMills())

+ 29 - 9
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/SeaKingMainFragment.kt

@@ -11,6 +11,7 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
 import androidx.core.app.ActivityCompat
+import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.BankAccountSignData
@@ -68,6 +69,8 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
 
     lateinit var refernum_text : TextView
 
+    val isShowMoney : MutableLiveData<Boolean> = MutableLiveData<Boolean>().apply { value = true }
+
     override fun onResume() {
         super.onResume()
         viewModel.getUserAccount()
@@ -295,6 +298,10 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
 
                         verticalLayout {
                             linearLayout {
+                                onThrottleFirstClick {
+                                    isShowMoney.postValue(isShowMoney.value?.not())
+                                    viewModel.usedAccountData.postValue(viewModel.usedAccountData.value)
+                                }
                                 gravity = Gravity.CENTER_VERTICAL
                                 textView {
                                     text = "净资产(元)"
@@ -315,7 +322,12 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
                                  * 净资产=总市值-融资额+余额;
                                  */
                                 viewModel.usedAccountData.bindOptional(context){
-                                    text = NumberUtils.roundNum(NumberUtils.doubleDistortion(it?.valueOfposition?.minus(it.raisedAmount)?.plus(it.currentbalance).toString()),2)
+                                    if (isShowMoney.value == true){
+                                        text = NumberUtils.roundNum(NumberUtils.doubleDistortion(it?.valueOfposition?.minus(it.raisedAmount)?.plus(it.currentbalance).toString()),2)
+                                    }else{
+                                        text = "****"
+                                    }
+
                                 }
                                 textSizeAuto = 60
                                 textColorInt = R.color.rma_black_33
@@ -340,10 +352,14 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
                                          * 可用取期末余额
                                          */
                                         viewModel.usedAccountData.bindOptional(context) {
-                                            text = NumberUtils.roundNum(
-                                                NumberUtils.doubleDistortion(it?.currentbalance?.toString()),
-                                                2
-                                            )
+                                            if (isShowMoney.value == true){
+                                                text = NumberUtils.roundNum(
+                                                    NumberUtils.doubleDistortion(it?.currentbalance?.toString()),
+                                                    2
+                                                )
+                                            }else{
+                                                text = "****"
+                                            }
                                         }
                                         textSizeAuto = 36
                                         textColorInt = R.color.rma_green_color
@@ -364,10 +380,14 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
                                     }
                                     textView {
                                         viewModel.usedAccountData.bindOptional(context) {
-                                            text = NumberUtils.roundNum(
-                                                NumberUtils.doubleDistortion(it?.valueOfposition?.toString()),
-                                                2
-                                            )
+                                            if (isShowMoney.value == true){
+                                                text = NumberUtils.roundNum(
+                                                    NumberUtils.doubleDistortion(it?.valueOfposition?.toString()),
+                                                    2
+                                                )
+                                            }else{
+                                                text = "****"
+                                            }
                                         }
                                         textSizeAuto = 36
                                         textColorInt = R.color.rma_red_color

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalActivity.kt

@@ -376,7 +376,7 @@ class MoneyOutUI(
 
                         textView {
                             onThrottleFirstClick {
-                                amount_input.setText(canUseBanlance.toString())
+                                amount_input.setText(NumberUtils.roundNum(canUseBanlance.toString(),2))
                             }
                             text = "全部"
                             textSizeAuto = 31

+ 4 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/yrdzpurchase/swaps/TransferSwapsAdapter.java

@@ -109,7 +109,8 @@ public class TransferSwapsAdapter extends RecyclerView.Adapter<TransferSwapsAdap
             }
         }
 
-        itemViewHolder.tvLeftTitle.setText(datas.get(i).getGoodsname() + "\n" + quoteGoodsListData.getRefgoodsname());
+        itemViewHolder.tvLeftTitle.setText(datas.get(i).getGoodsname());
+        itemViewHolder.tv_left_title_two.setText(quoteGoodsListData.getRefgoodsname());
         //右边滑动部分
         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
         linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
@@ -351,6 +352,7 @@ public class TransferSwapsAdapter extends RecyclerView.Adapter<TransferSwapsAdap
         LinearLayout all_click_View;//item左侧点击控件
         RelativeLayout item_onclick;
         TextView tvLeftTitle;//左边销售方字段
+        TextView tv_left_title_two;//左边底部文字
         RecyclerView rvItemRight;//右方的列表
         ImageView click_icon;//图标
         public CustomHorizontalScrollView horItemScrollview;//右方的滑动控件
@@ -368,6 +370,7 @@ public class TransferSwapsAdapter extends RecyclerView.Adapter<TransferSwapsAdap
             super(itemView);
             item_onclick = itemView.findViewById(R.id.item_onclick);
             click_icon = itemView.findViewById(R.id.click_icon);
+            tv_left_title_two = itemView.findViewById(R.id.tv_left_title_two);
             transfer_buy = itemView.findViewById(R.id.transfer_buy);
             platnum_chart = itemView.findViewById(R.id.platnum_chart);
             platnum_details = itemView.findViewById(R.id.platnum_details);

+ 14 - 1
RMA/app/src/main/res/layout/layout_item_transfer_content.xml

@@ -9,7 +9,7 @@
         android:id="@+id/all_click_View"
         android:layout_width="match_parent"
         android:orientation="horizontal"
-        android:layout_height="35dp">
+        android:layout_height="45dp">
 
         <LinearLayout
             android:layout_width="120dp"
@@ -22,6 +22,7 @@
                 android:layout_height="match_parent">
 
                 <TextView
+                    android:text="头部信息"
                     android:layout_gravity="center"
                     android:layout_marginStart="7dp"
                     android:id="@+id/tv_left_title"
@@ -30,6 +31,16 @@
                     android:textSize="13sp"
                     android:textColor="#333333" />
 
+                <TextView
+
+                    android:layout_gravity="center"
+                    android:layout_marginStart="7dp"
+                    android:id="@+id/tv_left_title_two"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textSize="9sp"
+                    android:textColor="#666666" />
+
             </LinearLayout>
             <ImageView
                 android:id="@+id/click_icon"
@@ -108,4 +119,6 @@
 
     </LinearLayout>
 
+
+
 </LinearLayout>