Ver Fonte

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

Liu.bolan há 4 anos atrás
pai
commit
6b9b2a215c

+ 2 - 0
RMA/app/build.gradle

@@ -189,4 +189,6 @@ dependencies {
     compile 'com.cuieney:rxpay-api:2.2.3'
     kapt 'com.cuieney:rxpay-compiler:2.1.1'
 
+//    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
+//    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
 }

+ 43 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/bank/BankManager.kt

@@ -1,11 +1,19 @@
 package cn.muchinfo.rma.business.bank
 
+import cn.muchinfo.rma.business.bank.adapter.BankAdapter
+import cn.muchinfo.rma.business.money.adapter.MoneyAdapter
 import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.BankInfoData
 import cn.muchinfo.rma.global.data.CusBankSignBankData
 import cn.muchinfo.rma.global.data.GoodsPickupData
+import cn.muchinfo.rma.global.data.transit.SignReq
 import cn.muchinfo.rma.netManage.base.ResponseCallback
 import cn.muchinfo.rma.netManage.utils.MyOkHttpUtils
+import cn.muchinfo.rma.netcore.packet.Packet50
+import cn.muchinfo.rma.netcore.socket.Callback
+import cn.muchinfo.rma.protobuf.funcode.FunCode
+import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.autoWidget.guard
 import cn.muchinfo.rma.view.base.app.BaseResult
 import cn.muchinfo.rma.view.base.app.Constant
 import com.blankj.utilcode.util.SPUtils
@@ -16,6 +24,41 @@ import java.lang.Exception
 class BankManager {
 
     /**
+     * 签约解约请求
+     * @param req SignReq
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun requeryT2bBankSignReq(
+        req: SignReq,
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ) {
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = BankAdapter.getT2bBankSignReqInfo(
+            req = req
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.T2BBANKSIGNRSP,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = MoneyAdapter.analysisBalancePaymentRsq(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+            }
+        )
+    }
+
+    /**
      * 查询开户行
      * @param params Map<String, String>
      * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<ContractData>?, [@kotlin.ParameterName] Error?, Unit>

+ 86 - 4
RMA/app/src/main/java/cn/muchinfo/rma/business/bank/adapter/BankAdapter.kt

@@ -1,21 +1,27 @@
 package cn.muchinfo.rma.business.bank.adapter
 
 import cn.muchinfo.rma.business.global.MessageHeadModel
+import cn.muchinfo.rma.global.ErrorMessageUtils
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.transit.SignReq
 import cn.muchinfo.rma.netcore.packet.Packet50
 import cn.muchinfo.rma.protobuf.funcode.FunCode
 import cn.muchinfo.rma.protobuf.protoclasses.BankMI1
+import cn.muchinfo.rma.protobuf.protoclasses.TkernelMI1
 import java.io.ByteArrayOutputStream
-import java.util.*
+import java.lang.Exception
 
 //bank相关装箱解箱
 object BankAdapter {
 
 
-    fun getT2bBankSignReqInfo() : Packet50{
+    /**
+     * 签约解约的报文装箱
+     * @param req SignReq
+     * @return Packet50
+     */
+    fun getT2bBankSignReqInfo(req : SignReq) : Packet50{
         val builder = BankMI1.t2bBankSignReq.newBuilder()
-
-
         val loginInfo = GlobalDataCollection.instance?.loginRsp!!
 
         // FIXME: - 250000000005
@@ -28,10 +34,86 @@ object BankAdapter {
                 18
             )
         )
+        //OpenBankAccId, ExBankName
+
+        builder.extOperatorID = req.extOperatorID //***
+//        builder.exchId = req.exchId
+//        builder.tradeDate = req.tradeDate
+//        builder.exchTicket = req.exchTicket
+        builder.accountCode = req.accountCode //***
+
+        builder.accountName = req.accountName //***
+        builder.cusBankID = req.cusBankID //***
+
+        builder.operateType = req.operateType//变更类型[1-增加;2-修改;4-绑卡; ***
+        builder.isForce = req.isForce//是否强制[0-否;1-是]强制,只更新中心签约信息,不发送银行。用于银行信息不一致的情况 ***
+        builder.currency = req.currency//币种 ***
+        builder.accountType = req.accountType//账户类型[1-对私;2-对公] ***
+        builder.openBankAccId = req.openBankAccId // 银行卡行号
+//        builder.forceSignBankAccountNo = req.forceSignBankAccountNo // 银行账户[强制签约时填写]
+//        builder.forceSignBankAccountName = req.forceSignBankAccountName // 银行账户名称[强制签约时填写]
+        builder.bankAccountNo = req.bankAccountNo // 银行账户 ***
+        builder.bankAccountName = req.bankAccountName // 银行账户名称 ***
+
+        builder.exBankName = req.exBankName // 开户行名称
+//        builder.openBankNo = req.openBankNo // 开户支行编号
+        builder.openBankName = req.openBankName // 开户支行名称***
+
+        builder.certType = req.certType // 证件类型 ***
+        builder.certID = req.certID // 证件号码 ***
+
+//        builder.bankAccountPWD = req.bankAccountPWD // 银行账户密码
+
+//        builder.agentName = req.agentName // 授权代理人姓名
+
+        builder.agentCertType = req.agentCertType // 授权代理人证件类型 ***
+
+//        builder.agentCertID = req.agentCertID // 授权代理人证件号
 
+        builder.bankAccountType = req.bankAccountType // 银行账户类型 ***
+
+//        builder.bankProvince = req.bankProvince // 开户银行所在省份
+
+//        builder.bankCity = req.bankCity // 开户银行所在市
+
+        builder.bankCardType = req.bankCardType // 银行卡类型 ***
+
+//        builder.mobilePhone = req.mobilePhone // 移动电话
+
+//        builder.identifyCode = req.identifyCode // 验证码
+
+//        builder.email = req.email // 电子邮箱
+
+        builder.extendInfo = req.extend_info // 扩展信息(JSON串,参考配置要求进行填充) ***
 
         val arrayOutputStream = ByteArrayOutputStream();
         builder.build().writeTo(arrayOutputStream)
         return Packet50(FunCode.T2BBANKSIGNREQ, arrayOutputStream.toByteArray())
     }
