浏览代码

风险管理10月18日提交代码-liu.bolan-天津麦顿/企业风管 bug

Liu.bolan 4 年之前
父节点
当前提交
0486ae9310
共有 22 个文件被更改,包括 14933 次插入51 次删除
  1. 2 0
      RMA/app/src/main/AndroidManifest.xml
  2. 272 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotAdapter.kt
  3. 186 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotManager.kt
  4. 17 0
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/funcode/FunCode.java
  5. 13132 0
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/protoclasses/FxglServiceMI.java
  6. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  7. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reference/ReferenceAdapter.java
  8. 61 25
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/PeriodAssociatedFragment.kt
  9. 15 9
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/ExternalOrderAssociationActivity.kt
  10. 4 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/ExternalOrderAssociationFragment.kt
  11. 103 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/ExternalOrderAssociationViewModel.kt
  12. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/RemoveExternalOrderAssociationActivity.kt
  13. 41 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/BusinessAssociationsActivity.kt
  14. 48 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/BusinessAssociationsViewModel.kt
  15. 174 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleAssociationsViewHolder.kt
  16. 660 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionActivity.kt
  17. 158 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionViewModel.kt
  18. 6 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RelationalRecordFragment.kt
  19. 39 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RelationalRecordViewModel.kt
  20. 6 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RemoveRelationalRecordActivity.kt
  21. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/BusinessHallActivity.kt
  22. 1 1
      RMA/app/src/main/res/layout/association_layout_item_content.xml

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

@@ -481,6 +481,8 @@
         <activity android:name=".view.base.spot.associated.externalorder.RemoveExternalOrderAssociationActivity"/>
 
         <activity android:name=".view.base.spot.associated.perioddocuments.BusinessAssociationsActivity"/>
+
+        <activity android:name=".view.base.spot.associated.perioddocuments.FillSingleConnectionActivity"/>
     </application>
 
 </manifest>

+ 272 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotAdapter.kt

@@ -5,6 +5,7 @@ import cn.muchinfo.rma.global.ErrorMessageUtils
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.netcore.packet.Packet50
 import cn.muchinfo.rma.protobuf.funcode.FunCode
+import cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI
 import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI1
 import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2
 import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3
@@ -12,10 +13,281 @@ import com.blankj.utilcode.util.TimeUtils
 import java.io.ByteArrayOutputStream
 import java.lang.Exception
 import java.text.SimpleDateFormat
