Pārlūkot izejas kodu

风险管理7月1日提交代码-liu.bolan-千海金

Liu.bolan 4 gadi atpakaļ
vecāks
revīzija
6e19ed83b9
35 mainītis faili ar 3117 papildinājumiem un 191 dzēšanām
  1. 2 2
      RMA/app/build.gradle
  2. 3 0
      RMA/app/src/main/AndroidManifest.xml
  3. 92 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  4. 59 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt
  5. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/money/MoneyManager.kt
  6. 6 4
      RMA/app/src/main/java/cn/muchinfo/rma/business/money/adapter/MoneyAdapter.kt
  7. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt
  8. 4 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/QhjContractDetailsData.kt
  9. 99 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/UserNodeCfgAndStatusData.kt
  10. 5 0
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/funcode/FunCode.java
  11. 2549 130
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/protoclasses/ManageServiceMI3.java
  12. 50 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/AgreementActivity.kt
  13. 11 11
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/ChartActivity.kt
  14. 25 16
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginActivity.kt
  15. 16 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginViewModel.kt
  16. 66 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/register/EnterpriseRegisterActivity.kt
  17. 71 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/register/PersonalRegisterActivity.kt
  18. 17 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/register/RegisterViewModel.kt
  19. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/AddCastSurelyActivity.kt
  20. 8 8
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewModel.kt
  21. 5 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodsSearchActivity.kt
  22. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodsViewHolder.kt
  23. 13 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/FinancialViewHolder.kt
  24. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/NoPayViewHolder.kt
  25. 6 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeViewModel.kt
  26. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PositionDetailsActivity.kt
  27. BIN
      RMA/app/src/main/res/mipmap-hdpi/ic_launcher.png
  28. BIN
      RMA/app/src/main/res/mipmap-mdpi/ic_launcher.png
  29. BIN
      RMA/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  30. BIN
      RMA/app/src/main/res/mipmap-xhdpi/img_start.png
  31. BIN
      RMA/app/src/main/res/mipmap-xhdpi/qhj_agreement_normal.png
  32. BIN
      RMA/app/src/main/res/mipmap-xhdpi/qhj_agreement_select.png
  33. BIN
      RMA/app/src/main/res/mipmap-xhdpi/rma_login_logo.png
  34. BIN
      RMA/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  35. BIN
      RMA/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png

+ 2 - 2
RMA/app/build.gradle

@@ -19,8 +19,8 @@ android {
         applicationId "cn.muchinfo.rma"
         minSdkVersion 24
         targetSdkVersion 30
-        versionCode 50009
-        versionName "5.0.09"
+        versionCode 50010
+        versionName "5.0.10"
         multiDexEnabled true
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         //指定room.schemaLocation生成的文件路径

+ 3 - 0
RMA/app/src/main/AndroidManifest.xml

@@ -348,6 +348,9 @@
         <activity android:name=".view.base.main.withdrawmanagement.WithDrawLogActivity"/>
 
         <activity android:name=".view.base.main.PaySuccessActivity"/>
+
+        <activity android:name=".view.base.AgreementActivity"/>
+
     </application>
 
 </manifest>

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

@@ -1,6 +1,7 @@
 package cn.muchinfo.rma.business.account
 
 import cn.muchinfo.rma.business.account.adapter.AccountAdapter
+import cn.muchinfo.rma.business.bank.adapter.BankAdapter
 import cn.muchinfo.rma.business.commodity.adapter.CommodityAdapter
 import cn.muchinfo.rma.business.contract.adapter.ContractAdapter
 import cn.muchinfo.rma.global.GlobalDataCollection
@@ -946,5 +947,96 @@ class AccountManager {
         )
     }
 