+
+    /**
+     * 签约解约的请求报文解析
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ErmcpMI1.SpotContractOperateRsp?>
+     */
+    fun analysisBalancePaymentRsq(packet50: Packet50): Triple<Boolean, Error?, BankMI1.t2bBankSignRsp?> {
+        return try {
+            val resultRsp = BankMI1.t2bBankSignRsp.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)
+        }
+    }
+
+
 }

+ 340 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/transit/SignReq.java

@@ -0,0 +1,340 @@
+package cn.muchinfo.rma.global.data.transit;
+
+/**
+ * Created by simonzhou on 18/4/18.
+ * optional MessageHead Header = 1;
+ * required uint64 ExtOperatorID = 2; // 外部操作流水号
+ * optional string ExchId = 3; // 交易所编号
+ * optional string TradeDate = 4; // 交易所业务日期
+ * optional string ExchTicket = 5; // 交易所流水号
+ * required string AccountCode = 6; // 账户
+ * required string AccountName = 7; // 客户名称
+ * required string CusBankID = 8; // 托管银行编号
+ * required int32 OperateType = 9; // 变更类型[1-增加;2-修改;4-绑卡;
+ * required int32 IsForce = 10; // 是否强制[0-否;1-是]强制,只更新中心签约信息,不发送银行。用于银行信息不一致的情况
+ * optional string Currency = 11; // 币种
+ * optional int32 AccountType = 12; // 账户类型[1-对私;2-对公]
+ * required string OpenBankAccId = 13; // 银行卡行号
+ * optional string ForceSignBankAccountNo = 14; // 银行账户[强制签约时填写]
+ * optional string ForceSignBankAccountName = 15; // 银行账户名称[强制签约时填写]
+ * required string BankAccountNo = 16; // 银行账户
+ * required string BankAccountName = 17; // 银行账户名称
+ * required string ExBankName = 18; // 开户行名称
+ * optional string OpenBankNo = 19; // 开户支行编号
+ * optional string OpenBankName = 20; // 开户支行名称
+ * required string CertType = 21; // 证件类型
+ * required string CertID = 22; // 证件号码
+ * optional string BankAccountPWD = 23; // 银行账户密码
+ * optional string AgentName = 24; // 授权代理人姓名
+ * optional int32 AgentCertType = 25; // 授权代理人证件类型
+ * optional string AgentCertID = 26; // 授权代理人证件号
+ * optional int32 BankAccountType = 27; // 银行账户类型
+ * optional string BankProvince = 28; // 开户银行所在省份
+ * optional string BankCity = 29; // 开户银行所在市
+ * optional int32 BankCardType = 30; // 银行卡类型
+ * optional string MobilePhone = 31; // 移动电话
+ * optional string IdentifyCode = 32; // 验证码
+ * optional string email = 33; // 电子邮箱
+ * optional string extend_info = 34; // 扩展信息(JSON串,参考配置要求进行填充)
+ */
+
+public class SignReq {
+
+    private long ExtOperatorID; // 外部操作流水号
+    private String ExchId; // 交易所编号
+    private String TradeDate; // 交易所业务日期
+    private String ExchTicket; // 交易所流水号
+    private String AccountCode; // 账户
+    private String AccountName; // 客户名称
+    private String CusBankID; // 托管银行编号
+    private int OperateType; // 变更类型[1-增加;2-修改;4-绑卡;
+    private int IsForce; // 是否强制[0-否;1-是]强制,只更新中心签约信息,不发送银行。用于银行信息不一致的情况
+    private String Currency; // 币种
+    private int AccountType; // 账户类型[1-对私;2-对公]
+    private String OpenBankAccId; // 银行卡行号
+    private String ForceSignBankAccountNo; // 银行账户[强制签约时填写]
+    private String ForceSignBankAccountName; // 银行账户名称[强制签约时填写]
+    private String BankAccountNo; // 银行账户
+    private String BankAccountName; // 银行账户名称
+    private String ExBankName; // 开户行名称
+    private String OpenBankNo; // 开户支行编号
+    private String OpenBankName; // 开户支行名称
+    private String CertType; // 证件类型
+    private String CertID; // 证件号码
+    private String BankAccountPWD; // 银行账户密码
+    private String AgentName; // 授权代理人姓名
+    private int AgentCertType; // 授权代理人证件类型
+    private String AgentCertID; // 授权代理人证件号
+    private int BankAccountType; // 银行账户类型
+    private String BankProvince; // 开户银行所在省份
+    private String BankCity; // 开户银行所在市
+    private int BankCardType; // 银行卡类型
+    private String MobilePhone; // 移动电话
+    private String IdentifyCode; // 验证码
+    private String email; // 电子邮箱
+    private String extend_info; // 扩展信息(JSON串,参考配置要求进行填充)
+
+    public long getExtOperatorID() {
+        return ExtOperatorID;
+    }
+
+    public void setExtOperatorID(long extOperatorID) {
+        ExtOperatorID = extOperatorID;
+    }
+
+    public String getExchId() {
+        return ExchId;
+    }
+
+    public void setExchId(String exchId) {
+        ExchId = exchId;
+    }
+
+    public String getTradeDate() {
+        return TradeDate;
+    }
+
+    public void setTradeDate(String tradeDate) {
+        TradeDate = tradeDate;
+    }
+
+    public String getExchTicket() {
+        return ExchTicket;
+    }
+
+    public void setExchTicket(String exchTicket) {
+        ExchTicket = exchTicket;
+    }
+
+    public String getAccountCode() {
+        return AccountCode;
+    }
+
+    public void setAccountCode(String accountCode) {
+        AccountCode = accountCode;
+    }
+
+    public String getAccountName() {
+        return AccountName;
+    }
+
+    public void setAccountName(String accountName) {
+        AccountName = accountName;
+    }
+
+    public String getCusBankID() {
+        return CusBankID;
+    }
+
+    public void setCusBankID(String cusBankID) {
+        CusBankID = cusBankID;
+    }
+
+    public int getOperateType() {
+        return OperateType;
+    }
+
+    public void setOperateType(int operateType) {
+        OperateType = operateType;
+    }
+
+    public int getIsForce() {
+        return IsForce;
+    }
+
+    public void setIsForce(int isForce) {
+        IsForce = isForce;
+    }
+
+    public String getCurrency() {
+        return Currency;
+    }
+
+    public void setCurrency(String currency) {
+        Currency = currency;
+    }
+
+    public int getAccountType() {
+        return AccountType;
+    }
+
+    public void setAccountType(int accountType) {
+        AccountType = accountType;
+    }
+
+    public String getOpenBankAccId() {
+        return OpenBankAccId;
+    }
+
+    public void setOpenBankAccId(String openBankAccId) {
+        OpenBankAccId = openBankAccId;
+    }
+
+    public String getForceSignBankAccountNo() {
+        return ForceSignBankAccountNo;
+    }
+
+    public void setForceSignBankAccountNo(String forceSignBankAccountNo) {
+        ForceSignBankAccountNo = forceSignBankAccountNo;
+    }
+
+    public String getForceSignBankAccountName() {
+        return ForceSignBankAccountName;
+    }
+
+    public void setForceSignBankAccountName(String forceSignBankAccountName) {
+        ForceSignBankAccountName = forceSignBankAccountName;
+    }
+
+    public String getBankAccountNo() {
+        return BankAccountNo;
+    }
+
+    public void setBankAccountNo(String bankAccountNo) {
+        BankAccountNo = bankAccountNo;
+    }
+
+    public String getBankAccountName() {
+        return BankAccountName;
+    }
+
+    public void setBankAccountName(String bankAccountName) {
+        BankAccountName = bankAccountName;
+    }
+
+    public String getExBankName() {
+        return ExBankName;
+    }
+
+    public void setExBankName(String exBankName) {
+        ExBankName = exBankName;
+    }
+
+    public String getOpenBankNo() {
+        return OpenBankNo;
+    }
+
+    public void setOpenBankNo(String openBankNo) {
+        OpenBankNo = openBankNo;
+    }
+
+    public String getOpenBankName() {
+        return OpenBankName;
+    }
+
+    public void setOpenBankName(String openBankName) {
+        OpenBankName = openBankName;
+    }
+
+    public String getCertType() {
+        return CertType;
+    }
+
+    public void setCertType(String certType) {
+        CertType = certType;
+    }
+
+    public String getCertID() {
+        return CertID;
+    }
+
+    public void setCertID(String certID) {
+        CertID = certID;
+    }
+
+    public String getBankAccountPWD() {
+        return BankAccountPWD;
+    }
+
+    public void setBankAccountPWD(String bankAccountPWD) {
+        BankAccountPWD = bankAccountPWD;
+    }
+
+    public String getAgentName() {
+        return AgentName;
+    }
+
+    public void setAgentName(String agentName) {
+        AgentName = agentName;
+    }
+
+    public int getAgentCertType() {
+        return AgentCertType;
+    }
+
+    public void setAgentCertType(int agentCertType) {
+        AgentCertType = agentCertType;
+    }
+
+    public String getAgentCertID() {
+        return AgentCertID;
+    }
+
+    public void setAgentCertID(String agentCertID) {
+        AgentCertID = agentCertID;
+    }
+
+    public int getBankAccountType() {
+        return BankAccountType;
+    }
+
+    public void setBankAccountType(int bankAccountType) {
+        BankAccountType = bankAccountType;
+    }
+
+    public String getBankProvince() {
+        return BankProvince;
+    }
+
+    public void setBankProvince(String bankProvince) {
+        BankProvince = bankProvince;
+    }
+
+    public String getBankCity() {
+        return BankCity;
+    }
+
+    public void setBankCity(String bankCity) {
+        BankCity = bankCity;
+    }
+
+    public int getBankCardType() {
+        return BankCardType;
+    }
+
+    public void setBankCardType(int bankCardType) {
+        BankCardType = bankCardType;
+    }
+
+    public String getMobilePhone() {
+        return MobilePhone;
+    }
+
+    public void setMobilePhone(String mobilePhone) {
+        MobilePhone = mobilePhone;
+    }
+
+    public String getIdentifyCode() {
+        return IdentifyCode;
+    }
+
+    public void setIdentifyCode(String identifyCode) {
+        IdentifyCode = identifyCode;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getExtend_info() {
+        return extend_info;
+    }
+
+    public void setExtend_info(String extend_info) {
+        this.extend_info = extend_info;
+    }
+}

+ 28 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/dialog/Dialog.kt

@@ -14,10 +14,7 @@ import androidx.annotation.RequiresApi
 import androidx.appcompat.app.AppCompatActivity
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
-import cn.muchinfo.rma.global.data.AccountData
-import cn.muchinfo.rma.global.data.AvaildGoodsGroupData
-import cn.muchinfo.rma.global.data.GoodsGroupData
-import cn.muchinfo.rma.global.data.MiddleGoodsData
+import cn.muchinfo.rma.global.data.*
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
 import cn.muchinfo.rma.global.isBlankString
 
@@ -191,6 +188,33 @@ fun AppCompatActivity.creatHedgeBottomSheetDialog(
     builder.build().show()
 }
 
+/**
+ * 专门用选择银行信息的选择
+ * @receiver AppCompatActivity
+ * @param titleStr 头部内容
+ * @param selectList List<BankInfoData> 选择的实体列表
+ * @param select [@kotlin.ExtensionFunctionType] Function1<AvaildGoodsGroupData, Unit>?
+ */
+fun AppCompatActivity.creatBankInfoBottomSheetDialog(
+    titleStr: String,
+    selectList: List<BankInfoData>,
+    select: (BankInfoData.() -> Unit)? = null
+) {
+    val builder: QMUIBottomSheet.BottomListSheetBuilder =
+        QMUIBottomSheet.BottomListSheetBuilder(this)
+    builder.setGravityCenter(true)
+        .setTitle(titleStr)
+        .setAddCancelBtn(true)
+    selectList.forEach {
+        builder.addItem(it.bankname)
+    }
+    builder.setOnSheetItemClickListener { dialog, itemView, position, tag ->
+        select?.invoke(selectList.get(position))
+        dialog.dismiss()
+    }
+    builder.build().show()
+}
+
 
 /**
  * 专门用于千海金商品下拉选择的dialog

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

@@ -16,6 +16,8 @@ object Constant {
 //    const val baseurl = "http://192.168.31.174:8080/cfg?key=test_174"// 邓工
 
      const val baseurl = "http://192.168.31.176:8080/cfg?key=test_176" // 9999  123123  黄老板千海金
+//    const val baseurl = "http://192.168.31.171:8080/cfg?key=test_171" //
+//    const val baseurl = "http://192.168.21.71:8280/cfg?key=mtp_20"
 
     /**
      * 用sp存储基础url的key

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

@@ -9,6 +9,7 @@ import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.PayOrderData
 import cn.muchinfo.rma.global.database.DataBase
+import cn.muchinfo.rma.global.isShowTimeString
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.autoSize
 import cn.muchinfo.rma.view.autoWidget.onThrottleFirstClick
@@ -42,6 +43,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
         super.onCreate(savedInstanceState)
         QMUIStatusBarHelper.translucent(this)
         verticalLayout {
+            selectPayType.postValue(SelectData(id = "2",value = "支付宝支付"))
             dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.main_hit_bg_color)
             verticalLayout {
@@ -120,7 +122,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-                    selectPayType.postValue(SelectData(id = "1",value = ""))
+                    selectPayType.postValue(SelectData(id = "1",value = "余额支付"))
                 }
                 imageView {
                     imageResource = R.mipmap.qhj_balance_icon
@@ -176,7 +178,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-                    selectPayType.postValue(SelectData(id = "3",value = ""))
+                    selectPayType.postValue(SelectData(id = "3",value = "微信支付"))
                 }
                 imageView {
                     imageResource = R.mipmap.wechat_pay_icon
@@ -216,7 +218,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-                    selectPayType.postValue(SelectData(id = "2",value = ""))
+                    selectPayType.postValue(SelectData(id = "2",value = "支付宝支付"))
                 }
                 imageView {
                     imageResource = R.mipmap.alipay_icon
@@ -271,8 +273,14 @@ class PayActivity : BaseActivity<PayViewModel>(){
                                 ToastUtils.showLong("支付成功")
                                 finish()
                             }
+                        }else if (selectPayType.value?.id == "3"){
+                            viewModel.getPayInfo(marketId = tradepaydata.marketid ?: "",orderNo = tradepaydata.tradeid ?: "",orderDate = tradepaydata.createtime?.isShowTimeString("yyyy-MM-dd") ?: "",
+                                totalAmount = tradepaydata?.payamount ?: "0",msgType = "9",payType = "4")
                         }
                     }
+                    selectPayType.bindOptional(context){
+                        text = it?.value
+                    }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg
                     text = "微信支付"

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

@@ -1,13 +1,23 @@
 package cn.muchinfo.rma.view.base.main
 
 import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
+import cn.muchinfo.rma.view.base.app.Constant
+import com.blankj.utilcode.util.LogUtils
+import com.blankj.utilcode.util.SPUtils
+import com.blankj.utilcode.util.ToastUtils
+import com.zhy.http.okhttp.OkHttpUtils
+import com.zhy.http.okhttp.callback.StringCallback
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
 import mtp.polymer.com.autowidget.utils.TaskUiModel
+import okhttp3.Call
+import okhttp3.MediaType
+import org.json.JSONObject
 
 //支付页面的viewmodel
 class PayViewModel : BaseViewModel(){
@@ -49,4 +59,42 @@ class PayViewModel : BaseViewModel(){
         }
     }
 
+    val payInfoRequest : MutableLiveData<String> = MutableLiveData()
+    fun getPayInfo(marketId: String, orderNo: String, orderDate: String, totalAmount: String, msgType: String,payType : String) {//从后台获取支付信息
+        val json = com.alibaba.fastjson.JSONObject()
+        json["accountName"] = GlobalDataCollection.instance?.accountData?.accountname
+        json["accountId"] = GlobalDataCollection.instance?.accountData?.accountid
+        json["marketId"] = marketId
+        json["orderNo"] = orderNo
+        json["payType"] = payType
+        json["orderDate"] = orderDate
+        json["totalAmount"] = totalAmount
+        json["msgType"] = msgType
+        OkHttpUtils.postString()
+            .url(SPUtils.getInstance().getString(Constant.hsbyPayUrlWeb))
+            .content(json.toJSONString())
+            .mediaType(MediaType.parse("application/json; charset=utf-8"))
+            .build()
+            .execute(object : StringCallback() {  //请求商品信息
+                override fun onError(call: Call, e: Exception, id: Int) {
+                    LogUtils.d("dhasfhkajhlka", e.message)
+                }
+
+                override fun onResponse(response: String, id: Int) {
+                    val jsonObject = JSONObject(response)
+                    val code = jsonObject.getString("errCode")
+                    if (code == "SUCCESS") {
+                        if (jsonObject.isNull("appPayRequest")) {
+                            ToastUtils.showLong("服务器返回数据格式有问题,缺少“appPayRequest”字段")
+                            return
+                        }
+                        payInfoRequest.postValue(jsonObject.getString("appPayRequest"))
+
+                    } else {
+                        loadingDialogStatus.value = TaskUiModel.failed(InteractiveException(jsonObject.getString("errMsg")))
+                    }
+                }
+            })
+    }
+
 }

+ 89 - 15
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/AddWithDrawActivity.kt

@@ -6,14 +6,22 @@ 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.MTPEnums
+import cn.muchinfo.rma.global.data.BankInfoData
+import cn.muchinfo.rma.global.data.transit.SignReq
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 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.TimeUtils
 import com.blankj.utilcode.util.ToastUtils
-import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.dialog.creatBankInfoBottomSheetDialog
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
+import org.json.JSONObject
 
 /**
  * 新增/修改提现账户
@@ -28,7 +36,7 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
     /**
      * 选择的开户银行
      */
-    val selectBnak : MutableLiveData<SelectData> = MutableLiveData()
+    val selectBnak : MutableLiveData<BankInfoData> = MutableLiveData()
 
     //开户姓名
     lateinit var bank_card_account_name : EditText
@@ -45,6 +53,10 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(
+                context,
+                viewModel.loadingDialogStatus
+            )
             viewModel.queryCusBankSignBank()
             viewModel.queryBankInfo()
             background = resources.getDrawable(R.color.rma_item_bg)
@@ -64,7 +76,9 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-
+                    creatBankInfoBottomSheetDialog("请选择开户银行",viewModel.bankInfoDataList.value ?: arrayListOf()){
+                        selectBnak.postValue(this)
+                    }
                 }
                 textView {
                     text = "开户银行"
@@ -74,10 +88,9 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
                     marginStart = autoSize(36)
                 }
 