+import java.util.*
 
 object SpotAdapter {
 
     /**
+     * 补录内部成交单请求
+     */
+    fun getManageAmendOrderReqInfo(
+        OutTradeID : Long = 0,//外部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0,//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+        TradePrice : Double = 0.0,//成交价格
+        TradeQty : Long = 0,//成交数量
+        HedgeFlag : Int = 0,// 4:套期保值 5:单边 6:移仓 7:错单处理 8:跨期套利
+        SpotContractID : Long = 0,//RelatedTradeType = 4:套期保值时 有值
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0//归属业务部门ID
+    ) : Packet50{
+        val builder = FxglServiceMI.ManageAmendOrderReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.ManageAmendOrderReq,
+                loginInfo.userID,
+                AccountID,
+                GoodsID,
+                18
+            )
+        )
+        builder.outTradeID = OutTradeID
+        builder.accountID = AccountID
+        builder.buyOrSell = BuyOrSell
+        builder.goodsID = GoodsID
+        builder.channelBuildType = ChannelBuildType
+        builder.closeType = CloseType
+        builder.tradePrice = TradePrice
+        builder.tradeQty = TradeQty
+        builder.hedgeFlag = HedgeFlag
+        if (HedgeFlag == 4){
+            builder.spotContractID = SpotContractID
+        }
+        builder.saleUserID = SaleUserID
+        builder.bizSubjectID = BizSubjectID
+
+        builder.creatorSrc = 2
+        builder.creatorID = loginInfo.loginID
+        val arrayOutputStream = ByteArrayOutputStream()
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.ManageAmendOrderReq, arrayOutputStream.toByteArray())
+    }
+
+
+    /**
+     * 补录内部成交单响应
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ManageServiceMI2.ErmcpSpotGoodsPriceRsp?>
+     */
+    fun analysisManageAmendOrderRsp(packet50: Packet50): Triple<Boolean, Error?, FxglServiceMI.ManageAmendOrderRsp?> {
+        return try {
+            val resultRsp = FxglServiceMI.ManageAmendOrderRsp.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)
+        }
+    }
+
+    /**
+     * 外部成交单关联解绑请求报文装箱
+     */
+    fun getManageUnBoundOrderReqInfo(
+        TradeID : Long = 0,//内部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+    ) : Packet50{
+        val builder = FxglServiceMI.ManageUnBoundOrderReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.ManageUnBoundOrderReq,
+                loginInfo.userID,
+                AccountID,
+                GoodsID,
+                18
+            )
+        )
+        if (TradeID != 0L){
+            builder.tradeID = TradeID
+        }
+        if (AccountID != 0L){
+            builder.accountID = AccountID
+        }
+        if (BuyOrSell != 0){
+            builder.buyOrSell = BuyOrSell
+        }
+        if (GoodsID != 0){
+            builder.goodsID = GoodsID
+        }
+        if (ChannelBuildType != 0){
+            builder.channelBuildType = ChannelBuildType
+        }
+        if (CloseType != 0){
+            builder.closeType = CloseType
+        }
+        builder.creatorSrc = 2
+        val arrayOutputStream = ByteArrayOutputStream()
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.ManageUnBoundOrderReq, arrayOutputStream.toByteArray())
+    }
+
+    /**
+     * 外部成交单关联解绑响应
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ManageServiceMI2.ErmcpSpotGoodsPriceRsp?>
+     */
+    fun analysisManageUnBoundOrderRsp(packet50: Packet50): Triple<Boolean, Error?, FxglServiceMI.ManageUnBoundOrderRsp?> {
+        return try {
+            val resultRsp = FxglServiceMI.ManageUnBoundOrderRsp.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)
+        }
+    }
+
+    /**
+     * 内部成交单关联请求报文装箱
+     */
+    fun getInnerTradeLinkReqInfo(
+        TradeId : Long = 0,//内部成交单号
+        HedgeFlag : Int = 0,//投机套保标志
+        SpotContractID : Long = 0,//现货合同ID
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0,//归属业务部门ID
+        RelatedLot : Double = 0.0,//关联手数
+        RelatedMode : Int = 0//关联模式
+    ) : Packet50{
+        val builder = FxglServiceMI.InnerTradeLinkReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.InnerTradeLinkReq,
+                loginInfo.userID,
+                0,
+                0,
+                18
+            )
+        )
+        if (TradeId != 0L){
+            builder.tradeId = TradeId
+        }
+        if (HedgeFlag != 0){
+            builder.hedgeFlag = HedgeFlag
+        }
+        if (SpotContractID != 0L){
+            builder.spotContractID = SpotContractID
+        }
+        if (SaleUserID != 0){
+            builder.saleUserID = SaleUserID
+        }
+        if (BizSubjectID != 0){
+            builder.bizSubjectID = BizSubjectID
+        }
+        if (RelatedLot != 0.0){
+            builder.relatedLot = RelatedLot
+        }
+        if (RelatedMode != 0){
+            builder.relatedMode = RelatedMode
+        }
+        builder.creatorSrc = 2
+        builder.creatorID = loginInfo.loginID
+        builder.clientTicket = UUID.randomUUID().toString().replace("-", "")
+
+        val arrayOutputStream = ByteArrayOutputStream()
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.InnerTradeLinkReq, arrayOutputStream.toByteArray())
+    }
+
+    /**
+     * 内部成交单关联响应
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ManageServiceMI2.ErmcpSpotGoodsPriceRsp?>
+     */
+    fun analysisInnerTradeLinkRsp(packet50: Packet50): Triple<Boolean, Error?, FxglServiceMI.InnerTradeLinkRsp?> {
+        return try {
+            val resultRsp = FxglServiceMI.InnerTradeLinkRsp.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)
+        }
+    }
+
+
+    /**
+     * 期货现货关联解绑请求
+     */
+    fun getLinkUnbindReqInfo(
+        LinkDetailId : Long = 0//关联ID
+    ) : Packet50{
+        val builder = FxglServiceMI.LinkUnbindReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.LinkUnbindReq,
+                loginInfo.userID,
+                0,
+                0,
+                18
+            )
+        )
+        builder.linkDetailId = LinkDetailId
+        builder.creatorSrc = 2
+        builder.creatorID = loginInfo.loginID
+        builder.clientTicket = UUID.randomUUID().toString().replace("-", "")
+
+        val arrayOutputStream = ByteArrayOutputStream()
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.LinkUnbindReq, arrayOutputStream.toByteArray())
+    }
+
+    /**
+     * 期货现货关联解绑响应
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ManageServiceMI2.ErmcpSpotGoodsPriceRsp?>
+     */
+    fun analysisLinkUnbindRsp(packet50: Packet50): Triple<Boolean, Error?, FxglServiceMI.LinkUnbindRsp?> {
+        return try {
+            val resultRsp = FxglServiceMI.LinkUnbindRsp.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)
+        }
+    }
+
+    /**
      * 交易主体请求报文装箱
      */
     fun getErmcpPaAreaSubjectReqInfo(

+ 186 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotManager.kt

@@ -358,6 +358,192 @@ class SpotManager {
     }
 
     /**
+     * 补录内部成交单请求
+     * @param OutTradeID Long
+     * @param AccountID Long
+     * @param BuyOrSell Int
+     * @param GoodsID Int
+     * @param ChannelBuildType Int
+     * @param CloseType Int
+     * @param TradePrice Double
+     * @param TradeQty Long
+     * @param HedgeFlag Int
+     * @param SpotContractID Long
+     * @param SaleUserID Int
+     * @param BizSubjectID Int
+     */
+    fun manageAmendOrderReq(
+        OutTradeID : Long = 0,//外部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0,//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+        TradePrice : Double = 0.0,//成交价格
+        TradeQty : Long = 0,//成交数量
+        HedgeFlag : Int = 0,// 4:套期保值 5:单边 6:移仓 7:错单处理 8:跨期套利
+        SpotContractID : Long = 0,//RelatedTradeType = 4:套期保值时 有值
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0,//归属业务部门ID
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = SpotAdapter.getManageAmendOrderReqInfo(
+            OutTradeID, AccountID, BuyOrSell, GoodsID, ChannelBuildType, CloseType, TradePrice, TradeQty, HedgeFlag, SpotContractID, SaleUserID, BizSubjectID
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.ManageAmendOrderRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = SpotAdapter.analysisManageAmendOrderRsp(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+
+            }
+        )
+    }
+
+    /**
+     * 外部成交单关联解绑请求
+     * @param TradeID Long
+     * @param AccountID Long
+     * @param BuyOrSell Int
+     * @param GoodsID Int
+     * @param ChannelBuildType Int
+     * @param CloseType Int
+     */
+    fun manageUnBoundOrderReq(
+        TradeID : Long = 0,//内部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0,//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = SpotAdapter.getManageUnBoundOrderReqInfo(
+            TradeID, AccountID, BuyOrSell, GoodsID, ChannelBuildType, CloseType
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.ManageUnBoundOrderRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = SpotAdapter.analysisManageUnBoundOrderRsp(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+
+            }
+        )
+    }
+
+    /**
+     * 内部成交单关联请求
+     * @param TradeId Long
+     * @param HedgeFlag Int
+     * @param SpotContractID Long
+     * @param SaleUserID Int
+     * @param BizSubjectID Int
+     * @param RelatedLot Double
+     * @param RelatedMode Int
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun innerTradeLinkReq(
+        TradeId : Long = 0,//内部成交单号
+        HedgeFlag : Int = 0,//投机套保标志
+        SpotContractID : Long = 0,//现货合同ID
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0,//归属业务部门ID
+        RelatedLot : Double = 0.0,//关联手数
+        RelatedMode : Int = 0,//关联模式
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = SpotAdapter.getInnerTradeLinkReqInfo(
+            TradeId, HedgeFlag, SpotContractID, SaleUserID, BizSubjectID, RelatedLot, RelatedMode
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.InnerTradeLinkRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = SpotAdapter.analysisInnerTradeLinkRsp(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+
+            }
+        )
+    }
+
+    /**
+     * 期货现货关联解绑请求
+     * @param LinkDetailId Long
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun linkUnbindReq(
+        LinkDetailId : Long = 0,//关联ID
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = SpotAdapter.getLinkUnbindReqInfo(
+            LinkDetailId
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.LinkUnbindRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = SpotAdapter.analysisLinkUnbindRsp(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+
+            }
+        )
+    }
+
+    /**
      * 现货市价请求
      * @param DeliveryGoodsID Long 现货品种ID
      * @param WRStandardID Long 现货品类ID(通用则为0)

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

@@ -423,6 +423,23 @@ public class FunCode {
     public static final int FID_HolderCloseReq = 196713;
     //按单平仓相应
     public static final int FID_HolderCloseRsp = 196714;
+    //补录内部成交单请求
+    public static final int ManageAmendOrderReq = 196707;
+    //补录内部成交单响应
+    public static final int ManageAmendOrderRsp = 196708;
+    //外部成交单关联解绑请求
+    public static final int ManageUnBoundOrderReq = 196711;
+    //外部成交单关联解绑响应
+    public static final int ManageUnBoundOrderRsp = 196712;
+    //内部成交单关联请求
+    public static final int InnerTradeLinkReq = 1179660;
+    //内部成交单关联响应
+    public static final int InnerTradeLinkRsp = 1179661;
+    //期货现货关联解绑请求
+    public static final int LinkUnbindReq = 1179667;
+    //期货现货关联解绑响应
+    public static final int LinkUnbindRsp = 1179668;
+
 
     /**
      * 交易委托请求(196639)

+ 13132 - 0
RMA/app/src/main/java/cn/muchinfo/rma/protobuf/protoclasses/FxglServiceMI.java

@@ -0,0 +1,13132 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: FxglServiceMI.proto
+
+package cn.muchinfo.rma.protobuf.protoclasses;
+
+public final class FxglServiceMI {
+  private FxglServiceMI() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  public interface LinkUnbindReqOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.LinkUnbindReq)
+      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>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 LinkDetailId = 2;</code>
+     * @return Whether the linkDetailId field is set.
+     */
+    boolean hasLinkDetailId();
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 LinkDetailId = 2;</code>
+     * @return The linkDetailId.
+     */
+    long getLinkDetailId();
+
+    /**
+     * <pre>
+     * uint32
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 3;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    boolean hasCreatorSrc();
+    /**
+     * <pre>
+     * uint32
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 3;</code>
+     * @return The creatorSrc.
+     */
+    int getCreatorSrc();
+
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 4;</code>
+     * @return Whether the creatorID field is set.
+     */
+    boolean hasCreatorID();
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 4;</code>
+     * @return The creatorID.
+     */
+    long getCreatorID();
+
+    /**
+     * <pre>
+     * string
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    boolean hasClientTicket();
+    /**
+     * <pre>
+     * string
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The clientTicket.
+     */
+    java.lang.String getClientTicket();
+    /**
+     * <pre>
+     * string
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The bytes for clientTicket.
+     */
+    com.google.protobuf.ByteString
+        getClientTicketBytes();
+  }
+  /**
+   * <pre>
+ 0 18  
+   *
+   * Protobuf type {@code ManageServiceMI3.LinkUnbindReq}
+   */
+  public static final class LinkUnbindReq extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.LinkUnbindReq)
+      LinkUnbindReqOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use LinkUnbindReq.newBuilder() to construct.
+    private LinkUnbindReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private LinkUnbindReq() {
+      clientTicket_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new LinkUnbindReq();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LinkUnbindReq(
+        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;
+              linkDetailId_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              creatorSrc_ = input.readUInt32();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              creatorID_ = input.readUInt64();
+              break;
+            }
+            case 42: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000010;
+              clientTicket_ = 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.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindReq_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindReq_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.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 LINKDETAILID_FIELD_NUMBER = 2;
+    private long linkDetailId_;
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 LinkDetailId = 2;</code>
+     * @return Whether the linkDetailId field is set.
+     */
+    @java.lang.Override
+    public boolean hasLinkDetailId() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 LinkDetailId = 2;</code>
+     * @return The linkDetailId.
+     */
+    @java.lang.Override
+    public long getLinkDetailId() {
+      return linkDetailId_;
+    }
+
+    public static final int CREATORSRC_FIELD_NUMBER = 3;
+    private int creatorSrc_;
+    /**
+     * <pre>
+     * uint32 ������Դ
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 3;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorSrc() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * uint32
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 3;</code>
+     * @return The creatorSrc.
+     */
+    @java.lang.Override
+    public int getCreatorSrc() {
+      return creatorSrc_;
+    }
+
+    public static final int CREATORID_FIELD_NUMBER = 4;
+    private long creatorID_;
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 4;</code>
+     * @return Whether the creatorID field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorID() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint64
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 4;</code>
+     * @return The creatorID.
+     */
+    @java.lang.Override
+    public long getCreatorID() {
+      return creatorID_;
+    }
+
+    public static final int CLIENTTICKET_FIELD_NUMBER = 5;
+    private volatile java.lang.Object clientTicket_;
+    /**
+     * <pre>
+     * string
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    @java.lang.Override
+    public boolean hasClientTicket() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * string
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The clientTicket.
+     */
+    @java.lang.Override
+    public java.lang.String getClientTicket() {
+      java.lang.Object ref = clientTicket_;
+      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()) {
+          clientTicket_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The bytes for clientTicket.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getClientTicketBytes() {
+      java.lang.Object ref = clientTicket_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        clientTicket_ = 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.writeUInt64(2, linkDetailId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeUInt32(3, creatorSrc_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt64(4, creatorID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, clientTicket_);
+      }
+      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, linkDetailId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, creatorSrc_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, creatorID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, clientTicket_);
+      }
+      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.FxglServiceMI.LinkUnbindReq)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasLinkDetailId() != other.hasLinkDetailId()) return false;
+      if (hasLinkDetailId()) {
+        if (getLinkDetailId()
+            != other.getLinkDetailId()) return false;
+      }
+      if (hasCreatorSrc() != other.hasCreatorSrc()) return false;
+      if (hasCreatorSrc()) {
+        if (getCreatorSrc()
+            != other.getCreatorSrc()) return false;
+      }
+      if (hasCreatorID() != other.hasCreatorID()) return false;
+      if (hasCreatorID()) {
+        if (getCreatorID()
+            != other.getCreatorID()) return false;
+      }
+      if (hasClientTicket() != other.hasClientTicket()) return false;
+      if (hasClientTicket()) {
+        if (!getClientTicket()
+            .equals(other.getClientTicket())) 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 (hasLinkDetailId()) {
+        hash = (37 * hash) + LINKDETAILID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getLinkDetailId());
+      }
+      if (hasCreatorSrc()) {
+        hash = (37 * hash) + CREATORSRC_FIELD_NUMBER;
+        hash = (53 * hash) + getCreatorSrc();
+      }
+      if (hasCreatorID()) {
+        hash = (37 * hash) + CREATORID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getCreatorID());
+      }
+      if (hasClientTicket()) {
+        hash = (37 * hash) + CLIENTTICKET_FIELD_NUMBER;
+        hash = (53 * hash) + getClientTicket().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq 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.FxglServiceMI.LinkUnbindReq 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 18 19
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.LinkUnbindReq}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.LinkUnbindReq)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReqOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindReq_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindReq_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.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);
+        linkDetailId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        creatorSrc_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        creatorID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        clientTicket_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindReq_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq(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.linkDetailId_ = linkDetailId_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.creatorSrc_ = creatorSrc_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.creatorID_ = creatorID_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.clientTicket_ = clientTicket_;
+        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.FxglServiceMI.LinkUnbindReq) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasLinkDetailId()) {
+          setLinkDetailId(other.getLinkDetailId());
+        }
+        if (other.hasCreatorSrc()) {
+          setCreatorSrc(other.getCreatorSrc());
+        }
+        if (other.hasCreatorID()) {
+          setCreatorID(other.getCreatorID());
+        }
+        if (other.hasClientTicket()) {
+          bitField0_ |= 0x00000010;
+          clientTicket_ = other.clientTicket_;
+          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.FxglServiceMI.LinkUnbindReq parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq) 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 linkDetailId_ ;
+      /**
+       * <pre>
+       * uint64 ����ID
+       * </pre>
+       *
+       * <code>optional uint64 LinkDetailId = 2;</code>
+       * @return Whether the linkDetailId field is set.
+       */
+      @java.lang.Override
+      public boolean hasLinkDetailId() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 ����ID
+       * </pre>
+       *
+       * <code>optional uint64 LinkDetailId = 2;</code>
+       * @return The linkDetailId.
+       */
+      @java.lang.Override
+      public long getLinkDetailId() {
+        return linkDetailId_;
+      }
+      /**
+       * <pre>
+       * uint64 ����ID
+       * </pre>
+       *
+       * <code>optional uint64 LinkDetailId = 2;</code>
+       * @param value The linkDetailId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setLinkDetailId(long value) {
+        bitField0_ |= 0x00000002;
+        linkDetailId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ����ID
+       * </pre>
+       *
+       * <code>optional uint64 LinkDetailId = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearLinkDetailId() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        linkDetailId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int creatorSrc_ ;
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 3;</code>
+       * @return Whether the creatorSrc field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorSrc() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 3;</code>
+       * @return The creatorSrc.
+       */
+      @java.lang.Override
+      public int getCreatorSrc() {
+        return creatorSrc_;
+      }
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 3;</code>
+       * @param value The creatorSrc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorSrc(int value) {
+        bitField0_ |= 0x00000004;
+        creatorSrc_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorSrc() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        creatorSrc_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long creatorID_ ;
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 4;</code>
+       * @return Whether the creatorID field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorID() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 4;</code>
+       * @return The creatorID.
+       */
+      @java.lang.Override
+      public long getCreatorID() {
+        return creatorID_;
+      }
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 4;</code>
+       * @param value The creatorID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorID(long value) {
+        bitField0_ |= 0x00000008;
+        creatorID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorID() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        creatorID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object clientTicket_ = "";
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return Whether the clientTicket field is set.
+       */
+      public boolean hasClientTicket() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return The clientTicket.
+       */
+      public java.lang.String getClientTicket() {
+        java.lang.Object ref = clientTicket_;
+        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()) {
+            clientTicket_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return The bytes for clientTicket.
+       */
+      public com.google.protobuf.ByteString
+          getClientTicketBytes() {
+        java.lang.Object ref = clientTicket_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          clientTicket_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @param value The clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicket(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        clientTicket_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearClientTicket() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        clientTicket_ = getDefaultInstance().getClientTicket();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @param value The bytes for clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicketBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        clientTicket_ = 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:ManageServiceMI3.LinkUnbindReq)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.LinkUnbindReq)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<LinkUnbindReq>
+        PARSER = new com.google.protobuf.AbstractParser<LinkUnbindReq>() {
+      @java.lang.Override
+      public LinkUnbindReq parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LinkUnbindReq(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<LinkUnbindReq> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LinkUnbindReq> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindReq getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface LinkUnbindRspOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.LinkUnbindRsp)
+      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>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 4;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    boolean hasClientTicket();
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 4;</code>
+     * @return The clientTicket.
+     */
+    java.lang.String getClientTicket();
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 4;</code>
+     * @return The bytes for clientTicket.
+     */
+    com.google.protobuf.ByteString
+        getClientTicketBytes();
+  }
+  /**
+   * <pre>
+   * �ڻ��ֻ����������Ӧ 0 18 20
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.LinkUnbindRsp}
+   */
+  public static final class LinkUnbindRsp extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.LinkUnbindRsp)
+      LinkUnbindRspOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use LinkUnbindRsp.newBuilder() to construct.
+    private LinkUnbindRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private LinkUnbindRsp() {
+      retDesc_ = "";
+      clientTicket_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new LinkUnbindRsp();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LinkUnbindRsp(
+        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;
+            }
+            case 34: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000008;
+              clientTicket_ = 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.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindRsp_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindRsp_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.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;
+      }
+    }
+
+    public static final int CLIENTTICKET_FIELD_NUMBER = 4;
+    private volatile java.lang.Object clientTicket_;
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 4;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    @java.lang.Override
+    public boolean hasClientTicket() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 4;</code>
+     * @return The clientTicket.
+     */
+    @java.lang.Override
+    public java.lang.String getClientTicket() {
+      java.lang.Object ref = clientTicket_;
+      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()) {
+          clientTicket_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 4;</code>
+     * @return The bytes for clientTicket.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getClientTicketBytes() {
+      java.lang.Object ref = clientTicket_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        clientTicket_ = 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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, clientTicket_);
+      }
+      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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, clientTicket_);
+      }
+      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.FxglServiceMI.LinkUnbindRsp)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp) 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 (hasClientTicket() != other.hasClientTicket()) return false;
+      if (hasClientTicket()) {
+        if (!getClientTicket()
+            .equals(other.getClientTicket())) 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();
+      }
+      if (hasClientTicket()) {
+        hash = (37 * hash) + CLIENTTICKET_FIELD_NUMBER;
+        hash = (53 * hash) + getClientTicket().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp 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.FxglServiceMI.LinkUnbindRsp 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 18 20
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.LinkUnbindRsp}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.LinkUnbindRsp)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRspOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindRsp_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindRsp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.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);
+        clientTicket_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_LinkUnbindRsp_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp(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_;
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.clientTicket_ = clientTicket_;
+        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.FxglServiceMI.LinkUnbindRsp) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasRetCode()) {
+          setRetCode(other.getRetCode());
+        }
+        if (other.hasRetDesc()) {
+          bitField0_ |= 0x00000004;
+          retDesc_ = other.retDesc_;
+          onChanged();
+        }
+        if (other.hasClientTicket()) {
+          bitField0_ |= 0x00000008;
+          clientTicket_ = other.clientTicket_;
+          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.FxglServiceMI.LinkUnbindRsp parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp) 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;
+      }
+
+      private java.lang.Object clientTicket_ = "";
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 4;</code>
+       * @return Whether the clientTicket field is set.
+       */
+      public boolean hasClientTicket() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 4;</code>
+       * @return The clientTicket.
+       */
+      public java.lang.String getClientTicket() {
+        java.lang.Object ref = clientTicket_;
+        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()) {
+            clientTicket_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 4;</code>
+       * @return The bytes for clientTicket.
+       */
+      public com.google.protobuf.ByteString
+          getClientTicketBytes() {
+        java.lang.Object ref = clientTicket_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          clientTicket_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 4;</code>
+       * @param value The clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicket(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        clientTicket_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearClientTicket() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        clientTicket_ = getDefaultInstance().getClientTicket();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 4;</code>
+       * @param value The bytes for clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicketBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        clientTicket_ = 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:ManageServiceMI3.LinkUnbindRsp)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.LinkUnbindRsp)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<LinkUnbindRsp>
+        PARSER = new com.google.protobuf.AbstractParser<LinkUnbindRsp>() {
+      @java.lang.Override
+      public LinkUnbindRsp parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LinkUnbindRsp(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<LinkUnbindRsp> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LinkUnbindRsp> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.LinkUnbindRsp getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface InnerTradeLinkReqOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.InnerTradeLinkReq)
+      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>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 2;</code>
+     * @return Whether the tradeId field is set.
+     */
+    boolean hasTradeId();
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 2;</code>
+     * @return The tradeId.
+     */
+    long getTradeId();
+
+    /**
+     * <pre>
+     * uint32 Ͷ���ױ���־
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 3;</code>
+     * @return Whether the hedgeFlag field is set.
+     */
+    boolean hasHedgeFlag();
+    /**
+     * <pre>
+     * uint32 Ͷ���ױ���־
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 3;</code>
+     * @return The hedgeFlag.
+     */
+    int getHedgeFlag();
+
+    /**
+     * <pre>
+     * uint64 �ֻ���ͬID
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 4;</code>
+     * @return Whether the spotContractID field is set.
+     */
+    boolean hasSpotContractID();
+    /**
+     * <pre>
+     * uint64 �ֻ���ͬID
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 4;</code>
+     * @return The spotContractID.
+     */
+    long getSpotContractID();
+
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 5;</code>
+     * @return Whether the saleUserID field is set.
+     */
+    boolean hasSaleUserID();
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 5;</code>
+     * @return The saleUserID.
+     */
+    int getSaleUserID();
+
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 6;</code>
+     * @return Whether the bizSubjectID field is set.
+     */
+    boolean hasBizSubjectID();
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 6;</code>
+     * @return The bizSubjectID.
+     */
+    int getBizSubjectID();
+
+    /**
+     * <pre>
+     * double ��������
+     * </pre>
+     *
+     * <code>optional double RelatedLot = 7;</code>
+     * @return Whether the relatedLot field is set.
+     */
+    boolean hasRelatedLot();
+    /**
+     * <pre>
+     * double ��������
+     * </pre>
+     *
+     * <code>optional double RelatedLot = 7;</code>
+     * @return The relatedLot.
+     */
+    double getRelatedLot();
+
+    /**
+     * <pre>
+     * uint32 ����ģʽ
+     * </pre>
+     *
+     * <code>optional uint32 RelatedMode = 8;</code>
+     * @return Whether the relatedMode field is set.
+     */
+    boolean hasRelatedMode();
+    /**
+     * <pre>
+     * uint32 ����ģʽ
+     * </pre>
+     *
+     * <code>optional uint32 RelatedMode = 8;</code>
+     * @return The relatedMode.
+     */
+    int getRelatedMode();
+
+    /**
+     * <pre>
+     * uint32 ������Դ
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 9;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    boolean hasCreatorSrc();
+    /**
+     * <pre>
+     * uint32 ������Դ
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 9;</code>
+     * @return The creatorSrc.
+     */
+    int getCreatorSrc();
+
+    /**
+     * <pre>
+     * uint64 ������
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 10;</code>
+     * @return Whether the creatorID field is set.
+     */
+    boolean hasCreatorID();
+    /**
+     * <pre>
+     * uint64 ������
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 10;</code>
+     * @return The creatorID.
+     */
+    long getCreatorID();
+
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 11;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    boolean hasClientTicket();
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 11;</code>
+     * @return The clientTicket.
+     */
+    java.lang.String getClientTicket();
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 11;</code>
+     * @return The bytes for clientTicket.
+     */
+    com.google.protobuf.ByteString
+        getClientTicketBytes();
+  }
+  /**
+   * <pre>
+   * �ڲ��ɽ����������� 0 18 12
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.InnerTradeLinkReq}
+   */
+  public static final class InnerTradeLinkReq extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.InnerTradeLinkReq)
+      InnerTradeLinkReqOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use InnerTradeLinkReq.newBuilder() to construct.
+    private InnerTradeLinkReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private InnerTradeLinkReq() {
+      clientTicket_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new InnerTradeLinkReq();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private InnerTradeLinkReq(
+        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;
+              tradeId_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              hedgeFlag_ = input.readUInt32();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              spotContractID_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              saleUserID_ = input.readUInt32();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              bizSubjectID_ = input.readUInt32();
+              break;
+            }
+            case 57: {
+              bitField0_ |= 0x00000040;
+              relatedLot_ = input.readDouble();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              relatedMode_ = input.readUInt32();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              creatorSrc_ = input.readUInt32();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              creatorID_ = input.readUInt64();
+              break;
+            }
+            case 90: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000400;
+              clientTicket_ = 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.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkReq_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkReq_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.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 TRADEID_FIELD_NUMBER = 2;
+    private long tradeId_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 2;</code>
+     * @return Whether the tradeId field is set.
+     */
+    @java.lang.Override
+    public boolean hasTradeId() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 2;</code>
+     * @return The tradeId.
+     */
+    @java.lang.Override
+    public long getTradeId() {
+      return tradeId_;
+    }
+
+    public static final int HEDGEFLAG_FIELD_NUMBER = 3;
+    private int hedgeFlag_;
+    /**
+     * <pre>
+     * uint32 Ͷ���ױ���־
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 3;</code>
+     * @return Whether the hedgeFlag field is set.
+     */
+    @java.lang.Override
+    public boolean hasHedgeFlag() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 Ͷ���ױ���־
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 3;</code>
+     * @return The hedgeFlag.
+     */
+    @java.lang.Override
+    public int getHedgeFlag() {
+      return hedgeFlag_;
+    }
+
+    public static final int SPOTCONTRACTID_FIELD_NUMBER = 4;
+    private long spotContractID_;
+    /**
+     * <pre>
+     * uint64 �ֻ���ͬID
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 4;</code>
+     * @return Whether the spotContractID field is set.
+     */
+    @java.lang.Override
+    public boolean hasSpotContractID() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ֻ���ͬID
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 4;</code>
+     * @return The spotContractID.
+     */
+    @java.lang.Override
+    public long getSpotContractID() {
+      return spotContractID_;
+    }
+
+    public static final int SALEUSERID_FIELD_NUMBER = 5;
+    private int saleUserID_;
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 5;</code>
+     * @return Whether the saleUserID field is set.
+     */
+    @java.lang.Override
+    public boolean hasSaleUserID() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 5;</code>
+     * @return The saleUserID.
+     */
+    @java.lang.Override
+    public int getSaleUserID() {
+      return saleUserID_;
+    }
+
+    public static final int BIZSUBJECTID_FIELD_NUMBER = 6;
+    private int bizSubjectID_;
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 6;</code>
+     * @return Whether the bizSubjectID field is set.
+     */
+    @java.lang.Override
+    public boolean hasBizSubjectID() {
+      return ((bitField0_ & 0x00000020) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 6;</code>
+     * @return The bizSubjectID.
+     */
+    @java.lang.Override
+    public int getBizSubjectID() {
+      return bizSubjectID_;
+    }
+
+    public static final int RELATEDLOT_FIELD_NUMBER = 7;
+    private double relatedLot_;
+    /**
+     * <pre>
+     * double ��������
+     * </pre>
+     *
+     * <code>optional double RelatedLot = 7;</code>
+     * @return Whether the relatedLot field is set.
+     */
+    @java.lang.Override
+    public boolean hasRelatedLot() {
+      return ((bitField0_ & 0x00000040) != 0);
+    }
+    /**
+     * <pre>
+     * double ��������
+     * </pre>
+     *
+     * <code>optional double RelatedLot = 7;</code>
+     * @return The relatedLot.
+     */
+    @java.lang.Override
+    public double getRelatedLot() {
+      return relatedLot_;
+    }
+
+    public static final int RELATEDMODE_FIELD_NUMBER = 8;
+    private int relatedMode_;
+    /**
+     * <pre>
+     * uint32 ����ģʽ
+     * </pre>
+     *
+     * <code>optional uint32 RelatedMode = 8;</code>
+     * @return Whether the relatedMode field is set.
+     */
+    @java.lang.Override
+    public boolean hasRelatedMode() {
+      return ((bitField0_ & 0x00000080) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ����ģʽ
+     * </pre>
+     *
+     * <code>optional uint32 RelatedMode = 8;</code>
+     * @return The relatedMode.
+     */
+    @java.lang.Override
+    public int getRelatedMode() {
+      return relatedMode_;
+    }
+
+    public static final int CREATORSRC_FIELD_NUMBER = 9;
+    private int creatorSrc_;
+    /**
+     * <pre>
+     * uint32 ������Դ
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 9;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorSrc() {
+      return ((bitField0_ & 0x00000100) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ������Դ
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 9;</code>
+     * @return The creatorSrc.
+     */
+    @java.lang.Override
+    public int getCreatorSrc() {
+      return creatorSrc_;
+    }
+
+    public static final int CREATORID_FIELD_NUMBER = 10;
+    private long creatorID_;
+    /**
+     * <pre>
+     * uint64 ������
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 10;</code>
+     * @return Whether the creatorID field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorID() {
+      return ((bitField0_ & 0x00000200) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 ������
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 10;</code>
+     * @return The creatorID.
+     */
+    @java.lang.Override
+    public long getCreatorID() {
+      return creatorID_;
+    }
+
+    public static final int CLIENTTICKET_FIELD_NUMBER = 11;
+    private volatile java.lang.Object clientTicket_;
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 11;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    @java.lang.Override
+    public boolean hasClientTicket() {
+      return ((bitField0_ & 0x00000400) != 0);
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 11;</code>
+     * @return The clientTicket.
+     */
+    @java.lang.Override
+    public java.lang.String getClientTicket() {
+      java.lang.Object ref = clientTicket_;
+      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()) {
+          clientTicket_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 11;</code>
+     * @return The bytes for clientTicket.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getClientTicketBytes() {
+      java.lang.Object ref = clientTicket_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        clientTicket_ = 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.writeUInt64(2, tradeId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeUInt32(3, hedgeFlag_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt64(4, spotContractID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeUInt32(5, saleUserID_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        output.writeUInt32(6, bizSubjectID_);
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        output.writeDouble(7, relatedLot_);
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        output.writeUInt32(8, relatedMode_);
+      }
+      if (((bitField0_ & 0x00000100) != 0)) {
+        output.writeUInt32(9, creatorSrc_);
+      }
+      if (((bitField0_ & 0x00000200) != 0)) {
+        output.writeUInt64(10, creatorID_);
+      }
+      if (((bitField0_ & 0x00000400) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, clientTicket_);
+      }
+      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, tradeId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, hedgeFlag_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, spotContractID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, saleUserID_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(6, bizSubjectID_);
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(7, relatedLot_);
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(8, relatedMode_);
+      }
+      if (((bitField0_ & 0x00000100) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(9, creatorSrc_);
+      }
+      if (((bitField0_ & 0x00000200) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, creatorID_);
+      }
+      if (((bitField0_ & 0x00000400) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, clientTicket_);
+      }
+      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.FxglServiceMI.InnerTradeLinkReq)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasTradeId() != other.hasTradeId()) return false;
+      if (hasTradeId()) {
+        if (getTradeId()
+            != other.getTradeId()) return false;
+      }
+      if (hasHedgeFlag() != other.hasHedgeFlag()) return false;
+      if (hasHedgeFlag()) {
+        if (getHedgeFlag()
+            != other.getHedgeFlag()) return false;
+      }
+      if (hasSpotContractID() != other.hasSpotContractID()) return false;
+      if (hasSpotContractID()) {
+        if (getSpotContractID()
+            != other.getSpotContractID()) return false;
+      }
+      if (hasSaleUserID() != other.hasSaleUserID()) return false;
+      if (hasSaleUserID()) {
+        if (getSaleUserID()
+            != other.getSaleUserID()) return false;
+      }
+      if (hasBizSubjectID() != other.hasBizSubjectID()) return false;
+      if (hasBizSubjectID()) {
+        if (getBizSubjectID()
+            != other.getBizSubjectID()) return false;
+      }
+      if (hasRelatedLot() != other.hasRelatedLot()) return false;
+      if (hasRelatedLot()) {
+        if (java.lang.Double.doubleToLongBits(getRelatedLot())
+            != java.lang.Double.doubleToLongBits(
+                other.getRelatedLot())) return false;
+      }
+      if (hasRelatedMode() != other.hasRelatedMode()) return false;
+      if (hasRelatedMode()) {
+        if (getRelatedMode()
+            != other.getRelatedMode()) return false;
+      }
+      if (hasCreatorSrc() != other.hasCreatorSrc()) return false;
+      if (hasCreatorSrc()) {
+        if (getCreatorSrc()
+            != other.getCreatorSrc()) return false;
+      }
+      if (hasCreatorID() != other.hasCreatorID()) return false;
+      if (hasCreatorID()) {
+        if (getCreatorID()
+            != other.getCreatorID()) return false;
+      }
+      if (hasClientTicket() != other.hasClientTicket()) return false;
+      if (hasClientTicket()) {
+        if (!getClientTicket()
+            .equals(other.getClientTicket())) 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 (hasTradeId()) {
+        hash = (37 * hash) + TRADEID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTradeId());
+      }
+      if (hasHedgeFlag()) {
+        hash = (37 * hash) + HEDGEFLAG_FIELD_NUMBER;
+        hash = (53 * hash) + getHedgeFlag();
+      }
+      if (hasSpotContractID()) {
+        hash = (37 * hash) + SPOTCONTRACTID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getSpotContractID());
+      }
+      if (hasSaleUserID()) {
+        hash = (37 * hash) + SALEUSERID_FIELD_NUMBER;
+        hash = (53 * hash) + getSaleUserID();
+      }
+      if (hasBizSubjectID()) {
+        hash = (37 * hash) + BIZSUBJECTID_FIELD_NUMBER;
+        hash = (53 * hash) + getBizSubjectID();
+      }
+      if (hasRelatedLot()) {
+        hash = (37 * hash) + RELATEDLOT_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            java.lang.Double.doubleToLongBits(getRelatedLot()));
+      }
+      if (hasRelatedMode()) {
+        hash = (37 * hash) + RELATEDMODE_FIELD_NUMBER;
+        hash = (53 * hash) + getRelatedMode();
+      }
+      if (hasCreatorSrc()) {
+        hash = (37 * hash) + CREATORSRC_FIELD_NUMBER;
+        hash = (53 * hash) + getCreatorSrc();
+      }
+      if (hasCreatorID()) {
+        hash = (37 * hash) + CREATORID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getCreatorID());
+      }
+      if (hasClientTicket()) {
+        hash = (37 * hash) + CLIENTTICKET_FIELD_NUMBER;
+        hash = (53 * hash) + getClientTicket().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq 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.FxglServiceMI.InnerTradeLinkReq 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 18 12
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.InnerTradeLinkReq}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.InnerTradeLinkReq)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReqOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkReq_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkReq_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.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);
+        tradeId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        hedgeFlag_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        spotContractID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        saleUserID_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        bizSubjectID_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        relatedLot_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        relatedMode_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        creatorSrc_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        creatorID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        clientTicket_ = "";
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkReq_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq(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.tradeId_ = tradeId_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.hedgeFlag_ = hedgeFlag_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.spotContractID_ = spotContractID_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.saleUserID_ = saleUserID_;
+          to_bitField0_ |= 0x00000010;
+        }
+        if (((from_bitField0_ & 0x00000020) != 0)) {
+          result.bizSubjectID_ = bizSubjectID_;
+          to_bitField0_ |= 0x00000020;
+        }
+        if (((from_bitField0_ & 0x00000040) != 0)) {
+          result.relatedLot_ = relatedLot_;
+          to_bitField0_ |= 0x00000040;
+        }
+        if (((from_bitField0_ & 0x00000080) != 0)) {
+          result.relatedMode_ = relatedMode_;
+          to_bitField0_ |= 0x00000080;
+        }
+        if (((from_bitField0_ & 0x00000100) != 0)) {
+          result.creatorSrc_ = creatorSrc_;
+          to_bitField0_ |= 0x00000100;
+        }
+        if (((from_bitField0_ & 0x00000200) != 0)) {
+          result.creatorID_ = creatorID_;
+          to_bitField0_ |= 0x00000200;
+        }
+        if (((from_bitField0_ & 0x00000400) != 0)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.clientTicket_ = clientTicket_;
+        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.FxglServiceMI.InnerTradeLinkReq) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasTradeId()) {
+          setTradeId(other.getTradeId());
+        }
+        if (other.hasHedgeFlag()) {
+          setHedgeFlag(other.getHedgeFlag());
+        }
+        if (other.hasSpotContractID()) {
+          setSpotContractID(other.getSpotContractID());
+        }
+        if (other.hasSaleUserID()) {
+          setSaleUserID(other.getSaleUserID());
+        }
+        if (other.hasBizSubjectID()) {
+          setBizSubjectID(other.getBizSubjectID());
+        }
+        if (other.hasRelatedLot()) {
+          setRelatedLot(other.getRelatedLot());
+        }
+        if (other.hasRelatedMode()) {
+          setRelatedMode(other.getRelatedMode());
+        }
+        if (other.hasCreatorSrc()) {
+          setCreatorSrc(other.getCreatorSrc());
+        }
+        if (other.hasCreatorID()) {
+          setCreatorID(other.getCreatorID());
+        }
+        if (other.hasClientTicket()) {
+          bitField0_ |= 0x00000400;
+          clientTicket_ = other.clientTicket_;
+          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.FxglServiceMI.InnerTradeLinkReq parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq) 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 tradeId_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 2;</code>
+       * @return Whether the tradeId field is set.
+       */
+      @java.lang.Override
+      public boolean hasTradeId() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 2;</code>
+       * @return The tradeId.
+       */
+      @java.lang.Override
+      public long getTradeId() {
+        return tradeId_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 2;</code>
+       * @param value The tradeId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTradeId(long value) {
+        bitField0_ |= 0x00000002;
+        tradeId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTradeId() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        tradeId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int hedgeFlag_ ;
+      /**
+       * <pre>
+       * uint32 Ͷ���ױ���־
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 3;</code>
+       * @return Whether the hedgeFlag field is set.
+       */
+      @java.lang.Override
+      public boolean hasHedgeFlag() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 Ͷ���ױ���־
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 3;</code>
+       * @return The hedgeFlag.
+       */
+      @java.lang.Override
+      public int getHedgeFlag() {
+        return hedgeFlag_;
+      }
+      /**
+       * <pre>
+       * uint32 Ͷ���ױ���־
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 3;</code>
+       * @param value The hedgeFlag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setHedgeFlag(int value) {
+        bitField0_ |= 0x00000004;
+        hedgeFlag_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 Ͷ���ױ���־
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearHedgeFlag() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hedgeFlag_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long spotContractID_ ;
+      /**
+       * <pre>
+       * uint64 �ֻ���ͬID
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 4;</code>
+       * @return Whether the spotContractID field is set.
+       */
+      @java.lang.Override
+      public boolean hasSpotContractID() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ֻ���ͬID
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 4;</code>
+       * @return The spotContractID.
+       */
+      @java.lang.Override
+      public long getSpotContractID() {
+        return spotContractID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ֻ���ͬID
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 4;</code>
+       * @param value The spotContractID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSpotContractID(long value) {
+        bitField0_ |= 0x00000008;
+        spotContractID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ֻ���ͬID
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSpotContractID() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        spotContractID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int saleUserID_ ;
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 5;</code>
+       * @return Whether the saleUserID field is set.
+       */
+      @java.lang.Override
+      public boolean hasSaleUserID() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 5;</code>
+       * @return The saleUserID.
+       */
+      @java.lang.Override
+      public int getSaleUserID() {
+        return saleUserID_;
+      }
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 5;</code>
+       * @param value The saleUserID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSaleUserID(int value) {
+        bitField0_ |= 0x00000010;
+        saleUserID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSaleUserID() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        saleUserID_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int bizSubjectID_ ;
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 6;</code>
+       * @return Whether the bizSubjectID field is set.
+       */
+      @java.lang.Override
+      public boolean hasBizSubjectID() {
+        return ((bitField0_ & 0x00000020) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 6;</code>
+       * @return The bizSubjectID.
+       */
+      @java.lang.Override
+      public int getBizSubjectID() {
+        return bizSubjectID_;
+      }
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 6;</code>
+       * @param value The bizSubjectID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBizSubjectID(int value) {
+        bitField0_ |= 0x00000020;
+        bizSubjectID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBizSubjectID() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        bizSubjectID_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private double relatedLot_ ;
+      /**
+       * <pre>
+       * double ��������
+       * </pre>
+       *
+       * <code>optional double RelatedLot = 7;</code>
+       * @return Whether the relatedLot field is set.
+       */
+      @java.lang.Override
+      public boolean hasRelatedLot() {
+        return ((bitField0_ & 0x00000040) != 0);
+      }
+      /**
+       * <pre>
+       * double ��������
+       * </pre>
+       *
+       * <code>optional double RelatedLot = 7;</code>
+       * @return The relatedLot.
+       */
+      @java.lang.Override
+      public double getRelatedLot() {
+        return relatedLot_;
+      }
+      /**
+       * <pre>
+       * double ��������
+       * </pre>
+       *
+       * <code>optional double RelatedLot = 7;</code>
+       * @param value The relatedLot to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRelatedLot(double value) {
+        bitField0_ |= 0x00000040;
+        relatedLot_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * double ��������
+       * </pre>
+       *
+       * <code>optional double RelatedLot = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRelatedLot() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        relatedLot_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      private int relatedMode_ ;
+      /**
+       * <pre>
+       * uint32 ����ģʽ
+       * </pre>
+       *
+       * <code>optional uint32 RelatedMode = 8;</code>
+       * @return Whether the relatedMode field is set.
+       */
+      @java.lang.Override
+      public boolean hasRelatedMode() {
+        return ((bitField0_ & 0x00000080) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ����ģʽ
+       * </pre>
+       *
+       * <code>optional uint32 RelatedMode = 8;</code>
+       * @return The relatedMode.
+       */
+      @java.lang.Override
+      public int getRelatedMode() {
+        return relatedMode_;
+      }
+      /**
+       * <pre>
+       * uint32 ����ģʽ
+       * </pre>
+       *
+       * <code>optional uint32 RelatedMode = 8;</code>
+       * @param value The relatedMode to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRelatedMode(int value) {
+        bitField0_ |= 0x00000080;
+        relatedMode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ����ģʽ
+       * </pre>
+       *
+       * <code>optional uint32 RelatedMode = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRelatedMode() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        relatedMode_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int creatorSrc_ ;
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 9;</code>
+       * @return Whether the creatorSrc field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorSrc() {
+        return ((bitField0_ & 0x00000100) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 9;</code>
+       * @return The creatorSrc.
+       */
+      @java.lang.Override
+      public int getCreatorSrc() {
+        return creatorSrc_;
+      }
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 9;</code>
+       * @param value The creatorSrc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorSrc(int value) {
+        bitField0_ |= 0x00000100;
+        creatorSrc_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ������Դ
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 9;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorSrc() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        creatorSrc_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long creatorID_ ;
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 10;</code>
+       * @return Whether the creatorID field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorID() {
+        return ((bitField0_ & 0x00000200) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 10;</code>
+       * @return The creatorID.
+       */
+      @java.lang.Override
+      public long getCreatorID() {
+        return creatorID_;
+      }
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 10;</code>
+       * @param value The creatorID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorID(long value) {
+        bitField0_ |= 0x00000200;
+        creatorID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ������
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 10;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorID() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        creatorID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object clientTicket_ = "";
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 11;</code>
+       * @return Whether the clientTicket field is set.
+       */
+      public boolean hasClientTicket() {
+        return ((bitField0_ & 0x00000400) != 0);
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 11;</code>
+       * @return The clientTicket.
+       */
+      public java.lang.String getClientTicket() {
+        java.lang.Object ref = clientTicket_;
+        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()) {
+            clientTicket_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 11;</code>
+       * @return The bytes for clientTicket.
+       */
+      public com.google.protobuf.ByteString
+          getClientTicketBytes() {
+        java.lang.Object ref = clientTicket_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          clientTicket_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 11;</code>
+       * @param value The clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicket(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        clientTicket_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 11;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearClientTicket() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        clientTicket_ = getDefaultInstance().getClientTicket();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 11;</code>
+       * @param value The bytes for clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicketBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        clientTicket_ = 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:ManageServiceMI3.InnerTradeLinkReq)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.InnerTradeLinkReq)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<InnerTradeLinkReq>
+        PARSER = new com.google.protobuf.AbstractParser<InnerTradeLinkReq>() {
+      @java.lang.Override
+      public InnerTradeLinkReq parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new InnerTradeLinkReq(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<InnerTradeLinkReq> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<InnerTradeLinkReq> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkReq getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface InnerTradeLinkRspOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.InnerTradeLinkRsp)
+      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>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 4;</code>
+     * @return Whether the tradeId field is set.
+     */
+    boolean hasTradeId();
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 4;</code>
+     * @return The tradeId.
+     */
+    long getTradeId();
+
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    boolean hasClientTicket();
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The clientTicket.
+     */
+    java.lang.String getClientTicket();
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The bytes for clientTicket.
+     */
+    com.google.protobuf.ByteString
+        getClientTicketBytes();
+  }
+  /**
+   * <pre>
+   * �ڲ��ɽ���������Ӧ 0 18 13
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.InnerTradeLinkRsp}
+   */
+  public static final class InnerTradeLinkRsp extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.InnerTradeLinkRsp)
+      InnerTradeLinkRspOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use InnerTradeLinkRsp.newBuilder() to construct.
+    private InnerTradeLinkRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private InnerTradeLinkRsp() {
+      retDesc_ = "";
+      clientTicket_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new InnerTradeLinkRsp();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private InnerTradeLinkRsp(
+        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;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              tradeId_ = input.readUInt64();
+              break;
+            }
+            case 42: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000010;
+              clientTicket_ = 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.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkRsp_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkRsp_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.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;
+      }
+    }
+
+    public static final int TRADEID_FIELD_NUMBER = 4;
+    private long tradeId_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 4;</code>
+     * @return Whether the tradeId field is set.
+     */
+    @java.lang.Override
+    public boolean hasTradeId() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeId = 4;</code>
+     * @return The tradeId.
+     */
+    @java.lang.Override
+    public long getTradeId() {
+      return tradeId_;
+    }
+
+    public static final int CLIENTTICKET_FIELD_NUMBER = 5;
+    private volatile java.lang.Object clientTicket_;
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return Whether the clientTicket field is set.
+     */
+    @java.lang.Override
+    public boolean hasClientTicket() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The clientTicket.
+     */
+    @java.lang.Override
+    public java.lang.String getClientTicket() {
+      java.lang.Object ref = clientTicket_;
+      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()) {
+          clientTicket_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * string �ͻ�����ˮ��
+     * </pre>
+     *
+     * <code>optional string ClientTicket = 5;</code>
+     * @return The bytes for clientTicket.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getClientTicketBytes() {
+      java.lang.Object ref = clientTicket_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        clientTicket_ = 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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt64(4, tradeId_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, clientTicket_);
+      }
+      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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, tradeId_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, clientTicket_);
+      }
+      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.FxglServiceMI.InnerTradeLinkRsp)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp) 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 (hasTradeId() != other.hasTradeId()) return false;
+      if (hasTradeId()) {
+        if (getTradeId()
+            != other.getTradeId()) return false;
+      }
+      if (hasClientTicket() != other.hasClientTicket()) return false;
+      if (hasClientTicket()) {
+        if (!getClientTicket()
+            .equals(other.getClientTicket())) 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();
+      }
+      if (hasTradeId()) {
+        hash = (37 * hash) + TRADEID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTradeId());
+      }
+      if (hasClientTicket()) {
+        hash = (37 * hash) + CLIENTTICKET_FIELD_NUMBER;
+        hash = (53 * hash) + getClientTicket().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp 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.FxglServiceMI.InnerTradeLinkRsp 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 18 13
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.InnerTradeLinkRsp}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.InnerTradeLinkRsp)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRspOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkRsp_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkRsp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.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);
+        tradeId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        clientTicket_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_InnerTradeLinkRsp_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp(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_;
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.tradeId_ = tradeId_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.clientTicket_ = clientTicket_;
+        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.FxglServiceMI.InnerTradeLinkRsp) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasRetCode()) {
+          setRetCode(other.getRetCode());
+        }
+        if (other.hasRetDesc()) {
+          bitField0_ |= 0x00000004;
+          retDesc_ = other.retDesc_;
+          onChanged();
+        }
+        if (other.hasTradeId()) {
+          setTradeId(other.getTradeId());
+        }
+        if (other.hasClientTicket()) {
+          bitField0_ |= 0x00000010;
+          clientTicket_ = other.clientTicket_;
+          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.FxglServiceMI.InnerTradeLinkRsp parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp) 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;
+      }
+
+      private long tradeId_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 4;</code>
+       * @return Whether the tradeId field is set.
+       */
+      @java.lang.Override
+      public boolean hasTradeId() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 4;</code>
+       * @return The tradeId.
+       */
+      @java.lang.Override
+      public long getTradeId() {
+        return tradeId_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 4;</code>
+       * @param value The tradeId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTradeId(long value) {
+        bitField0_ |= 0x00000008;
+        tradeId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeId = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTradeId() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        tradeId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object clientTicket_ = "";
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return Whether the clientTicket field is set.
+       */
+      public boolean hasClientTicket() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return The clientTicket.
+       */
+      public java.lang.String getClientTicket() {
+        java.lang.Object ref = clientTicket_;
+        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()) {
+            clientTicket_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return The bytes for clientTicket.
+       */
+      public com.google.protobuf.ByteString
+          getClientTicketBytes() {
+        java.lang.Object ref = clientTicket_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          clientTicket_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @param value The clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicket(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        clientTicket_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearClientTicket() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        clientTicket_ = getDefaultInstance().getClientTicket();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * string �ͻ�����ˮ��
+       * </pre>
+       *
+       * <code>optional string ClientTicket = 5;</code>
+       * @param value The bytes for clientTicket to set.
+       * @return This builder for chaining.
+       */
+      public Builder setClientTicketBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        clientTicket_ = 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:ManageServiceMI3.InnerTradeLinkRsp)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.InnerTradeLinkRsp)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<InnerTradeLinkRsp>
+        PARSER = new com.google.protobuf.AbstractParser<InnerTradeLinkRsp>() {
+      @java.lang.Override
+      public InnerTradeLinkRsp parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new InnerTradeLinkRsp(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<InnerTradeLinkRsp> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<InnerTradeLinkRsp> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.InnerTradeLinkRsp getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ManageUnBoundOrderReqOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.ManageUnBoundOrderReq)
+      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>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 2;</code>
+     * @return Whether the tradeID field is set.
+     */
+    boolean hasTradeID();
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 2;</code>
+     * @return The tradeID.
+     */
+    long getTradeID();
+
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return Whether the accountID field is set.
+     */
+    boolean hasAccountID();
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return The accountID.
+     */
+    long getAccountID();
+
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return Whether the buyOrSell field is set.
+     */
+    boolean hasBuyOrSell();
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return The buyOrSell.
+     */
+    int getBuyOrSell();
+
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return Whether the goodsID field is set.
+     */
+    boolean hasGoodsID();
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return The goodsID.
+     */
+    int getGoodsID();
+
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return Whether the channelBuildType field is set.
+     */
+    boolean hasChannelBuildType();
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return The channelBuildType.
+     */
+    int getChannelBuildType();
+
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return Whether the closeType field is set.
+     */
+    boolean hasCloseType();
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return The closeType.
+     */
+    int getCloseType();
+
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 8;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    boolean hasCreatorSrc();
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 8;</code>
+     * @return The creatorSrc.
+     */
+    int getCreatorSrc();
+  }
+  /**
+   * <pre>
+   * �ⲿ�ɽ�������������� 0 3 103
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.ManageUnBoundOrderReq}
+   */
+  public static final class ManageUnBoundOrderReq extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.ManageUnBoundOrderReq)
+      ManageUnBoundOrderReqOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ManageUnBoundOrderReq.newBuilder() to construct.
+    private ManageUnBoundOrderReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private ManageUnBoundOrderReq() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ManageUnBoundOrderReq();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ManageUnBoundOrderReq(
+        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;
+              tradeID_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              accountID_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              buyOrSell_ = input.readUInt32();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              goodsID_ = input.readUInt32();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              channelBuildType_ = input.readUInt32();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              closeType_ = input.readUInt32();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              creatorSrc_ = input.readUInt32();
+              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.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderReq_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderReq_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.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 TRADEID_FIELD_NUMBER = 2;
+    private long tradeID_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 2;</code>
+     * @return Whether the tradeID field is set.
+     */
+    @java.lang.Override
+    public boolean hasTradeID() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 2;</code>
+     * @return The tradeID.
+     */
+    @java.lang.Override
+    public long getTradeID() {
+      return tradeID_;
+    }
+
+    public static final int ACCOUNTID_FIELD_NUMBER = 3;
+    private long accountID_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return Whether the accountID field is set.
+     */
+    @java.lang.Override
+    public boolean hasAccountID() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return The accountID.
+     */
+    @java.lang.Override
+    public long getAccountID() {
+      return accountID_;
+    }
+
+    public static final int BUYORSELL_FIELD_NUMBER = 4;
+    private int buyOrSell_;
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return Whether the buyOrSell field is set.
+     */
+    @java.lang.Override
+    public boolean hasBuyOrSell() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return The buyOrSell.
+     */
+    @java.lang.Override
+    public int getBuyOrSell() {
+      return buyOrSell_;
+    }
+
+    public static final int GOODSID_FIELD_NUMBER = 5;
+    private int goodsID_;
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return Whether the goodsID field is set.
+     */
+    @java.lang.Override
+    public boolean hasGoodsID() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return The goodsID.
+     */
+    @java.lang.Override
+    public int getGoodsID() {
+      return goodsID_;
+    }
+
+    public static final int CHANNELBUILDTYPE_FIELD_NUMBER = 6;
+    private int channelBuildType_;
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return Whether the channelBuildType field is set.
+     */
+    @java.lang.Override
+    public boolean hasChannelBuildType() {
+      return ((bitField0_ & 0x00000020) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return The channelBuildType.
+     */
+    @java.lang.Override
+    public int getChannelBuildType() {
+      return channelBuildType_;
+    }
+
+    public static final int CLOSETYPE_FIELD_NUMBER = 7;
+    private int closeType_;
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return Whether the closeType field is set.
+     */
+    @java.lang.Override
+    public boolean hasCloseType() {
+      return ((bitField0_ & 0x00000040) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return The closeType.
+     */
+    @java.lang.Override
+    public int getCloseType() {
+      return closeType_;
+    }
+
+    public static final int CREATORSRC_FIELD_NUMBER = 8;
+    private int creatorSrc_;
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 8;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorSrc() {
+      return ((bitField0_ & 0x00000080) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 8;</code>
+     * @return The creatorSrc.
+     */
+    @java.lang.Override
+    public int getCreatorSrc() {
+      return creatorSrc_;
+    }
+
+    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, tradeID_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeUInt64(3, accountID_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt32(4, buyOrSell_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeUInt32(5, goodsID_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        output.writeUInt32(6, channelBuildType_);
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        output.writeUInt32(7, closeType_);
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        output.writeUInt32(8, creatorSrc_);
+      }
+      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, tradeID_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, accountID_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(4, buyOrSell_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, goodsID_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(6, channelBuildType_);
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(7, closeType_);
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(8, creatorSrc_);
+      }
+      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.FxglServiceMI.ManageUnBoundOrderReq)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasTradeID() != other.hasTradeID()) return false;
+      if (hasTradeID()) {
+        if (getTradeID()
+            != other.getTradeID()) return false;
+      }
+      if (hasAccountID() != other.hasAccountID()) return false;
+      if (hasAccountID()) {
+        if (getAccountID()
+            != other.getAccountID()) return false;
+      }
+      if (hasBuyOrSell() != other.hasBuyOrSell()) return false;
+      if (hasBuyOrSell()) {
+        if (getBuyOrSell()
+            != other.getBuyOrSell()) return false;
+      }
+      if (hasGoodsID() != other.hasGoodsID()) return false;
+      if (hasGoodsID()) {
+        if (getGoodsID()
+            != other.getGoodsID()) return false;
+      }
+      if (hasChannelBuildType() != other.hasChannelBuildType()) return false;
+      if (hasChannelBuildType()) {
+        if (getChannelBuildType()
+            != other.getChannelBuildType()) return false;
+      }
+      if (hasCloseType() != other.hasCloseType()) return false;
+      if (hasCloseType()) {
+        if (getCloseType()
+            != other.getCloseType()) return false;
+      }
+      if (hasCreatorSrc() != other.hasCreatorSrc()) return false;
+      if (hasCreatorSrc()) {
+        if (getCreatorSrc()
+            != other.getCreatorSrc()) 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 (hasTradeID()) {
+        hash = (37 * hash) + TRADEID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTradeID());
+      }
+      if (hasAccountID()) {
+        hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getAccountID());
+      }
+      if (hasBuyOrSell()) {
+        hash = (37 * hash) + BUYORSELL_FIELD_NUMBER;
+        hash = (53 * hash) + getBuyOrSell();
+      }
+      if (hasGoodsID()) {
+        hash = (37 * hash) + GOODSID_FIELD_NUMBER;
+        hash = (53 * hash) + getGoodsID();
+      }
+      if (hasChannelBuildType()) {
+        hash = (37 * hash) + CHANNELBUILDTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getChannelBuildType();
+      }
+      if (hasCloseType()) {
+        hash = (37 * hash) + CLOSETYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getCloseType();
+      }
+      if (hasCreatorSrc()) {
+        hash = (37 * hash) + CREATORSRC_FIELD_NUMBER;
+        hash = (53 * hash) + getCreatorSrc();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq 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.FxglServiceMI.ManageUnBoundOrderReq 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 3 103
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.ManageUnBoundOrderReq}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.ManageUnBoundOrderReq)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReqOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderReq_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderReq_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.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);
+        tradeID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        accountID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        buyOrSell_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        goodsID_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        channelBuildType_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        closeType_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        creatorSrc_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderReq_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq(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.tradeID_ = tradeID_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.accountID_ = accountID_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.buyOrSell_ = buyOrSell_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.goodsID_ = goodsID_;
+          to_bitField0_ |= 0x00000010;
+        }
+        if (((from_bitField0_ & 0x00000020) != 0)) {
+          result.channelBuildType_ = channelBuildType_;
+          to_bitField0_ |= 0x00000020;
+        }
+        if (((from_bitField0_ & 0x00000040) != 0)) {
+          result.closeType_ = closeType_;
+          to_bitField0_ |= 0x00000040;
+        }
+        if (((from_bitField0_ & 0x00000080) != 0)) {
+          result.creatorSrc_ = creatorSrc_;
+          to_bitField0_ |= 0x00000080;
+        }
+        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.FxglServiceMI.ManageUnBoundOrderReq) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasTradeID()) {
+          setTradeID(other.getTradeID());
+        }
+        if (other.hasAccountID()) {
+          setAccountID(other.getAccountID());
+        }
+        if (other.hasBuyOrSell()) {
+          setBuyOrSell(other.getBuyOrSell());
+        }
+        if (other.hasGoodsID()) {
+          setGoodsID(other.getGoodsID());
+        }
+        if (other.hasChannelBuildType()) {
+          setChannelBuildType(other.getChannelBuildType());
+        }
+        if (other.hasCloseType()) {
+          setCloseType(other.getCloseType());
+        }
+        if (other.hasCreatorSrc()) {
+          setCreatorSrc(other.getCreatorSrc());
+        }
+        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.FxglServiceMI.ManageUnBoundOrderReq parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq) 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 tradeID_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 2;</code>
+       * @return Whether the tradeID field is set.
+       */
+      @java.lang.Override
+      public boolean hasTradeID() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 2;</code>
+       * @return The tradeID.
+       */
+      @java.lang.Override
+      public long getTradeID() {
+        return tradeID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 2;</code>
+       * @param value The tradeID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTradeID(long value) {
+        bitField0_ |= 0x00000002;
+        tradeID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTradeID() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        tradeID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long accountID_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @return Whether the accountID field is set.
+       */
+      @java.lang.Override
+      public boolean hasAccountID() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @return The accountID.
+       */
+      @java.lang.Override
+      public long getAccountID() {
+        return accountID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @param value The accountID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAccountID(long value) {
+        bitField0_ |= 0x00000004;
+        accountID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAccountID() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        accountID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int buyOrSell_ ;
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @return Whether the buyOrSell field is set.
+       */
+      @java.lang.Override
+      public boolean hasBuyOrSell() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @return The buyOrSell.
+       */
+      @java.lang.Override
+      public int getBuyOrSell() {
+        return buyOrSell_;
+      }
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @param value The buyOrSell to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuyOrSell(int value) {
+        bitField0_ |= 0x00000008;
+        buyOrSell_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBuyOrSell() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        buyOrSell_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int goodsID_ ;
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @return Whether the goodsID field is set.
+       */
+      @java.lang.Override
+      public boolean hasGoodsID() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @return The goodsID.
+       */
+      @java.lang.Override
+      public int getGoodsID() {
+        return goodsID_;
+      }
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @param value The goodsID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setGoodsID(int value) {
+        bitField0_ |= 0x00000010;
+        goodsID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearGoodsID() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        goodsID_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int channelBuildType_ ;
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @return Whether the channelBuildType field is set.
+       */
+      @java.lang.Override
+      public boolean hasChannelBuildType() {
+        return ((bitField0_ & 0x00000020) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @return The channelBuildType.
+       */
+      @java.lang.Override
+      public int getChannelBuildType() {
+        return channelBuildType_;
+      }
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @param value The channelBuildType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setChannelBuildType(int value) {
+        bitField0_ |= 0x00000020;
+        channelBuildType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearChannelBuildType() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        channelBuildType_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int closeType_ ;
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @return Whether the closeType field is set.
+       */
+      @java.lang.Override
+      public boolean hasCloseType() {
+        return ((bitField0_ & 0x00000040) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @return The closeType.
+       */
+      @java.lang.Override
+      public int getCloseType() {
+        return closeType_;
+      }
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @param value The closeType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCloseType(int value) {
+        bitField0_ |= 0x00000040;
+        closeType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCloseType() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        closeType_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int creatorSrc_ ;
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 8;</code>
+       * @return Whether the creatorSrc field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorSrc() {
+        return ((bitField0_ & 0x00000080) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 8;</code>
+       * @return The creatorSrc.
+       */
+      @java.lang.Override
+      public int getCreatorSrc() {
+        return creatorSrc_;
+      }
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 8;</code>
+       * @param value The creatorSrc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorSrc(int value) {
+        bitField0_ |= 0x00000080;
+        creatorSrc_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorSrc() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        creatorSrc_ = 0;
+        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:ManageServiceMI3.ManageUnBoundOrderReq)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.ManageUnBoundOrderReq)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ManageUnBoundOrderReq>
+        PARSER = new com.google.protobuf.AbstractParser<ManageUnBoundOrderReq>() {
+      @java.lang.Override
+      public ManageUnBoundOrderReq parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ManageUnBoundOrderReq(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ManageUnBoundOrderReq> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ManageUnBoundOrderReq> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderReq getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ManageUnBoundOrderRspOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.ManageUnBoundOrderRsp)
+      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>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 4;</code>
+     * @return Whether the tradeID field is set.
+     */
+    boolean hasTradeID();
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 4;</code>
+     * @return The tradeID.
+     */
+    long getTradeID();
+
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return Whether the accountID field is set.
+     */
+    boolean hasAccountID();
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return The accountID.
+     */
+    long getAccountID();
+  }
+  /**
+   * <pre>
+   * �ⲿ�ɽ������������Ӧ 0 3 104
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.ManageUnBoundOrderRsp}
+   */
+  public static final class ManageUnBoundOrderRsp extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.ManageUnBoundOrderRsp)
+      ManageUnBoundOrderRspOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ManageUnBoundOrderRsp.newBuilder() to construct.
+    private ManageUnBoundOrderRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private ManageUnBoundOrderRsp() {
+      retDesc_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ManageUnBoundOrderRsp();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ManageUnBoundOrderRsp(
+        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;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              tradeID_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              accountID_ = input.readUInt64();
+              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.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.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;
+      }
+    }
+
+    public static final int TRADEID_FIELD_NUMBER = 4;
+    private long tradeID_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 4;</code>
+     * @return Whether the tradeID field is set.
+     */
+    @java.lang.Override
+    public boolean hasTradeID() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeID = 4;</code>
+     * @return The tradeID.
+     */
+    @java.lang.Override
+    public long getTradeID() {
+      return tradeID_;
+    }
+
+    public static final int ACCOUNTID_FIELD_NUMBER = 5;
+    private long accountID_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return Whether the accountID field is set.
+     */
+    @java.lang.Override
+    public boolean hasAccountID() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return The accountID.
+     */
+    @java.lang.Override
+    public long getAccountID() {
+      return accountID_;
+    }
+
+    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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt64(4, tradeID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeUInt64(5, accountID_);
+      }
+      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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, tradeID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, accountID_);
+      }
+      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.FxglServiceMI.ManageUnBoundOrderRsp)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp) 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 (hasTradeID() != other.hasTradeID()) return false;
+      if (hasTradeID()) {
+        if (getTradeID()
+            != other.getTradeID()) return false;
+      }
+      if (hasAccountID() != other.hasAccountID()) return false;
+      if (hasAccountID()) {
+        if (getAccountID()
+            != other.getAccountID()) 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();
+      }
+      if (hasTradeID()) {
+        hash = (37 * hash) + TRADEID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTradeID());
+      }
+      if (hasAccountID()) {
+        hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getAccountID());
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp 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.FxglServiceMI.ManageUnBoundOrderRsp 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 3 104
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.ManageUnBoundOrderRsp}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.ManageUnBoundOrderRsp)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRspOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.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);
+        tradeID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        accountID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp(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_;
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.tradeID_ = tradeID_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.accountID_ = accountID_;
+          to_bitField0_ |= 0x00000010;
+        }
+        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.FxglServiceMI.ManageUnBoundOrderRsp) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasRetCode()) {
+          setRetCode(other.getRetCode());
+        }
+        if (other.hasRetDesc()) {
+          bitField0_ |= 0x00000004;
+          retDesc_ = other.retDesc_;
+          onChanged();
+        }
+        if (other.hasTradeID()) {
+          setTradeID(other.getTradeID());
+        }
+        if (other.hasAccountID()) {
+          setAccountID(other.getAccountID());
+        }
+        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.FxglServiceMI.ManageUnBoundOrderRsp parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp) 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;
+      }
+
+      private long tradeID_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 4;</code>
+       * @return Whether the tradeID field is set.
+       */
+      @java.lang.Override
+      public boolean hasTradeID() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 4;</code>
+       * @return The tradeID.
+       */
+      @java.lang.Override
+      public long getTradeID() {
+        return tradeID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 4;</code>
+       * @param value The tradeID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTradeID(long value) {
+        bitField0_ |= 0x00000008;
+        tradeID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeID = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTradeID() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        tradeID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long accountID_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @return Whether the accountID field is set.
+       */
+      @java.lang.Override
+      public boolean hasAccountID() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @return The accountID.
+       */
+      @java.lang.Override
+      public long getAccountID() {
+        return accountID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @param value The accountID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAccountID(long value) {
+        bitField0_ |= 0x00000010;
+        accountID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAccountID() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        accountID_ = 0L;
+        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:ManageServiceMI3.ManageUnBoundOrderRsp)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.ManageUnBoundOrderRsp)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ManageUnBoundOrderRsp>
+        PARSER = new com.google.protobuf.AbstractParser<ManageUnBoundOrderRsp>() {
+      @java.lang.Override
+      public ManageUnBoundOrderRsp parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ManageUnBoundOrderRsp(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ManageUnBoundOrderRsp> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ManageUnBoundOrderRsp> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageUnBoundOrderRsp getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ManageAmendOrderReqOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.ManageAmendOrderReq)
+      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>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 2;</code>
+     * @return Whether the outTradeID field is set.
+     */
+    boolean hasOutTradeID();
+    /**
+     * <pre>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 2;</code>
+     * @return The outTradeID.
+     */
+    long getOutTradeID();
+
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return Whether the accountID field is set.
+     */
+    boolean hasAccountID();
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return The accountID.
+     */
+    long getAccountID();
+
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return Whether the buyOrSell field is set.
+     */
+    boolean hasBuyOrSell();
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return The buyOrSell.
+     */
+    int getBuyOrSell();
+
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return Whether the goodsID field is set.
+     */
+    boolean hasGoodsID();
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return The goodsID.
+     */
+    int getGoodsID();
+
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return Whether the channelBuildType field is set.
+     */
+    boolean hasChannelBuildType();
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return The channelBuildType.
+     */
+    int getChannelBuildType();
+
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return Whether the closeType field is set.
+     */
+    boolean hasCloseType();
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return The closeType.
+     */
+    int getCloseType();
+
+    /**
+     * <pre>
+     * double �ɽ��۸�
+     * </pre>
+     *
+     * <code>optional double TradePrice = 8;</code>
+     * @return Whether the tradePrice field is set.
+     */
+    boolean hasTradePrice();
+    /**
+     * <pre>
+     * double �ɽ��۸�
+     * </pre>
+     *
+     * <code>optional double TradePrice = 8;</code>
+     * @return The tradePrice.
+     */
+    double getTradePrice();
+
+    /**
+     * <pre>
+     * uint64 �ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeQty = 9;</code>
+     * @return Whether the tradeQty field is set.
+     */
+    boolean hasTradeQty();
+    /**
+     * <pre>
+     * uint64 �ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeQty = 9;</code>
+     * @return The tradeQty.
+     */
+    long getTradeQty();
+
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 10;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    boolean hasCreatorSrc();
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 10;</code>
+     * @return The creatorSrc.
+     */
+    int getCreatorSrc();
+
+    /**
+     * <pre>
+     * uint64 ������ID
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 11;</code>
+     * @return Whether the creatorID field is set.
+     */
+    boolean hasCreatorID();
+    /**
+     * <pre>
+     * uint64 ������ID
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 11;</code>
+     * @return The creatorID.
+     */
+    long getCreatorID();
+
+    /**
+     * <pre>
+     * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 12;</code>
+     * @return Whether the hedgeFlag field is set.
+     */
+    boolean hasHedgeFlag();
+    /**
+     * <pre>
+     * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 12;</code>
+     * @return The hedgeFlag.
+     */
+    int getHedgeFlag();
+
+    /**
+     * <pre>
+     * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 13;</code>
+     * @return Whether the spotContractID field is set.
+     */
+    boolean hasSpotContractID();
+    /**
+     * <pre>
+     * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 13;</code>
+     * @return The spotContractID.
+     */
+    long getSpotContractID();
+
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 14;</code>
+     * @return Whether the saleUserID field is set.
+     */
+    boolean hasSaleUserID();
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 14;</code>
+     * @return The saleUserID.
+     */
+    int getSaleUserID();
+
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 15;</code>
+     * @return Whether the bizSubjectID field is set.
+     */
+    boolean hasBizSubjectID();
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 15;</code>
+     * @return The bizSubjectID.
+     */
+    int getBizSubjectID();
+  }
+  /**
+   * <pre>
+   * ��¼�ڲ��ɽ������� 0 3 99
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.ManageAmendOrderReq}
+   */
+  public static final class ManageAmendOrderReq extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.ManageAmendOrderReq)
+      ManageAmendOrderReqOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ManageAmendOrderReq.newBuilder() to construct.
+    private ManageAmendOrderReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private ManageAmendOrderReq() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ManageAmendOrderReq();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ManageAmendOrderReq(
+        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;
+              outTradeID_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              accountID_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              buyOrSell_ = input.readUInt32();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              goodsID_ = input.readUInt32();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              channelBuildType_ = input.readUInt32();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              closeType_ = input.readUInt32();
+              break;
+            }
+            case 65: {
+              bitField0_ |= 0x00000080;
+              tradePrice_ = input.readDouble();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              tradeQty_ = input.readUInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              creatorSrc_ = input.readUInt32();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              creatorID_ = input.readUInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              hedgeFlag_ = input.readUInt32();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              spotContractID_ = input.readUInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              saleUserID_ = input.readUInt32();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              bizSubjectID_ = input.readUInt32();
+              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.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderReq_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderReq_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.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 OUTTRADEID_FIELD_NUMBER = 2;
+    private long outTradeID_;
+    /**
+     * <pre>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 2;</code>
+     * @return Whether the outTradeID field is set.
+     */
+    @java.lang.Override
+    public boolean hasOutTradeID() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 2;</code>
+     * @return The outTradeID.
+     */
+    @java.lang.Override
+    public long getOutTradeID() {
+      return outTradeID_;
+    }
+
+    public static final int ACCOUNTID_FIELD_NUMBER = 3;
+    private long accountID_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return Whether the accountID field is set.
+     */
+    @java.lang.Override
+    public boolean hasAccountID() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 3;</code>
+     * @return The accountID.
+     */
+    @java.lang.Override
+    public long getAccountID() {
+      return accountID_;
+    }
+
+    public static final int BUYORSELL_FIELD_NUMBER = 4;
+    private int buyOrSell_;
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return Whether the buyOrSell field is set.
+     */
+    @java.lang.Override
+    public boolean hasBuyOrSell() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ���� - 0:�� 1:��
+     * </pre>
+     *
+     * <code>optional uint32 BuyOrSell = 4;</code>
+     * @return The buyOrSell.
+     */
+    @java.lang.Override
+    public int getBuyOrSell() {
+      return buyOrSell_;
+    }
+
+    public static final int GOODSID_FIELD_NUMBER = 5;
+    private int goodsID_;
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return Whether the goodsID field is set.
+     */
+    @java.lang.Override
+    public boolean hasGoodsID() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ��ƷID
+     * </pre>
+     *
+     * <code>optional uint32 GoodsID = 5;</code>
+     * @return The goodsID.
+     */
+    @java.lang.Override
+    public int getGoodsID() {
+      return goodsID_;
+    }
+
+    public static final int CHANNELBUILDTYPE_FIELD_NUMBER = 6;
+    private int channelBuildType_;
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return Whether the channelBuildType field is set.
+     */
+    @java.lang.Override
+    public boolean hasChannelBuildType() {
+      return ((bitField0_ & 0x00000020) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 ChannelBuildType = 6;</code>
+     * @return The channelBuildType.
+     */
+    @java.lang.Override
+    public int getChannelBuildType() {
+      return channelBuildType_;
+    }
+
+    public static final int CLOSETYPE_FIELD_NUMBER = 7;
+    private int closeType_;
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return Whether the closeType field is set.
+     */
+    @java.lang.Override
+    public boolean hasCloseType() {
+      return ((bitField0_ & 0x00000040) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+     * </pre>
+     *
+     * <code>optional uint32 CloseType = 7;</code>
+     * @return The closeType.
+     */
+    @java.lang.Override
+    public int getCloseType() {
+      return closeType_;
+    }
+
+    public static final int TRADEPRICE_FIELD_NUMBER = 8;
+    private double tradePrice_;
+    /**
+     * <pre>
+     * double �ɽ��۸�
+     * </pre>
+     *
+     * <code>optional double TradePrice = 8;</code>
+     * @return Whether the tradePrice field is set.
+     */
+    @java.lang.Override
+    public boolean hasTradePrice() {
+      return ((bitField0_ & 0x00000080) != 0);
+    }
+    /**
+     * <pre>
+     * double �ɽ��۸�
+     * </pre>
+     *
+     * <code>optional double TradePrice = 8;</code>
+     * @return The tradePrice.
+     */
+    @java.lang.Override
+    public double getTradePrice() {
+      return tradePrice_;
+    }
+
+    public static final int TRADEQTY_FIELD_NUMBER = 9;
+    private long tradeQty_;
+    /**
+     * <pre>
+     * uint64 �ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeQty = 9;</code>
+     * @return Whether the tradeQty field is set.
+     */
+    @java.lang.Override
+    public boolean hasTradeQty() {
+      return ((bitField0_ & 0x00000100) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 TradeQty = 9;</code>
+     * @return The tradeQty.
+     */
+    @java.lang.Override
+    public long getTradeQty() {
+      return tradeQty_;
+    }
+
+    public static final int CREATORSRC_FIELD_NUMBER = 10;
+    private int creatorSrc_;
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 10;</code>
+     * @return Whether the creatorSrc field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorSrc() {
+      return ((bitField0_ & 0x00000200) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+     * </pre>
+     *
+     * <code>optional uint32 CreatorSrc = 10;</code>
+     * @return The creatorSrc.
+     */
+    @java.lang.Override
+    public int getCreatorSrc() {
+      return creatorSrc_;
+    }
+
+    public static final int CREATORID_FIELD_NUMBER = 11;
+    private long creatorID_;
+    /**
+     * <pre>
+     * uint64 ������ID
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 11;</code>
+     * @return Whether the creatorID field is set.
+     */
+    @java.lang.Override
+    public boolean hasCreatorID() {
+      return ((bitField0_ & 0x00000400) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 ������ID
+     * </pre>
+     *
+     * <code>optional uint64 CreatorID = 11;</code>
+     * @return The creatorID.
+     */
+    @java.lang.Override
+    public long getCreatorID() {
+      return creatorID_;
+    }
+
+    public static final int HEDGEFLAG_FIELD_NUMBER = 12;
+    private int hedgeFlag_;
+    /**
+     * <pre>
+     * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 12;</code>
+     * @return Whether the hedgeFlag field is set.
+     */
+    @java.lang.Override
+    public boolean hasHedgeFlag() {
+      return ((bitField0_ & 0x00000800) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+     * </pre>
+     *
+     * <code>optional uint32 HedgeFlag = 12;</code>
+     * @return The hedgeFlag.
+     */
+    @java.lang.Override
+    public int getHedgeFlag() {
+      return hedgeFlag_;
+    }
+
+    public static final int SPOTCONTRACTID_FIELD_NUMBER = 13;
+    private long spotContractID_;
+    /**
+     * <pre>
+     * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 13;</code>
+     * @return Whether the spotContractID field is set.
+     */
+    @java.lang.Override
+    public boolean hasSpotContractID() {
+      return ((bitField0_ & 0x00001000) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+     * </pre>
+     *
+     * <code>optional uint64 SpotContractID = 13;</code>
+     * @return The spotContractID.
+     */
+    @java.lang.Override
+    public long getSpotContractID() {
+      return spotContractID_;
+    }
+
+    public static final int SALEUSERID_FIELD_NUMBER = 14;
+    private int saleUserID_;
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 14;</code>
+     * @return Whether the saleUserID field is set.
+     */
+    @java.lang.Override
+    public boolean hasSaleUserID() {
+      return ((bitField0_ & 0x00002000) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ҵ��ԱID
+     * </pre>
+     *
+     * <code>optional uint32 SaleUserID = 14;</code>
+     * @return The saleUserID.
+     */
+    @java.lang.Override
+    public int getSaleUserID() {
+      return saleUserID_;
+    }
+
+    public static final int BIZSUBJECTID_FIELD_NUMBER = 15;
+    private int bizSubjectID_;
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 15;</code>
+     * @return Whether the bizSubjectID field is set.
+     */
+    @java.lang.Override
+    public boolean hasBizSubjectID() {
+      return ((bitField0_ & 0x00004000) != 0);
+    }
+    /**
+     * <pre>
+     * uint32 ����ҵ����ID
+     * </pre>
+     *
+     * <code>optional uint32 BizSubjectID = 15;</code>
+     * @return The bizSubjectID.
+     */
+    @java.lang.Override
+    public int getBizSubjectID() {
+      return bizSubjectID_;
+    }
+
+    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, outTradeID_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeUInt64(3, accountID_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt32(4, buyOrSell_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeUInt32(5, goodsID_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        output.writeUInt32(6, channelBuildType_);
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        output.writeUInt32(7, closeType_);
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        output.writeDouble(8, tradePrice_);
+      }
+      if (((bitField0_ & 0x00000100) != 0)) {
+        output.writeUInt64(9, tradeQty_);
+      }
+      if (((bitField0_ & 0x00000200) != 0)) {
+        output.writeUInt32(10, creatorSrc_);
+      }
+      if (((bitField0_ & 0x00000400) != 0)) {
+        output.writeUInt64(11, creatorID_);
+      }
+      if (((bitField0_ & 0x00000800) != 0)) {
+        output.writeUInt32(12, hedgeFlag_);
+      }
+      if (((bitField0_ & 0x00001000) != 0)) {
+        output.writeUInt64(13, spotContractID_);
+      }
+      if (((bitField0_ & 0x00002000) != 0)) {
+        output.writeUInt32(14, saleUserID_);
+      }
+      if (((bitField0_ & 0x00004000) != 0)) {
+        output.writeUInt32(15, bizSubjectID_);
+      }
+      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, outTradeID_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, accountID_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(4, buyOrSell_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, goodsID_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(6, channelBuildType_);
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(7, closeType_);
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(8, tradePrice_);
+      }
+      if (((bitField0_ & 0x00000100) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(9, tradeQty_);
+      }
+      if (((bitField0_ & 0x00000200) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(10, creatorSrc_);
+      }
+      if (((bitField0_ & 0x00000400) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(11, creatorID_);
+      }
+      if (((bitField0_ & 0x00000800) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(12, hedgeFlag_);
+      }
+      if (((bitField0_ & 0x00001000) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(13, spotContractID_);
+      }
+      if (((bitField0_ & 0x00002000) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(14, saleUserID_);
+      }
+      if (((bitField0_ & 0x00004000) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(15, bizSubjectID_);
+      }
+      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.FxglServiceMI.ManageAmendOrderReq)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasOutTradeID() != other.hasOutTradeID()) return false;
+      if (hasOutTradeID()) {
+        if (getOutTradeID()
+            != other.getOutTradeID()) return false;
+      }
+      if (hasAccountID() != other.hasAccountID()) return false;
+      if (hasAccountID()) {
+        if (getAccountID()
+            != other.getAccountID()) return false;
+      }
+      if (hasBuyOrSell() != other.hasBuyOrSell()) return false;
+      if (hasBuyOrSell()) {
+        if (getBuyOrSell()
+            != other.getBuyOrSell()) return false;
+      }
+      if (hasGoodsID() != other.hasGoodsID()) return false;
+      if (hasGoodsID()) {
+        if (getGoodsID()
+            != other.getGoodsID()) return false;
+      }
+      if (hasChannelBuildType() != other.hasChannelBuildType()) return false;
+      if (hasChannelBuildType()) {
+        if (getChannelBuildType()
+            != other.getChannelBuildType()) return false;
+      }
+      if (hasCloseType() != other.hasCloseType()) return false;
+      if (hasCloseType()) {
+        if (getCloseType()
+            != other.getCloseType()) return false;
+      }
+      if (hasTradePrice() != other.hasTradePrice()) return false;
+      if (hasTradePrice()) {
+        if (java.lang.Double.doubleToLongBits(getTradePrice())
+            != java.lang.Double.doubleToLongBits(
+                other.getTradePrice())) return false;
+      }
+      if (hasTradeQty() != other.hasTradeQty()) return false;
+      if (hasTradeQty()) {
+        if (getTradeQty()
+            != other.getTradeQty()) return false;
+      }
+      if (hasCreatorSrc() != other.hasCreatorSrc()) return false;
+      if (hasCreatorSrc()) {
+        if (getCreatorSrc()
+            != other.getCreatorSrc()) return false;
+      }
+      if (hasCreatorID() != other.hasCreatorID()) return false;
+      if (hasCreatorID()) {
+        if (getCreatorID()
+            != other.getCreatorID()) return false;
+      }
+      if (hasHedgeFlag() != other.hasHedgeFlag()) return false;
+      if (hasHedgeFlag()) {
+        if (getHedgeFlag()
+            != other.getHedgeFlag()) return false;
+      }
+      if (hasSpotContractID() != other.hasSpotContractID()) return false;
+      if (hasSpotContractID()) {
+        if (getSpotContractID()
+            != other.getSpotContractID()) return false;
+      }
+      if (hasSaleUserID() != other.hasSaleUserID()) return false;
+      if (hasSaleUserID()) {
+        if (getSaleUserID()
+            != other.getSaleUserID()) return false;
+      }
+      if (hasBizSubjectID() != other.hasBizSubjectID()) return false;
+      if (hasBizSubjectID()) {
+        if (getBizSubjectID()
+            != other.getBizSubjectID()) 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 (hasOutTradeID()) {
+        hash = (37 * hash) + OUTTRADEID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getOutTradeID());
+      }
+      if (hasAccountID()) {
+        hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getAccountID());
+      }
+      if (hasBuyOrSell()) {
+        hash = (37 * hash) + BUYORSELL_FIELD_NUMBER;
+        hash = (53 * hash) + getBuyOrSell();
+      }
+      if (hasGoodsID()) {
+        hash = (37 * hash) + GOODSID_FIELD_NUMBER;
+        hash = (53 * hash) + getGoodsID();
+      }
+      if (hasChannelBuildType()) {
+        hash = (37 * hash) + CHANNELBUILDTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getChannelBuildType();
+      }
+      if (hasCloseType()) {
+        hash = (37 * hash) + CLOSETYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getCloseType();
+      }
+      if (hasTradePrice()) {
+        hash = (37 * hash) + TRADEPRICE_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            java.lang.Double.doubleToLongBits(getTradePrice()));
+      }
+      if (hasTradeQty()) {
+        hash = (37 * hash) + TRADEQTY_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTradeQty());
+      }
+      if (hasCreatorSrc()) {
+        hash = (37 * hash) + CREATORSRC_FIELD_NUMBER;
+        hash = (53 * hash) + getCreatorSrc();
+      }
+      if (hasCreatorID()) {
+        hash = (37 * hash) + CREATORID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getCreatorID());
+      }
+      if (hasHedgeFlag()) {
+        hash = (37 * hash) + HEDGEFLAG_FIELD_NUMBER;
+        hash = (53 * hash) + getHedgeFlag();
+      }
+      if (hasSpotContractID()) {
+        hash = (37 * hash) + SPOTCONTRACTID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getSpotContractID());
+      }
+      if (hasSaleUserID()) {
+        hash = (37 * hash) + SALEUSERID_FIELD_NUMBER;
+        hash = (53 * hash) + getSaleUserID();
+      }
+      if (hasBizSubjectID()) {
+        hash = (37 * hash) + BIZSUBJECTID_FIELD_NUMBER;
+        hash = (53 * hash) + getBizSubjectID();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq 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.FxglServiceMI.ManageAmendOrderReq 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 3 99
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.ManageAmendOrderReq}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.ManageAmendOrderReq)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReqOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderReq_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderReq_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.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);
+        outTradeID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        accountID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        buyOrSell_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        goodsID_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        channelBuildType_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        closeType_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        tradePrice_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        tradeQty_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        creatorSrc_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        creatorID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        hedgeFlag_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        spotContractID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        saleUserID_ = 0;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        bizSubjectID_ = 0;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderReq_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq(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.outTradeID_ = outTradeID_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.accountID_ = accountID_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.buyOrSell_ = buyOrSell_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.goodsID_ = goodsID_;
+          to_bitField0_ |= 0x00000010;
+        }
+        if (((from_bitField0_ & 0x00000020) != 0)) {
+          result.channelBuildType_ = channelBuildType_;
+          to_bitField0_ |= 0x00000020;
+        }
+        if (((from_bitField0_ & 0x00000040) != 0)) {
+          result.closeType_ = closeType_;
+          to_bitField0_ |= 0x00000040;
+        }
+        if (((from_bitField0_ & 0x00000080) != 0)) {
+          result.tradePrice_ = tradePrice_;
+          to_bitField0_ |= 0x00000080;
+        }
+        if (((from_bitField0_ & 0x00000100) != 0)) {
+          result.tradeQty_ = tradeQty_;
+          to_bitField0_ |= 0x00000100;
+        }
+        if (((from_bitField0_ & 0x00000200) != 0)) {
+          result.creatorSrc_ = creatorSrc_;
+          to_bitField0_ |= 0x00000200;
+        }
+        if (((from_bitField0_ & 0x00000400) != 0)) {
+          result.creatorID_ = creatorID_;
+          to_bitField0_ |= 0x00000400;
+        }
+        if (((from_bitField0_ & 0x00000800) != 0)) {
+          result.hedgeFlag_ = hedgeFlag_;
+          to_bitField0_ |= 0x00000800;
+        }
+        if (((from_bitField0_ & 0x00001000) != 0)) {
+          result.spotContractID_ = spotContractID_;
+          to_bitField0_ |= 0x00001000;
+        }
+        if (((from_bitField0_ & 0x00002000) != 0)) {
+          result.saleUserID_ = saleUserID_;
+          to_bitField0_ |= 0x00002000;
+        }
+        if (((from_bitField0_ & 0x00004000) != 0)) {
+          result.bizSubjectID_ = bizSubjectID_;
+          to_bitField0_ |= 0x00004000;
+        }
+        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.FxglServiceMI.ManageAmendOrderReq) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasOutTradeID()) {
+          setOutTradeID(other.getOutTradeID());
+        }
+        if (other.hasAccountID()) {
+          setAccountID(other.getAccountID());
+        }
+        if (other.hasBuyOrSell()) {
+          setBuyOrSell(other.getBuyOrSell());
+        }
+        if (other.hasGoodsID()) {
+          setGoodsID(other.getGoodsID());
+        }
+        if (other.hasChannelBuildType()) {
+          setChannelBuildType(other.getChannelBuildType());
+        }
+        if (other.hasCloseType()) {
+          setCloseType(other.getCloseType());
+        }
+        if (other.hasTradePrice()) {
+          setTradePrice(other.getTradePrice());
+        }
+        if (other.hasTradeQty()) {
+          setTradeQty(other.getTradeQty());
+        }
+        if (other.hasCreatorSrc()) {
+          setCreatorSrc(other.getCreatorSrc());
+        }
+        if (other.hasCreatorID()) {
+          setCreatorID(other.getCreatorID());
+        }
+        if (other.hasHedgeFlag()) {
+          setHedgeFlag(other.getHedgeFlag());
+        }
+        if (other.hasSpotContractID()) {
+          setSpotContractID(other.getSpotContractID());
+        }
+        if (other.hasSaleUserID()) {
+          setSaleUserID(other.getSaleUserID());
+        }
+        if (other.hasBizSubjectID()) {
+          setBizSubjectID(other.getBizSubjectID());
+        }
+        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.FxglServiceMI.ManageAmendOrderReq parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq) 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 outTradeID_ ;
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 2;</code>
+       * @return Whether the outTradeID field is set.
+       */
+      @java.lang.Override
+      public boolean hasOutTradeID() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 2;</code>
+       * @return The outTradeID.
+       */
+      @java.lang.Override
+      public long getOutTradeID() {
+        return outTradeID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 2;</code>
+       * @param value The outTradeID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setOutTradeID(long value) {
+        bitField0_ |= 0x00000002;
+        outTradeID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearOutTradeID() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        outTradeID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long accountID_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @return Whether the accountID field is set.
+       */
+      @java.lang.Override
+      public boolean hasAccountID() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @return The accountID.
+       */
+      @java.lang.Override
+      public long getAccountID() {
+        return accountID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @param value The accountID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAccountID(long value) {
+        bitField0_ |= 0x00000004;
+        accountID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAccountID() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        accountID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int buyOrSell_ ;
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @return Whether the buyOrSell field is set.
+       */
+      @java.lang.Override
+      public boolean hasBuyOrSell() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @return The buyOrSell.
+       */
+      @java.lang.Override
+      public int getBuyOrSell() {
+        return buyOrSell_;
+      }
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @param value The buyOrSell to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuyOrSell(int value) {
+        bitField0_ |= 0x00000008;
+        buyOrSell_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ���� - 0:�� 1:��
+       * </pre>
+       *
+       * <code>optional uint32 BuyOrSell = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBuyOrSell() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        buyOrSell_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int goodsID_ ;
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @return Whether the goodsID field is set.
+       */
+      @java.lang.Override
+      public boolean hasGoodsID() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @return The goodsID.
+       */
+      @java.lang.Override
+      public int getGoodsID() {
+        return goodsID_;
+      }
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @param value The goodsID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setGoodsID(int value) {
+        bitField0_ |= 0x00000010;
+        goodsID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ��ƷID
+       * </pre>
+       *
+       * <code>optional uint32 GoodsID = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearGoodsID() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        goodsID_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int channelBuildType_ ;
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @return Whether the channelBuildType field is set.
+       */
+      @java.lang.Override
+      public boolean hasChannelBuildType() {
+        return ((bitField0_ & 0x00000020) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @return The channelBuildType.
+       */
+      @java.lang.Override
+      public int getChannelBuildType() {
+        return channelBuildType_;
+      }
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @param value The channelBuildType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setChannelBuildType(int value) {
+        bitField0_ |= 0x00000020;
+        channelBuildType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 �µ�����(��ƽ��־ - 0:�� 1:���� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 ChannelBuildType = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearChannelBuildType() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        channelBuildType_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int closeType_ ;
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @return Whether the closeType field is set.
+       */
+      @java.lang.Override
+      public boolean hasCloseType() {
+        return ((bitField0_ & 0x00000040) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @return The closeType.
+       */
+      @java.lang.Override
+      public int getCloseType() {
+        return closeType_;
+      }
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @param value The closeType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCloseType(int value) {
+        bitField0_ |= 0x00000040;
+        closeType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ƽ������(ƽ�ֱ�־ - 0:ƽ�� 1:ƽ�� 2:ƽ��)
+       * </pre>
+       *
+       * <code>optional uint32 CloseType = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCloseType() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        closeType_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private double tradePrice_ ;
+      /**
+       * <pre>
+       * double �ɽ��۸�
+       * </pre>
+       *
+       * <code>optional double TradePrice = 8;</code>
+       * @return Whether the tradePrice field is set.
+       */
+      @java.lang.Override
+      public boolean hasTradePrice() {
+        return ((bitField0_ & 0x00000080) != 0);
+      }
+      /**
+       * <pre>
+       * double �ɽ��۸�
+       * </pre>
+       *
+       * <code>optional double TradePrice = 8;</code>
+       * @return The tradePrice.
+       */
+      @java.lang.Override
+      public double getTradePrice() {
+        return tradePrice_;
+      }
+      /**
+       * <pre>
+       * double �ɽ��۸�
+       * </pre>
+       *
+       * <code>optional double TradePrice = 8;</code>
+       * @param value The tradePrice to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTradePrice(double value) {
+        bitField0_ |= 0x00000080;
+        tradePrice_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * double �ɽ��۸�
+       * </pre>
+       *
+       * <code>optional double TradePrice = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTradePrice() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        tradePrice_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      private long tradeQty_ ;
+      /**
+       * <pre>
+       * uint64 �ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeQty = 9;</code>
+       * @return Whether the tradeQty field is set.
+       */
+      @java.lang.Override
+      public boolean hasTradeQty() {
+        return ((bitField0_ & 0x00000100) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeQty = 9;</code>
+       * @return The tradeQty.
+       */
+      @java.lang.Override
+      public long getTradeQty() {
+        return tradeQty_;
+      }
+      /**
+       * <pre>
+       * uint64 �ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeQty = 9;</code>
+       * @param value The tradeQty to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTradeQty(long value) {
+        bitField0_ |= 0x00000100;
+        tradeQty_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 TradeQty = 9;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTradeQty() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        tradeQty_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int creatorSrc_ ;
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 10;</code>
+       * @return Whether the creatorSrc field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorSrc() {
+        return ((bitField0_ & 0x00000200) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 10;</code>
+       * @return The creatorSrc.
+       */
+      @java.lang.Override
+      public int getCreatorSrc() {
+        return creatorSrc_;
+      }
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 10;</code>
+       * @param value The creatorSrc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorSrc(int value) {
+        bitField0_ |= 0x00000200;
+        creatorSrc_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ��������Դ - 1:����� 2:�ն� 3:����
+       * </pre>
+       *
+       * <code>optional uint32 CreatorSrc = 10;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorSrc() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        creatorSrc_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long creatorID_ ;
+      /**
+       * <pre>
+       * uint64 ������ID
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 11;</code>
+       * @return Whether the creatorID field is set.
+       */
+      @java.lang.Override
+      public boolean hasCreatorID() {
+        return ((bitField0_ & 0x00000400) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 ������ID
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 11;</code>
+       * @return The creatorID.
+       */
+      @java.lang.Override
+      public long getCreatorID() {
+        return creatorID_;
+      }
+      /**
+       * <pre>
+       * uint64 ������ID
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 11;</code>
+       * @param value The creatorID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCreatorID(long value) {
+        bitField0_ |= 0x00000400;
+        creatorID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 ������ID
+       * </pre>
+       *
+       * <code>optional uint64 CreatorID = 11;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCreatorID() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        creatorID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int hedgeFlag_ ;
+      /**
+       * <pre>
+       * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 12;</code>
+       * @return Whether the hedgeFlag field is set.
+       */
+      @java.lang.Override
+      public boolean hasHedgeFlag() {
+        return ((bitField0_ & 0x00000800) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 12;</code>
+       * @return The hedgeFlag.
+       */
+      @java.lang.Override
+      public int getHedgeFlag() {
+        return hedgeFlag_;
+      }
+      /**
+       * <pre>
+       * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 12;</code>
+       * @param value The hedgeFlag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setHedgeFlag(int value) {
+        bitField0_ |= 0x00000800;
+        hedgeFlag_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 4:���ڱ�ֵ 5:���� 6:�Ʋ� 7:������ 8:��������
+       * </pre>
+       *
+       * <code>optional uint32 HedgeFlag = 12;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearHedgeFlag() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        hedgeFlag_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long spotContractID_ ;
+      /**
+       * <pre>
+       * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 13;</code>
+       * @return Whether the spotContractID field is set.
+       */
+      @java.lang.Override
+      public boolean hasSpotContractID() {
+        return ((bitField0_ & 0x00001000) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 13;</code>
+       * @return The spotContractID.
+       */
+      @java.lang.Override
+      public long getSpotContractID() {
+        return spotContractID_;
+      }
+      /**
+       * <pre>
+       * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 13;</code>
+       * @param value The spotContractID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSpotContractID(long value) {
+        bitField0_ |= 0x00001000;
+        spotContractID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 RelatedTradeType = 4:���ڱ�ֵʱ ��ֵ
+       * </pre>
+       *
+       * <code>optional uint64 SpotContractID = 13;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSpotContractID() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        spotContractID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int saleUserID_ ;
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 14;</code>
+       * @return Whether the saleUserID field is set.
+       */
+      @java.lang.Override
+      public boolean hasSaleUserID() {
+        return ((bitField0_ & 0x00002000) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 14;</code>
+       * @return The saleUserID.
+       */
+      @java.lang.Override
+      public int getSaleUserID() {
+        return saleUserID_;
+      }
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 14;</code>
+       * @param value The saleUserID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSaleUserID(int value) {
+        bitField0_ |= 0x00002000;
+        saleUserID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ҵ��ԱID
+       * </pre>
+       *
+       * <code>optional uint32 SaleUserID = 14;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSaleUserID() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        saleUserID_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int bizSubjectID_ ;
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 15;</code>
+       * @return Whether the bizSubjectID field is set.
+       */
+      @java.lang.Override
+      public boolean hasBizSubjectID() {
+        return ((bitField0_ & 0x00004000) != 0);
+      }
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 15;</code>
+       * @return The bizSubjectID.
+       */
+      @java.lang.Override
+      public int getBizSubjectID() {
+        return bizSubjectID_;
+      }
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 15;</code>
+       * @param value The bizSubjectID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBizSubjectID(int value) {
+        bitField0_ |= 0x00004000;
+        bizSubjectID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint32 ����ҵ����ID
+       * </pre>
+       *
+       * <code>optional uint32 BizSubjectID = 15;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBizSubjectID() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        bizSubjectID_ = 0;
+        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:ManageServiceMI3.ManageAmendOrderReq)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.ManageAmendOrderReq)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ManageAmendOrderReq>
+        PARSER = new com.google.protobuf.AbstractParser<ManageAmendOrderReq>() {
+      @java.lang.Override
+      public ManageAmendOrderReq parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ManageAmendOrderReq(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ManageAmendOrderReq> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ManageAmendOrderReq> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderReq getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ManageAmendOrderRspOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ManageServiceMI3.ManageAmendOrderRsp)
+      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>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 4;</code>
+     * @return Whether the outTradeID field is set.
+     */
+    boolean hasOutTradeID();
+    /**
+     * <pre>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 4;</code>
+     * @return The outTradeID.
+     */
+    long getOutTradeID();
+
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return Whether the accountID field is set.
+     */
+    boolean hasAccountID();
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return The accountID.
+     */
+    long getAccountID();
+  }
+  /**
+   * <pre>
+   * ��¼�ڲ��ɽ�����Ӧ 0 3 100
+   * </pre>
+   *
+   * Protobuf type {@code ManageServiceMI3.ManageAmendOrderRsp}
+   */
+  public static final class ManageAmendOrderRsp extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ManageServiceMI3.ManageAmendOrderRsp)
+      ManageAmendOrderRspOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ManageAmendOrderRsp.newBuilder() to construct.
+    private ManageAmendOrderRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private ManageAmendOrderRsp() {
+      retDesc_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ManageAmendOrderRsp();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ManageAmendOrderRsp(
+        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;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              outTradeID_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              accountID_ = input.readUInt64();
+              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.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderRsp_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderRsp_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.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;
+      }
+    }
+
+    public static final int OUTTRADEID_FIELD_NUMBER = 4;
+    private long outTradeID_;
+    /**
+     * <pre>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 4;</code>
+     * @return Whether the outTradeID field is set.
+     */
+    @java.lang.Override
+    public boolean hasOutTradeID() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ⲿ�ɽ�����
+     * </pre>
+     *
+     * <code>optional uint64 OutTradeID = 4;</code>
+     * @return The outTradeID.
+     */
+    @java.lang.Override
+    public long getOutTradeID() {
+      return outTradeID_;
+    }
+
+    public static final int ACCOUNTID_FIELD_NUMBER = 5;
+    private long accountID_;
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return Whether the accountID field is set.
+     */
+    @java.lang.Override
+    public boolean hasAccountID() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * uint64 �ڲ��ڻ����˻�
+     * </pre>
+     *
+     * <code>optional uint64 AccountID = 5;</code>
+     * @return The accountID.
+     */
+    @java.lang.Override
+    public long getAccountID() {
+      return accountID_;
+    }
+
+    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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt64(4, outTradeID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeUInt64(5, accountID_);
+      }
+      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_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, outTradeID_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, accountID_);
+      }
+      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.FxglServiceMI.ManageAmendOrderRsp)) {
+        return super.equals(obj);
+      }
+      cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp other = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp) 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 (hasOutTradeID() != other.hasOutTradeID()) return false;
+      if (hasOutTradeID()) {
+        if (getOutTradeID()
+            != other.getOutTradeID()) return false;
+      }
+      if (hasAccountID() != other.hasAccountID()) return false;
+      if (hasAccountID()) {
+        if (getAccountID()
+            != other.getAccountID()) 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();
+      }
+      if (hasOutTradeID()) {
+        hash = (37 * hash) + OUTTRADEID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getOutTradeID());
+      }
+      if (hasAccountID()) {
+        hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getAccountID());
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp 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.FxglServiceMI.ManageAmendOrderRsp 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 3 100
+     * </pre>
+     *
+     * Protobuf type {@code ManageServiceMI3.ManageAmendOrderRsp}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ManageServiceMI3.ManageAmendOrderRsp)
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRspOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderRsp_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderRsp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.class, cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.Builder.class);
+      }
+
+      // Construct using cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.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);
+        outTradeID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        accountID_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.internal_static_ManageServiceMI3_ManageAmendOrderRsp_descriptor;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp getDefaultInstanceForType() {
+        return cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp build() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp buildPartial() {
+        cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp result = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp(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_;
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.outTradeID_ = outTradeID_;
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.accountID_ = accountID_;
+          to_bitField0_ |= 0x00000010;
+        }
+        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.FxglServiceMI.ManageAmendOrderRsp) {
+          return mergeFrom((cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp other) {
+        if (other == cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasRetCode()) {
+          setRetCode(other.getRetCode());
+        }
+        if (other.hasRetDesc()) {
+          bitField0_ |= 0x00000004;
+          retDesc_ = other.retDesc_;
+          onChanged();
+        }
+        if (other.hasOutTradeID()) {
+          setOutTradeID(other.getOutTradeID());
+        }
+        if (other.hasAccountID()) {
+          setAccountID(other.getAccountID());
+        }
+        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.FxglServiceMI.ManageAmendOrderRsp parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp) 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;
+      }
+
+      private long outTradeID_ ;
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 4;</code>
+       * @return Whether the outTradeID field is set.
+       */
+      @java.lang.Override
+      public boolean hasOutTradeID() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 4;</code>
+       * @return The outTradeID.
+       */
+      @java.lang.Override
+      public long getOutTradeID() {
+        return outTradeID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 4;</code>
+       * @param value The outTradeID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setOutTradeID(long value) {
+        bitField0_ |= 0x00000008;
+        outTradeID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ⲿ�ɽ�����
+       * </pre>
+       *
+       * <code>optional uint64 OutTradeID = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearOutTradeID() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        outTradeID_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long accountID_ ;
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @return Whether the accountID field is set.
+       */
+      @java.lang.Override
+      public boolean hasAccountID() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @return The accountID.
+       */
+      @java.lang.Override
+      public long getAccountID() {
+        return accountID_;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @param value The accountID to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAccountID(long value) {
+        bitField0_ |= 0x00000010;
+        accountID_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * uint64 �ڲ��ڻ����˻�
+       * </pre>
+       *
+       * <code>optional uint64 AccountID = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAccountID() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        accountID_ = 0L;
+        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:ManageServiceMI3.ManageAmendOrderRsp)
+    }
+
+    // @@protoc_insertion_point(class_scope:ManageServiceMI3.ManageAmendOrderRsp)
+    private static final cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp();
+    }
+
+    public static cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ManageAmendOrderRsp>
+        PARSER = new com.google.protobuf.AbstractParser<ManageAmendOrderRsp>() {
+      @java.lang.Override
+      public ManageAmendOrderRsp parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ManageAmendOrderRsp(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ManageAmendOrderRsp> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ManageAmendOrderRsp> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public cn.muchinfo.rma.protobuf.protoclasses.FxglServiceMI.ManageAmendOrderRsp getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_LinkUnbindReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_LinkUnbindReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_LinkUnbindRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_LinkUnbindRsp_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_InnerTradeLinkReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_InnerTradeLinkReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_InnerTradeLinkRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_InnerTradeLinkRsp_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_ManageUnBoundOrderReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_ManageUnBoundOrderReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_ManageAmendOrderReq_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_ManageAmendOrderReq_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_ManageServiceMI3_ManageAmendOrderRsp_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_ManageServiceMI3_ManageAmendOrderRsp_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\023FxglServiceMI.proto\022\020ManageServiceMI3\032" +
+      "\014Common.proto\032\017PublicMI1.proto\032\026ManageSe" +
+      "rviceMI1.proto\032\026ManageServiceMI2.proto\"\200" +
+      "\001\n\rLinkUnbindReq\022\034\n\006Header\030\001 \001(\0132\014.Messa" +
+      "geHead\022\024\n\014LinkDetailId\030\002 \001(\004\022\022\n\nCreatorS" +
+      "rc\030\003 \001(\r\022\021\n\tCreatorID\030\004 \001(\004\022\024\n\014ClientTic" +
+      "ket\030\005 \001(\t\"e\n\rLinkUnbindRsp\022\034\n\006Header\030\001 \001" +
+      "(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007Ret" +
+      "Desc\030\003 \001(\t\022\024\n\014ClientTicket\030\004 \001(\t\"\375\001\n\021Inn" +
+      "erTradeLinkReq\022\034\n\006Header\030\001 \001(\0132\014.Message" +
+      "Head\022\017\n\007TradeId\030\002 \001(\004\022\021\n\tHedgeFlag\030\003 \001(\r" +
+      "\022\026\n\016SpotContractID\030\004 \001(\004\022\022\n\nSaleUserID\030\005" +
+      " \001(\r\022\024\n\014BizSubjectID\030\006 \001(\r\022\022\n\nRelatedLot" +
+      "\030\007 \001(\001\022\023\n\013RelatedMode\030\010 \001(\r\022\022\n\nCreatorSr" +
+      "c\030\t \001(\r\022\021\n\tCreatorID\030\n \001(\004\022\024\n\014ClientTick" +
+      "et\030\013 \001(\t\"z\n\021InnerTradeLinkRsp\022\034\n\006Header\030" +
+      "\001 \001(\0132\014.MessageHead\022\017\n\007RetCode\030\002 \001(\005\022\017\n\007" +
+      "RetDesc\030\003 \001(\t\022\017\n\007TradeId\030\004 \001(\004\022\024\n\014Client" +
+      "Ticket\030\005 \001(\t\"\276\001\n\025ManageUnBoundOrderReq\022\034" +
+      "\n\006Header\030\001 \001(\0132\014.MessageHead\022\017\n\007TradeID\030" +
+      "\002 \001(\004\022\021\n\tAccountID\030\003 \001(\004\022\021\n\tBuyOrSell\030\004 " +
+      "\001(\r\022\017\n\007GoodsID\030\005 \001(\r\022\030\n\020ChannelBuildType" +
+      "\030\006 \001(\r\022\021\n\tCloseType\030\007 \001(\r\022\022\n\nCreatorSrc\030" +
+      "\010 \001(\r\"{\n\025ManageUnBoundOrderRsp\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\017\n\007TradeID\030\004 \001(\004\022\021\n\tAccou" +
+      "ntID\030\005 \001(\004\"\315\002\n\023ManageAmendOrderReq\022\034\n\006He" +
+      "ader\030\001 \001(\0132\014.MessageHead\022\022\n\nOutTradeID\030\002" +
+      " \001(\004\022\021\n\tAccountID\030\003 \001(\004\022\021\n\tBuyOrSell\030\004 \001" +
+      "(\r\022\017\n\007GoodsID\030\005 \001(\r\022\030\n\020ChannelBuildType\030" +
+      "\006 \001(\r\022\021\n\tCloseType\030\007 \001(\r\022\022\n\nTradePrice\030\010" +
+      " \001(\001\022\020\n\010TradeQty\030\t \001(\004\022\022\n\nCreatorSrc\030\n \001" +
+      "(\r\022\021\n\tCreatorID\030\013 \001(\004\022\021\n\tHedgeFlag\030\014 \001(\r" +
+      "\022\026\n\016SpotContractID\030\r \001(\004\022\022\n\nSaleUserID\030\016" +
+      " \001(\r\022\024\n\014BizSubjectID\030\017 \001(\r\"|\n\023ManageAmen" +
+      "dOrderRsp\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\022\n\nOut" +
+      "TradeID\030\004 \001(\004\022\021\n\tAccountID\030\005 \001(\004B?\n%cn.m" +
+      "uchinfo.rma.protobuf.protoclassesZ\026com.m" +
+      "uchinfo.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(),
+          cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.getDescriptor(),
+        });
+    internal_static_ManageServiceMI3_LinkUnbindReq_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_ManageServiceMI3_LinkUnbindReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_LinkUnbindReq_descriptor,
+        new java.lang.String[] { "Header", "LinkDetailId", "CreatorSrc", "CreatorID", "ClientTicket", });
+    internal_static_ManageServiceMI3_LinkUnbindRsp_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_ManageServiceMI3_LinkUnbindRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_LinkUnbindRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "ClientTicket", });
+    internal_static_ManageServiceMI3_InnerTradeLinkReq_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_ManageServiceMI3_InnerTradeLinkReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_InnerTradeLinkReq_descriptor,
+        new java.lang.String[] { "Header", "TradeId", "HedgeFlag", "SpotContractID", "SaleUserID", "BizSubjectID", "RelatedLot", "RelatedMode", "CreatorSrc", "CreatorID", "ClientTicket", });
+    internal_static_ManageServiceMI3_InnerTradeLinkRsp_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_ManageServiceMI3_InnerTradeLinkRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_InnerTradeLinkRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "TradeId", "ClientTicket", });
+    internal_static_ManageServiceMI3_ManageUnBoundOrderReq_descriptor =
+      getDescriptor().getMessageTypes().get(4);
+    internal_static_ManageServiceMI3_ManageUnBoundOrderReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_ManageUnBoundOrderReq_descriptor,
+        new java.lang.String[] { "Header", "TradeID", "AccountID", "BuyOrSell", "GoodsID", "ChannelBuildType", "CloseType", "CreatorSrc", });
+    internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_descriptor =
+      getDescriptor().getMessageTypes().get(5);
+    internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_ManageUnBoundOrderRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "TradeID", "AccountID", });
+    internal_static_ManageServiceMI3_ManageAmendOrderReq_descriptor =
+      getDescriptor().getMessageTypes().get(6);
+    internal_static_ManageServiceMI3_ManageAmendOrderReq_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_ManageAmendOrderReq_descriptor,
+        new java.lang.String[] { "Header", "OutTradeID", "AccountID", "BuyOrSell", "GoodsID", "ChannelBuildType", "CloseType", "TradePrice", "TradeQty", "CreatorSrc", "CreatorID", "HedgeFlag", "SpotContractID", "SaleUserID", "BizSubjectID", });
+    internal_static_ManageServiceMI3_ManageAmendOrderRsp_descriptor =
+      getDescriptor().getMessageTypes().get(7);
+    internal_static_ManageServiceMI3_ManageAmendOrderRsp_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_ManageServiceMI3_ManageAmendOrderRsp_descriptor,
+        new java.lang.String[] { "Header", "RetCode", "RetDesc", "OutTradeID", "AccountID", });
+    cn.muchinfo.rma.protobuf.protoclasses.Common.getDescriptor();
+    cn.muchinfo.rma.protobuf.protoclasses.PublicMI1.getDescriptor();
+    cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI1.getDescriptor();
+    cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2.getDescriptor();
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}

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

@@ -14,7 +14,8 @@ object Constant {
 
 
 //    const val baseurl = "http://192.168.31.93:8080/cfg?key=test_93"//李倩企业风管 18611112222
-    const val baseurl = "http://192.168.31.104:8080/cfg?key=test_104"//李倩云融 18611112222
+//    const val baseurl = "http://192.168.31.104:8080/cfg?key=test_104"//李倩云融 18611112222
+    const val baseurl = "http://192.168.31.137:8080/cfg?key=test_137"//李倩云融 18611112222
 //
 //    const val baseurl = "http://192.168.31.135:8080/cfg?key=test_135"// 瑶姐 云融 190000000001 123456
 

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

@@ -349,8 +349,8 @@ public class ReferenceAdapter extends RecyclerView.Adapter<ReferenceAdapter.Item
                 intent.putExtra("type","2");
 //                intent.putExtra("goodsGroupId", list?.get(position)?.goodsgroupid)
                 intent.putExtra("marketId", data.getMarketid());
-//                intent.setClass(context, ChartActivity.class);
-                intent.setClass(context, YrdzChartActivity.class);
+                intent.setClass(context, ChartActivity.class);
+//                intent.setClass(context, YrdzChartActivity.class);
                 ActivityUtils.startActivity(intent);
             }
         });

+ 61 - 25
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/PeriodAssociatedFragment.kt

@@ -1,6 +1,8 @@
 package cn.muchinfo.rma.view.base.spot.associated
 
+import android.content.Intent
 import android.os.Bundle
+import android.view.Gravity
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -8,24 +10,26 @@ import androidx.annotation.NonNull
 import androidx.annotation.Nullable
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentPagerAdapter
+import androidx.lifecycle.MutableLiveData
 import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.lifecycle.getAppCompatActivity
-import cn.muchinfo.rma.view.autoWidget.autoSize
-import cn.muchinfo.rma.view.autoWidget.tabSegment
+import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseFragment
 import cn.muchinfo.rma.view.base.spot.associated.externalorder.ExternalOrderAssociationFragment
+import cn.muchinfo.rma.view.base.spot.associated.perioddocuments.BusinessAssociationsActivity
+import cn.muchinfo.rma.view.base.spot.associated.perioddocuments.FillSingleConnectionActivity
 import cn.muchinfo.rma.view.base.spot.associated.perioddocuments.PeriodDocumentsFragment
 import cn.muchinfo.rma.view.base.spot.associated.relationalrecord.RelationalRecordFragment
+import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.ConvertUtils
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
 import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
 import com.qmuiteam.qmui.widget.tab.QMUITabSegment
-import org.jetbrains.anko.matchParent
+import org.jetbrains.anko.*
 import org.jetbrains.anko.support.v4.UI
 import org.jetbrains.anko.support.v4.viewPager
-import org.jetbrains.anko.verticalLayout
-import org.jetbrains.anko.view
 
 class PeriodAssociatedFragment : BaseFragment<PeriodAssociatedViewModel>(){
 
@@ -33,6 +37,8 @@ class PeriodAssociatedFragment : BaseFragment<PeriodAssociatedViewModel>(){
     var selectedTabIndex: Int = 0
     private lateinit var viewPager: ViewPager
 
+    val selectedTabIndexData : MutableLiveData<Int> = MutableLiveData()
+
     //外部成交单关联
     val externalOrderAssociationFragment by lazy {
         ExternalOrderAssociationFragment()
@@ -97,30 +103,60 @@ class PeriodAssociatedFragment : BaseFragment<PeriodAssociatedViewModel>(){
         initMenuData()
         return UI {
             verticalLayout {
-                tabSegment {
-                    // 设置
-                    segment = this
-                    background = resources.getDrawable(R.color.white)
-                    addOnTabSelectedListener(object :
-                        QMUITabSegment.OnTabSelectedListener {
-                        override fun onDoubleTap(index: Int) {}
-                        override fun onTabReselected(index: Int) {}
-                        override fun onTabUnselected(index: Int) {}
-                        override fun onTabSelected(index: Int) {
-                            selectedTabIndex = index
-                        }
-                    })
-                    setIndicator(
-                        QMUITabIndicator(
-                            QMUIDisplayHelper.dp2px(context, 2),
-                            false,
-                            true
+
+                linearLayout {
+                    tabSegment {
+                        // 设置
+                        segment = this
+                        background = resources.getDrawable(R.color.white)
+                        addOnTabSelectedListener(object :
+                            QMUITabSegment.OnTabSelectedListener {
+                            override fun onDoubleTap(index: Int) {}
+                            override fun onTabReselected(index: Int) {}
+                            override fun onTabUnselected(index: Int) {}
+                            override fun onTabSelected(index: Int) {
+                                selectedTabIndex = index
+                                selectedTabIndexData.postValue(index)
+                            }
+                        })
+                        setIndicator(
+                            QMUITabIndicator(
+                                QMUIDisplayHelper.dp2px(context, 2),
+                                false,
+                                true
+                            )
                         )
-                    )
 
-                    setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(19f))
+                        setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(16f))
+                    }.lparams(0, autoSize(80),4f)
+
+                    linearLayout {
+                        gravity = Gravity.CENTER
+                        visibility = View.INVISIBLE
+                        selectedTabIndexData.bindOptional(context){
+                            if (it == 1){
+                                visibility = View.VISIBLE
+                            }else{
+                                visibility = View.INVISIBLE
+                            }
+                        }
+                        textView {
+                            onThrottleFirstClick {
+                                val intent = Intent()
+                                intent.setClass(context, FillSingleConnectionActivity::class.java)
+                                ActivityUtils.startActivity(intent)
+                            }
+                            backgroundResource = R.drawable.rma_item_click_bg
+                            gravity = Gravity.CENTER
+                            text = "补单关联"
+                            textSizeAuto = 29
+                            textColorInt = R.color.rma_blue_color
+                        }.lparams(autoSize(150), autoSize(50))
+                    }.lparams(0, autoSize(80),1f)
                 }.lparams(matchParent, autoSize(80))
 
+
+
                 view {
                     background = resources.getDrawable(R.color.main_hit_bg_color)
                 }.lparams(matchParent, autoSize(1)) {

+ 15 - 9
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/ExternalOrderAssociationActivity.kt

@@ -22,19 +22,19 @@ import org.jetbrains.anko.*
 /**
  * 外部成交单关联页面
  */
-class ExternalOrderAssociationActivity : BaseActivity<ExternalOrderAssociationViewModel>(){
+class ExternalOrderAssociationActivity : BaseActivity<ExternalOrderAssociationViewModel>() {
 
     //列表传入的外部成交单实体
     val data by lazy { intent.getParcelableExtra<OutTradeLinkData>("data") as OutTradeLinkData }
 
     //选择是否是建仓还是平仓
-    val selectBuildOrCloseType : MutableLiveData<SelectData> = MutableLiveData()
+    val selectBuildOrCloseType: MutableLiveData<SelectData> = MutableLiveData()
 
     //选择的期货子账户
-    val selectFutureAccount : MutableLiveData<SelectData> = MutableLiveData()
+    val selectFutureAccount: MutableLiveData<SelectData> = MutableLiveData()
 
     //交易用户
-    lateinit var username_text : TextView
+    lateinit var username_text: TextView
 
     @SuppressLint("SetTextI18n")
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -55,7 +55,7 @@ class ExternalOrderAssociationActivity : BaseActivity<ExternalOrderAssociationVi
                         text = "外部期货账号"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         marginStart = autoSize(36)
                     }
                 }.lparams(autoSize(250), autoSize(132))
@@ -183,7 +183,7 @@ class ExternalOrderAssociationActivity : BaseActivity<ExternalOrderAssociationVi
                         text = "交易用户"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         marginStart = autoSize(36)
                     }
                 }.lparams(autoSize(250), autoSize(132))
@@ -201,19 +201,25 @@ class ExternalOrderAssociationActivity : BaseActivity<ExternalOrderAssociationVi
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
 
-
                 textView {
                     onThrottleFirstClick {
-                        if (selectBuildOrCloseType.value?.id.isNullOrEmpty()){
+                        if (selectBuildOrCloseType.value?.id.isNullOrEmpty()) {
                             ToastUtils.showLong("请选择建仓或平仓")
                             return@onThrottleFirstClick
                         }
 
-                        if (selectFutureAccount.value?.id.isNullOrEmpty()){
+                        if (selectFutureAccount.value?.id.isNullOrEmpty()) {
                             ToastUtils.showLong("请选择期货子账户")
                             return@onThrottleFirstClick
                         }
 
+                        viewModel.manageAmendOrderReq(
+                            OutTradeID = data.outtradeid?.toLong() ?: 0,
+                            AccountID = selectFutureAccount.value?.id?.toLong() ?: 0,
+                            ChannelBuildType = selectBuildOrCloseType.value?.id?.toInt() ?: 0
+                        ){
+                            finish()
+                        }
 
                     }
                     gravity = Gravity.CENTER

+ 4 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/ExternalOrderAssociationFragment.kt

@@ -70,7 +70,7 @@ class ExternalOrderAssociationFragment : BaseFragment<ExternalOrderAssociationVi
                 linearLayout {
                     gravity = Gravity.CENTER_VERTICAL
                     linearLayout {
-                        background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+                        backgroundResource = R.drawable.qyfg_search_item_bg
                         editText {
                             order_in_edittext = this
                             hint = "搜索外部订单号"
@@ -80,7 +80,7 @@ class ExternalOrderAssociationFragment : BaseFragment<ExternalOrderAssociationVi
                             hintColorStr = "#CCCCCC"
                             textSizeAuto = 31
                             textColorStr = "#333333"
-                        }.lparams(matchParent, autoSize(100)){
+                        }.lparams(matchParent, autoSize(90)){
                             marginStart = autoSize(20)
                         }
                     }.lparams(0, autoSize(100),1f){
@@ -89,7 +89,7 @@ class ExternalOrderAssociationFragment : BaseFragment<ExternalOrderAssociationVi
                     }
 
                     linearLayout {
-                        background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+                        backgroundResource = R.drawable.qyfg_search_item_bg
                         editText {
                             code_in_edittext = this
                             hint = "搜索合约名称/代码"
@@ -99,7 +99,7 @@ class ExternalOrderAssociationFragment : BaseFragment<ExternalOrderAssociationVi
                             hintColorStr = "#CCCCCC"
                             textSizeAuto = 31
                             textColorStr = "#333333"
-                        }.lparams(matchParent, autoSize(100)){
+                        }.lparams(matchParent, autoSize(90)){
                             marginStart = autoSize(20)
                         }
                     }.lparams(0, autoSize(100),1f){

+ 103 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/ExternalOrderAssociationViewModel.kt

@@ -4,17 +4,26 @@ import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.*
 import cn.muchinfo.rma.global.isBlankString
+import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.toArrayList
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.BaseViewModel
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
 import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.utils.TaskUiModel
 
 /**
  * 外部成交单关联viewmodel
  */
 class ExternalOrderAssociationViewModel : BaseViewModel(){
 
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
     //期货子账户列表
     val subTaaccountDataList : MutableLiveData<List<SubTaaccountData>> = MutableLiveData()
 
@@ -149,4 +158,98 @@ class ExternalOrderAssociationViewModel : BaseViewModel(){
         return newList
     }
 
+    /**
+     * 补单关联请求
+     */
+    fun manageAmendOrderReq(
+        OutTradeID : Long = 0,//外部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0,//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+        TradePrice : Double = 0.0,//成交价格
+        TradeQty : Long = 0,//成交数量
+        HedgeFlag : Int = 0,// 4:套期保值 5:单边 6:移仓 7:错单处理 8:跨期套利
+        SpotContractID : Long = 0,//RelatedTradeType = 4:套期保值时 有值
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0,//归属业务部门ID
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.spotManager?.manageAmendOrderReq(
+                OutTradeID = OutTradeID,
+                AccountID = AccountID,
+                BuyOrSell = BuyOrSell,
+                GoodsID = GoodsID,
+                ChannelBuildType = ChannelBuildType,
+                CloseType = CloseType,
+                TradePrice = TradePrice,
+                TradeQty = TradeQty,
+                HedgeFlag = HedgeFlag,
+                SpotContractID = SpotContractID,
+                SaleUserID = SaleUserID,
+                BizSubjectID = BizSubjectID
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    /**
+     * 解除外部成交单关联
+     * @param TradeID Long
+     * @param AccountID Long
+     * @param BuyOrSell Int
+     * @param GoodsID Int
+     * @param ChannelBuildType Int
+     * @param CloseType Int
+     */
+    fun manageUnBoundOrderReq(
+        TradeID : Long = 0,//内部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0,//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.spotManager?.manageUnBoundOrderReq(
+                TradeID = TradeID,
+                AccountID = AccountID,
+                BuyOrSell = BuyOrSell,
+                GoodsID = GoodsID,
+                ChannelBuildType = ChannelBuildType,
+                CloseType = CloseType
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
 }

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/externalorder/RemoveExternalOrderAssociationActivity.kt

@@ -305,7 +305,9 @@ class RemoveExternalOrderAssociationActivity : BaseActivity<ExternalOrderAssocia
 
                 textView {
                     onThrottleFirstClick {
-
+                        viewModel.manageUnBoundOrderReq(TradeID = data.outtradeid?.toLong() ?: 0){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg

+ 41 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/BusinessAssociationsActivity.kt

@@ -56,6 +56,7 @@ class BusinessAssociationsActivity : BaseActivity<BusinessAssociationsViewModel>
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            viewModel.querySCMiddleGoods(data = data)
             background = resources.getDrawable(R.color.rma_hint_line_color_eee)
             topBar {
                 commonLeftButton()
@@ -93,6 +94,7 @@ class BusinessAssociationsActivity : BaseActivity<BusinessAssociationsViewModel>
                             }.lparams(autoSize(1), autoSize(95))
 
                             linearLayout {
+                                background = resources.getDrawable(R.color.white)
                                 gravity = Gravity.CENTER_VERTICAL
                                 textView {
                                     text = "合约"
@@ -311,6 +313,10 @@ class BusinessAssociationsActivity : BaseActivity<BusinessAssociationsViewModel>
                         linearLayout {
                             background = resources.getDrawable(R.color.white)
                             textView {
+                                onThrottleFirstClick {
+                                    viewModel.querySCMiddleGoods(data = data,contractno = spot_number_edittext.text.toString(),
+                                        customername = counterparty_edittext.text.toString(),wrstandardname = spot_goods_edittext.text.toString())
+                                }
                                 backgroundResource = R.drawable.yrdz_item_click_bg
                                 gravity = Gravity.CENTER
                                 text = "查询"
@@ -383,6 +389,28 @@ class BusinessAssociationsActivity : BaseActivity<BusinessAssociationsViewModel>
                     gravity = Gravity.CENTER_VERTICAL
                     textView {
                         onThrottleFirstClick {
+                            if (selectBusinessType.value?.id.isNullOrEmpty()){
+                                ToastUtils.showLong("请选择业务类型")
+                                return@onThrottleFirstClick
+                            }
+
+                            if (checkSelectItem().not()){
+                                ToastUtils.showLong("请选择现货记录")
+                                return@onThrottleFirstClick
+                            }
+
+                            viewModel.associationsSpotCashDataList.value?.forEach {
+                                viewModel.innerTradeLinkReq(
+                                    TradeId = data.tradeid?.toLong() ?: 0,
+                                    HedgeFlag = selectBusinessType.value?.id?.toInt() ?: 0,
+                                    SpotContractID = it.spotcontractid?.toLong() ?: 0,
+                                    SaleUserID = it.userid?.toInt() ?: 0,
+                                    RelatedLot = it.inputNumber?.toDouble() ?: 0.0,
+                                    RelatedMode = 0
+                                ){
+
+                                }
+                            }
 
                         }
                         gravity = Gravity.CENTER
@@ -402,4 +430,17 @@ class BusinessAssociationsActivity : BaseActivity<BusinessAssociationsViewModel>
         }
     }
 
+    //针对现货记录是否有选择进行点击确定前的校验
+    fun checkSelectItem() : Boolean{
+        var returnBooble = false
+
+        viewModel.associationsSpotCashDataList.value?.forEach {
+            if (it.isClick == 1){
+                returnBooble = true
+            }
+        }
+
+        return returnBooble
+    }
+
 }

+ 48 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/BusinessAssociationsViewModel.kt

@@ -5,14 +5,23 @@ import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.PaTradeLinkData
 import cn.muchinfo.rma.global.data.SCMiddleGoodsData
 import cn.muchinfo.rma.global.data.WrDeliveryAvalidHoldLBData
+import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+import mtp.polymer.com.autowidget.utils.TaskUiModel
 
 /**
  * 业务关联viewmodel
  */
 class BusinessAssociationsViewModel : BaseViewModel(){
 
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
     //现货订单列表数据
     val associationsSpotDataList : MutableLiveData<List<SCMiddleGoodsData>> = MutableLiveData()
 
@@ -86,6 +95,45 @@ class BusinessAssociationsViewModel : BaseViewModel(){
         associationsSpotCashDataList.postValue(newWrStandardFactoryItemDataList)
     }
 
+    /**
+     * 内部成交单关联请求
+     */
+    fun innerTradeLinkReq(
+        TradeId : Long = 0,//内部成交单号
+        HedgeFlag : Int = 0,//投机套保标志
+        SpotContractID : Long = 0,//现货合同ID
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0,//归属业务部门ID
+        RelatedLot : Double = 0.0,//关联手数
+        RelatedMode : Int = 0,//关联模式
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.spotManager?.innerTradeLinkReq(
+                TradeId = TradeId,
+                RelatedLot = RelatedLot,
+                RelatedMode = RelatedMode,
+                HedgeFlag = HedgeFlag,
+                SpotContractID = SpotContractID,
+                SaleUserID = SaleUserID,
+                BizSubjectID = BizSubjectID
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
 
 
 }

+ 174 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleAssociationsViewHolder.kt

@@ -0,0 +1,174 @@
+package cn.muchinfo.rma.view.base.spot.associated.perioddocuments
+
+import android.view.Gravity
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.SCMiddleGoodsData
+import cn.muchinfo.rma.global.data.WrDeliveryAvalidHoldLBData
+import cn.muchinfo.rma.global.database.DataBase
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import mtp.polymer.com.autowidget.adapter.BaseViewHolder
+import org.jetbrains.anko.*
+
+/**
+ * 补单关联的现货列表
+ * @property activity AppCompatActivity
+ * @property viewModel BusinessAssociationsViewModel
+ * @property itemSize IntArray
+ * @constructor
+ */
+class FillSingleAssociationsViewHolder(private val activity : AppCompatActivity, private val viewModel: FillSingleConnectionViewModel) : BaseViewHolder<SCMiddleGoodsData>(activity){
+    override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
+
+    override fun _FrameLayout.createContentView() {
+        verticalLayout {
+            backgroundDrawable = createRoundRectDrawable("#ffffff", 24)
+            linearLayout {
+                onThrottleFirstClick {
+                    viewModel.setOnItemOnClick(data.value?.contractno ?: "")
+                }
+                gravity = Gravity.CENTER_VERTICAL
+                imageView {
+                    data.bindOptional(context){
+                        if (it?.isClick == 0){
+                            imageResource = R.mipmap.yrdz_delivery_normal_icon
+                        }else if (it?.isClick == 1){
+                            imageResource = R.mipmap.yrdz_delivery_select_icon
+                        }
+                    }
+                    imageResource = R.mipmap.yrdz_delivery_normal_icon
+                }.lparams(autoSize(43), autoSize(43)){
+                    marginStart = autoSize(23)
+                }
+
+                textView {
+                    data.bindOptional(context){
+                        text = it?.customername
+                    }
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent){
+                    marginStart = autoSize(28)
+                }
+
+                emptyView()
+
+                textView {
+                    data.bindOptional(context){
+                        text = it?.contractno
+                    }
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent){
+                    marginEnd = autoSize(23)
+                }
+            }.lparams(matchParent, autoSize(76))
+
+            itemView()
+
+            linearLayout {
+                verticalLayout {
+                    gravity = Gravity.BOTTOM
+                    textView {
+                        data.bindOptional(context){
+                            text = it?.wrstandardname
+                        }
+                        textSizeAuto = 28
+                        textColorInt = R.color.rma_black_33
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(20)
+                    }
+
+                }.lparams(0, autoSize(100),1.3f)
+
+                linearLayout {
+                    gravity = Gravity.BOTTOM
+                    textView {
+                        data.bindOptional(context){
+                            text = it?.middlegoodspricedqty3 + "/"
+                        }
+                        textSizeAuto = 34
+                        textColorInt = R.color.rma_black_33
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(25)
+                    }
+
+                    emptyView()
+
+                    textView {
+                        data.bindOptional(context){
+                            text = it?.pricedqty
+                        }
+                        textSizeAuto = 34
+                        textColorInt = R.color.rma_black_33
+                    }.lparams(wrapContent, wrapContent){
+                        marginEnd = autoSize(23)
+                    }
+                }.lparams(0, autoSize(100),1f)
+
+                linearLayout {
+                    gravity = Gravity.BOTTOM
+                    data.bindOptional(context){
+                        if (it?.isClick == 0){
+                            visibility = View.INVISIBLE
+                        }else{
+                            visibility = View.VISIBLE
+                        }
+                    }
+                    numberEditText {
+
+                        data.bindOptional(context){
+//                            val deliveryRelationData = GlobalDataCollection.instance?.deliveryRelationDataArrayList?.find { data1?.goodsid == it.goodsid }
+//                            val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(data1?.goodsid?.toInt() ?: 0)
+//                            val multiple = goodsInfo.agreeunit.times(deliveryRelationData?.mindeliveryqty?.toDouble() ?: 1.0).times(deliveryRelationData?.rratio2?.toDouble() ?: 1.0)
+//                            setChangeValue(multiple)
+                            text =  it?.middlegoodspricedqty3?.toLong()?.minus(it.pricedqty?.toLong() ?: 0).toString()
+                        }
+                        setOnTextChangeListener { view, value ->
+                            if (value.isNullOrEmpty().not()) {
+
+                            }
+                        }
+                        setTextColor(R.color.buy_hall_color)
+                    }.lparams(0, autoSize(72), 1f) {
+                        marginStart = autoSize(23)
+                    }
+
+                    textView {
+                        text = "手"
+                        textSizeAuto = 29
+                        textColorInt = R.color.rma_yellow_text_color
+                    }.lparams(wrapContent, wrapContent){
+                        marginEnd = autoSize(23)
+                    }
+                }.lparams(0, autoSize(100),1f)
+            }.lparams(matchParent, autoSize(100))
+
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL
+                emptyView()
+
+                textView {
+                    // TODO 缺少现货数量
+                    data.bindOptional(context){
+                        text = it?.contracttype
+                    }
+                    textSizeAuto = 27
+                    textColorInt = R.color.rma_hint_text_color_ccc
+                }.lparams(wrapContent, wrapContent){
+                    marginEnd = autoSize(23)
+                }
+            }.lparams(matchParent, autoSize(39))
+        }.lparams(matchParent, autoSize(216)){
+            marginStart = autoSize(25)
+            marginEnd = autoSize(25)
+            topMargin = autoSize(24)
+        }
+    }
+}

+ 660 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionActivity.kt

@@ -0,0 +1,660 @@
+package cn.muchinfo.rma.view.base.spot.associated.perioddocuments
+
+import android.os.Bundle
+import android.view.Gravity
+import android.view.inputmethod.EditorInfo
+import android.widget.EditText
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccountData
+import cn.muchinfo.rma.global.data.SCMiddleGoodsData
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
+import cn.muchinfo.rma.view.autoWidget.view.MangeNumberEditText2
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ToastUtils
+import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.dialog.creatAccountDataSheetDialog
+import mtp.polymer.com.autowidget.dialog.creatBottomSheetDialog
+import org.jetbrains.anko.*
+
+/**
+ * 补单关联页面
+ */
+class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>() {
+
+    //选择的业务类型
+    val selectBusinessType : MutableLiveData<SelectData> = MutableLiveData()
+
+    //选择的资金账号
+    val selectAccountData : MutableLiveData<AccountData> = MutableLiveData()
+
+    //选择的商品组
+    val selectGoodsGroup : MutableLiveData<SelectData> = MutableLiveData()
+
+    //选择的期货合约
+    val selectGoods : MutableLiveData<SelectData> = MutableLiveData()
+
+    //选择的买入卖出
+    val selectBuyOrSell : MutableLiveData<SelectData> = MutableLiveData()
+
+    //选择的下单类型
+    val selectChannelBuildType : MutableLiveData<SelectData> = MutableLiveData()
+
+    //输入的价格
+    lateinit var price_edittext : MangeNumberEditText2
+
+    //输入的数量
+    lateinit var number_edittext : MangeNumberEditText2
+
+    //输入的现货编号
+    lateinit var spot_number_edittext : EditText
+
+    //输入的对手方
+    lateinit var counterparty_edittext : EditText
+
+    //输入的现货商品
+    lateinit var spot_goods_edittext : EditText
+
+    private val businessAssociationsAdapter: BaseAdapter<SCMiddleGoodsData, FillSingleAssociationsViewHolder> =
+        BaseAdapter { _, _ ->
+            FillSingleAssociationsViewHolder(
+                this,
+                viewModel
+            )
+        }
+
+    fun initData(){
+        selectBuyOrSell.postValue(SelectData(id = "0",value = "买入"))
+        selectChannelBuildType.postValue(SelectData(id = "1",value = "建仓"))
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            initData()
+            background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    text = "补单关联"
+                }
+            }
+
+            frameLayout {
+                nestedScrollView {
+                    verticalLayout {
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            background = resources.getDrawable(R.color.white)
+                            onThrottleFirstClick {
+                                creatAccountDataSheetDialog(
+                                    "请选择账户",
+                                    GlobalDataCollection.instance?.accountDataList ?: arrayListOf()
+                                ) {
+                                    selectAccountData.postValue(this)
+                                }
+                            }
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "*"
+                                    textColorInt = R.color.rma_star_color
+                                    textSizeAuto = 31
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(37)
+                                }
+
+                                textView {
+                                    text = "账户"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                }
+                            }.lparams(autoSize(210), autoSize(95))
+
+                            textView {
+                                selectAccountData.bindOptional(context) {
+                                    text = it?.accountid.toString() + "   " + it?.accountname
+                                    textColorInt = R.color.rma_black_33
+                                }
+                                text = "请选择业务类型"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_hint_text_color_ccc
+                            }.lparams(wrapContent, wrapContent)
+
+                            emptyView()
+
+                            imageView {
+                                imageResource = R.mipmap.rma_more
+                            }.lparams(autoSize(36), autoSize(36)) {
+                                marginEnd = autoSize(25)
+                            }
+                        }.lparams(matchParent, autoSize(95))
+
+                        itemView()
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            background = resources.getDrawable(R.color.white)
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "*"
+                                    textColorInt = R.color.rma_star_color
+                                    textSizeAuto = 31
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(37)
+                                }
+
+                                textView {
+                                    text = "合约"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                }
+                            }.lparams(autoSize(210), autoSize(95))
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+                                onThrottleFirstClick {
+                                    creatBottomSheetDialog("请选择品种", viewModel.getSelectGoodsGroupList()) {
+                                        selectGoodsGroup.postValue(this)
+                                        viewModel.querySCMiddleGoods(buyorsell = selectBuyOrSell.value?.id ?: "0",goodsgroupid = this.goodsgroupid)
+                                    }
+                                }
+                                textView {
+                                    selectGoodsGroup.bindOptional(context){
+                                        text = it?.value
+                                    }
+                                    text = "品种"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(10)
+                                }
+
+                                emptyView()
+
+                                imageView {
+                                    imageResource = R.mipmap.rma_down
+                                }.lparams(autoSize(23), autoSize(23)){
+                                    marginEnd = autoSize(14)
+                                }
+                            }.lparams(0, autoSize(84),1f){
+                                marginEnd = autoSize(24)
+                            }
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+                                onThrottleFirstClick {
+
+                                    if (selectGoodsGroup.value?.id.isNullOrEmpty()){
+                                        ToastUtils.showLong("请先选择品种")
+                                        return@onThrottleFirstClick
+                                    }
+
+                                    creatBottomSheetDialog("请选择期货合约", viewModel.getSelectGoodsByGoodsgroupid(selectGoodsGroup.value?.id ?: "")) {
+                                        selectGoods.postValue(this)
+                                    }
+
+                                }
+                                textView {
+                                    selectGoods.bindOptional(context){
+                                        text = it?.value
+                                    }
+                                    text = "期货合约"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(10)
+                                }
+
+
+                                emptyView()
+
+                                imageView {
+                                    imageResource = R.mipmap.rma_down
+                                }.lparams(autoSize(23), autoSize(23)){
+                                    marginEnd = autoSize(14)
+                                }
+                            }.lparams(0, autoSize(84),1f){
+                                marginEnd = autoSize(32)
+                            }
+                        }.lparams(matchParent, autoSize(95))
+
+                        itemView()
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            background = resources.getDrawable(R.color.white)
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "*"
+                                    textColorInt = R.color.rma_star_color
+                                    textSizeAuto = 31
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(37)
+                                }
+
+                                textView {
+                                    text = "方向"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                }
+                            }.lparams(autoSize(210), autoSize(95))
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+                                onThrottleFirstClick {
+                                    val selectBuyOrSellList = arrayListOf(SelectData(id = "0",value = "买入"),
+                                        SelectData(id = "1",value = "卖出"))
+
+                                    creatBottomSheetDialog("请选择方向", selectBuyOrSellList) {
+                                        selectBuyOrSell.postValue(this)
+                                    }
+                                }
+                                textView {
+                                    selectBuyOrSell.bindOptional(context){
+                                        text = it?.value
+                                    }
+                                    text = "买入"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(10)
+                                }
+
+
+                                emptyView()
+
+                                imageView {
+                                    imageResource = R.mipmap.rma_down
+                                }.lparams(autoSize(23), autoSize(23)){
+                                    marginEnd = autoSize(14)
+                                }
+                            }.lparams(0, autoSize(84),1f){
+                                marginEnd = autoSize(24)
+                            }
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+                                onThrottleFirstClick {
+                                    val selectBuyOrSellList = arrayListOf(SelectData(id = "1",value = "建仓"),
+                                        SelectData(id = "2",value = "平仓"))
+
+                                    creatBottomSheetDialog("请选择下单类型", selectBuyOrSellList) {
+                                        selectChannelBuildType.postValue(this)
+                                    }
+                                }
+                                textView {
+                                    selectChannelBuildType.bindOptional(context){
+                                        text = it?.value
+                                    }
+                                    text = "建仓"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(10)
+                                }
+
+
+                                emptyView()
+
+                                imageView {
+                                    imageResource = R.mipmap.rma_down
+                                }.lparams(autoSize(23), autoSize(23)){
+                                    marginEnd = autoSize(14)
+                                }
+                            }.lparams(0, autoSize(84),1f){
+                                marginEnd = autoSize(32)
+                            }
+                        }.lparams(matchParent, autoSize(95))
+
+                        itemView()
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            background = resources.getDrawable(R.color.white)
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "*"
+                                    textColorInt = R.color.rma_star_color
+                                    textSizeAuto = 31
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(37)
+                                }
+
+                                textView {
+                                    text = "价格"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                }
+                            }.lparams(autoSize(210), autoSize(95))
+
+                            linearLayout {
+                                numberEditText {
+//                                    viewModel.quoteDayData.bindOptional(context){
+//                                        text = NumberUtils.roundNum(it?.getPrice() ?: 0.0,2)
+//                                    }
+                                    decimal = 2
+                                    price_edittext = this
+                                    setOnTextChangeListener { view, value ->
+
+                                    }
+                                }.lparams(0, autoSize(72), 1f) {
+                                    marginEnd = autoSize(36)
+                                }
+                            }.lparams(autoSize(485), autoSize(95))
+                        }.lparams(matchParent, autoSize(95))
+
+                        itemView()
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            background = resources.getDrawable(R.color.white)
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "*"
+                                    textColorInt = R.color.rma_star_color
+                                    textSizeAuto = 31
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(37)
+                                }
+
+                                textView {
+                                    text = "数量"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_black_33
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                }
+                            }.lparams(autoSize(210), autoSize(95))
+
+                            linearLayout {
+                                numberEditText {
+//                                    viewModel.quoteDayData.bindOptional(context){
+//                                        text = NumberUtils.roundNum(it?.getPrice() ?: 0.0,2)
+//                                    }
+                                    decimal = 0
+                                    number_edittext = this
+                                    setOnTextChangeListener { view, value ->
+
+                                    }
+                                }.lparams(0, autoSize(72), 1f) {
+                                    marginEnd = autoSize(36)
+                                }
+                            }.lparams(autoSize(485), autoSize(95))
+
+                            textView {
+                                text = "现货200吨"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_yellow_text_color
+                            }.lparams(wrapContent, wrapContent)
+                        }.lparams(matchParent, autoSize(95))
+
+                        itemView()
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            background = resources.getDrawable(R.color.white)
+                            onThrottleFirstClick {
+                                val selectDataList = arrayListOf(
+                                    SelectData(
+                                        id = "1",
+                                        value = "套期保值"
+                                    ),
+                                    SelectData(
+                                        id = "2",
+                                        value = "套利"
+                                    ),
+                                    SelectData(
+                                        id = "3",
+                                        value = "换月"
+                                    )
+                                )
+                                creatBottomSheetDialog("请选择交易类型", selectDataList) {
+                                    selectBusinessType.postValue(this)
+                                }
+                            }
+                            textView {
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+
+                            textView {
+                                text = "业务类型"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            textView {
+                                selectBusinessType.bindOptional(context) {
+                                    text = it?.value
+                                    textColorInt = R.color.rma_black_33
+                                }
+                                text = "请选择业务类型"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_hint_text_color_ccc
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(80)
+                            }
+
+                            emptyView()
+
+                            imageView {
+                                imageResource = R.mipmap.rma_more
+                            }.lparams(autoSize(36), autoSize(36)) {
+                                marginEnd = autoSize(25)
+                            }
+                        }.lparams(matchParent, autoSize(95))
+
+                        view {
+                            background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+                        }.lparams(matchParent, autoSize(18))
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "现货订单"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(32)
+                            }
+
+                            emptyView()
+
+                            textView {
+                                textSizeAuto = 29
+                                textColorInt = R.color.rma_red_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginEnd = autoSize(32)
+                            }
+
+                        }.lparams(matchParent, autoSize(95))
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            linearLayout {
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+
+                                editText {
+                                    gravity = Gravity.CENTER_VERTICAL
+                                    spot_number_edittext = this
+                                    hint = "搜索现货编号"
+                                    background = null
+                                    hintColorStr = "#CCCCCC"
+                                    textSizeAuto = 31
+                                    inputType = EditorInfo.TYPE_CLASS_NUMBER
+                                    textColorStr = "#333333"
+                                }.lparams(matchParent, autoSize(80))
+
+                            }.lparams(0, autoSize(80),1f){
+                                marginStart = autoSize(28)
+                            }
+
+                            linearLayout {
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+
+                                editText {
+                                    gravity = Gravity.CENTER_VERTICAL
+                                    counterparty_edittext = this
+                                    hint = "搜索对手方"
+                                    background = null
+                                    hintColorStr = "#CCCCCC"
+                                    textSizeAuto = 31
+                                    inputType = EditorInfo.TYPE_CLASS_NUMBER
+                                    textColorStr = "#333333"
+                                }.lparams(matchParent, autoSize(80))
+                            }.lparams(0, autoSize(80),1f){
+                                marginStart = autoSize(28)
+                                marginEnd = autoSize(28)
+                            }
+
+                            linearLayout {
+                                backgroundResource = R.drawable.qyfg_search_item_bg
+
+                                editText {
+                                    gravity = Gravity.CENTER_VERTICAL
+                                    spot_goods_edittext = this
+                                    hint = "搜索现货商品"
+                                    background = null
+                                    hintColorStr = "#CCCCCC"
+                                    textSizeAuto = 31
+                                    inputType = EditorInfo.TYPE_CLASS_NUMBER
+                                    textColorStr = "#333333"
+                                }.lparams(matchParent, autoSize(80))
+                            }.lparams(0, autoSize(80),1f){
+                                marginEnd = autoSize(28)
+                            }
+                        }.lparams(matchParent, autoSize(90))
+
+                        view {
+                            background = resources.getDrawable(R.color.white)
+                        }.lparams(matchParent, autoSize(18))
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            textView {
+                                onThrottleFirstClick {
+                                    viewModel.querySCMiddleGoods(buyorsell = selectBuyOrSell.value?.id ?: "0",goodsgroupid = selectGoodsGroup.value?.id ?: "",contractno = spot_number_edittext.text.toString(),
+                                        customername = counterparty_edittext.text.toString(),wrstandardname = spot_goods_edittext.text.toString())
+                                }
+                                backgroundResource = R.drawable.yrdz_item_click_bg
+                                gravity = Gravity.CENTER
+                                text = "查询"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_blue_color
+                            }.lparams(matchParent, autoSize(68)){
+                                marginStart = autoSize(28)
+                                marginEnd = autoSize(28)
+                            }
+                        }.lparams(matchParent, autoSize(68))
+
+                        view {
+                            background = resources.getDrawable(R.color.white)
+                        }.lparams(matchParent, autoSize(18))
+
+                        linearLayout {
+                            verticalLayout {
+                                gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "商品"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_hint_text_color_ccc
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(32)
+                                }
+                            }.lparams(0, autoSize(85),1f)
+
+                            verticalLayout {
+                                gravity = Gravity.CENTER_HORIZONTAL
+                                textView {
+                                    text = "应套保数量/"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_hint_text_color_ccc
+                                }.lparams(wrapContent, wrapContent){
+
+                                }
+
+                                textView {
+                                    text = "已关联数量"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_hint_text_color_ccc
+                                }.lparams(wrapContent, wrapContent)
+                            }.lparams(0, autoSize(85),1f)
+
+                            verticalLayout {
+                                gravity = Gravity.CENTER_VERTICAL or Gravity.RIGHT
+                                textView {
+                                    text = "本次关联数量(期货)"
+                                    textSizeAuto = 31
+                                    textColorInt = R.color.rma_hint_text_color_ccc
+                                }.lparams(wrapContent, wrapContent){
+                                    marginEnd = autoSize(32)
+                                }
+                            }.lparams(0, autoSize(85),1f)
+                        }.lparams(matchParent, autoSize(85))
+
+                        recyclerView {
+                            background = resources.getDrawable(R.color.segtabment_bg_color)
+                            adapter = businessAssociationsAdapter
+                        }.lparams(matchParent, matchParent)
+
+                        viewModel.associationsSpotDataList.bindOptional(context) {
+                            businessAssociationsAdapter.setNewData(it)
+                        }
+                    }
+                }.lparams(matchParent, matchParent)
+
+                linearLayout {
+                    background = resources.getDrawable(R.color.white)
+                    gravity = Gravity.CENTER_VERTICAL
+
+                    textView {
+                        onThrottleFirstClick {
+
+                        }
+                        gravity = Gravity.CENTER
+                        backgroundResource = R.mipmap.rma_submit_bg
+                        text = "关联"
+                        textColorInt = R.color.white
+                        textSizeAuto = 38
+                    }.lparams(matchParent, autoSize(119)) {
+                        marginStart = autoSize(36)
+                        marginEnd = autoSize(36)
+                    }
+                }.lparams(matchParent, autoSize(144)) {
+                    gravity = Gravity.BOTTOM
+                }
+            }.lparams(matchParent, matchParent)
+        }
+    }
+
+}

+ 158 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionViewModel.kt

@@ -0,0 +1,158 @@
+package cn.muchinfo.rma.view.base.spot.associated.perioddocuments
+
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.PaTradeLinkData
+import cn.muchinfo.rma.global.data.SCMiddleGoodsData
+import cn.muchinfo.rma.global.database.DataBase
+import cn.muchinfo.rma.netManage.base.InteractiveException
+import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.base.BaseViewModel
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.utils.TaskUiModel
+
+/**
+ * 补单关联页面viewmodel
+ */
+class FillSingleConnectionViewModel : BaseViewModel(){
+
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
+    //现货订单列表数据
+    val associationsSpotDataList : MutableLiveData<List<SCMiddleGoodsData>> = MutableLiveData()
+
+    //缓存的用于提交的现货订单数据
+//    val associationsSpotCashDataList : MutableLiveData<List<SCMiddleGoodsData>> = MutableLiveData()
+
+
+    /**
+     * item的点击事件
+     */
+    fun setOnItemOnClick(contractno : String){
+        val newWrStandardFactoryItemDataList = arrayListOf<SCMiddleGoodsData>()
+        associationsSpotDataList.value?.forEach {
+            if (it.contractno == contractno){
+                if (it.isClick == 0){
+                    newWrStandardFactoryItemDataList.add(it.copy(isClick = 1))
+                }else{
+                    newWrStandardFactoryItemDataList.add(it.copy(isClick = 0))
+                }
+            }else{
+                newWrStandardFactoryItemDataList.add(it.copy(isClick = 0))
+            }
+        }
+        associationsSpotDataList.postValue(newWrStandardFactoryItemDataList)
+
+    }
+
+
+    /**
+     * 查询现货订单
+     * @param data PaTradeLinkData
+     * @param contractno String
+     * @param customername String
+     * @param wrstandardname String
+     */
+    fun querySCMiddleGoods(buyorsell : String,goodsgroupid : String, contractno : String = "", customername : String = "", wrstandardname : String = ""){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid",GlobalDataCollection.instance?.loginRsp?.userID.toString())
+            put("buyorsell",buyorsell)
+            put("goodsgroupid",goodsgroupid)
+            if (contractno.isNotEmpty()){
+                put("contractno",contractno)
+            }
+            if (customername.isNotEmpty()){
+                put("customername",customername)
+            }
+            if (wrstandardname.isNotEmpty()){
+                put("wrstandardname",wrstandardname)
+            }
+        }
+        MyApplication.getInstance()?.spotManager?.querySCMiddleGoods(params = params){ isSuccess, respData, error ->
+            if (isSuccess){
+                associationsSpotDataList.postValue(respData)
+            }
+        }
+    }
+
+    /**
+     * 获取可供选择的商品组
+     * @return List<SelectData>
+     */
+    fun getSelectGoodsGroupList() : List<SelectData>{
+        val newSelectDataList = arrayListOf<SelectData>()
+        GlobalDataCollection.instance?.loginQueryData?.goodsgroups?.forEach {
+            newSelectDataList.add(SelectData(id = it.goodsgroupid.toString(),value = it.goodsgroupname))
+        }
+        return newSelectDataList
+    }
+
+    /**
+     * 通过goodsgroupid筛选出商品
+     */
+    fun getSelectGoodsByGoodsgroupid(selectgoodsgroupid : String) : List<SelectData>{
+        val newSelectDataList = arrayListOf<SelectData>()
+        val goodsInfoList = DataBase.getInstance().goodsInfoDao().all
+        goodsInfoList.forEach {
+            if (selectgoodsgroupid == it.goodsgroupid.toString() && it.goodsstatus == 3){
+                newSelectDataList.add(SelectData(id = it.goodsid.toString(),value = it.goodsname))
+            }
+        }
+        return newSelectDataList
+    }
+
+    /**
+     * 补单关联请求
+     */
+    fun manageAmendOrderReq(
+        OutTradeID : Long = 0,//外部成交单号
+        AccountID : Long = 0,//内部期货子账户
+        BuyOrSell : Int = 0,//方向 - 0:买 1:卖
+        GoodsID : Int = 0,//商品ID
+        ChannelBuildType : Int = 0,//下单类型(开平标志 - 0:无 1:建仓 2:平仓)
+        CloseType : Int = 0,//平仓类型(平仓标志 - 0:平仓 1:平今 2:平昨)
+        TradePrice : Double = 0.0,//成交价格
+        TradeQty : Long = 0,//成交数量
+        HedgeFlag : Int = 0,// 4:套期保值 5:单边 6:移仓 7:错单处理 8:跨期套利
+        SpotContractID : Long = 0,//RelatedTradeType = 4:套期保值时 有值
+        SaleUserID : Int = 0,//业务员ID
+        BizSubjectID : Int = 0,//归属业务部门ID
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.spotManager?.manageAmendOrderReq(
+                OutTradeID = OutTradeID,
+                AccountID = AccountID,
+                BuyOrSell = BuyOrSell,
+                GoodsID = GoodsID,
+                ChannelBuildType = ChannelBuildType,
+                CloseType = CloseType,
+                TradePrice = TradePrice,
+                TradeQty = TradeQty,
+                HedgeFlag = HedgeFlag,
+                SpotContractID = SpotContractID,
+                SaleUserID = SaleUserID,
+                BizSubjectID = BizSubjectID
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+}

+ 6 - 6
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RelationalRecordFragment.kt

@@ -65,7 +65,7 @@ class RelationalRecordFragment : BaseFragment<RelationalRecordViewModel>(),
                 linearLayout {
                     gravity = Gravity.CENTER_VERTICAL
                     linearLayout {
-                        background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+                        backgroundResource = R.drawable.qyfg_search_item_bg
                         editText {
                             futures_order_number = this
                             hint = "搜索期货订单号"
@@ -75,7 +75,7 @@ class RelationalRecordFragment : BaseFragment<RelationalRecordViewModel>(),
                             hintColorStr = "#CCCCCC"
                             textSizeAuto = 31
                             textColorStr = "#333333"
-                        }.lparams(matchParent, autoSize(100)) {
+                        }.lparams(matchParent, autoSize(90)) {
                             marginStart = autoSize(20)
                         }
                     }.lparams(0, autoSize(100), 1f) {
@@ -84,7 +84,7 @@ class RelationalRecordFragment : BaseFragment<RelationalRecordViewModel>(),
                     }
 
                     linearLayout {
-                        background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+                        backgroundResource = R.drawable.qyfg_search_item_bg
                         editText {
                             spot_number = this
                             hint = "搜索现货编号"
@@ -94,7 +94,7 @@ class RelationalRecordFragment : BaseFragment<RelationalRecordViewModel>(),
                             hintColorStr = "#CCCCCC"
                             textSizeAuto = 31
                             textColorStr = "#333333"
-                        }.lparams(matchParent, autoSize(100)) {
+                        }.lparams(matchParent, autoSize(90)) {
                             marginStart = autoSize(20)
                         }
                     }.lparams(0, autoSize(100), 1f) {
@@ -106,7 +106,7 @@ class RelationalRecordFragment : BaseFragment<RelationalRecordViewModel>(),
                  linearLayout {
                     gravity = Gravity.CENTER_VERTICAL
                     linearLayout {
-                        background = resources.getDrawable(R.color.rma_hint_line_color_eee)
+                        backgroundResource = R.drawable.qyfg_search_item_bg
                         editText {
                             futures_account = this
                             hint = "搜索期货账户"
@@ -116,7 +116,7 @@ class RelationalRecordFragment : BaseFragment<RelationalRecordViewModel>(),
                             hintColorStr = "#CCCCCC"
                             textSizeAuto = 31
                             textColorStr = "#333333"
-                        }.lparams(matchParent, autoSize(100)) {
+                        }.lparams(matchParent, autoSize(90)) {
                             marginStart = autoSize(20)
                         }
                     }.lparams(0, autoSize(100), 1f) {

+ 39 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RelationalRecordViewModel.kt

@@ -6,16 +6,26 @@ import cn.muchinfo.rma.global.data.ColumnsData
 import cn.muchinfo.rma.global.data.PaTradeLinkData
 import cn.muchinfo.rma.global.data.PaTradeLinkDetailData
 import cn.muchinfo.rma.global.isBlankString
+import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.toArrayList
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.BaseViewModel
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+import mtp.polymer.com.autowidget.utils.TaskUiModel
 
 /**
  * 关联记录viewmodel
  */
 class RelationalRecordViewModel : BaseViewModel(){
 
+
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
     //外部成交单关联列头数据
     val relationRecordTitleList : MutableLiveData<List<ColumnsData>> = MutableLiveData()
 
@@ -125,4 +135,33 @@ class RelationalRecordViewModel : BaseViewModel(){
         }
         return newList
     }
+
+    /**
+     * 解除关联
+     * @param LinkDetailId Long
+     */
+    fun linkUnbindReq(
+        LinkDetailId : Long = 0,//关联ID
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.spotManager?.linkUnbindReq(
+                LinkDetailId = LinkDetailId
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
 }

+ 6 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RemoveRelationalRecordActivity.kt

@@ -10,6 +10,8 @@ import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -22,6 +24,7 @@ class RemoveRelationalRecordActivity : BaseActivity<RelationalRecordViewModel>()
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(context, viewModel.loadingDialogStatus)
             topBar {
                 commonLeftButton()
                 commonTitle {
@@ -347,7 +350,9 @@ class RemoveRelationalRecordActivity : BaseActivity<RelationalRecordViewModel>()
 
                     textView {
                         onThrottleFirstClick {
-
+                            viewModel.linkUnbindReq(LinkDetailId = data.linkdetailid?.toLong() ?: 0){
+                                finish()
+                            }
                         }
                         gravity = Gravity.CENTER
                         backgroundResource = R.mipmap.rma_submit_bg

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

@@ -711,7 +711,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                     }
                     visibility = View.GONE
                     val aaChartModel = AAChartModel()
-                        .chartType(AAChartType.Areaspline)
+                        .chartType(AAChartType.Spline)
                         .title("")
                         .yAxisTitle("")
                         .legendEnabled(false)

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

@@ -81,7 +81,7 @@
             android:layout_marginEnd="10dp"
             android:gravity="center"
             android:textSize="12sp"
-            android:layout_width="90dp"
+            android:layout_width="50dp"
             android:layout_height="25dp"
             android:text="关联"
             android:textColor="@color/rma_blue_color"