+    /**
+     * 客户协议签约操作请求
+     * @param nodetype Int 环节类型 - 1:注册  2:登录 3:购买 4:融资购买 5:定投 6:卖出  99:首次交易
+     * @param goodsid Long 商品ID
+     * @param agreementids List<Long> 协议
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun QHJCustomerSignStatusOperateReq(
+        nodetype : Int,
+        goodsid : Long,
+        agreementids : List<Long>,
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = AccountAdapter.getQHJCustomerSignStatusOperateReqInfo(
+            nodetype, goodsid, agreementids
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.FID_QHJCustomerSignStatusOperateRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = AccountAdapter.analysisQHJCustomerSignStatusOperateRsq(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+            }
+        )
+    }
+
+    /**
+     * 查询协议 登录注册时调用
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<BankInfoData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryUserNodeCfgAndStatusGetForUrl(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<UserNodeCfgAndStatusData>?, error: Error?) -> Unit
+    ){
+        MyOkHttpUtils().queryGetForUrl(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/QhjSys/QueryUserNodeCfgAndStatus",
+            params = params,
+            callback = object : ResponseCallback<BaseResult<List<UserNodeCfgAndStatusData>>>() {
+                override fun onResponse(response: BaseResult<List<UserNodeCfgAndStatusData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+            }
+        )
+    }
+
+
+    /**
+     * 查询协议
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<BankInfoData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryUserNodeCfgAndStatus(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<UserNodeCfgAndStatusData>?, error: Error?) -> Unit
+    ){
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/QhjSys/QueryUserNodeCfgAndStatus",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<UserNodeCfgAndStatusData>>>() {
+                override fun onResponse(response: BaseResult<List<UserNodeCfgAndStatusData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+            }
+        )
+    }
+
 
 }

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

@@ -9,6 +9,7 @@ import cn.muchinfo.rma.netcore.packet.Packet50
 import cn.muchinfo.rma.protobuf.funcode.FunCode
 import cn.muchinfo.rma.protobuf.protoclasses.ErmcpMI1
 import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2
+import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3
 import cn.muchinfo.rma.protobuf.protoclasses.SystemMI1
 import cn.muchinfo.rma.view.base.app.Constant
 import com.blankj.utilcode.util.LogUtils
@@ -595,6 +596,64 @@ class AccountAdapter {
         }
 
         /**
+         * 客户协议签约操作请求报文装箱
+         * @param nodetype Int 环节类型 - 1:注册  2:登录 3:购买 4:融资购买 5:定投 6:卖出  99:首次交易
+         * @param goodsid Long 商品ID [默认为0, NodeType>=3 的为商品值]
+         * @param agreementids List<Long> 协议
+         * @return Packet50
+         */
+        fun getQHJCustomerSignStatusOperateReqInfo(
+            nodetype : Int,
+            goodsid : Long,
+            agreementids : List<Long>
+        ) : Packet50{
+            val builder = ManageServiceMI3.QHJCustomerSignStatusOperateReq.newBuilder()
+            val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+
+            builder.setHeader(
+                MessageHeadModel.getHead(
+                    FunCode.FID_QHJCustomerSignStatusOperateReq,
+                    loginInfo.userID,
+                    0,
+                    0,
+                    18
+                )
+            )
+
+            builder.userid = loginInfo.userID.toLong()
+            builder.addAllAgreementids(agreementids)
+            builder.nodetype = nodetype
+            builder.goodsid = goodsid
+            val arrayOutputStream = ByteArrayOutputStream()
+            builder.build().writeTo(arrayOutputStream)
+            return Packet50(FunCode.FID_QHJCustomerSignStatusOperateReq, arrayOutputStream.toByteArray())
+        }
+
+
+        /**
+         * 客户协议签约操作响应报文解析
+         * @param packet50 Packet50
+         * @return Triple<Boolean, Error?, ManageServiceMI2.TaaccountOperateRsp?>
+         */
+        fun analysisQHJCustomerSignStatusOperateRsq(packet50: Packet50): Triple<Boolean, Error?, ManageServiceMI3.QHJCustomerSignStatusOperateRsp?> {
+            return try {
+                val resultRsp = ManageServiceMI3.QHJCustomerSignStatusOperateRsp.parseFrom(packet50.content)
+                if (resultRsp.retCode == 0) {
+                    // 操作成功
+                    Triple(true, null, resultRsp)
+                }  else if (resultRsp.retCode == -1){
+                    Triple(false,  Error(resultRsp.retDesc), null)
+                }else {
+                    // 操作失败
+                    Triple(false, Error(ErrorMessageUtils.getErrorString(resultRsp.retCode)), null)
+                }
+            } catch (e: Exception) {
+                // 操作失败
+                Triple(false, Error("装箱失败"), null)
+            }
+        }
+
+        /**
          * 登录账户操作请求报文装箱
          * @param operatetype Int 操作类型-1:新增 2:修改 3:新增管理员 4:修改管理员 5:锁定 6:解锁 7:注销 8:恢复 9:重置密码
          * @param userid Long 用户ID(新增成功接口返回的userid)

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/money/MoneyManager.kt

@@ -31,6 +31,8 @@ class MoneyManager {
     fun cancelPaymentReq(
         TradeID : Long,
         AccountID : Long,
+        goodsID: Int,
+        marketid : Int,
         callback: (isCompleted: Boolean, err: Error?) -> Unit
     ){
         val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
@@ -39,7 +41,7 @@ class MoneyManager {
         }
 
         val reqPacket = MoneyAdapter.getCancelPaymentReqInfo(
-            TradeID, AccountID
+            TradeID, AccountID, goodsID, marketid
         )
 
         tradeSocketManager.send(

+ 6 - 4
RMA/app/src/main/java/cn/muchinfo/rma/business/money/adapter/MoneyAdapter.kt

@@ -392,7 +392,9 @@ object MoneyAdapter {
      */
     fun getCancelPaymentReqInfo(
         TradeID : Long,
-        AccountID : Long
+        AccountID : Long,
+        goodsID: Int,
+        marketid : Int
     ) : Packet50{
         val builder = TkernelMI1.CancelPaymentReq.newBuilder()
         val loginInfo = GlobalDataCollection.instance?.loginRsp!!
@@ -401,9 +403,9 @@ object MoneyAdapter {
             MessageHeadModel.getHead(
                 FunCode.FID_CancelPaymentReq,
                 loginInfo.userID,
-                0,
-                0,
-                18
+                AccountID,
+                goodsID,
+                marketid
             )
         )
 

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt

@@ -335,7 +335,7 @@ fun String.payflag() : String{
             str = "已撤销"
         }
         this == "5" -> {
-            str = "结算过期"
+            str = "已过期"// 错误#96139 设计周亚芳让这么改的
         }
         this == "6" -> {
             str = "预售终止"

+ 4 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/QhjContractDetailsData.kt

@@ -24,6 +24,7 @@ data class QhjContractDetailsData(
     val scfcontractid : String? = "",//SCF合同ID(310+Unix秒时间戳(10位)+xxxxxx)//流水-剩余货款
     val scfcontracttype : String? = "",//合同类型 - 1:仓单回购 2:仓单质押 3:合作套保 4:资金贷款 5:融资单
     val totalinterest : String? = "",//已计总利息(利息)
+    val scfcontractstatus : String? = "",//合同状态 - 1:待确认 2:已确认 3:确认拒绝 4:已支付保证金 5:已激活 6:已违约 7:到期结束 8:延期结束 9:违约结束 10:已注销 11:已关闭 99:未提交
     val tradeprice : String? = "",//成交价格(成本价格)
     val userid : String? = "",//用户ID
     val username : String? = "",//用户名称
@@ -61,6 +62,7 @@ data class QhjContractDetailsData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
+        parcel.readString(),
         parcel.readInt(),
         parcel.readString()
     ) {
@@ -84,6 +86,7 @@ data class QhjContractDetailsData(
         parcel.writeString(scfcontractid)
         parcel.writeString(scfcontracttype)
         parcel.writeString(totalinterest)
+        parcel.writeString(scfcontractstatus)
         parcel.writeString(tradeprice)
         parcel.writeString(userid)
         parcel.writeString(username)
@@ -109,4 +112,5 @@ data class QhjContractDetailsData(
         }
     }
 
+
 }

+ 99 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/UserNodeCfgAndStatusData.kt

@@ -0,0 +1,99 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+
+/**
+ *
+ * @property agreementcontent String
+ * @property agreementid String
+ * @property agreementname String
+ * @property agreementno String
+ * @property agreementtype String
+ * @property agreementversion String
+ * @property configid String
+ * @property createtime String
+ * @property goodsid String
+ * @property nodetype String
+ * @property signtimestamp String
+ * @property tradedate String
+ * @property userid String
+ * @constructor
+ */
+data class UserNodeCfgAndStatusData(
+    @SerializedName("agreementcontent")
+    val agreementcontent : String? = "",//协议内容
+    @SerializedName("agreementid")
+    val agreementid : String? = "",//协议ID
+    @SerializedName("agreementname")
+    val agreementname : String? = "",//协议名称
+    @SerializedName("agreementno")
+    val agreementno : String? = "",//协议编号
+    @SerializedName("agreementtype")
+    val agreementtype : String? = "",//协议类型 - 1:注册 2:登录 3:交易
+    @SerializedName("agreementversion")
+    val agreementversion : String? = "",//协议版本号
+    @SerializedName("configid")
+    val configid : String? = "",//配置(SEQ_QHJ_NODEAGREEMENTCONFIG)
+    @SerializedName("createtime")
+    val createtime : String? = "",//创建时间
+    @SerializedName("goodsid")
+    val goodsid : String? = "",//商品ID [默认为0, NodeType>=3 的为商品值]
+    @SerializedName("nodetype")
+    val nodetype : String? = "",//环节类型 - 1:注册 2:登录 3:购买 4:融资购买 5:定投 6:卖出
+    @SerializedName("signtimestamp")
+    val signtimestamp : String? = "",//签约状态时间戳(最近一次)
+    @SerializedName("tradedate")
+    val tradedate : String? = "",//签约交易日(yyyyMMdd)
+    @SerializedName("userid")
+    val userid : String? = ""//客户ID
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(agreementcontent)
+        parcel.writeString(agreementid)
+        parcel.writeString(agreementname)
+        parcel.writeString(agreementno)
+        parcel.writeString(agreementtype)
+        parcel.writeString(agreementversion)
+        parcel.writeString(configid)
+        parcel.writeString(createtime)
+        parcel.writeString(goodsid)
+        parcel.writeString(nodetype)
+        parcel.writeString(signtimestamp)
+        parcel.writeString(tradedate)
+        parcel.writeString(userid)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<UserNodeCfgAndStatusData> {
+        override fun createFromParcel(parcel: Parcel): UserNodeCfgAndStatusData {
+            return UserNodeCfgAndStatusData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<UserNodeCfgAndStatusData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

+ 5 - 0
RMA/app/src/main/java/cn/muchinfo/rma/protobuf/funcode/FunCode.java

@@ -291,6 +291,11 @@ public class FunCode {
     //入金应答
     public static final int FID_t2bBankDepositRsp = 589844;
 
+    //客户协议签约操作请求
+    public static final int FID_QHJCustomerSignStatusOperateReq = 1900735;
+    //客户协议签约操作响应
+    public static final int FID_QHJCustomerSignStatusOperateRsp = 1900736;
+
     /**
      * 交易委托请求(196639)
      */

+ 2549 - 130
RMA/app/src/main/java/cn/muchinfo/rma/protobuf/protoclasses/ManageServiceMI3.java

@@ -198,7 +198,7 @@ public final class ManageServiceMI3 {
     java.lang.String getRemark();
     /**
      * <pre>
-     * string ��ע
+     * string
      * </pre>
      *
      * <code>optional string Remark = 9;</code>
@@ -228,7 +228,7 @@ public final class ManageServiceMI3 {
 
     /**
      * <pre>
-     * uint32 ������Դ - 1:����� 2:�ն�
+     * uint32
      * </pre>
      *
      * <code>optional uint32 UpdateSrc = 11;</code>
@@ -237,7 +237,7 @@ public final class ManageServiceMI3 {
     boolean hasUpdateSrc();
     /**
      * <pre>
-     * uint32 ������Դ - 1:����� 2:�ն�
+     * uint32
      * </pre>
      *
      * <code>optional uint32 UpdateSrc = 11;</code>
@@ -247,7 +247,7 @@ public final class ManageServiceMI3 {
 
     /**
      * <pre>
-     * uint32 �������ͣ�1:����,2:�޸�,3:��ͣ,4:�ָ�,5:�ر�
+     * uint32
      * </pre>
      *
      * <code>optional uint32 OperateType = 12;</code>
@@ -256,7 +256,7 @@ public final class ManageServiceMI3 {
     boolean hasOperateType();
     /**
      * <pre>
-     * uint32 �������ͣ�1:����,2:�޸�,3:��ͣ,4:�ָ�,5:�ر�
+     * uint32
      * </pre>
      *
      * <code>optional uint32 OperateType = 12;</code>
@@ -266,7 +266,7 @@ public final class ManageServiceMI3 {
   }
   /**
    * <pre>
-   * �ͻ���Ͷ�������� 0 29 178
+   *
    * </pre>
    *
    * Protobuf type {@code ManageServiceMI2.QhjRegularlyStrategyReq}
@@ -9981,132 +9981,2551 @@ public final class ManageServiceMI3 {
 
   }
 
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_CustomerRefernumOperateReq_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_CustomerRefernumOperateReq_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_GoodsPickupOperateReq_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_GoodsPickupOperateReq_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_GoodsPickupOperateRsp_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_GoodsPickupOperateRsp_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ManageServiceMI2_TradeGoodsInfo_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ManageServiceMI2_TradeGoodsInfo_fieldAccessorTable;
+  public interface QHJCustomerSignStatusOperateReqOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI2.QHJCustomerSignStatusOperateReq)
+      com.google.protobuf.MessageOrBuilder {
 
-  public static com.google.protobuf.Descriptors.FileDescriptor
-      getDescriptor() {
-    return descriptor;
+    /**
+     * <pre>
+     * MessageHead
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return Whether the header field is set.
+     */
+    boolean hasHeader();
+    /**
+     * <pre>
+     * MessageHead
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return The header.
+     */
+    cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead getHeader();
+    /**
+     * <pre>
+     * MessageHead
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     */
+    cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder getHeaderOrBuilder();
+
+    /**
+     * <pre>
+     * uint64 �ͻ�ID
+     * </pre>
+     *
+     * <code>optional uint64 userid = 2;</code>
+     * @return Whether the userid field is set.
+     */
+    boolean hasUserid();
+    /**
+     * <pre>
+     * uint64 �ͻ�ID
+     * </pre>
+     *
+     * <code>optional uint64 userid = 2;</code>
+     * @return The userid.
+     */
+    long getUserid();
+
+    /**
+     * <pre>
+     * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+     * </pre>
+     *
+     * <code>optional uint32 nodetype = 3;</code>
+     * @return Whether the nodetype field is set.
+     */
+    boolean hasNodetype();
+    /**
+     * <pre>
+     * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+     * </pre>
+     *
+     * <code>optional uint32 nodetype = 3;</code>
+     * @return The nodetype.
+     */
+    int getNodetype();
+
+    /**
+     * <pre>
+     * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+     * </pre>
+     *
+     * <code>optional uint64 goodsid = 4;</code>
+     * @return Whether the goodsid field is set.
+     */
+    boolean hasGoodsid();
+    /**
+     * <pre>
+     * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+     * </pre>
+     *
+     * <code>optional uint64 goodsid = 4;</code>
+     * @return The goodsid.
+     */
+    long getGoodsid();
+
+    /**
+     * <pre>
+     * uint64 ��
+     * </pre>
+     *
+     * <code>repeated uint64 agreementids = 5;</code>
+     * @return A list containing the agreementids.
+     */
+    java.util.List<java.lang.Long> getAgreementidsList();
+    /**
+     * <pre>
+     * uint64 ��
+     * </pre>
+     *
+     * <code>repeated uint64 agreementids = 5;</code>
+     * @return The count of agreementids.
+     */
+    int getAgreementidsCount();
+    /**
+     * <pre>
+     * uint64 ��
+     * </pre>
+     *
+     * <code>repeated uint64 agreementids = 5;</code>
+     * @param index The index of the element to return.
+     * @return The agreementids at the given index.
+     */
+    long getAgreementids(int index);
   }
-  private static  com.google.protobuf.Descriptors.FileDescriptor
-      descriptor;
-  static {
-    java.lang.String[] descriptorData = {
-      "\n\026ManageServiceMI3.proto\022\020ManageServiceM" +
-      "I2\032\014Common.proto\032\017PublicMI1.proto\032\026Manag" +
-      "eServiceMI1.proto\"\250\002\n\027QhjRegularlyStrate" +
-      "gyReq\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\033\n\023R" +
-      "egularlyStrategyID\030\002 \001(\004\022\016\n\006UserID\030\003 \001(\004" +
-      "\022\017\n\007GoodsID\030\004 \001(\004\022\026\n\016RegularlyCycle\030\005 \001(" +
-      "\r\022\033\n\023RegularlyCycleValue\030\006 \001(\r\022\025\n\rRegula" +
-      "rlyMode\030\007 \001(\r\022\032\n\022RegularlyModeValue\030\010 \001(" +
-      "\001\022\016\n\006Remark\030\t \001(\t\022\021\n\tUpdatorID\030\n \001(\004\022\021\n\t" +
-      "UpdateSrc\030\013 \001(\r\022\023\n\013OperateType\030\014 \001(\r\"v\n\027" +
-      "QhjRegularlyStrategyRsp\022\034\n\006Header\030\001 \001(\0132" +
-      "\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDes" +
-      "c\030\003 \001(\t\022\033\n\023RegularlyStrategyID\030\004 \001(\004\"\207\001\n" +
-      "\032CustomerRefernumOperateReq\022\034\n\006Header\030\001 " +
-      "\001(\0132\014.MessageHead\022\023\n\013operatetype\030\002 \001(\r\022\025" +
-      "\n\rbrokerapplyid\030\003 \001(\004\022\016\n\006userid\030\004 \001(\004\022\017\n" +
-      "\007loginid\030\005 \001(\004\"\224\001\n\032CustomerRefernumOpera" +
-      "teRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\017\n\007R" +
-      "etCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\025\n\rbrokera" +
-      "pplyid\030\004 \001(\004\022\016\n\006userid\030\005 \001(\004\022\017\n\007loginid\030" +
-      "\006 \001(\004\"\260\001\n\025GoodsPickupOperateReq\022\034\n\006Heade" +
-      "r\030\001 \001(\0132\014.MessageHead\022\023\n\013operatetype\030\002 \001" +
-      "(\r\022\023\n\013takeorderid\030\003 \001(\004\022\016\n\006userid\030\004 \001(\004\022" +
-      "\017\n\007loginid\030\005 \001(\004\022.\n\004info\030\006 \001(\0132 .ManageS" +
-      "erviceMI2.TradeGoodsInfo\"\215\001\n\025GoodsPickup" +
-      "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\023\n\013ta" +
-      "keorderid\030\004 \001(\004\022\016\n\006userid\030\005 \001(\004\022\017\n\007login" +
-      "id\030\006 \001(\004\"<\n\016TradeGoodsInfo\022\026\n\016expresscom" +
-      "pany\030\001 \001(\t\022\022\n\nexpressnum\030\002 \001(\tB?\n%cn.muc" +
-      "hinfo.rma.protobuf.protoclassesZ\026com.muc" +
-      "hinfo.mtp.proto"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-          cn.muchinfo.rma.protobuf.protoclasses.Common.getDescriptor(),
-          cn.muchinfo.rma.protobuf.protoclasses.PublicMI1.getDescriptor(),
-          cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI1.getDescriptor(),
-        });
-    internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_descriptor,
-        new java.lang.String[] { "Header", "RegularlyStrategyID", "UserID", "GoodsID", "RegularlyCycle", "RegularlyCycleValue", "RegularlyMode", "RegularlyModeValue", "Remark", "UpdatorID", "UpdateSrc", "OperateType", });
-    internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_descriptor,
-        new java.lang.String[] { "Header", "RetCode", "RetDesc", "RegularlyStrategyID", });
-    internal_static_ManageServiceMI2_CustomerRefernumOperateReq_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_ManageServiceMI2_CustomerRefernumOperateReq_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_CustomerRefernumOperateReq_descriptor,
-        new java.lang.String[] { "Header", "Operatetype", "Brokerapplyid", "Userid", "Loginid", });
-    internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_descriptor,
-        new java.lang.String[] { "Header", "RetCode", "RetDesc", "Brokerapplyid", "Userid", "Loginid", });
-    internal_static_ManageServiceMI2_GoodsPickupOperateReq_descriptor =
-      getDescriptor().getMessageTypes().get(4);
-    internal_static_ManageServiceMI2_GoodsPickupOperateReq_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_GoodsPickupOperateReq_descriptor,
-        new java.lang.String[] { "Header", "Operatetype", "Takeorderid", "Userid", "Loginid", "Info", });
-    internal_static_ManageServiceMI2_GoodsPickupOperateRsp_descriptor =
-      getDescriptor().getMessageTypes().get(5);
-    internal_static_ManageServiceMI2_GoodsPickupOperateRsp_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_GoodsPickupOperateRsp_descriptor,
-        new java.lang.String[] { "Header", "RetCode", "RetDesc", "Takeorderid", "Userid", "Loginid", });
-    internal_static_ManageServiceMI2_TradeGoodsInfo_descriptor =
-      getDescriptor().getMessageTypes().get(6);
-    internal_static_ManageServiceMI2_TradeGoodsInfo_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ManageServiceMI2_TradeGoodsInfo_descriptor,
-        new java.lang.String[] { "Expresscompany", "Expressnum", });
+  /**
+   * <pre>
+   * �ͻ�Э��ǩԼ�������� 0 29 191
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI2.QHJCustomerSignStatusOperateReq}
+   */
+  public static final class QHJCustomerSignStatusOperateReq extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI2.QHJCustomerSignStatusOperateReq)
+      QHJCustomerSignStatusOperateReqOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use QHJCustomerSignStatusOperateReq.newBuilder() to construct.
+    private QHJCustomerSignStatusOperateReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private QHJCustomerSignStatusOperateReq() {
+      agreementids_ = emptyLongList();
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new QHJCustomerSignStatusOperateReq();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private QHJCustomerSignStatusOperateReq(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) != 0)) {
+                subBuilder = header_.toBuilder();
+              }
+              header_ = input.readMessage(cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(header_);
+                header_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              userid_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              nodetype_ = input.readUInt32();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              goodsid_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              if (!((mutable_bitField0_ & 0x00000010) != 0)) {
+                agreementids_ = newLongList();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              agreementids_.addLong(input.readUInt64());
+              break;
+            }
+            case 42: {
+              int length = input.readRawVarint32();
+              int limit = input.pushLimit(length);
+              if (!((mutable_bitField0_ & 0x00000010) != 0) && input.getBytesUntilLimit() > 0) {
+                agreementids_ = newLongList();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              while (input.getBytesUntilLimit() > 0) {
+                agreementids_.addLong(input.readUInt64());
+              }
+              input.popLimit(limit);
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000010) != 0)) {
+          agreementids_.makeImmutable(); // C
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.class, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.Builder.class);
+    }
+
+    private int bitField0_;
+    public static final int HEADER_FIELD_NUMBER = 1;
+    private cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead header_;
+    /**
+     * <pre>
+     * MessageHead
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return Whether the header field is set.
+     */
+    @java.lang.Override
+    public boolean hasHeader() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <pre>
+     * MessageHead
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return The header.
+     */
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead getHeader() {
+      return header_ == null ? cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+    }
+    /**
+     * <pre>
+     * MessageHead
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     */
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder getHeaderOrBuilder() {
+      return header_ == null ? cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+    }
+
+    public static final int USERID_FIELD_NUMBER = 2;
+    private long userid_;
+    /**
+     * <pre>
+     * uint64 �ͻ�ID
+     * </pre>
+     *
+     * <code>optional uint64 userid = 2;</code>
+     * @return Whether the userid field is set.
+     */
+    @java.lang.Override
+    public boolean hasUserid() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ͻ�ID
+     * </pre>
+     *
+     * <code>optional uint64 userid = 2;</code>
+     * @return The userid.
+     */
+    @java.lang.Override
+    public long getUserid() {
+      return userid_;
+    }
+
+    public static final int NODETYPE_FIELD_NUMBER = 3;
+    private int nodetype_;
+    /**
+     * <pre>
+     * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+     * </pre>
+     *
+     * <code>optional uint32 nodetype = 3;</code>
+     * @return Whether the nodetype field is set.
+     */
+    @java.lang.Override
+    public boolean hasNodetype() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+     * </pre>
+     *
+     * <code>optional uint32 nodetype = 3;</code>
+     * @return The nodetype.
+     */
+    @java.lang.Override
+    public int getNodetype() {
+      return nodetype_;
+    }
+
+    public static final int GOODSID_FIELD_NUMBER = 4;
+    private long goodsid_;
+    /**
+     * <pre>
+     * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+     * </pre>
+     *
+     * <code>optional uint64 goodsid = 4;</code>
+     * @return Whether the goodsid field is set.
+     */
+    @java.lang.Override
+    public boolean hasGoodsid() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+     * </pre>
+     *
+     * <code>optional uint64 goodsid = 4;</code>
+     * @return The goodsid.
+     */
+    @java.lang.Override
+    public long getGoodsid() {
+      return goodsid_;
+    }
+
+    public static final int AGREEMENTIDS_FIELD_NUMBER = 5;
+    private com.google.protobuf.Internal.LongList agreementids_;
+    /**
+     * <pre>
+     * uint64 ��
+     * </pre>
+     *
+     * <code>repeated uint64 agreementids = 5;</code>
+     * @return A list containing the agreementids.
+     */
+    @java.lang.Override
+    public java.util.List<java.lang.Long>
+        getAgreementidsList() {
+      return agreementids_;
+    }
+    /**
+     * <pre>
+     * uint64 ��
+     * </pre>
+     *
+     * <code>repeated uint64 agreementids = 5;</code>
+     * @return The count of agreementids.
+     */
+    public int getAgreementidsCount() {
+      return agreementids_.size();
+    }
+    /**
+     * <pre>
+     * uint64 ��
+     * </pre>
+     *
+     * <code>repeated uint64 agreementids = 5;</code>
+     * @param index The index of the element to return.
+     * @return The agreementids at the given index.
+     */
+    public long getAgreementids(int index) {
+      return agreementids_.getLong(index);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeMessage(1, getHeader());
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeUInt64(2, userid_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeUInt32(3, nodetype_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt64(4, goodsid_);
+      }
+      for (int i = 0; i < agreementids_.size(); i++) {
+        output.writeUInt64(5, agreementids_.getLong(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getHeader());
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(2, userid_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, nodetype_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, goodsid_);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < agreementids_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeUInt64SizeNoTag(agreementids_.getLong(i));
+        }
+        size += dataSize;
+        size += 1 * getAgreementidsList().size();
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq other = (cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasUserid() != other.hasUserid()) return false;
+      if (hasUserid()) {
+        if (getUserid()
+            != other.getUserid()) return false;
+      }
+      if (hasNodetype() != other.hasNodetype()) return false;
+      if (hasNodetype()) {
+        if (getNodetype()
+            != other.getNodetype()) return false;
+      }
+      if (hasGoodsid() != other.hasGoodsid()) return false;
+      if (hasGoodsid()) {
+        if (getGoodsid()
+            != other.getGoodsid()) return false;
+      }
+      if (!getAgreementidsList()
+          .equals(other.getAgreementidsList())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasHeader()) {
+        hash = (37 * hash) + HEADER_FIELD_NUMBER;
+        hash = (53 * hash) + getHeader().hashCode();
+      }
+      if (hasUserid()) {
+        hash = (37 * hash) + USERID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getUserid());
+      }
+      if (hasNodetype()) {
+        hash = (37 * hash) + NODETYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getNodetype();
+      }
+      if (hasGoodsid()) {
+        hash = (37 * hash) + GOODSID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getGoodsid());
+      }
+      if (getAgreementidsCount() > 0) {
+        hash = (37 * hash) + AGREEMENTIDS_FIELD_NUMBER;
+        hash = (53 * hash) + getAgreementidsList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * <pre>
+     * �ͻ�Э��ǩԼ�������� 0 29 191
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI2.QHJCustomerSignStatusOperateReq}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI2.QHJCustomerSignStatusOperateReq)
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReqOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.class, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getHeaderFieldBuilder();
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (headerBuilder_ == null) {
+          header_ = null;
+        } else {
+          headerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        userid_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        nodetype_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        goodsid_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        agreementids_ = emptyLongList();
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq build() {
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq result = new cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          if (headerBuilder_ == null) {
+            result.header_ = header_;
+          } else {
+            result.header_ = headerBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000001;
+        }
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          result.userid_ = userid_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.nodetype_ = nodetype_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.goodsid_ = goodsid_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((bitField0_ & 0x00000010) != 0)) {
+          agreementids_.makeImmutable();
+          bitField0_ = (bitField0_ & ~0x00000010);
+        }
+        result.agreementids_ = agreementids_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasUserid()) {
+          setUserid(other.getUserid());
+        }
+        if (other.hasNodetype()) {
+          setNodetype(other.getNodetype());
+        }
+        if (other.hasGoodsid()) {
+          setGoodsid(other.getGoodsid());
+        }
+        if (!other.agreementids_.isEmpty()) {
+          if (agreementids_.isEmpty()) {
+            agreementids_ = other.agreementids_;
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            ensureAgreementidsIsMutable();
+            agreementids_.addAll(other.agreementids_);
+          }
+          onChanged();
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead header_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder> headerBuilder_;
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       * @return Whether the header field is set.
+       */
+      public boolean hasHeader() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       * @return The header.
+       */
+      public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead getHeader() {
+        if (headerBuilder_ == null) {
+          return header_ == null ? cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+        } else {
+          return headerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder setHeader(cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead value) {
+        if (headerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          header_ = value;
+          onChanged();
+        } else {
+          headerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder setHeader(
+          cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder builderForValue) {
+        if (headerBuilder_ == null) {
+          header_ = builderForValue.build();
+          onChanged();
+        } else {
+          headerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder mergeHeader(cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead value) {
+        if (headerBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0) &&
+              header_ != null &&
+              header_ != cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance()) {
+            header_ =
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.newBuilder(header_).mergeFrom(value).buildPartial();
+          } else {
+            header_ = value;
+          }
+          onChanged();
+        } else {
+          headerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder clearHeader() {
+        if (headerBuilder_ == null) {
+          header_ = null;
+          onChanged();
+        } else {
+          headerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder getHeaderBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getHeaderFieldBuilder().getBuilder();
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder getHeaderOrBuilder() {
+        if (headerBuilder_ != null) {
+          return headerBuilder_.getMessageOrBuilder();
+        } else {
+          return header_ == null ?
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+        }
+      }
+      /**
+       * <pre>
+       * MessageHead
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder> 
+          getHeaderFieldBuilder() {
+        if (headerBuilder_ == null) {
+          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder>(
+                  getHeader(),
+                  getParentForChildren(),
+                  isClean());
+          header_ = null;
+        }
+        return headerBuilder_;
+      }
+
+      private long userid_ ;
+      /**
+       * <pre>
+       * uint64 �ͻ�ID
+       * </pre>
+       *
+       * <code>optional uint64 userid = 2;</code>
+       * @return Whether the userid field is set.
+       */
+      @java.lang.Override
+      public boolean hasUserid() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ͻ�ID
+       * </pre>
+       *
+       * <code>optional uint64 userid = 2;</code>
+       * @return The userid.
+       */
+      @java.lang.Override
+      public long getUserid() {
+        return userid_;
+      }
+      /**
+       * <pre>
+       * uint64 �ͻ�ID
+       * </pre>
+       *
+       * <code>optional uint64 userid = 2;</code>
+       * @param value The userid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUserid(long value) {
+        bitField0_ |= 0x00000002;
+        userid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ͻ�ID
+       * </pre>
+       *
+       * <code>optional uint64 userid = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearUserid() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        userid_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int nodetype_ ;
+      /**
+       * <pre>
+       * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+       * </pre>
+       *
+       * <code>optional uint32 nodetype = 3;</code>
+       * @return Whether the nodetype field is set.
+       */
+      @java.lang.Override
+      public boolean hasNodetype() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+       * </pre>
+       *
+       * <code>optional uint32 nodetype = 3;</code>
+       * @return The nodetype.
+       */
+      @java.lang.Override
+      public int getNodetype() {
+        return nodetype_;
+      }
+      /**
+       * <pre>
+       * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+       * </pre>
+       *
+       * <code>optional uint32 nodetype = 3;</code>
+       * @param value The nodetype to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNodetype(int value) {
+        bitField0_ |= 0x00000004;
+        nodetype_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 �������� - 1:ע��  2:��¼ 3:���� 4:���ʹ��� 5:��Ͷ 6:����  99:�״ν���
+       * </pre>
+       *
+       * <code>optional uint32 nodetype = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearNodetype() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        nodetype_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long goodsid_ ;
+      /**
+       * <pre>
+       * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+       * </pre>
+       *
+       * <code>optional uint64 goodsid = 4;</code>
+       * @return Whether the goodsid field is set.
+       */
+      @java.lang.Override
+      public boolean hasGoodsid() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+       * </pre>
+       *
+       * <code>optional uint64 goodsid = 4;</code>
+       * @return The goodsid.
+       */
+      @java.lang.Override
+      public long getGoodsid() {
+        return goodsid_;
+      }
+      /**
+       * <pre>
+       * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+       * </pre>
+       *
+       * <code>optional uint64 goodsid = 4;</code>
+       * @param value The goodsid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setGoodsid(long value) {
+        bitField0_ |= 0x00000008;
+        goodsid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ��ƷID [Ĭ��Ϊ0, NodeType&gt;=3 ��Ϊ��Ʒֵ]
+       * </pre>
+       *
+       * <code>optional uint64 goodsid = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearGoodsid() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        goodsid_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.Internal.LongList agreementids_ = emptyLongList();
+      private void ensureAgreementidsIsMutable() {
+        if (!((bitField0_ & 0x00000010) != 0)) {
+          agreementids_ = mutableCopy(agreementids_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @return A list containing the agreementids.
+       */
+      public java.util.List<java.lang.Long>
+          getAgreementidsList() {
+        return ((bitField0_ & 0x00000010) != 0) ?
+                 java.util.Collections.unmodifiableList(agreementids_) : agreementids_;
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @return The count of agreementids.
+       */
+      public int getAgreementidsCount() {
+        return agreementids_.size();
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @param index The index of the element to return.
+       * @return The agreementids at the given index.
+       */
+      public long getAgreementids(int index) {
+        return agreementids_.getLong(index);
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @param index The index to set the value at.
+       * @param value The agreementids to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAgreementids(
+          int index, long value) {
+        ensureAgreementidsIsMutable();
+        agreementids_.setLong(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @param value The agreementids to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAgreementids(long value) {
+        ensureAgreementidsIsMutable();
+        agreementids_.addLong(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @param values The agreementids to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllAgreementids(
+          java.lang.Iterable<? extends java.lang.Long> values) {
+        ensureAgreementidsIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, agreementids_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ��
+       * </pre>
+       *
+       * <code>repeated uint64 agreementids = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAgreementids() {
+        agreementids_ = emptyLongList();
+        bitField0_ = (bitField0_ & ~0x00000010);
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:ManageServiceMI2.QHJCustomerSignStatusOperateReq)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI2.QHJCustomerSignStatusOperateReq)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<QHJCustomerSignStatusOperateReq>
+        PARSER = new com.google.protobuf.AbstractParser<QHJCustomerSignStatusOperateReq>() {
+      @java.lang.Override
+      public QHJCustomerSignStatusOperateReq parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new QHJCustomerSignStatusOperateReq(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<QHJCustomerSignStatusOperateReq> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<QHJCustomerSignStatusOperateReq> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateReq getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface QHJCustomerSignStatusOperateRspOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI2.QHJCustomerSignStatusOperateRsp)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <pre>
+     * MessageHead ��Ϣͷ
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return Whether the header field is set.
+     */
+    boolean hasHeader();
+    /**
+     * <pre>
+     * MessageHead ��Ϣͷ
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return The header.
+     */
+    cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead getHeader();
+    /**
+     * <pre>
+     * MessageHead ��Ϣͷ
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     */
+    cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder getHeaderOrBuilder();
+
+    /**
+     * <pre>
+     * int32 ������
+     * </pre>
+     *
+     * <code>optional int32 RetCode = 2;</code>
+     * @return Whether the retCode field is set.
+     */
+    boolean hasRetCode();
+    /**
+     * <pre>
+     * int32 ������
+     * </pre>
+     *
+     * <code>optional int32 RetCode = 2;</code>
+     * @return The retCode.
+     */
+    int getRetCode();
+
+    /**
+     * <pre>
+     * string ������Ϣ
+     * </pre>
+     *
+     * <code>optional string RetDesc = 3;</code>
+     * @return Whether the retDesc field is set.
+     */
+    boolean hasRetDesc();
+    /**
+     * <pre>
+     * string ������Ϣ
+     * </pre>
+     *
+     * <code>optional string RetDesc = 3;</code>
+     * @return The retDesc.
+     */
+    java.lang.String getRetDesc();
+    /**
+     * <pre>
+     * string ������Ϣ
+     * </pre>
+     *
+     * <code>optional string RetDesc = 3;</code>
+     * @return The bytes for retDesc.
+     */
+    com.google.protobuf.ByteString
+        getRetDescBytes();
+  }
+  /**
+   * <pre>
+   * �ͻ�Э��ǩԼ������Ӧ 0 29 192
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI2.QHJCustomerSignStatusOperateRsp}
+   */
+  public static final class QHJCustomerSignStatusOperateRsp extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI2.QHJCustomerSignStatusOperateRsp)
+      QHJCustomerSignStatusOperateRspOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use QHJCustomerSignStatusOperateRsp.newBuilder() to construct.
+    private QHJCustomerSignStatusOperateRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private QHJCustomerSignStatusOperateRsp() {
+      retDesc_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new QHJCustomerSignStatusOperateRsp();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private QHJCustomerSignStatusOperateRsp(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) != 0)) {
+                subBuilder = header_.toBuilder();
+              }
+              header_ = input.readMessage(cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(header_);
+                header_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              retCode_ = input.readInt32();
+              break;
+            }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000004;
+              retDesc_ = bs;
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.class, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.Builder.class);
+    }
+
+    private int bitField0_;
+    public static final int HEADER_FIELD_NUMBER = 1;
+    private cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead header_;
+    /**
+     * <pre>
+     * MessageHead ��Ϣͷ
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return Whether the header field is set.
+     */
+    @java.lang.Override
+    public boolean hasHeader() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <pre>
+     * MessageHead ��Ϣͷ
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     * @return The header.
+     */
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead getHeader() {
+      return header_ == null ? cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+    }
+    /**
+     * <pre>
+     * MessageHead ��Ϣͷ
+     * </pre>
+     *
+     * <code>optional .MessageHead Header = 1;</code>
+     */
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder getHeaderOrBuilder() {
+      return header_ == null ? cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+    }
+
+    public static final int RETCODE_FIELD_NUMBER = 2;
+    private int retCode_;
+    /**
+     * <pre>
+     * int32 ������
+     * </pre>
+     *
+     * <code>optional int32 RetCode = 2;</code>
+     * @return Whether the retCode field is set.
+     */
+    @java.lang.Override
+    public boolean hasRetCode() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * int32 ������
+     * </pre>
+     *
+     * <code>optional int32 RetCode = 2;</code>
+     * @return The retCode.
+     */
+    @java.lang.Override
+    public int getRetCode() {
+      return retCode_;
+    }
+
+    public static final int RETDESC_FIELD_NUMBER = 3;
+    private volatile java.lang.Object retDesc_;
+    /**
+     * <pre>
+     * string ������Ϣ
+     * </pre>
+     *
+     * <code>optional string RetDesc = 3;</code>
+     * @return Whether the retDesc field is set.
+     */
+    @java.lang.Override
+    public boolean hasRetDesc() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * string ������Ϣ
+     * </pre>
+     *
+     * <code>optional string RetDesc = 3;</code>
+     * @return The retDesc.
+     */
+    @java.lang.Override
+    public java.lang.String getRetDesc() {
+      java.lang.Object ref = retDesc_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          retDesc_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * string ������Ϣ
+     * </pre>
+     *
+     * <code>optional string RetDesc = 3;</code>
+     * @return The bytes for retDesc.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getRetDescBytes() {
+      java.lang.Object ref = retDesc_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        retDesc_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeMessage(1, getHeader());
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeInt32(2, retCode_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, retDesc_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getHeader());
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(2, retCode_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, retDesc_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp other = (cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasRetCode() != other.hasRetCode()) return false;
+      if (hasRetCode()) {
+        if (getRetCode()
+            != other.getRetCode()) return false;
+      }
+      if (hasRetDesc() != other.hasRetDesc()) return false;
+      if (hasRetDesc()) {
+        if (!getRetDesc()
+            .equals(other.getRetDesc())) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasHeader()) {
+        hash = (37 * hash) + HEADER_FIELD_NUMBER;
+        hash = (53 * hash) + getHeader().hashCode();
+      }
+      if (hasRetCode()) {
+        hash = (37 * hash) + RETCODE_FIELD_NUMBER;
+        hash = (53 * hash) + getRetCode();
+      }
+      if (hasRetDesc()) {
+        hash = (37 * hash) + RETDESC_FIELD_NUMBER;
+        hash = (53 * hash) + getRetDesc().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * <pre>
+     * �ͻ�Э��ǩԼ������Ӧ 0 29 192
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI2.QHJCustomerSignStatusOperateRsp}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI2.QHJCustomerSignStatusOperateRsp)
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRspOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.class, cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getHeaderFieldBuilder();
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (headerBuilder_ == null) {
+          header_ = null;
+        } else {
+          headerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        retCode_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        retDesc_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp build() {
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp result = new cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          if (headerBuilder_ == null) {
+            result.header_ = header_;
+          } else {
+            result.header_ = headerBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000001;
+        }
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          result.retCode_ = retCode_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.retDesc_ = retDesc_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasRetCode()) {
+          setRetCode(other.getRetCode());
+        }
+        if (other.hasRetDesc()) {
+          bitField0_ |= 0x00000004;
+          retDesc_ = other.retDesc_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead header_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder> headerBuilder_;
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       * @return Whether the header field is set.
+       */
+      public boolean hasHeader() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       * @return The header.
+       */
+      public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead getHeader() {
+        if (headerBuilder_ == null) {
+          return header_ == null ? cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+        } else {
+          return headerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder setHeader(cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead value) {
+        if (headerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          header_ = value;
+          onChanged();
+        } else {
+          headerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder setHeader(
+          cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder builderForValue) {
+        if (headerBuilder_ == null) {
+          header_ = builderForValue.build();
+          onChanged();
+        } else {
+          headerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder mergeHeader(cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead value) {
+        if (headerBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0) &&
+              header_ != null &&
+              header_ != cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance()) {
+            header_ =
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.newBuilder(header_).mergeFrom(value).buildPartial();
+          } else {
+            header_ = value;
+          }
+          onChanged();
+        } else {
+          headerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public Builder clearHeader() {
+        if (headerBuilder_ == null) {
+          header_ = null;
+          onChanged();
+        } else {
+          headerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder getHeaderBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getHeaderFieldBuilder().getBuilder();
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      public cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder getHeaderOrBuilder() {
+        if (headerBuilder_ != null) {
+          return headerBuilder_.getMessageOrBuilder();
+        } else {
+          return header_ == null ?
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.getDefaultInstance() : header_;
+        }
+      }
+      /**
+       * <pre>
+       * MessageHead ��Ϣͷ
+       * </pre>
+       *
+       * <code>optional .MessageHead Header = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder> 
+          getHeaderFieldBuilder() {
+        if (headerBuilder_ == null) {
+          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHead.Builder, cn.muchinfo.rma.protobuf.protoclasses.Common.MessageHeadOrBuilder>(
+                  getHeader(),
+                  getParentForChildren(),
+                  isClean());
+          header_ = null;
+        }
+        return headerBuilder_;
+      }
+
+      private int retCode_ ;
+      /**
+       * <pre>
+       * int32 ������
+       * </pre>
+       *
+       * <code>optional int32 RetCode = 2;</code>
+       * @return Whether the retCode field is set.
+       */
+      @java.lang.Override
+      public boolean hasRetCode() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * int32 ������
+       * </pre>
+       *
+       * <code>optional int32 RetCode = 2;</code>
+       * @return The retCode.
+       */
+      @java.lang.Override
+      public int getRetCode() {
+        return retCode_;
+      }
+      /**
+       * <pre>
+       * int32 ������
+       * </pre>
+       *
+       * <code>optional int32 RetCode = 2;</code>
+       * @param value The retCode to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRetCode(int value) {
+        bitField0_ |= 0x00000002;
+        retCode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * int32 ������
+       * </pre>
+       *
+       * <code>optional int32 RetCode = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRetCode() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        retCode_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object retDesc_ = "";
+      /**
+       * <pre>
+       * string ������Ϣ
+       * </pre>
+       *
+       * <code>optional string RetDesc = 3;</code>
+       * @return Whether the retDesc field is set.
+       */
+      public boolean hasRetDesc() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * string ������Ϣ
+       * </pre>
+       *
+       * <code>optional string RetDesc = 3;</code>
+       * @return The retDesc.
+       */
+      public java.lang.String getRetDesc() {
+        java.lang.Object ref = retDesc_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            retDesc_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string ������Ϣ
+       * </pre>
+       *
+       * <code>optional string RetDesc = 3;</code>
+       * @return The bytes for retDesc.
+       */
+      public com.google.protobuf.ByteString
+          getRetDescBytes() {
+        java.lang.Object ref = retDesc_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          retDesc_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string ������Ϣ
+       * </pre>
+       *
+       * <code>optional string RetDesc = 3;</code>
+       * @param value The retDesc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRetDesc(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        retDesc_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string ������Ϣ
+       * </pre>
+       *
+       * <code>optional string RetDesc = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRetDesc() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        retDesc_ = getDefaultInstance().getRetDesc();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string ������Ϣ
+       * </pre>
+       *
+       * <code>optional string RetDesc = 3;</code>
+       * @param value The bytes for retDesc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRetDescBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        retDesc_ = value;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:ManageServiceMI2.QHJCustomerSignStatusOperateRsp)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI2.QHJCustomerSignStatusOperateRsp)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<QHJCustomerSignStatusOperateRsp>
+        PARSER = new com.google.protobuf.AbstractParser<QHJCustomerSignStatusOperateRsp>() {
+      @java.lang.Override
+      public QHJCustomerSignStatusOperateRsp parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new QHJCustomerSignStatusOperateRsp(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<QHJCustomerSignStatusOperateRsp> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<QHJCustomerSignStatusOperateRsp> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3.QHJCustomerSignStatusOperateRsp getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_CustomerRefernumOperateReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_CustomerRefernumOperateReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_GoodsPickupOperateReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_GoodsPickupOperateReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_GoodsPickupOperateRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_GoodsPickupOperateRsp_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_TradeGoodsInfo_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_TradeGoodsInfo_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\026ManageServiceMI3.proto\022\020ManageServiceM" +
+      "I2\032\014Common.proto\032\017PublicMI1.proto\032\026Manag" +
+      "eServiceMI1.proto\"\250\002\n\027QhjRegularlyStrate" +
+      "gyReq\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\033\n\023R" +
+      "egularlyStrategyID\030\002 \001(\004\022\016\n\006UserID\030\003 \001(\004" +
+      "\022\017\n\007GoodsID\030\004 \001(\004\022\026\n\016RegularlyCycle\030\005 \001(" +
+      "\r\022\033\n\023RegularlyCycleValue\030\006 \001(\r\022\025\n\rRegula" +
+      "rlyMode\030\007 \001(\r\022\032\n\022RegularlyModeValue\030\010 \001(" +
+      "\001\022\016\n\006Remark\030\t \001(\t\022\021\n\tUpdatorID\030\n \001(\004\022\021\n\t" +
+      "UpdateSrc\030\013 \001(\r\022\023\n\013OperateType\030\014 \001(\r\"v\n\027" +
+      "QhjRegularlyStrategyRsp\022\034\n\006Header\030\001 \001(\0132" +
+      "\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007RetDes" +
+      "c\030\003 \001(\t\022\033\n\023RegularlyStrategyID\030\004 \001(\004\"\207\001\n" +
+      "\032CustomerRefernumOperateReq\022\034\n\006Header\030\001 " +
+      "\001(\0132\014.MessageHead\022\023\n\013operatetype\030\002 \001(\r\022\025" +
+      "\n\rbrokerapplyid\030\003 \001(\004\022\016\n\006userid\030\004 \001(\004\022\017\n" +
+      "\007loginid\030\005 \001(\004\"\224\001\n\032CustomerRefernumOpera" +
+      "teRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\017\n\007R" +
+      "etCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\t\022\025\n\rbrokera" +
+      "pplyid\030\004 \001(\004\022\016\n\006userid\030\005 \001(\004\022\017\n\007loginid\030" +
+      "\006 \001(\004\"\260\001\n\025GoodsPickupOperateReq\022\034\n\006Heade" +
+      "r\030\001 \001(\0132\014.MessageHead\022\023\n\013operatetype\030\002 \001" +
+      "(\r\022\023\n\013takeorderid\030\003 \001(\004\022\016\n\006userid\030\004 \001(\004\022" +
+      "\017\n\007loginid\030\005 \001(\004\022.\n\004info\030\006 \001(\0132 .ManageS" +
+      "erviceMI2.TradeGoodsInfo\"\215\001\n\025GoodsPickup" +
+      "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\023\n\013ta" +
+      "keorderid\030\004 \001(\004\022\016\n\006userid\030\005 \001(\004\022\017\n\007login" +
+      "id\030\006 \001(\004\"<\n\016TradeGoodsInfo\022\026\n\016expresscom" +
+      "pany\030\001 \001(\t\022\022\n\nexpressnum\030\002 \001(\t\"\210\001\n\037QHJCu" +
+      "stomerSignStatusOperateReq\022\034\n\006Header\030\001 \001" +
+      "(\0132\014.MessageHead\022\016\n\006userid\030\002 \001(\004\022\020\n\010node" +
+      "type\030\003 \001(\r\022\017\n\007goodsid\030\004 \001(\004\022\024\n\014agreement" +
+      "ids\030\005 \003(\004\"a\n\037QHJCustomerSignStatusOperat" +
+      "eRsp\022\034\n\006Header\030\001 \001(\0132\014.MessageHead\022\017\n\007Re" +
+      "tCode\030\002 \001(\005\022\017\n\007RetDesc\030\003 \001(\tB?\n%cn.muchi" +
+      "nfo.rma.protobuf.protoclassesZ\026com.muchi" +
+      "nfo.mtp.proto"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          cn.muchinfo.rma.protobuf.protoclasses.Common.getDescriptor(),
+          cn.muchinfo.rma.protobuf.protoclasses.PublicMI1.getDescriptor(),
+          cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI1.getDescriptor(),
+        });
+    internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_QhjRegularlyStrategyReq_descriptor,
+        new java.lang.String[] { "Header", "RegularlyStrategyID", "UserID", "GoodsID", "RegularlyCycle", "RegularlyCycleValue", "RegularlyMode", "RegularlyModeValue", "Remark", "UpdatorID", "UpdateSrc", "OperateType", });
+    internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_QhjRegularlyStrategyRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "RegularlyStrategyID", });
+    internal_static_ManageServiceMI2_CustomerRefernumOperateReq_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_ManageServiceMI2_CustomerRefernumOperateReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_CustomerRefernumOperateReq_descriptor,
+        new java.lang.String[] { "Header", "Operatetype", "Brokerapplyid", "Userid", "Loginid", });
+    internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_CustomerRefernumOperateRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "Brokerapplyid", "Userid", "Loginid", });
+    internal_static_ManageServiceMI2_GoodsPickupOperateReq_descriptor =
+      getDescriptor().getMessageTypes().get(4);
+    internal_static_ManageServiceMI2_GoodsPickupOperateReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_GoodsPickupOperateReq_descriptor,
+        new java.lang.String[] { "Header", "Operatetype", "Takeorderid", "Userid", "Loginid", "Info", });
+    internal_static_ManageServiceMI2_GoodsPickupOperateRsp_descriptor =
+      getDescriptor().getMessageTypes().get(5);
+    internal_static_ManageServiceMI2_GoodsPickupOperateRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_GoodsPickupOperateRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "Takeorderid", "Userid", "Loginid", });
+    internal_static_ManageServiceMI2_TradeGoodsInfo_descriptor =
+      getDescriptor().getMessageTypes().get(6);
+    internal_static_ManageServiceMI2_TradeGoodsInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_TradeGoodsInfo_descriptor,
+        new java.lang.String[] { "Expresscompany", "Expressnum", });
+    internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_descriptor =
+      getDescriptor().getMessageTypes().get(7);
+    internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateReq_descriptor,
+        new java.lang.String[] { "Header", "Userid", "Nodetype", "Goodsid", "Agreementids", });
+    internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_descriptor =
+      getDescriptor().getMessageTypes().get(8);
+    internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI2_QHJCustomerSignStatusOperateRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", });
     cn.muchinfo.rma.protobuf.protoclasses.Common.getDescriptor();
     cn.muchinfo.rma.protobuf.protoclasses.PublicMI1.getDescriptor();
     cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI1.getDescriptor();

+ 50 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/AgreementActivity.kt

@@ -0,0 +1,50 @@
+package cn.muchinfo.rma.view.base
+
+import android.os.Bundle
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.UserNodeCfgAndStatusData
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.login.LoginViewModel
+import org.jetbrains.anko.*
+
+/**
+ * 通用的阅读协议的页面
+ */
+class AgreementActivity : BaseActivity<LoginViewModel>(){
+
+    val data by lazy { intent.getParcelableExtra<UserNodeCfgAndStatusData>("data") as UserNodeCfgAndStatusData }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            background = resources.getDrawable(R.color.white)
+            //头部标题
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    text = data.agreementname
+                }
+            }
+
+            scrollView {
+                verticalLayout {
+                    textView {
+                        textColorInt = R.color.rma_black_33
+                        textSizeAuto = 31
+                        text = data.agreementcontent
+                    }.lparams(wrapContent, wrapContent) {
+                        topMargin = autoSize(25)
+                        marginStart = autoSize(32)
+                        marginEnd = autoSize(32)
+                        bottomMargin = autoSize(100)
+                    }
+
+                    view {
+
+                    }.lparams(matchParent, autoSize(100))
+                }
+            }
+        }
+    }
+
+}

+ 11 - 11
RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/ChartActivity.kt

@@ -84,32 +84,32 @@ class ChartActivity : BaseActivity<ChartViewModel>() , View.OnClickListener{
         viewModel.quoteDayData.observe(this, Observer {
             findViewById<TextView>(R.id.business_value_value).text = NumberUtils.turnoverShort(it?.totalvolume.toString())//成交量
             findViewById<TextView>(R.id.holder_amount_value).text = NumberUtils.turnoverShort(it?.holdvolume.toString())//持仓量
-            findViewById<TextView>(R.id.daily_settlement_value).text = it?.presettle.toString().isBlankString()//昨结价
-            findViewById<TextView>(R.id.daily_close_value).text = it?.preclose.toString().isBlankString() //昨收
-            findViewById<TextView>(R.id.sell_price_value).text = it?.ask.toString().isBlankString()//卖价
-            findViewById<TextView>(R.id.buy_price_present).text = it?.bid.toString().isBlankString()//买价
-            findViewById<TextView>(R.id.highest_price_value).text = it?.highest.toString().isBlankString()//最高价
-            findViewById<TextView>(R.id.lowest_price_value).text = it?.lowest.toString().isBlankString()//最低价
+            findViewById<TextView>(R.id.daily_settlement_value).text = NumberUtils.doubleDistortion(it?.presettle.toString())//昨结价
+            findViewById<TextView>(R.id.daily_close_value).text = NumberUtils.doubleDistortion(it?.preclose.toString()) //昨收
+            findViewById<TextView>(R.id.sell_price_value).text = NumberUtils.doubleDistortion(it?.ask.toString())//卖价
+            findViewById<TextView>(R.id.buy_price_present).text = NumberUtils.doubleDistortion(it?.bid.toString())//买价
+            findViewById<TextView>(R.id.highest_price_value).text = NumberUtils.doubleDistortion(it?.highest.toString())//最高价
+            findViewById<TextView>(R.id.lowest_price_value).text = NumberUtils.doubleDistortion(it?.lowest.toString())//最低价
             if (it?.limitup == 0.0){
                 findViewById<TextView>(R.id.trading_limit_value).text = "--"
             }else{
-                findViewById<TextView>(R.id.trading_limit_value).text = it?.limitup.toString().isBlankString()//涨停价
+                findViewById<TextView>(R.id.trading_limit_value).text = NumberUtils.doubleDistortion(it?.limitup.toString())//涨停价
             }
             if (it?.limitdown == 0.0){
                 findViewById<TextView>(R.id.drop_limit_value).text = "--"
             }else{
-                findViewById<TextView>(R.id.drop_limit_value).text = it?.limitdown.toString().isBlankString()//跌停价
+                findViewById<TextView>(R.id.drop_limit_value).text = NumberUtils.doubleDistortion(it?.limitdown.toString())//跌停价
             }
             findViewById<TextView>(R.id.sell_amount_value).text = it?.askvolume.toString().isBlankString()//卖量
             findViewById<TextView>(R.id.buy_amount_present).text = it?.bidvolume.toString().isBlankString()//买量
             findViewById<TextView>(R.id.opening_quotation_value).text = it?.opened.toString().isBlankString()//开盘
-            findViewById<TextView>(R.id.average_price_value).text = it?.averageprice.toString().isBlankString()//均价
+            findViewById<TextView>(R.id.average_price_value).text = NumberUtils.doubleDistortion(it?.averageprice.toString())//均价
             if (it?.settle == 0.0){
                 findViewById<TextView>(R.id.settlement_price_value).text = "--"
             }else{
-                findViewById<TextView>(R.id.settlement_price_value).text = it?.settle.toString().isBlankString()//结算
+                findViewById<TextView>(R.id.settlement_price_value).text = NumberUtils.doubleDistortion(it?.settle.toString())//结算
             }
-            findViewById<TextView>(R.id.now_price_title).text = it?.last.toString()//最新价
+            findViewById<TextView>(R.id.now_price_title).text = NumberUtils.doubleDistortion(it?.last.toString())//最新价
             //和上一口价的差额
             val upDown = it?.pricesDifference()
             if (upDown == 0.0) {

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

@@ -25,6 +25,7 @@ import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.utils.EnUtil
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
+import cn.muchinfo.rma.view.base.AgreementActivity
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.app.Constant
 import cn.muchinfo.rma.view.base.home.contract.emptyView
@@ -110,7 +111,7 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
         QMUIStatusBarHelper.translucent(this)
 
         dialog.bindTaskStatus(context = this, taskUiModelData = viewModel.loadingDialogStatus)
-
+        viewModel.queryUserNodeCfgAndStatus()
         verticalLayout {
             backgroundResource = R.mipmap.rma_login_bg
             imageView {
@@ -331,15 +332,20 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
             }
 
             linearLayout {
-                gravity = Gravity.CENTER_VERTICAL
+                gravity = Gravity.CENTER_VERTICAL or Gravity.CENTER_HORIZONTAL
+                viewModel.userNodeCfgAndStatus.bindOptional(context){
+                    if (it?.size == 0){
+                        visibility = View.GONE
+                    }else{
+                        visibility = View.VISIBLE
+                    }
+                }
                 onThrottleFirstClick {
                     isReadAgreement.postValue(isReadAgreement.value?.not())
                     SPUtils.getInstance()
                         .put(Constant.READ_AGREEMENT, isReadAgreement.value?.not() ?: false)
                 }
 
-                emptyView()
-
                 imageView {
                     isReadAgreement.bindOptional(context) {
                         imageResource = if (it == true) {
@@ -359,21 +365,24 @@ class LoginActivity : BaseActivity<LoginViewModel>(), UserPopupWindow.OnClearAcc
                     marginStart = autoSize(15)
                 }
 
-                textView {
-                    onThrottleFirstClick {
-                        val intent = Intent()
-                        intent.setClass(context, AgreeMentActivity::class.java)
-                        ActivityUtils.startActivity(intent)
+                viewModel.userNodeCfgAndStatus.bindOptional(context){
+                    it?.forEach {data ->
+                        textView {
+                            onThrottleFirstClick {
+                                val intent = Intent()
+                                intent.putExtra("data",data)
+                                intent.setClass(context, AgreementActivity::class.java)
+                                ActivityUtils.startActivity(intent)
+                            }
+                            text = "《${data.agreementname}》"
+                            textSizeAuto = 31
+                            textColorStr = "#83B7FF"
+                        }.lparams(wrapContent, wrapContent) {
+                            marginStart = autoSize(15)
+                        }
                     }
-                    text = "《用户协议》"
-                    textSizeAuto = 31
-                    textColorStr = "#83B7FF"
-                }.lparams(wrapContent, wrapContent) {
-                    marginStart = autoSize(15)
                 }
 
-                emptyView()
-
             }.lparams(matchParent, autoSize(100))
 
             emptyView()

+ 16 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginViewModel.kt

@@ -1,6 +1,7 @@
 package cn.muchinfo.rma.view.base.login
 
 import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.data.UserNodeCfgAndStatusData
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.guard
@@ -21,6 +22,9 @@ class LoginViewModel : BaseViewModel() {
 
     val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData() // 加载状态控制
 
+    //登录请求的协议
+    val userNodeCfgAndStatus : MutableLiveData<List<UserNodeCfgAndStatusData>> = MutableLiveData()
+
     /**
      * 账户登录
      * @param code String 登录代码,可以是手机号码、LoginID或LoginCode
@@ -95,4 +99,16 @@ class LoginViewModel : BaseViewModel() {
             }
         }
     }
+
+    //nodetype 环节类型 - 1:注册 2:登录 3:购买 4:融资购买 5:定投 6:卖出
+    fun queryUserNodeCfgAndStatus(){
+        val params = mutableMapOf<String,String>().apply {
+            put("nodetype","2")
+        }
+        MyApplication.getInstance()?.accountManager?.queryUserNodeCfgAndStatusGetForUrl(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                userNodeCfgAndStatus.postValue(respData)
+            }
+        }
+    }
 }

+ 66 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/register/EnterpriseRegisterActivity.kt

@@ -1,6 +1,7 @@
 package cn.muchinfo.rma.view.base.login.register
 
 import android.app.Dialog
+import android.content.Intent
 import android.graphics.BitmapFactory
 import android.net.Uri
 import android.os.Bundle
@@ -14,16 +15,14 @@ import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.netManage.utils.UpLoadUtils
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.photopicter.PhotoUtils
+import cn.muchinfo.rma.view.base.AgreementActivity
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.app.Constant
 import cn.muchinfo.rma.view.base.future.trade.itemPaddingView
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.verticalEmptyView
 import com.alibaba.fastjson.JSON
-import com.blankj.utilcode.util.EncodeUtils
-import com.blankj.utilcode.util.LogUtils
-import com.blankj.utilcode.util.SPUtils
-import com.blankj.utilcode.util.ToastUtils
+import com.blankj.utilcode.util.*
 import com.zhy.http.okhttp.callback.StringCallback
 import mtp.polymer.com.autowidget.dialog.createLoadingDialog
 import mtp.polymer.com.autowidget.dialog.createWarningDialog
@@ -63,10 +62,15 @@ class EnterpriseRegisterActivity : BaseActivity<RegisterViewModel>() {
     //输入的联系人手机号
     lateinit var phone_number : EditText
 
+    //是否已勾选阅读用户协议
+    val isReadAgreement: MutableLiveData<Boolean> =
+        MutableLiveData<Boolean>().apply { value = false }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
             viewModel.getVerificationCode()
+            viewModel.queryUserNodeCfgAndStatus()
             loadingDialog = createLoadingDialog(hintStr = "请求中")
             loadingDialog?.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.main_hit_bg_color)
@@ -358,6 +362,58 @@ class EnterpriseRegisterActivity : BaseActivity<RegisterViewModel>() {
                 }
             }.lparams(matchParent, autoSize(300))
 
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL or Gravity.CENTER_HORIZONTAL
+                viewModel.userNodeCfgAndStatus.bindOptional(context){
+                    if (it?.size == 0){
+                        visibility = View.GONE
+                    }else{
+                        visibility = View.VISIBLE
+                    }
+                }
+                onThrottleFirstClick {
+                    isReadAgreement.postValue(isReadAgreement.value?.not())
+                }
+
+                imageView {
+                    isReadAgreement.bindOptional(context) {
+                        imageResource = if (it == true) {
+                            R.mipmap.qhj_agreement_select
+                        } else {
+                            R.mipmap.qhj_agreement_normal
+                        }
+                    }
+                    imageResource = R.mipmap.qhj_agreement_normal
+                }.lparams(autoSize(35), autoSize(35))
+
+                textView {
+                    text = "我已阅读并同意"
+                    textSizeAuto = 31
+                    textColorStr = "#666666"
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(15)
+                }
+
+                viewModel.userNodeCfgAndStatus.bindOptional(context){
+                    it?.forEach {data ->
+                        textView {
+                            onThrottleFirstClick {
+                                val intent = Intent()
+                                intent.putExtra("data",data)
+                                intent.setClass(context, AgreementActivity::class.java)
+                                ActivityUtils.startActivity(intent)
+                            }
+                            text = "《${data.agreementname}》"
+                            textSizeAuto = 31
+                            textColorStr = "#2794FF"
+                        }.lparams(wrapContent, wrapContent) {
+                            marginStart = autoSize(15)
+                        }
+                    }
+                }
+
+            }.lparams(matchParent, autoSize(100))
+
             verticalEmptyView()
 
             linearLayout {
@@ -397,6 +453,12 @@ class EnterpriseRegisterActivity : BaseActivity<RegisterViewModel>() {
 
     //注册前的输入内容校验
     fun check() : Boolean{
+
+        if (isReadAgreement.value == false) {
+            ToastUtils.showLong("请仔细阅读《用户协议》并勾选")
+            return false
+        }
+
         if (enterprise_name.text.toString().isNullOrEmpty()){
             ToastUtils.showLong("请输入企业名称")
             return false

+ 71 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/register/PersonalRegisterActivity.kt

@@ -1,6 +1,7 @@
 package cn.muchinfo.rma.view.base.login.register
 
 import android.app.Dialog
+import android.content.Intent
 import android.graphics.Typeface
 import android.os.Bundle
 import android.text.InputType
@@ -8,14 +9,20 @@ import android.view.Gravity
 import android.view.View
 import android.widget.EditText
 import android.widget.TextView
+import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.tool.IdentifyTextUtils
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
+import cn.muchinfo.rma.view.base.AgreementActivity
 import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.app.Constant
 import cn.muchinfo.rma.view.base.future.trade.itemPaddingView
 import cn.muchinfo.rma.view.base.home.contract.verticalEmptyView
+import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.AppUtils
+import com.blankj.utilcode.util.SPUtils
 import com.blankj.utilcode.util.ToastUtils
 import mtp.polymer.com.autowidget.dialog.createLoadingDialog
 import mtp.polymer.com.autowidget.dialog.createWarningDialog
@@ -44,10 +51,15 @@ class PersonalRegisterActivity : BaseActivity<RegisterViewModel>(){
     //获取验证码按钮
     lateinit var mail_btn: TextView
 
+    //是否已勾选阅读用户协议
+    val isReadAgreement: MutableLiveData<Boolean> =
+        MutableLiveData<Boolean>().apply { value = false }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
             loadingDialog = createLoadingDialog(hintStr = "请求中")
+            viewModel.queryUserNodeCfgAndStatus()
             loadingDialog?.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.white)
             //页面标题
@@ -217,6 +229,59 @@ class PersonalRegisterActivity : BaseActivity<RegisterViewModel>(){
                 }.lparams(matchParent, autoSize(100))
             }.lparams(matchParent, autoSize(166))
 
+
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL or Gravity.CENTER_HORIZONTAL
+                viewModel.userNodeCfgAndStatus.bindOptional(context){
+                    if (it?.size == 0){
+                        visibility = View.GONE
+                    }else{
+                        visibility = View.VISIBLE
+                    }
+                }
+                onThrottleFirstClick {
+                    isReadAgreement.postValue(isReadAgreement.value?.not())
+                }
+
+                imageView {
+                    isReadAgreement.bindOptional(context) {
+                        imageResource = if (it == true) {
+                            R.mipmap.qhj_agreement_select
+                        } else {
+                            R.mipmap.qhj_agreement_normal
+                        }
+                    }
+                    imageResource = R.mipmap.qhj_agreement_normal
+                }.lparams(autoSize(35), autoSize(35))
+
+                textView {
+                    text = "我已阅读并同意"
+                    textSizeAuto = 31
+                    textColorStr = "#666666"
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(15)
+                }
+
+                viewModel.userNodeCfgAndStatus.bindOptional(context){
+                    it?.forEach {data ->
+                        textView {
+                            onThrottleFirstClick {
+                                val intent = Intent()
+                                intent.putExtra("data",data)
+                                intent.setClass(context, AgreementActivity::class.java)
+                                ActivityUtils.startActivity(intent)
+                            }
+                            text = "《${data.agreementname}》"
+                            textSizeAuto = 31
+                            textColorStr = "#2794FF"
+                        }.lparams(wrapContent, wrapContent) {
+                            marginStart = autoSize(15)
+                        }
+                    }
+                }
+
+            }.lparams(matchParent, autoSize(100))
+
             verticalEmptyView()
 
             linearLayout {
@@ -257,6 +322,12 @@ class PersonalRegisterActivity : BaseActivity<RegisterViewModel>(){
 
     //个人注册时提交
     fun check() : Boolean{
+
+        if (isReadAgreement.value == false) {
+            ToastUtils.showLong("请仔细阅读《用户协议》并勾选")
+            return false
+        }
+
         if (phone_number.text.toString().isNullOrEmpty()){
             ToastUtils.showLong("请输入手机号")
             return false

+ 17 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/register/RegisterViewModel.kt

@@ -2,11 +2,13 @@ package cn.muchinfo.rma.view.base.login.register
 
 import android.widget.Toast
 import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.data.UserNodeCfgAndStatusData
 import cn.muchinfo.rma.global.data.VerificationCodeData
 import cn.muchinfo.rma.global.data.database.BannerEntity
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.netManage.base.ResponseCallback
 import cn.muchinfo.rma.netManage.utils.MyOkHttpUtils
+import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.tool.DesTools
 import cn.muchinfo.rma.view.base.BaseViewModel
 import cn.muchinfo.rma.view.base.app.Constant
@@ -35,6 +37,21 @@ class RegisterViewModel : BaseViewModel(){
     //请求企业图形码时用到的时间戳
     val timeMills : MutableLiveData<String> = MutableLiveData()
 
+    //注册请求的协议
+    val userNodeCfgAndStatus : MutableLiveData<List<UserNodeCfgAndStatusData>> = MutableLiveData()
+
+    //nodetype 环节类型 - 1:注册 2:登录 3:购买 4:融资购买 5:定投 6:卖出
+    fun queryUserNodeCfgAndStatus(){
+        val params = mutableMapOf<String,String>().apply {
+            put("nodetype","1")
+        }
+        MyApplication.getInstance()?.accountManager?.queryUserNodeCfgAndStatusGetForUrl(params = params){ isSuccess, respData, error ->
+            if (isSuccess){
+                userNodeCfgAndStatus.postValue(respData)
+            }
+        }
+    }
+
     //企业用户注册时获取的图形验证码
     fun getVerificationCode(){
         val timesMills = TimeUtils.getNowMills().toString()

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

@@ -371,7 +371,7 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                     selectTime.bindOptional(context){
                         text = if (it?.id == "1"){
                             "每周一次,每周"
-                        }else {"每月一次,每月"} + it?.value + "扣款"
+                        }else {"每月一次,每月"} + it?.value + "扣款"
                     }
                     text = "请选择定投频率"
                     textSizeAuto = 34

+ 8 - 8
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewModel.kt

@@ -105,7 +105,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
                 returnValue = "每周五"
             }
         }else{//月
-            returnValue = "每月" + regularlycyclevalue + ""
+            returnValue = "每月" + regularlycyclevalue + ""
         }
         return returnValue
     }
@@ -117,8 +117,8 @@ class MyCastSurelyViewModel : BaseViewModel(){
      */
     fun getCastSureRegularlyCycleValue(value : String) : String{
         var returnValue : String = "1"
-        if (value.contains("")){
-            returnValue = value.replace("","")
+        if (value.contains("")){
+            returnValue = value.replace("","")
         }else{
             if (value == "周一"){
                 returnValue = "1"
@@ -142,7 +142,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
         val jsonBean2 = JsonBean()//周的数据组装
         val c2List  = arrayListOf<JsonBean.CityBean>()//周的子数据
         val jsonBean1SonString = arrayListOf("周一","周二","周三","周四","周五")
-        val jsonBean2SonString = arrayListOf("1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号")
+        val jsonBean2SonString = arrayListOf("1日","2日","3日","4日","5日","6日","7日","8日","9日","10日","11日","12日","13日","14日","15日","16日","17日","18日","19日","20日","21日","22日","23日","24日","25日","26日","27日","28日")
         jsonBean1.autoId = "1"
         jsonBean1.name = "每周一次"
         jsonBean2.autoId = "2"
@@ -175,7 +175,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
     fun queryMyRStrategy(goodsid : String){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("status","1,2")//策略状态(可多选,逗隔开) - 1:正常 2:暂停 3:终止
+            put("status","1,2")//策略状态(可多选,逗隔开) - 1:正常 2:暂停 3:终止
         }
         MyApplication.getInstance()?.moneyManager?.queryRStrategy(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
@@ -194,7 +194,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
     fun queryRStrategy(){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("status","1,2")//策略状态(可多选,逗隔开) - 1:正常 2:暂停 3:终止
+            put("status","1,2")//策略状态(可多选,逗隔开) - 1:正常 2:暂停 3:终止
         }
         MyApplication.getInstance()?.moneyManager?.queryRStrategy(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
@@ -211,7 +211,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
     fun queryRStrategyHistory(){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("status","3")//策略状态(可多选,逗隔开) - 1:正常 2:暂停 3:终止
+            put("status","3")//策略状态(可多选,逗隔开) - 1:正常 2:暂停 3:终止
         }
         MyApplication.getInstance()?.moneyManager?.queryRStrategy(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
@@ -333,7 +333,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
      * @param regularlyStrategyID Long 定投策略ID
      * @param goodsID Long 定投商品ID
      * @param regularlyCycle Int 定投频率 - 1:每周 2:每月
-     * @param regularlyCycleValue Int 定投频率值 - 每周几(0-6)  或 每月几(<=28)
+     * @param regularlyCycleValue Int 定投频率值 - 每周几(0-6)  或 每月几(<=28)
      * @param regularlyMode Int 定投方式 - 1:按数量 2:按金额
      * @param regularlyModeValue Double  定投方式值 - 数量或金额
      * @param remark String 备注

+ 5 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodsSearchActivity.kt

@@ -33,6 +33,11 @@ class PickUpGoodsSearchActivity : BaseActivity<PickUpGoodsViewModel>(){
             )
         }
 
+    override fun onResume() {
+        super.onResume()
+        viewModel.queryTradeGoodsPickup()
+    }
+
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodsViewHolder.kt

@@ -34,7 +34,7 @@ class PickUpGoodsViewHolder(private val activity : AppCompatActivity,private val
                     //商品
                     textView {
                         data.bindOptional(context){
-                            text = it?.goodsname
+                            text = it?.pickupgoodsname
                         }
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
@@ -45,7 +45,7 @@ class PickUpGoodsViewHolder(private val activity : AppCompatActivity,private val
 
                     textView {
                         data.bindOptional(context){
-                            text = it?.updatetime
+                            text = it?.reqtime
                         }
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
@@ -119,7 +119,7 @@ class PickUpGoodsViewHolder(private val activity : AppCompatActivity,private val
                     }
                     onThrottleFirstClick {//自提
                         viewModel.queryGoodsPickupOperate(
-                            operatetype = 3,
+                            operatetype = 2,
                             takeorderid = data.value?.takeorderid?.toLong() ?: 0
                         ){
                             viewModel.queryTradeGoodsPickup()

+ 13 - 6
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/FinancialViewHolder.kt

@@ -42,10 +42,10 @@ class FinancialViewHolder(private val activity : AppCompatActivity,private val v
                 linearLayout {
                     imageView {
                         data.bindOptional(context){
-                            if (it?.currisklevel == "2" || it?.currisklevel == "3"){
-                                visibility = View.VISIBLE
-                            }else{
+                            if (it?.currisklevel == "1" || it?.scfcontractstatus == "11"){
                                 visibility = View.GONE
+                            }else{
+                                visibility = View.VISIBLE
                             }
                         }
                         imageResource = R.mipmap.qhj_warning
@@ -169,10 +169,10 @@ class FinancialViewHolder(private val activity : AppCompatActivity,private val v
 
                 textView {
                     data.bindOptional(context){
-                        if (it?.currisklevel == "2"){
-                            visibility = View.VISIBLE
-                        }else{
+                        if (it?.currisklevel != "2" || it.scfcontractstatus == "11"){
                             visibility = View.GONE
+                        }else{
+                            visibility = View.VISIBLE
                         }
                     }
                     onThrottleFirstClick {
@@ -199,6 +199,13 @@ class FinancialViewHolder(private val activity : AppCompatActivity,private val v
                 }
 
                 textView {
+                    data.bindOptional(context){
+                        if (it?.scfcontractstatus == "11"){
+                            visibility = View.GONE
+                        }else{
+                            visibility = View.VISIBLE
+                        }
+                    }
                     onThrottleFirstClick {
                         val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(data.value?.goodsid?.toInt() ?: 0)
                         val intent = Intent()

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/NoPayViewHolder.kt

@@ -192,7 +192,7 @@ class NoPayViewHolder(private val activity : AppCompatActivity,private val viewM
                         }
                     }
                     onThrottleFirstClick {
-                        viewModel.cancelPaymentReq(TradeID = data.value?.tradeid?.toLong() ?: 0,AccountID = GlobalDataCollection.instance?.accountId ?: 0){
+                        viewModel.cancelPaymentReq(TradeID = data.value?.tradeid?.toLong() ?: 0,AccountID = GlobalDataCollection.instance?.accountId ?: 0,marketid = data.value?.marketid?.toInt() ?: 0,goodsID = data.value?.goodsid?.toInt() ?: 0){
                             viewModel.queryPayOrder()
                         }
                     }

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

@@ -229,7 +229,7 @@ class PlatinumTradeViewModel : BaseViewModel() {
     fun queryPayOrder(){
         val params = mutableMapOf<String,String>().apply {
             put("accountid",GlobalDataCollection.instance?.accountId?.toString() ?: "0")
-            put("payflag","1")
+            put("payflag","1,3,5")
         }
         MyApplication.getInstance()?.contractGoodsManager?.queryPayOrder(params = params){isSuccess, respData, error ->
             if (isSuccess){
@@ -653,13 +653,17 @@ class PlatinumTradeViewModel : BaseViewModel() {
     fun cancelPaymentReq(
         TradeID : Long,
         AccountID : Long,
+        goodsID: Int,
+        marketid : Int,
         isSuccess: (isCompleted: Boolean) -> Unit
     ){
         loadingDialogStatus.value = TaskUiModel.inFlight()
         GlobalScope.launch {
             MyApplication.getInstance()?.moneyManager?.cancelPaymentReq(
                 TradeID = TradeID,
-                AccountID = AccountID
+                AccountID = AccountID,
+                goodsID = goodsID,
+                marketid = marketid
             ) { isCompleted, err ->
                 if (isCompleted) {
                     loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PositionDetailsActivity.kt

@@ -332,7 +332,7 @@ class PositionDetailsActivity : BaseActivity<PlatinumTradeViewModel>() {
                 }
                 swipeToLoadLayout {
                     swipeToLayout = this
-                    setEnableRefresh(true)
+                    setEnableRefresh(false)
                     setEnableLoadMore(false)
                     setOnRefreshListener {
 

BIN
RMA/app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
RMA/app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
RMA/app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
RMA/app/src/main/res/mipmap-xhdpi/img_start.png


BIN
RMA/app/src/main/res/mipmap-xhdpi/qhj_agreement_normal.png


BIN
RMA/app/src/main/res/mipmap-xhdpi/qhj_agreement_select.png


BIN
RMA/app/src/main/res/mipmap-xhdpi/rma_login_logo.png


BIN
RMA/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
RMA/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png