-
                 textView {
                     selectBnak.bindOptional(context) {
-                        text = it?.value
+                        text = it?.bankname
                         textColorInt = R.color.rma_black_33
                     }
                     text = "请选择开户银行"
@@ -110,12 +123,12 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
                 }
 
                 editText {
-                    isEnabled = false
+//                    isEnabled = false
                     bank_card_number = this
                     hint = "请填写银行卡号"
                     background = null
                     inputType = EditorInfo.TYPE_CLASS_NUMBER
-                    setDecimalInputType()
+//                    setDecimalInputType()
                     hintColorStr = "#CCCCCC"
                     textSizeAuto = 31
                     textColorStr = "#333333"
@@ -139,12 +152,12 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
                 }
 
                 editText {
-                    isEnabled = false
+//                    isEnabled = false
                     bank_card_account_name = this
                     hint = "请填写开户姓名"
                     background = null
                     inputType = EditorInfo.TYPE_CLASS_TEXT
-                    setDecimalInputType()
+//                    setDecimalInputType()
                     hintColorStr = "#CCCCCC"
                     textSizeAuto = 31
                     textColorStr = "#333333"
@@ -167,12 +180,12 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
                 }
 
                 editText {
-                    isEnabled = false
+//                    isEnabled = false
                     branch_name = this
                     hint = "请填写开户支行名称"
                     background = null
-                    inputType = EditorInfo.TYPE_CLASS_NUMBER
-                    setDecimalInputType()
+                    inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
                     hintColorStr = "#CCCCCC"
                     textSizeAuto = 31
                     textColorStr = "#333333"
@@ -190,7 +203,12 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     onThrottleFirstClick {
-
+                        if (check().not()){
+                            return@onThrottleFirstClick
+                        }
+                        viewModel.requeryT2bBankSignReq(req = getReqInfo(operateType = 1)){
+                            ToastUtils.showLong("签约成功")
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg
@@ -208,9 +226,65 @@ class AddWithDrawActivity : BaseActivity<WithDrawManagementViewModel>(){
         }
     }
 
+    /**
+     * 组装扩展信息
+     *
+     * @return
+     */
+    fun getJSONExtendInfo(): String? {
+        val json = JSONObject()
+        json.put("sex",MTPEnums.SEX_FEMALE)
+        return json.toString()
+
+//        return "{\"verify_code\":\"" + edtIdentifyCode.getText().toString() + "\"," +
+//                "\"bank_password\":\"" + edtIdentifyPWD.getText().toString() + "\"," +
+//                "\"sex\":\"" + getSex() + "\"," +
+//                "\"legal_name\":\"" + edt_faname.getText().toString() + "\"," +
+//                "\"legal_cert_type\":\"" + edt_legeal_type.getText().toString() + "\"," +
+//                "\"legal_cert_code\":\"" + edt_legeal_num.getText().toString() + "\"," +
+//                "\"agent_name\":\"" + edt_agent_name.getText().toString() + "\"," +
+//                "\"agent_cert_type\":\"" + edt_agent_type.getText().toString() + "\"," +
+//                "\"agent_cert_code\":\"" + edt_agent_num.getText().toString() + "\"," +
+//                "\"org_mobile\":\"" + edtoldMobilePhone.getText().toString() + "\"," +
+//                "\"member_code\":\"" + edt_vip_code.getText().toString() + "\"," +
+//                "\"legal_contact\":\"" + edt_fa_phone.getText().toString() + "\"," +
+//                "\"agent_contact\":\"" + edt_agent_phone.getText().toString() + "\"," +
+//                "\"bank_branch_name\":\"" + edtBranchBank.getText().toString() + "\"}"
+    }
+
+    fun getReqInfo(operateType : Int) : SignReq{
+        val req = SignReq()
+        req.operateType = operateType////变更类型[1-增加;2-修改;4-绑卡; ***
+        req.isForce = 0//是否强制[0-否;1-是]强制,只更新中心签约信息,不发送银行。用于银行信息不一致的情况 ***
+        req.agentCertType = 0 // 授权代理人证件类型 ***
+        req.bankCardType = 0 // 银行卡类型 ***
+        req.accountType = 1//账户类型[1-对私;2-对公] ***
+        req.extend_info = getJSONExtendInfo()
+        req.bankAccountNo = bank_card_number.text.toString()
+        req.bankAccountName = bank_card_account_name.text.toString()
+        req.accountCode = GlobalDataCollection.instance?.accountData?.accountid?.toString()
+        req.accountName = GlobalDataCollection.instance?.accountData?.accountname
+        req.openBankName = branch_name.text.toString()
+        req.extOperatorID = TimeUtils.getNowMills()
+        req.certType = GlobalDataCollection.instance?.loginQueryData?.userInfo?.cardtypeid?.toString()
+        req.certID = GlobalDataCollection.instance?.loginQueryData?.userInfo?.cardnum
+        req.cusBankID = viewModel.cusBankSignBankDataList.value?.cusbankid
+        req.currency = viewModel.cusBankSignBankDataList.value?.currency
+        req.exBankName = selectBnak.value?.bankname
+        req.openBankAccId = selectBnak.value?.bankid
+        return req
+    }
+
+
     fun check() : Boolean{
-        if (bank_name.text.toString().isNullOrEmpty()){
-            ToastUtils.showLong("请填写开户银行")
+
+        if (viewModel.cusBankSignBankDataList.value?.cansign.isNullOrEmpty()){
+            ToastUtils.showLong("无签约银行信息")
+            return false
+        }
+
+        if (selectBnak.value?.bankid.isNullOrEmpty()){
+            ToastUtils.showLong("请选择开户银行")
             return false
         }
 

+ 44 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithDrawManagementViewModel.kt

@@ -6,8 +6,14 @@ import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.BankInfoData
 import cn.muchinfo.rma.global.data.CusBankSignBankData
 import cn.muchinfo.rma.global.data.UserCollectConfigData
+import cn.muchinfo.rma.global.data.transit.SignReq
+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
@@ -15,6 +21,11 @@ import cn.muchinfo.rma.view.base.BaseViewModel
 class WithDrawManagementViewModel : BaseViewModel(){
 
     /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
+    /**
      * 提现账户设置信息
      */
     val userCollectConfigData : MutableLiveData<BankAccountSignData> = MutableLiveData()
@@ -22,7 +33,7 @@ class WithDrawManagementViewModel : BaseViewModel(){
     /**
      * 托管银行信息
      */
-    val cusBankSignBankDataList : MutableLiveData<List<CusBankSignBankData>> = MutableLiveData()
+    val cusBankSignBankDataList : MutableLiveData<CusBankSignBankData> = MutableLiveData()
 
     /**
      * 开户行信息
@@ -30,11 +41,41 @@ class WithDrawManagementViewModel : BaseViewModel(){
     val bankInfoDataList : MutableLiveData<List<BankInfoData>> = MutableLiveData()
 
     /**
+     * 签约解约请求
+     * @param req SignReq
+     * @param isSuccess Function1<[@kotlin.ParameterName] Boolean, Unit>
+     */
+    fun requeryT2bBankSignReq(
+        req: SignReq,
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.bankManager?.requeryT2bBankSignReq(
+                req = req
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+
+    /**
      * 查询开户行信息
      */
     fun queryBankInfo(){
         val params = mutableMapOf<String,String>()
-
         MyApplication.getInstance()?.bankManager?.queryBankInfo(params = params){ isSuccess, respData, error ->
             if (isSuccess){
                 bankInfoDataList.postValue(respData)
@@ -52,7 +93,7 @@ class WithDrawManagementViewModel : BaseViewModel(){
 
         MyApplication.getInstance()?.bankManager?.queryCusBankSignBank(params = params){ isSuccess, respData, error ->
             if (isSuccess){
-                cusBankSignBankDataList.postValue(respData)
+                cusBankSignBankDataList.postValue(respData?.find { it.cansign == "1" })
             }
         }
     }

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

@@ -1,6 +1,5 @@
 package cn.muchinfo.rma.view.base.main.withdrawmanagement
 
-import android.graphics.BitmapFactory
 import android.net.Uri
 import android.os.Bundle
 import android.view.Gravity
@@ -8,12 +7,13 @@ import android.view.View
 import android.view.ViewGroup
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
-import android.widget.ImageView
 import android.widget.LinearLayout
+import android.widget.TextView
 import androidx.lifecycle.MutableLiveData
 import androidx.viewpager.widget.PagerAdapter
 import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.UserCollectConfigData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.netManage.utils.UpLoadUtils
@@ -30,12 +30,13 @@ import com.alibaba.fastjson.JSON
 import com.blankj.utilcode.util.ConvertUtils
 import com.blankj.utilcode.util.LogUtils
 import com.blankj.utilcode.util.SPUtils
+import com.blankj.utilcode.util.ToastUtils
+import com.cuieney.sdk.rxpay.RxPay
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
 import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
 import com.qmuiteam.qmui.widget.tab.QMUITabSegment
 import com.zhy.http.okhttp.callback.StringCallback
 import mtp.polymer.com.autowidget.dialog.SelectData
-import mtp.polymer.com.autowidget.dialog.creatBottomSheetDialog
 import mtp.polymer.com.autowidget.dialog.creatBottomSheetNoTitleDialog
 import mtp.polymer.com.autowidget.dialog.createLoadingDialog
 import mtp.polymer.com.autowidget.utils.TaskUiModel
@@ -47,7 +48,7 @@ import org.json.JSONArray
 import org.json.JSONException
 import org.json.JSONObject
 import java.io.File
-import java.io.FileInputStream
+
 
 /**
  * 充值提现
@@ -108,6 +109,7 @@ class WithdrawalActivity : BaseActivity<WithdrawalViewModel>(){
         verticalLayout {
             createLoadingDialog(hintStr = "").bindTaskStatus(context, viewModel.loadingDialogStatus)
             initDataTitle()
+            viewModel.queryUserCollectConfig()
             background = resources.getDrawable(R.color.rma_item_bg)
             //页面标题
             topBar {
@@ -464,7 +466,7 @@ class MoneyInOnlineUI(private val activity: WithdrawalActivity,private val viewM
 
                 editText {
                     gravity = Gravity.CENTER_VERTICAL
-                    isEnabled = false
+//                    isEnabled = false
                     amount_input = this
                     hint = "请填写充值金额"
                     background = null
@@ -506,6 +508,7 @@ class MoneyInOnlineUI(private val activity: WithdrawalActivity,private val viewM
                     pay_type.bindOptional(context){
                         text = it?.value
                     }
+                    text = "请选择充值渠道"
                     textSizeAuto = 36
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent){
@@ -520,13 +523,58 @@ class MoneyInOnlineUI(private val activity: WithdrawalActivity,private val viewM
             }.lparams(matchParent, autoSize(150))
 
             verticalEmptyView()
+            viewModel.payInfoRequest.bindOptional(context){
+                LogUtils.eTag("asdhasgfjahsdha",it)
+                RxPay(activity)
+                    .requestAlipay(it ?: "")
+                    .subscribe {
 
+                    }
+//                RxPay(activity)
+//                    .requestAlipay("")
+//                    .requestAlipay("服务器产生的订单信息")
+//                    .subscribe(object : Consumer<Boolean?> {
+//                        @Throws(java.lang.Exception::class)
+//                        fun accept(aBoolean: Boolean) {
+//                            payState.setText("阿里支付状态:$aBoolean")
+//                        }
+//                    }, object : Consumer<Throwable?> {
+//                        @Throws(java.lang.Exception::class)
+//                        fun accept(throwable: Throwable) {
+//                            payState.setText("阿里支付状态:" + throwable.message)
+//                        }
+//                    })
+//                RxPay(activity).requestAlipay(it ?: "")
+//                    .subscribe(object : Consumer<Boolean>{
+//                        override fun accept(p0: Boolean) {
+//                            TODO("Not yet implemented")
+//                        }
+//
+//                    })
+
+//                    .subscribe(new Consumer<Boolean>() {
+//                        @Override
+//                        public void accept(Boolean aBoolean) throws Exception {
+//                            payState.setText("阿里支付状态:"+aBoolean);
+//                        }
+//                    }, new Consumer<Throwable>() {
+//                        @Override
+//                        public void accept(Throwable throwable) throws Exception {
+//                            payState.setText("阿里支付状态:"+throwable.getMessage());
+//                        }
+//                    });
+            }
             linearLayout {
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     onThrottleFirstClick {
-
+//                        RxPay(activity)
+//                            .requestAlipay("alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2021002151602507&biz_content=%7B%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%2220170216test01%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22subject%22%3A%22App%E6%94%AF%E4%BB%98%E6%B5%8B%E8%AF%95%22%2C%22timeout_express%22%3A%2230m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay&notify_url=http%3A%2F%2Fwww.test.notify&sign=LAG%2BEkHUunMW7pd4fNZc2gzFB6l1rfkXhWPf0EZKZtun9mG8AJtAK2OJOYCSJJExdQjVzOhUHlXxAtVP3llmyiqNrHeX%2BzxKWLNqVwNKRTR39%2BLJI2fRfArFhl%2Bb3h0FWWjs%2FidbpSsGZyXjjkL7ZqaE79X4fIYdGxaQFk%2BeyQv9nEUpNiokz1fC3xFVEllUZPyjCY5Te7AAHNqoC2sVRt79v%2F%2FuySlkXfRsMP7H85vklkLGA5YPGxzwl4NqIPrU2cI57H1nLE%2F1xgEj9qKPJj9Lf3ggdnyMngimG8wuS2R1lfz8mMNepcV%2BPg71OzzpmUATrwZ49Vcs1p0S8xwxbA%3D%3D&sign_type=RSA2&timestamp=2021-06-18+17%3A35%3A21&version=1.0")
+//                            .subscribe{
+//
+//                            }
+                        viewModel.getPayInfo(totalAmount = "0.01",payType = "4",msgType = "9")
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg
@@ -565,6 +613,11 @@ class MoneyInOutlineUI(private val activity: WithdrawalActivity,private val view
 
     lateinit var viewPager: ViewPager
 
+    /**
+     * 选择的银行卡
+     */
+    val selectCardType : MutableLiveData<Int> = MutableLiveData()
+
     val root = _FrameLayout(activity).apply {
         verticalLayout {
 
@@ -579,17 +632,46 @@ class MoneyInOutlineUI(private val activity: WithdrawalActivity,private val view
                     clipChildren = false
                     viewPager = this
                     val dataList = arrayListOf(R.mipmap.qhj_withdraw_bg3,R.mipmap.qhj_withdraw_bg1,R.mipmap.qhj_withdraw_bg2)
-                    val baseVPAdapter: CardViewAdapter<Int> =
-                        object : CardViewAdapter<Int>(activity, R.layout.item_card_view, dataList) {
-                            override fun bindView(view: View, data: Int?) {
-                                val linearLayout =
-                                    view.findViewById<LinearLayout>(R.id.image_bg)
-                                linearLayout.setBackgroundResource(data!!)
+                    viewModel.userCollectConfigDataList.bindOptional(context){
+                        val baseVPAdapter: CardViewAdapter<UserCollectConfigData> =
+                            object : CardViewAdapter<UserCollectConfigData>(activity, R.layout.item_card_view, it) {
+                                override fun bindView(view: View, data: UserCollectConfigData?) {
+                                    val linearLayout =
+                                        view.findViewById<LinearLayout>(R.id.image_bg)
+                                    val account_name = view.findViewById<TextView>(R.id.account_name)//名字
+                                    val card_number = view.findViewById<TextView>(R.id.card_number)//卡号
+                                    val card_name = view.findViewById<TextView>(R.id.card_name)//银行名称
+                                    linearLayout.setBackgroundResource(R.mipmap.qhj_withdraw_bg3)
+                                    account_name.setText(data?.collectaccountname)
+                                    card_number.text = data?.collectaccountno
+                                    card_name.text = data?.collectbankname
+                                }
                             }
+                        adapter = baseVPAdapter
+
+                    }
+                    viewPager.setOnPageChangeListener(object : ViewPager.OnPageChangeListener{
+                        override fun onPageScrollStateChanged(state: Int) {
+
                         }
+
+                        override fun onPageScrolled(
+                            position: Int,
+                            positionOffset: Float,
+                            positionOffsetPixels: Int
+                        ) {
+
+                        }
+
+                        override fun onPageSelected(position: Int) {
+                            selectCardType.postValue(position)
+                        }
+
+
+                    })
                     setOffscreenPageLimit(15)
                     setPageTransformer(false,  ScaleTransformerCardView(activity))
-                    adapter = baseVPAdapter
+
                 }.lparams(matchParent, autoSize(260)){
                     marginStart = autoSize(65)
                     marginEnd = autoSize(65)
@@ -759,7 +841,7 @@ class MoneyInOutlineUI(private val activity: WithdrawalActivity,private val view
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     onThrottleFirstClick {
-
+                        ToastUtils.showLong(viewModel.userCollectConfigDataList.value?.get(selectCardType.value ?: 0)?.collectconfigid)
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg

+ 76 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalViewModel.kt

@@ -1,8 +1,21 @@
 package cn.muchinfo.rma.view.base.main.withdrawmanagement
 
 import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.UserCollectConfigData
+import cn.muchinfo.rma.netManage.base.InteractiveException
+import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
+import cn.muchinfo.rma.view.base.app.Constant
+import com.blankj.utilcode.util.LogUtils
+import com.blankj.utilcode.util.SPUtils
+import com.blankj.utilcode.util.ToastUtils
+import com.zhy.http.okhttp.OkHttpUtils
+import com.zhy.http.okhttp.callback.StringCallback
 import mtp.polymer.com.autowidget.utils.TaskUiModel
+import okhttp3.Call
+import okhttp3.MediaType
+import org.json.JSONObject
 
 /**
  * 充值提现页面viewmodel
@@ -13,4 +26,67 @@ class WithdrawalViewModel : BaseViewModel(){
      */
     val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
 
+    /**
+     * 提现账户数据列表
+     */
+    val userCollectConfigDataList : MutableLiveData<List<UserCollectConfigData>> = MutableLiveData()
+
+    /**
+     * 查询提现账户设置
+     */
+    fun queryUserCollectConfig(){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid",GlobalDataCollection.instance?.loginRsp?.userID.toString())
+        }
+
+        MyApplication.getInstance()?.moneyManager?.queryUserCollectConfig(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                userCollectConfigDataList.postValue(respData)
+            }
+        }
+    }
+
+
+    val payInfoRequest : MutableLiveData<String> = MutableLiveData()
+    fun getPayInfo(marketId: String = "", orderNo: String = "", orderDate: String = "", totalAmount: String, msgType: String,payType : String) {//从后台获取支付信息
+        loadingDialogStatus.postValue(TaskUiModel.inFlight())
+        val json = com.alibaba.fastjson.JSONObject()
+        json["accountName"] = GlobalDataCollection.instance?.accountData?.accountid
+        json["accountId"] = GlobalDataCollection.instance?.accountData?.accountid
+        json["marketId"] = "69201"
+//        json["orderNo"] = orderNo
+        json["payType"] = payType//1 成交支付 2 尾款支付 3 保证金支付 4 充值
+        json["orderDate"] = "2021-6-18"
+        json["totalAmount"] = totalAmount
+        json["msgType"] = msgType
+        LogUtils.d("dhasfhkajhlka", json.toJSONString())
+        OkHttpUtils.postString()
+            .url("http://192.168.21.71:39400/bank_scancode/pay")
+            .content(json.toJSONString())
+            .mediaType(MediaType.parse("application/json; charset=utf-8"))
+            .build()
+            .execute(object : StringCallback() {  //请求商品信息
+                override fun onError(call: Call, e: Exception, id: Int) {
+                    LogUtils.d("dhasfhkajhlka", e.message)
+                }
+
+                override fun onResponse(response: String, id: Int) {
+                    val jsonObject = JSONObject(response)
+                    val code = jsonObject.getString("errCode")
+                    LogUtils.d("dhasfhkajhlka", response)
+                    if (code == "SUCCESS") {
+                        loadingDialogStatus.postValue(TaskUiModel.success())
+                        if (jsonObject.isNull("body")) {
+                            ToastUtils.showLong("服务器返回数据格式有问题,缺少“appPayRequest”字段")
+                            return
+                        }
+                        payInfoRequest.postValue(jsonObject.getString("body"))
+
+                    } else {
+                        loadingDialogStatus.value = TaskUiModel.failed(InteractiveException(jsonObject.getString("errMsg")))
+                    }
+                }
+            })
+    }
+
 }

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

@@ -68,7 +68,7 @@ class PlatinumTreasureViewModel : BaseViewModel(){
         var goodsCodes = ""
         val newList = demoList.value/*?.subList(first, last)*/
         newList?.forEach {
-            goodsCodes = goodsCodes + it.outgoodscode + "," + DataBase.getInstance().goodsInfoDao().getGoodsInfo(it.relatedgoodsid).outgoodscode + ","
+            goodsCodes = goodsCodes + it.goodscode + "," //+ DataBase.getInstance().goodsInfoDao().getGoodsInfo(it.relatedgoodsid).goodscode + ","
         }
         return goodsCodes
     }
@@ -81,7 +81,7 @@ class PlatinumTreasureViewModel : BaseViewModel(){
     fun addSubscriptQuote(tag: String, goodsInfoList: List<GoodsInfo>) {
         GlobalScope.launch {
             MyApplication.getInstance()?.quoteManager?.addSubscriptQuote(
-                tag = tag, goodsCodeSet = goodsInfoList.map { it.outgoodscode }.toSet()
+                tag = tag, goodsCodeSet = goodsInfoList.map { it.goodscode }.toSet()
             ) { isCompleted, err ->
 
             }

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

@@ -403,6 +403,15 @@ class PlatinumBuyOrSellUI(
                                     visibility = View.GONE
                                 }
                             }
+
+                        }
+                        onThrottleFirstClick {
+                            creatOrderDetailsDialog(
+                                type = "3",
+                                orderPrice = trade_price_edittext.text.toString(),
+                                goodsInfo = viewModel.goodsInfoData.value ?: GoodsInfo(),
+                                selectPayType = selectPayType.value?.id ?: "1"
+                            )
                         }
                         visibility = View.GONE
                         backgroundDrawable = createRoundRectDrawable("#FF9536", 15)
@@ -630,9 +639,9 @@ class PlatinumBuyOrSellUI(
                         textView {
                             if (type == "1") {
                                 text = "买入"
-                            } else if (type == "2") {
-                                text = "融资买入"
                             } else if (type == "3") {
+                                text = "融资买入"
+                            } else if (type == "2") {
                                 text = "卖出"
                             }
                             textSizeAuto = 28

+ 3 - 0
RMA/app/src/main/res/layout/item_card_view.xml

@@ -14,6 +14,7 @@
         android:orientation="vertical"
         android:layout_height="match_parent">
         <TextView
+            android:id="@+id/account_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="千海金"
@@ -23,6 +24,7 @@
             android:layout_marginTop="5dp"/>
 
         <TextView
+            android:id="@+id/card_number"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="6226 3658 9876 3121"
@@ -32,6 +34,7 @@
             android:layout_marginTop="10dp"/>
 
         <TextView
+            android:id="@+id/card_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="中国银行科技园支行"