瀏覽代碼

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

Liu.bolan 4 年之前
父節點
當前提交
d1d12e00f0
共有 34 個文件被更改,包括 1627 次插入283 次删除
  1. 0 1
      RMA/.idea/gradle.xml
  2. 1 0
      RMA/app/build.gradle
  3. 36 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/common/CommonManager.kt
  4. 66 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/common/adapter/CommonAdapter.kt
  5. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/business/contractgoods/ContractGoodsManager.kt
  6. 24 10
      RMA/app/src/main/java/cn/muchinfo/rma/business/money/adapter/MoneyAdapter.kt
  7. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/ContractTradePositionData.kt
  8. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/GoodsInfo.kt
  9. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/UserAccount.kt
  10. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/global/database/DataBase.kt
  11. 580 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/utils/TimeUtils.java
  12. 6 0
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/funcode/FunCode.java
  13. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  14. 0 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldViewModel.kt
  15. 221 61
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/PayActivity.kt
  16. 59 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/PayViewModel.kt
  17. 137 71
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/SeaKingMainFragment.kt
  18. 51 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/SeaKingMainViewModel.kt
  19. 15 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/AddCastSurelyActivity.kt
  20. 19 11
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/CastSurelyDetailsActivity.kt
  21. 12 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyActivity.kt
  22. 20 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewHolder.kt
  23. 35 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewModel.kt
  24. 2 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodsActivity.kt
  25. 18 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/promotioncode/MyPromotionCodeActivity.kt
  26. 1 33
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalActivity.kt
  27. 7 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/NoPayViewHolder.kt
  28. 33 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumBuyOrSellUI.kt
  29. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumPositionUI.kt
  30. 13 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeActivity.kt
  31. 42 8
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeViewModel.kt
  32. 172 44
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PositionViewHolder.kt
  33. 18 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/qhjhome/QhjHomeFragment.kt
  34. 22 0
      RMA/app/src/main/res/layout/view_countdowntime.xml

+ 0 - 1
RMA/.idea/gradle.xml

@@ -19,6 +19,5 @@
         <option name="useQualifiedModuleNames" value="true" />
       </GradleProjectSettings>
     </option>
-    <option name="offlineMode" value="true" />
   </component>
 </project>

+ 1 - 0
RMA/app/build.gradle

@@ -188,6 +188,7 @@ dependencies {
 
     compile 'com.cuieney:rxpay-api:2.2.3'
     kapt 'com.cuieney:rxpay-compiler:2.1.1'
+    compile 'com.github.iwgang:countdownview:2.1.6'//倒计时
 
 //    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
 //    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

+ 36 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/common/CommonManager.kt

@@ -1,8 +1,15 @@
 package cn.muchinfo.rma.business.common
 
+import cn.muchinfo.rma.business.common.adapter.CommonAdapter
+import cn.muchinfo.rma.business.money.adapter.MoneyAdapter
 import cn.muchinfo.rma.global.data.*
 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
@@ -15,6 +22,35 @@ import java.lang.Exception
 class CommonManager {
 
     /**
+     * 客户推广码操作请求
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun customerRefernumOperateReq(callback: (isCompleted: Boolean, err: Error?) -> Unit){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = CommonAdapter.getCustomerRefernumOperateReqInfo()
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.FID_CustomerRefernumOperateRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = CommonAdapter.analysisCustomerRefernumOperateRsp(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+            }
+        )
+    }
+
+    /**
      * 通用表头请求
      * @param params Map<String, String> 参数tableKey 表key, tableType 列表类型 - 1:管理端 2:H5终端 3:移动终端
      * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<CommonTableData>?, [@kotlin.ParameterName] Error?, Unit>

+ 66 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/common/adapter/CommonAdapter.kt

@@ -0,0 +1,66 @@
+package cn.muchinfo.rma.business.common.adapter
+
+import cn.muchinfo.rma.business.global.MessageHeadModel
+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.BankMI1
+import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3
+import java.io.ByteArrayOutputStream
+import java.lang.Exception
+
+object CommonAdapter {
+
+    /**
+     * 推广码申请请求报文装箱
+     */
+    fun getCustomerRefernumOperateReqInfo() : Packet50{
+        val builder = ManageServiceMI3.CustomerRefernumOperateReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+
+        // FIXME: - 250000000005
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.FID_CustomerRefernumOperateReq,
+                loginInfo.userID,
+                0,
+                0,
+                18
+            )
+        )
+
+        builder.operatetype = 1
+        builder.userid = loginInfo.userID.toLong()
+        builder.loginid = loginInfo.loginID
+        val arrayOutputStream = ByteArrayOutputStream();
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.FID_CustomerRefernumOperateReq, arrayOutputStream.toByteArray())
+
+    }
+
+    /**
+     * 推广码申请请求请求报文解析
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ErmcpMI1.SpotContractOperateRsp?>
+     */
+    fun analysisCustomerRefernumOperateRsp(packet50: Packet50): Triple<Boolean, Error?, ManageServiceMI3.CustomerRefernumOperateRsp?> {
+        return try {
+            val resultRsp = ManageServiceMI3.CustomerRefernumOperateRsp.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)
+        }
+    }
+
+}

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/business/contractgoods/ContractGoodsManager.kt

@@ -291,15 +291,15 @@ class ContractGoodsManager {
      */
     fun queryContractTradePosition(
         params: Map<String, String>,
-        responseBack: (isSuccess: Boolean, respData: List<ContractTradeOrderDetailData>?, error: Error?) -> Unit
+        responseBack: (isSuccess: Boolean, respData: List<ContractTradePositionData>?, error: Error?) -> Unit
     ) {
         MyOkHttpUtils().query(
             URL = SPUtils.getInstance()
                 .getString(Constant.goCommonSearchUrl) + "/Order/QueryTradePosition",
             params = params,
             type = "1",
-            callback = object : ResponseCallback<BaseResult<List<ContractTradeOrderDetailData>>>() {
-                override fun onResponse(response: BaseResult<List<ContractTradeOrderDetailData>>?, id: Int) {
+            callback = object : ResponseCallback<BaseResult<List<ContractTradePositionData>>>() {
+                override fun onResponse(response: BaseResult<List<ContractTradePositionData>>?, id: Int) {
                     GlobalDataCollection.instance?.futureHisEntrustData =
                         response?.data as ArrayList<FutureEntrustData>?
                     responseBack(true, response?.data, null)

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

@@ -222,6 +222,7 @@ object MoneyAdapter {
         remark : String = "",
         operateType : Int
     ) : Packet50 {
+
         val builder = ManageServiceMI3.QhjRegularlyStrategyReq.newBuilder()
 
         val loginInfo = GlobalDataCollection.instance?.loginRsp!!
@@ -231,23 +232,36 @@ object MoneyAdapter {
                 FunCode.QhjRegularlyStrategyReq,
                 loginInfo.userID,
                 GlobalDataCollection.instance?.accountId ?: 0,
-                0,
-                18
+                goodsID.toInt(),
+                69201
             )
         )
 
         if (regularlyStrategyID != 0L){
             builder.regularlyStrategyID = regularlyStrategyID
         }
-
-        builder.goodsID = goodsID
-        builder.regularlyCycle = regularlyCycle
-        builder.regularlyCycleValue = regularlyCycleValue
-        builder.regularlyMode = regularlyMode
-        builder.regularlyModeValue = regularlyModeValue
-        builder.remark = remark
+        builder.updatorID = loginInfo.loginID
+        builder.updateSrc = 2
+        builder.userID = loginInfo.userID.toLong()
+        if (goodsID != 0L){
+            builder.goodsID = goodsID
+        }
+        if (regularlyCycle != 0){
+            builder.regularlyCycle = regularlyCycle
+        }
+        if (regularlyCycleValue != 0){
+            builder.regularlyCycleValue = regularlyCycleValue
+        }
+        if (regularlyMode != 0){
+            builder.regularlyMode = regularlyMode
+        }
+        if (regularlyModeValue != 0.0){
+            builder.regularlyModeValue = regularlyModeValue
+        }
+        if (remark != ""){
+            builder.remark = remark
+        }
         builder.operateType = operateType
-
         val arrayOutputStream = ByteArrayOutputStream();
         builder.build().writeTo(arrayOutputStream)
         return Packet50(FunCode.QhjRegularlyStrategyReq, arrayOutputStream.toByteArray())

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

@@ -34,6 +34,7 @@ data class ContractTradePositionData(
     val tnqty : String? = "",//T+N冻结总量
     val tnusedqty : String? = "",//T+N使用量(可以使用T+N的冻结数量)
     val trademode : String? ="",//交易模式
+    var isClick : Int = 0,//是否点击展开
     val usedmargin :String? = ""//占用保证金[商品币种]
 ) : Parcelable{
     constructor(parcel: Parcel) : this(
@@ -64,6 +65,7 @@ data class ContractTradePositionData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
+        parcel.readInt(),
         parcel.readString()
     ) {
     }
@@ -96,6 +98,7 @@ data class ContractTradePositionData(
         parcel.writeString(tnqty)
         parcel.writeString(tnusedqty)
         parcel.writeString(trademode)
+        parcel.writeInt(isClick)
         parcel.writeString(usedmargin)
     }
 

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/GoodsInfo.kt

@@ -99,5 +99,7 @@ data class GoodsInfo(
     @ColumnInfo(name = "related_goods_id")
     var relatedgoodsid : Int = 0,//关联商品id
     @ColumnInfo(name = "trade_mode")
-    var trademode : Int = 0
+    var trademode : Int = 0,
+    @ColumnInfo(name = "picture_url")
+    var pictureurl : String = ""//商品图片
 )

+ 1 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/UserAccount.kt

@@ -24,6 +24,7 @@ data class UserAccount(
     var refercount: Int = 0, // 推荐总人数
     var refereeuserid: Long = 0, // 推荐人ID
     var refernum: String = "", // 推荐码
+    var canrecommend : String = "",//是否可推荐 - 0:不可 1;可
     var subarealevelpath: String = "", // 子机构层级路径(逗号分隔,首尾加逗号)
     var userid: Long = 0, // 用户ID
     var usertype: Int = 0 // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/global/database/DataBase.kt

@@ -17,7 +17,7 @@ import com.blankj.utilcode.util.Utils
 
 @Database(
     entities = [GoodsInfo::class, BannerEntity::class, ErrorCodeEntity::class, EnumDicEntity::class, AddressEntity::class],
-    version = 3,
+    version = 4,
     exportSchema = false
 )
 abstract class DataBase : RoomDatabase() {
@@ -58,10 +58,10 @@ abstract class DataBase : RoomDatabase() {
                         database.execSQL("ALTER TABLE goods_infos " + " ADD COLUMN trade_mode INTEGER " + " NOT NULL DEFAULT 1")
                     }
                 })
+            .fallbackToDestructiveMigration()
             .allowMainThreadQueries()
             .build()
     }
 
 
-
 }

+ 580 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/utils/TimeUtils.java

@@ -0,0 +1,580 @@
+package cn.muchinfo.rma.global.utils;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Created by cxl on 2018/3/19.
+ */
+
+public class TimeUtils {
+    /**
+     * 获取相对时区的UTC时间
+     *
+     * @param calendar
+     *            时间参数,这里是带了时区的
+     * @return
+     */
+    public static int getZoneUTCSeconds(Calendar calendar) {
+        if (calendar == null) {
+            return 0;
+        }
+        return (int) (calendar.getTimeInMillis() / 1000);
+    }
+
+    /**
+     * @return
+     */
+    public static long getHMS(long mins) {
+        Date date = new Date(mins);
+        String strs = "";
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("HH-mm-ss");
+            strs = sdf.format(date);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        SimpleDateFormat formatter = new SimpleDateFormat("HH-mm-ss");
+        try {
+            date = formatter.parse(strs);
+            return date.getTime();
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+    public static String getNowTime() {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
+//获取当前时间
+        Date date = new Date(System.currentTimeMillis());
+        return simpleDateFormat.format(date);
+    }
+
+    public static String getNowTime(String format) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);// HH:mm:ss
+//获取当前时间
+        Date date = new Date(System.currentTimeMillis());
+        return simpleDateFormat.format(date);
+    }
+
+    /**
+     * 我们的服务格式有点牛逼  这里处理一下(lbl:我看到这种操作都惊呆了,实在是吊的一批的服务格式)
+     *
+     * @param time
+     * @return
+     */
+    public static String formatTime(String time, String outFormat) {
+        Date dates = null;
+        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            dates = simpleDateFormat2.parse(time.replace("\\.0", ""));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(outFormat);
+        return simpleDateFormat.format(dates);
+    }
+
+
+    /**
+     * 比较两个日期的大小,日期格式为yyyy-MM-dd
+     *
+     * @param str1 the first date
+     * @param str2 the second date
+     * @return true <br/>false
+     */
+    public static boolean isDateOneBigger(String str1, String str2) {
+        boolean isBigger = false;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        Date dt1 = null;
+        Date dt2 = null;
+        try {
+            dt1 = sdf.parse(str1);
+            dt2 = sdf.parse(str2);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (dt1.getTime() > dt2.getTime()) {
+            isBigger = true;
+        } else if (dt1.getTime() < dt2.getTime()) {
+            isBigger = false;
+        }
+        return isBigger;
+    }
+
+    /**
+     * 比较两个日期的大小,日期格式为yyyy-MM-dd
+     *
+     * @param str1 the first date
+     * @param str2 the second date
+     * @return true <br/>false
+     */
+    public static boolean isDateOneBigger(String str1, String str2, String format) {
+        boolean isBigger = false;
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        Date dt1 = null;
+        Date dt2 = null;
+        try {
+            dt1 = sdf.parse(str1);
+            dt2 = sdf.parse(str2);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (dt1.getTime() > dt2.getTime()) {
+            isBigger = true;
+        } else if (dt1.getTime() < dt2.getTime()) {
+            isBigger = false;
+        }
+        return isBigger;
+    }
+
+    /**
+     * @param str1
+     * @param str2
+     * @param format
+     * @return 0:相等  1: 大于 2 小于
+     */
+    public static int checkTimeBigAndSmall(String str1, String str2, String format) {
+        int isBigger = 0;
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        Date dt1 = null;
+        Date dt2 = null;
+        try {
+            dt1 = sdf.parse(str1);
+            dt2 = sdf.parse(str2);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (dt1.getTime() > dt2.getTime()) {
+            isBigger = 1;
+        } else if (dt1.getTime() < dt2.getTime()) {
+            isBigger = 2;
+        }
+        return isBigger;
+    }
+
+
+    /*
+     * 将时间转换为时间戳
+     */
+    public static String dateToStamp(String s) throws ParseException {
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = simpleDateFormat.parse(s);
+        long ts = date.getTime();
+        res = String.valueOf(ts);
+        return res;
+    }
+
+    /*
+     * 将时间转换为时间戳
+     */
+    public static long dateToStamp(String s, String format) {
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
+        Date date = null;
+        try {
+            date = simpleDateFormat.parse(s);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        long ts = date.getTime();
+        return ts;
+    }
+
+    /**
+     * 判断是否为今天(效率比较高)
+     *
+     * @param day 传入的 时间  "2016-06-28 10:10:30" "2016-06-28" 都可以
+     * @return true今天 false不是
+     * @throws ParseException
+     */
+    public static boolean IsYesterday(String day) throws ParseException {
+
+        Calendar pre = Calendar.getInstance();
+        Date predate = new Date(System.currentTimeMillis());
+        pre.setTime(predate);
+
+        Calendar cal = Calendar.getInstance();
+        Date date = getDateFormat().parse(day);
+        cal.setTime(date);
+
+        if (cal.get(Calendar.YEAR) == (pre.get(Calendar.YEAR))) {
+            int diffDay = cal.get(Calendar.DAY_OF_YEAR)
+                    - pre.get(Calendar.DAY_OF_YEAR);
+
+            return diffDay == 0;
+        }
+        return false;
+    }
+
+    public static boolean IsYesterday(String day, String nowTime) throws ParseException {
+        Calendar pre = Calendar.getInstance();
+        Date predate = getDateFormat().parse(nowTime);
+        pre.setTime(predate);
+
+        Calendar cal = Calendar.getInstance();
+        Date date = getDateFormat().parse(day);
+        cal.setTime(date);
+
+        if (cal.get(Calendar.YEAR) == (pre.get(Calendar.YEAR))) {
+            int diffDay = cal.get(Calendar.DAY_OF_YEAR)
+                    - pre.get(Calendar.DAY_OF_YEAR);
+
+            return diffDay == 0;
+        }
+        return false;
+    }
+
+
+    /**
+     * 判断是否为昨天(效率比较高)
+     *
+     * @param day 传入的 时间  "2016-06-28 10:10:30" "2016-06-28" 都可以
+     * @return true今天 false不是
+     * @throws ParseException
+     */
+    public static boolean IsYesterday(String day, String NowTime, String format) throws ParseException {
+
+        Calendar pre = Calendar.getInstance();
+        Date predate = new Date(System.currentTimeMillis());
+        pre.setTime(predate);
+
+        Calendar cal = Calendar.getInstance();
+        Date date = getDateFormat(format).parse(day);
+        cal.setTime(date);
+
+        if (cal.get(Calendar.YEAR) == (pre.get(Calendar.YEAR))) {
+            int diffDay = cal.get(Calendar.DAY_OF_YEAR)
+                    - pre.get(Calendar.DAY_OF_YEAR);
+
+            return diffDay == 0;
+        }
+        return false;
+    }
+
+
+    private static ThreadLocal<SimpleDateFormat> DateLocal = new ThreadLocal<SimpleDateFormat>();
+
+    public static SimpleDateFormat getDateFormat() {
+        if (null == DateLocal.get()) {
+            DateLocal.set(new SimpleDateFormat("yyyyMMdd", Locale.CHINA));
+        }
+        return DateLocal.get();
+    }
+
+    public static SimpleDateFormat getDateFormat(String format) {
+        if (null == DateLocal.get()) {
+            DateLocal.set(new SimpleDateFormat(format, Locale.CHINA));
+        }
+        return DateLocal.get();
+    }
+
+    // currentTime要转换的long类型的时间
+    // formatType要转换的string类型的时间格式
+    public static String longToString(long currentTime, String formatType)
+            throws ParseException {
+        Date date = longToDate(currentTime, formatType); // long类型转成Date类型
+        String strTime = dateToString(date, formatType); // date类型转成String
+        return strTime;
+    }
+
+    // currentTime要转换的long类型的时间
+    // formatType要转换的时间格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
+    public static Date longToDate(long currentTime, String formatType)
+            throws ParseException {
+        Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间
+        String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为string
+        Date date = stringToDate(sDateTime, formatType); // 把String类型转换为Date类型
+        return date;
+    }
+
+    // strTime要转换的string类型的时间,formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日
+    // HH时mm分ss秒,
+    // strTime的时间格式必须要与formatType的时间格式相同
+    public static Date stringToDate(String strTime, String formatType)
+            throws ParseException {
+        SimpleDateFormat formatter = new SimpleDateFormat(formatType);
+        Date date = null;
+        date = formatter.parse(strTime);
+        return date;
+    }
+
+    // formatType格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
+    // data Date类型的时间
+    public static String dateToString(Date data, String formatType) {
+        return new SimpleDateFormat(formatType).format(data);
+    }
+
+    /**
+     * 比较两个时间  相差几天
+     *
+     * @param startTime
+     * @param endTime
+     * @param format
+     * @return
+     */
+    public static long dateDiff(String startTime, String endTime, String format) {
+        // 按照传入的格式生成一个simpledateformate对象
+        SimpleDateFormat sd = new SimpleDateFormat(format);
+        long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
+        long nh = 1000 * 60 * 60;// 一小时的毫秒数
+        long nm = 1000 * 60;// 一分钟的毫秒数
+        long ns = 1000;// 一秒钟的毫秒数
+        long diff;
+        long day = 0;
+        try {
+            // 获得两个时间的毫秒时间差异
+            diff = sd.parse(endTime).getTime()
+                    - sd.parse(startTime).getTime();
+            day = diff / nd;// 计算差多少天
+            long hour = diff % nd / nh;// 计算差多少小时
+            long min = diff % nd % nh / nm;// 计算差多少分钟
+            long sec = diff % nd % nh % nm / ns;// 计算差多少秒
+            // 输出结果
+//            System.out.println("时间相差:" + day + "天" + hour + "小时" + min
+//                    + "分钟" + sec + "秒。");
+            if (day >= 1) {
+                return day;
+            } else {
+                if (day == 0) {
+                    return 1;
+                } else {
+                    return 0;
+                }
+
+            }
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return 0;
+
+    }
+
+    public static String formatDate(String str) {
+        SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
+        SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
+        String sfstr = "";
+        try {
+            sfstr = sf2.format(sf1.parse(str));
+        } catch (ParseException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return sfstr;
+    }
+
+
+    /**
+     * 根据当前日期获得是星期几
+     *
+     * @return
+     */
+    public static int getWeek(String time, String formats) {
+        String Week = "";
+        SimpleDateFormat format = new SimpleDateFormat(formats);
+        Calendar c = Calendar.getInstance();
+        try {
+            c.setTime(format.parse(time));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 1) {
+            Week += "周天";
+            return 0;
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 2) {
+            Week += "周一";
+            return 1;
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 3) {
+            Week += "周二";
+            return 2;
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 4) {
+            Week += "周三";
+            return 3;
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 5) {
+            Week += "周四";
+            return 4;
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 6) {
+            Week += "周五";
+            return 5;
+        }
+        if (c.get(Calendar.DAY_OF_WEEK) == 7) {
+            Week += "周六";
+            return 6;
+        }
+        return -1;
+    }
+
+    /**
+     * 判断2个时间大小
+     * yyyy-MM-dd HH:mm 格式(自己可以修改成想要的时间格式)
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public static int getTimeCompareSize(String startTime, String endTime, String formats){
+        int i=0;
+        SimpleDateFormat dateFormat = new SimpleDateFormat(formats);//年-月-日 时-分
+        try {
+            Date date1 = dateFormat.parse(startTime);//开始时间
+            Date date2 = dateFormat.parse(endTime);//结束时间
+            // 1 结束时间小于开始时间 2 开始时间与结束时间相同 3 结束时间大于开始时间
+            if (date2.getTime()<date1.getTime()){
+                i= 1;
+            }else if (date2.getTime()==date1.getTime()){
+                i= 2;
+            }else if (date2.getTime()>date1.getTime()){
+                //正常情况下的逻辑操作.
+                i= 3;
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return  i;
+    }
+
+    /**
+     * 则证明是是要倒退一天
+     * @param time
+     * @return true:时间没问题  false:
+     */
+    public static boolean checkTimeIs23(String time){
+        //减了一个小时后 如果 :前面的是23 则证明是是要倒退一天
+        String[] times = null;
+        times = time.split(":");
+        if(times.length == 2){
+            return times[0].equals("23");
+        }else{
+            return false;
+        }
+    }
+
+    /**
+     * 输入格式 和输出格式 转换一下
+     * @param time
+     * @param inFormat
+     * @param outFormat
+     * @return
+     */
+    public static String formatTime(String time, String inFormat, String outFormat) {
+        Date dates = null;
+        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat(inFormat);
+        try {
+            dates = simpleDateFormat2.parse(time.replace("\\.0", ""));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(outFormat);
+        return simpleDateFormat.format(dates);
+    }
+
+    /**
+     * 小时补0
+     * @param hours
+     * @return
+     */
+    public static String hourAddZero(String hours){
+        if(hours.length() == 1){
+            return "0"+ hours;
+        }else{
+            return hours;
+        }
+    }
+
+
+    public static boolean isSameDate(String date1, String date2) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddd HHmmss", Locale.CHINA);
+        Calendar calendar = Calendar.getInstance();
+        Calendar calendar1 = Calendar.getInstance();
+        try {
+            calendar.setTime(sdf.parse(date1));
+            calendar1.setTime(sdf.parse(date1));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        return false;
+    }
+
+    public static void main(String[] args) {
+        isSameDate("2020-05-08", "20200508");
+    }
+
+
+    public static String covnDate(String dateTime) {
+        DateFormat df2 = null;
+        Date date1 = null;
+        try {
+            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+            Date date = df.parse(dateTime);
+            SimpleDateFormat df1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
+            date1 = df1.parse(date.toString());
+            df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return df2.format(date1);
+    }
+
+    public static String covnDate3(String dateTime) {
+        DateFormat df2 = null;
+        Date date1 = null;
+        try {
+            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+            Date date = df.parse(dateTime);
+            SimpleDateFormat df1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
+            date1 = df1.parse(date.toString());
+            df2 = new SimpleDateFormat("MM-dd");
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return df2.format(date1);
+    }
+
+
+    public static String covnDate2(String dateTime) {
+        DateFormat df2 = null;
+        Date date1 = null;
+        try {
+            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+            Date date = df.parse(dateTime);
+            SimpleDateFormat df1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
+            date1 = df1.parse(date.toString());
+            df2 = new SimpleDateFormat("yyyy-MM-dd");
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return df2.format(date1);
+    }
+
+    public static String covnDate4(String dateTime) {
+        DateFormat df2 = null;
+        Date date1 = null;
+        try {
+            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+            Date date = df.parse(dateTime);
+            SimpleDateFormat df1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
+            date1 = df1.parse(date.toString());
+            df2 = new SimpleDateFormat("yyyy.MM.dd");
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return df2.format(date1);
+    }
+}

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

@@ -253,6 +253,12 @@ public class FunCode {
     // 现货市价响应(1900707)
     public static final int FunCode_Trade_ErmcpSpotGoodsPriceRsp = 1900707;
 
+    //客户推广码操作请求
+    public static final int FID_CustomerRefernumOperateReq = 1900726;
+    //客户推广码申请操作响应
+    public static final int FID_CustomerRefernumOperateRsp = 1900727;
+
+
     /**
      * 交易委托请求(196639)
      */

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

@@ -266,4 +266,7 @@ object Constant {
 
     //是否是千海金
     const val IS_QHJ = true
+
+    //订阅持仓汇总的tag
+    const val position_tag = "position_tag"
 }

+ 0 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldViewModel.kt

@@ -22,7 +22,6 @@ import cn.muchinfo.rma.view.base.BaseViewModel
 import cn.muchinfo.rma.view.base.app.FutureConstent
 import cn.muchinfo.rma.view.base.chart.ChartActivity
 import cn.muchinfo.rma.view.base.future.costs.OrderDetailData
-import cn.muchinfo.rma.view.base.future.orderDeatails.OrderDetail
 import cn.muchinfo.rma.view.eventbus.EventConstent
 import cn.muchinfo.rma.view.eventbus.TradeMessageEvent
 import com.blankj.utilcode.util.ActivityUtils

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

@@ -4,23 +4,26 @@ import android.graphics.Typeface
 import android.os.Bundle
 import android.view.Gravity
 import android.view.View
+import android.widget.TextView
 import androidx.lifecycle.MutableLiveData
+import cn.iwgang.countdownview.CountdownView
 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.global.utils.TimeUtils
 import cn.muchinfo.rma.lifecycle.bindOptional
-import cn.muchinfo.rma.view.autoWidget.autoSize
-import cn.muchinfo.rma.view.autoWidget.onThrottleFirstClick
-import cn.muchinfo.rma.view.autoWidget.textColorInt
-import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+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 cn.muchinfo.rma.view.base.home.contract.emptyView
 import com.blankj.utilcode.util.BarUtils
-import com.blankj.utilcode.util.TimeUtils
+import com.blankj.utilcode.util.LogUtils
+
 import com.blankj.utilcode.util.ToastUtils
+import com.cuieney.sdk.rxpay.RxPay
 import com.qmuiteam.qmui.util.QMUIStatusBarHelper
 import mtp.polymer.com.autowidget.dialog.SelectData
 import mtp.polymer.com.autowidget.dialog.createLoadingDialog
@@ -30,20 +33,55 @@ import org.jetbrains.anko.*
 /**
  * 支付页面
  */
-class PayActivity : BaseActivity<PayViewModel>(){
+class PayActivity : BaseActivity<PayViewModel>() {
 
     private val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
 
-    val tradepaydata by lazy { intent.getParcelableExtra<PayOrderData>("tradepaydata") as PayOrderData }
+//    val tradepaydata by lazy { intent.getParcelableExtra<PayOrderData>("tradepaydata") as PayOrderData }
+
+    lateinit var timeText: TextView
+
+    val goodsId by lazy {
+        intent.getStringExtra("goodsId")
+    }
+
+    val marketId by lazy {
+        intent.getStringExtra("marketId")
+    }
+
+    val orderNo by lazy {
+        intent.getStringExtra("orderNo")
+    }
+
+    val orderDate by lazy {
+        intent.getStringExtra("orderDate")
+    }
+
+    val totalAmount by lazy {
+        intent.getStringExtra("totalAmount")
+    }
+
+    val orderId by lazy {//用于请求待付款信息的id
+        intent.getStringExtra("orderId")
+    }
+
+    val paylimitedtime by lazy {
+        intent.getStringExtra("paylimitedtime")
+    }
 
     //选择的支付方式 1 余额支付 2 支付宝支付 3 微信支付
-    val selectPayType : MutableLiveData<SelectData> = MutableLiveData()
+    val selectPayType: MutableLiveData<SelectData> = MutableLiveData()
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         QMUIStatusBarHelper.translucent(this)
+        viewModel.getServerTime()
         verticalLayout {
-            selectPayType.postValue(SelectData(id = "2",value = "支付宝支付"))
+            viewModel.setAccountData()
+            if (orderId.isNullOrEmpty().not()) {
+                viewModel.queryPayOrder(tradeid = orderId ?: "")
+            }
+            selectPayType.postValue(SelectData(id = "2", value = "支付宝支付"))
             dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.main_hit_bg_color)
             verticalLayout {
@@ -52,7 +90,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     gravity = Gravity.CENTER_VERTICAL
                     imageView {
                         imageResource = R.mipmap.back
-                    }.lparams(autoSize(48), autoSize(48)){
+                    }.lparams(autoSize(48), autoSize(48)) {
                         marginStart = autoSize(36)
                     }
 
@@ -68,10 +106,10 @@ class PayActivity : BaseActivity<PayViewModel>(){
 
                     view {
 
-                    }.lparams(autoSize(48), autoSize(48)){
+                    }.lparams(autoSize(48), autoSize(48)) {
                         marginEnd = autoSize(36)
                     }
-                }.lparams(matchParent, autoSize(120)){
+                }.lparams(matchParent, autoSize(120)) {
                     topMargin = autoSize(QMUIStatusBarHelper.getStatusbarHeight(context))
                 }
 
@@ -79,18 +117,75 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     text = "待付款"
                     textSizeAuto = 60
                     textColorInt = R.color.white
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(35)
                 }
 
-                textView {
-                    text = "请在00:28:24内支付"
-                    textSizeAuto = 31
-                    textColorInt = R.color.white
-                }.lparams(wrapContent, wrapContent){
-                    marginStart = autoSize(35)
-                    topMargin = autoSize(30)
-                }
+//                textView {
+//                    timeText = this
+//                    textSizeAuto = 31
+//                    textColorInt = R.color.white
+//                }.lparams(wrapContent, wrapContent){
+//                    marginStart = autoSize(35)
+//                    topMargin = autoSize(30)
+//                }
+
+                linearLayout {
+                    textView {
+                        text = "剩余支付时间:"
+                        textSizeAuto = 31
+                        textColorInt = R.color.white
+                    }.lparams(wrapContent, wrapContent) {
+                        marginStart = autoSize(36)
+                    }
+
+                    inflateLayout<CountdownView>(R.layout.view_countdowntime) {
+                        viewModel.systemTime.bindOptional(context) {
+                            if (orderId.isNullOrEmpty()) {
+                                val paylimitedtime = com.blankj.utilcode.util.TimeUtils.date2Millis(
+                                    TimeUtils.stringToDate(
+                                        paylimitedtime,
+                                        "yyyy-MM-dd HH:mm:ss"
+                                    )
+                                )
+                                val nowTime = com.blankj.utilcode.util.TimeUtils.date2Millis(
+                                    TimeUtils.stringToDate(
+                                        it,
+                                        "yyyy-MM-dd HH:mm:ss"
+                                    )
+                                )
+                                val datas = (paylimitedtime - nowTime).div(86400000).toInt()
+//                            if (datas > 0){
+//                                timeText.text = "支付剩余时间   " + datas + "天"
+//                            }
+                                start(paylimitedtime - nowTime)
+                            } else {
+                                if (viewModel.lookingforInfo.value?.paylimitedtime?.isNotEmpty() == true) {
+                                    val paylimitedtime = com.blankj.utilcode.util.TimeUtils.date2Millis(
+                                        TimeUtils.stringToDate(
+                                            TimeUtils.covnDate(viewModel.lookingforInfo.value?.paylimitedtime),
+                                            "yyyy-MM-dd HH:mm:ss"
+                                        )
+                                    )
+                                    val nowTime = com.blankj.utilcode.util.TimeUtils.date2Millis(
+                                        TimeUtils.stringToDate(
+                                            it,
+                                            "yyyy-MM-dd HH:mm:ss"
+                                        )
+                                    )
+                                    val datas = (paylimitedtime - nowTime).div(86400000).toInt()
+//                                if (datas > 0){
+//                                    timeText.text = "支付剩余时间   " + datas + "天"
+//                                }
+                                    start(paylimitedtime - nowTime)
+                                }
+                            }
+                        }
+                    }.lparams(wrapContent, wrapContent) {
+                        marginEnd = autoSize(36)
+                    }
+                }.lparams(matchParent, wrapContent)
+
 
             }.lparams(matchParent, autoSize(360))
 
@@ -101,15 +196,23 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     text = "支付金额"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_zhushi_text_color
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(35)
                 }
 
                 textView {
-                    text = tradepaydata.payamount
+//                    if (orderId.isNullOrEmpty()) {
+//                        text = totalAmount
+//                    }
+//                    viewModel.lookingforInfo.bindOptional(context) {
+//                        if (orderId.isNullOrEmpty().not()) {
+//                            text = it?.payamount
+//                        }
+//                    }
+                    text = totalAmount
                     textSizeAuto = 55
                     textColorInt = R.color.rma_red_color
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(30)
                 }
             }.lparams(matchParent, autoSize(144))
@@ -122,11 +225,11 @@ 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
-                }.lparams(autoSize(48), autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginStart = autoSize(36)
                 }
                 textView {
@@ -134,15 +237,18 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     textColorInt = R.color.rma_black_33
                     textSizeAuto = 36
                     typeface = Typeface.defaultFromStyle(Typeface.BOLD)
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(25)
                 }
 
                 textView {
-                    text = "(可用1000.00元)"
+                    viewModel.accountData.bindOptional(context) {
+                        text =
+                            "(可用" + NumberUtils.doubleDistortion(it?.balance?.toString()) + "元)"
+                    }
                     textSizeAuto = 31
                     textColorInt = R.color.hint_text_color
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(10)
                 }
 
@@ -153,21 +259,21 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     text = "余额不足"
                     textSizeAuto = 31
                     textColorInt = R.color.hint_text_color
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginEnd = autoSize(35)
                 }
 
                 imageView {
                     visibility = View.GONE
-                    selectPayType.bindOptional(context){
-                        if (it?.id == "1"){
+                    selectPayType.bindOptional(context) {
+                        if (it?.id == "1") {
                             visibility = View.VISIBLE
-                        }else{
+                        } else {
                             visibility = View.GONE
                         }
                     }
                     imageResource = R.mipmap.qhj_pay_select
-                }.lparams(autoSize(48), autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginEnd = autoSize(36)
                 }
             }.lparams(matchParent, autoSize(144))
@@ -175,14 +281,15 @@ class PayActivity : BaseActivity<PayViewModel>(){
             itemView()
 
             linearLayout {
+                visibility = View.GONE
                 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
-                }.lparams(autoSize(48), autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginStart = autoSize(36)
                 }
 
@@ -191,7 +298,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     textColorInt = R.color.rma_black_33
                     textSizeAuto = 36
                     typeface = Typeface.defaultFromStyle(Typeface.BOLD)
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(25)
                 }
 
@@ -199,15 +306,15 @@ class PayActivity : BaseActivity<PayViewModel>(){
 
                 imageView {
                     visibility = View.GONE
-                    selectPayType.bindOptional(context){
-                        if (it?.id == "3"){
+                    selectPayType.bindOptional(context) {
+                        if (it?.id == "3") {
                             visibility = View.VISIBLE
-                        }else{
+                        } else {
                             visibility = View.GONE
                         }
                     }
                     imageResource = R.mipmap.qhj_pay_select
-                }.lparams(autoSize(48), autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginEnd = autoSize(36)
                 }
             }.lparams(matchParent, autoSize(144))
@@ -218,11 +325,11 @@ 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
-                }.lparams(autoSize(48), autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginStart = autoSize(36)
                 }
 
@@ -231,7 +338,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
                     textColorInt = R.color.rma_black_33
                     textSizeAuto = 36
                     typeface = Typeface.defaultFromStyle(Typeface.BOLD)
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(25)
                 }
 
@@ -239,15 +346,15 @@ class PayActivity : BaseActivity<PayViewModel>(){
 
                 imageView {
                     visibility = View.GONE
-                    selectPayType.bindOptional(context){
-                        if (it?.id == "2"){
+                    selectPayType.bindOptional(context) {
+                        if (it?.id == "2") {
                             visibility = View.VISIBLE
-                        }else{
+                        } else {
                             visibility = View.GONE
                         }
                     }
                     imageResource = R.mipmap.qhj_pay_select
-                }.lparams(autoSize(48), autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginEnd = autoSize(36)
                 }
             }.lparams(matchParent, autoSize(144))
@@ -255,7 +362,7 @@ class PayActivity : BaseActivity<PayViewModel>(){
 
             view {
 
-            }.lparams(matchParent,0,1f)
+            }.lparams(matchParent, 0, 1f)
 
             linearLayout {
                 background = resources.getDrawable(R.color.white)
@@ -263,22 +370,66 @@ class PayActivity : BaseActivity<PayViewModel>(){
 
                 textView {
                     onThrottleFirstClick {
-                        if (selectPayType.value?.id.isNullOrEmpty()){
+                        if (selectPayType.value?.id.isNullOrEmpty()) {
                             ToastUtils.showLong("请选择支付方式")
                             return@onThrottleFirstClick
                         }
-                        if (selectPayType.value?.id == "1"){
-                            val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(tradepaydata.goodsid?.toInt() ?: 0)
-                            viewModel.balancePaymentReq(accountid = GlobalDataCollection.instance?.accountId ?: 0,tradeID = tradepaydata.tradeid?.toLong() ?: 0,goodsInfo = goodsInfo){
-                                ToastUtils.showLong("支付成功")
-                                finish()
+                        if (orderId.isNullOrEmpty()) {
+                            if (selectPayType.value?.id == "1") {
+                                val goodsInfo = DataBase.getInstance().goodsInfoDao()
+                                    .getGoodsInfo(goodsId?.toInt() ?: 0)
+                                viewModel.balancePaymentReq(
+                                    accountid = GlobalDataCollection.instance?.accountId ?: 0,
+                                    tradeID = orderNo?.toLong() ?: 0,
+                                    goodsInfo = goodsInfo
+                                ) {
+                                    ToastUtils.showLong("支付成功")
+                                    finish()
+                                }
+                            } else if (selectPayType.value?.id == "2") {
+                                viewModel.getPayInfo(
+                                    marketId = marketId ?: "",
+                                    orderNo = orderNo ?: "",
+                                    orderDate = orderDate?.isShowTimeString("yyyy-MM-dd") ?: "",
+                                    totalAmount = totalAmount ?: "0",
+                                    msgType = "9",
+                                    payType = "4"
+                                )
+                            }
+                        } else {
+                            if (viewModel.lookingforInfo.value?.tradeid.isNullOrEmpty().not()) {
+                                if (selectPayType.value?.id == "1") {
+                                    val goodsInfo = DataBase.getInstance().goodsInfoDao()
+                                        .getGoodsInfo(
+                                            viewModel.lookingforInfo.value?.goodsid?.toInt() ?: 0
+                                        )
+                                    viewModel.balancePaymentReq(
+                                        accountid = GlobalDataCollection.instance?.accountId ?: 0,
+                                        tradeID = viewModel.lookingforInfo.value?.tradeid?.toLong()
+                                            ?: 0,
+                                        goodsInfo = goodsInfo
+                                    ) {
+                                        ToastUtils.showLong("支付成功")
+                                        finish()
+                                    }
+                                } else if (selectPayType.value?.id == "2") {
+                                    viewModel.getPayInfo(
+                                        marketId = viewModel.lookingforInfo.value?.marketid ?: "",
+                                        orderNo = viewModel.lookingforInfo.value?.tradeid ?: "",
+                                        orderDate = viewModel.lookingforInfo.value?.tradedate?.isShowTimeString(
+                                            "yyyy-MM-dd"
+                                        ) ?: "",
+                                        totalAmount = viewModel.lookingforInfo.value?.payamount
+                                            ?: "0",
+                                        msgType = "9",
+                                        payType = "4"
+                                    )
+                                }
                             }
-                        }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){
+                    selectPayType.bindOptional(context) {
                         text = it?.value
                     }
                     gravity = Gravity.CENTER
@@ -293,6 +444,15 @@ class PayActivity : BaseActivity<PayViewModel>(){
             }.lparams(matchParent, autoSize(144)) {
                 gravity = Gravity.BOTTOM
             }
+            viewModel.payInfoRequest.bindOptional(context){
+                LogUtils.eTag("asdhasgfjahsdha",it)
+                RxPay(this@PayActivity)
+                    .requestAlipay(it ?: "")
+                    .subscribe {
+
+                    }
+
+            }
         }
     }
 
@@ -300,14 +460,14 @@ class PayActivity : BaseActivity<PayViewModel>(){
      * paytype 1 成交支付 2 尾款支付 3 保证金支付 4 充值
      * msgType 9 支付宝 10 微信
      */
-    fun update(){
+    fun update() {
         val params = mutableMapOf<String, Any>()
         params["accoundId"] = GlobalDataCollection.instance?.accountId ?: 0
         params["accountName"] = GlobalDataCollection.instance?.userAccountData?.accountname ?: ""
         params["marketId"] = 69201
         params["orderNo"] = "2011613819351030007"
         params["payType"] = 4
-        params["orderDate"] = TimeUtils.getNowString()
+        params["orderDate"] = com.blankj.utilcode.util.TimeUtils.getNowString()
         params["totalAmout"] = 450
         params["msgType"] = "9"
     }

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

@@ -2,7 +2,10 @@ package cn.muchinfo.rma.view.base.main
 
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccountData
+import cn.muchinfo.rma.global.data.PayOrderData
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
+import cn.muchinfo.rma.global.utils.TimeUtils
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
@@ -28,6 +31,58 @@ class PayViewModel : BaseViewModel(){
     val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
 
     /**
+     * 当前选择的资金账号
+     */
+    val accountData : MutableLiveData<AccountData> = MutableLiveData()
+
+    /**
+     * 获取当前选择的资金账号
+     */
+    fun setAccountData(){
+        accountData.postValue(GlobalDataCollection.instance?.accountData)
+    }
+
+    val lookingforInfo : MutableLiveData<PayOrderData> = MutableLiveData()
+
+    /**
+     * 查询待付款单
+     */
+    fun queryPayOrder(tradeid : String){
+        val params = mutableMapOf<String,String>().apply {
+            put("accountid",GlobalDataCollection.instance?.accountId?.toString() ?: "0")
+            put("payflag","1")
+            put("tradeid",tradeid)
+        }
+        MyApplication.getInstance()?.contractGoodsManager?.queryPayOrder(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                lookingforInfo.postValue(respData?.get(0))
+            }
+        }
+    }
+
+    val systemTime : MutableLiveData<String> = MutableLiveData()
+    fun getServerTime(){
+        OkHttpUtils.get()
+            .url(SPUtils.getInstance().getString(Constant.goCommonSearchUrl) + "/Common/GetServerTime")
+            .build()
+            .execute(object : StringCallback() {
+                override fun onResponse(response: String?, id: Int) {
+                    LogUtils.e("dhasfhkajhlka",response)
+                    val jsonObject = JSONObject(response)
+                    val code = jsonObject.getString("code")
+                    if (code == "200") {
+                        loadingDialogStatus.value = TaskUiModel.success()
+                        systemTime.postValue(TimeUtils.covnDate(jsonObject.getString("data")))
+                    }
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    LogUtils.d("dhasfhkajhlka", e?.message)
+                }
+            })
+    }
+
+    /**
      * 余额支付请求
      */
     fun balancePaymentReq(
@@ -62,7 +117,7 @@ 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["accountName"] = GlobalDataCollection.instance?.accountData?.accountid
         json["accountId"] = GlobalDataCollection.instance?.accountData?.accountid
         json["marketId"] = marketId
         json["orderNo"] = orderNo
@@ -71,7 +126,7 @@ class PayViewModel : BaseViewModel(){
         json["totalAmount"] = totalAmount
         json["msgType"] = msgType
         OkHttpUtils.postString()
-            .url(SPUtils.getInstance().getString(Constant.hsbyPayUrlWeb))
+            .url("http://192.168.21.71:39400/bank_scancode/pay")
             .content(json.toJSONString())
             .mediaType(MediaType.parse("application/json; charset=utf-8"))
             .build()
@@ -84,11 +139,11 @@ class PayViewModel : BaseViewModel(){
                     val jsonObject = JSONObject(response)
                     val code = jsonObject.getString("errCode")
                     if (code == "SUCCESS") {
-                        if (jsonObject.isNull("appPayRequest")) {
+                        if (jsonObject.isNull("body")) {
                             ToastUtils.showLong("服务器返回数据格式有问题,缺少“appPayRequest”字段")
                             return
                         }
-                        payInfoRequest.postValue(jsonObject.getString("appPayRequest"))
+                        payInfoRequest.postValue(jsonObject.getString("body"))
 
                     } else {
                         loadingDialogStatus.value = TaskUiModel.failed(InteractiveException(jsonObject.getString("errMsg")))

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

@@ -7,9 +7,13 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.UserCollectConfigData
+import cn.muchinfo.rma.global.isBlankString
+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.BaseFragment
 import cn.muchinfo.rma.view.base.future.trade.itemView
@@ -19,23 +23,29 @@ import cn.muchinfo.rma.view.base.main.castsurely.MyCastSurelyActivity
 import cn.muchinfo.rma.view.base.main.pickup.PickUpGoodsSearchActivity
 import cn.muchinfo.rma.view.base.main.promotioncode.MyPromotionCodeActivity
 import cn.muchinfo.rma.view.base.main.withdrawmanagement.WithDrawManagementActivity
+import cn.muchinfo.rma.view.base.main.withdrawmanagement.WithdrawalActivity
 import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatinumCancellationsActivity
 import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatnumDealActivty
 import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatnumMoneyActivity
 import com.blankj.utilcode.util.ActivityUtils
+import com.blankj.utilcode.util.ToastUtils
 
 import com.qmuiteam.qmui.kotlin.matchParent
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 import org.jetbrains.anko.support.v4.UI
 
 /**
  * 千海金我的fragment
  */
-class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
+class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
 
     override fun onResume() {
         super.onResume()
         viewModel.queryUserCollectConfig()
+        viewModel.initDataUsrAccount()
+        viewModel.resetAccountData()
     }
 
     override fun onCreateView(
@@ -43,9 +53,14 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View? {
+
         return UI {
-            verticalLayout {
 
+            verticalLayout {
+                createLoadingDialog(hintStr = "请求中...").bindTaskStatus(
+                    context,
+                    viewModel.loadingDialogStatus
+                )
                 scrollView {
                     verticalLayout {
                         verticalLayout {
@@ -62,7 +77,7 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
 
                             view {
 
-                            }.lparams(org.jetbrains.anko.matchParent,0,1f)
+                            }.lparams(org.jetbrains.anko.matchParent, 0, 1f)
 
                             linearLayout {
                                 backgroundResource = R.drawable.qhj_main_top_white_bg
@@ -71,65 +86,99 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     gravity = Gravity.CENTER_VERTICAL
                                     view {
                                         backgroundResource = R.mipmap.qhj_main_portrait
-                                    }.lparams(autoSize(96), autoSize(96)){
+                                    }.lparams(autoSize(96), autoSize(96)) {
                                         marginStart = autoSize(43)
                                     }
 
                                     verticalLayout {
                                         textView {
-                                            text = "周星星"
+                                            text =
+                                                GlobalDataCollection.instance?.loginQueryData?.username?.isBlankString()
                                             textSizeAuto = 36
                                             textColorInt = R.color.rma_black_33
-                                        }.lparams(wrapContent, wrapContent){
+                                        }.lparams(wrapContent, wrapContent) {
                                             topMargin = autoSize(15)
                                             marginStart = autoSize(32)
                                         }
                                         textView {
-                                            text = "142141241"
+                                            text =
+                                                GlobalDataCollection.instance?.loginRsp?.loginCode
                                             textSizeAuto = 31
                                             textColorInt = R.color.rma_hint_text_color_ccc
-                                        }.lparams(wrapContent, wrapContent){
+                                        }.lparams(wrapContent, wrapContent) {
                                             topMargin = autoSize(5)
                                             marginStart = autoSize(32)
                                         }
-                                    }.lparams(0, autoSize(100),1f)
+                                    }.lparams(0, autoSize(100), 1f)
 
-                                    linearLayout{
+                                    linearLayout {
+                                        if (GlobalDataCollection.instance?.loginQueryData?.userAccount?.canrecommend == "0") {
+                                            visibility = View.GONE
+                                        } else {
+                                            visibility = View.VISIBLE
+                                        }
                                         onThrottleFirstClick {
-                                            val intent = Intent()
-                                            intent.setClass(context,MyPromotionCodeActivity::class.java)
-                                            ActivityUtils.startActivity(intent)
+                                            if (viewModel.userAccount?.value?.refernum.isNullOrEmpty()) {
+                                                viewModel.customerRefernumOperateReq {
+                                                    ToastUtils.showLong("推广码申请已提交,请等待审核通过")
+                                                }
+                                            } else {
+                                                val intent = Intent()
+                                                intent.setClass(
+                                                    context,
+                                                    MyPromotionCodeActivity::class.java
+                                                )
+                                                ActivityUtils.startActivity(intent)
+                                            }
+
                                         }
                                         backgroundResource = R.drawable.qhj_main_recommended_bg
                                         gravity = Gravity.CENTER_VERTICAL
                                         imageView {
                                             imageResource = R.mipmap.qhj_qrcode
-                                        }.lparams(autoSize(55), autoSize(55)){
+                                        }.lparams(autoSize(55), autoSize(55)) {
                                             marginStart = autoSize(32)
                                         }
 
                                         verticalLayout {
                                             textView {
-                                                text = "推广码"
+                                                viewModel.userAccount.bindOptional(context) {
+                                                    if (it?.refernum.isNullOrEmpty()) {
+                                                        text = "申请推广码"
+                                                    } else {
+                                                        visibility = View.VISIBLE
+                                                        text = it?.refernum
+                                                    }
+                                                }
                                                 textSizeAuto = 26
                                                 textColorInt = R.color.text_hint_color_two
-                                            }.lparams(wrapContent, wrapContent){
+                                            }.lparams(wrapContent, wrapContent) {
                                                 topMargin = autoSize(10)
                                             }
                                             textView {
-                                                text = "1321"
+                                                viewModel.userAccount.bindOptional(context) {
+                                                    if (it?.refernum.isNullOrEmpty()) {
+                                                        visibility = View.GONE
+                                                    } else {
+                                                        visibility = View.VISIBLE
+                                                        text = it?.refernum
+                                                    }
+                                                }
                                                 textSizeAuto = 36
                                                 textColorInt = R.color.rma_black_33
-                                            }.lparams(wrapContent, wrapContent){
+                                            }.lparams(wrapContent, wrapContent) {
                                                 topMargin = autoSize(10)
                                             }
-                                        }.lparams(matchParent, autoSize(96)){
+                                        }.lparams(matchParent, autoSize(96)) {
                                             marginStart = autoSize(32)
                                         }
                                     }.lparams(autoSize(228), autoSize(96))
 
                                 }.lparams(matchParent, autoSize(100))
-                            }.lparams(matchParent, autoSize(213))
+                            }.lparams(matchParent, autoSize(213)) {
+                                marginStart = autoSize(36)
+                                marginEnd = autoSize(36)
+                            }
 
                         }.lparams(matchParent, autoSize(360))
 
@@ -140,21 +189,23 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     text = "总资产(元)"
                                     textSizeAuto = 29
                                     textColorInt = R.color.rma_hint_text_color_ccc
-                                }.lparams(wrapContent, wrapContent){
+                                }.lparams(wrapContent, wrapContent) {
                                     marginStart = autoSize(78)
                                 }
                                 imageView {
                                     imageResource = R.mipmap.qhj_open_eye
-                                }.lparams(autoSize(38), autoSize(38)){
+                                }.lparams(autoSize(38), autoSize(38)) {
                                     marginStart = autoSize(32)
                                 }
                             }.lparams(matchParent, autoSize(60))
 
                             textView {
-                                text = "1231241"
+                                viewModel.accountData.bindOptional(context) {
+                                    text = NumberUtils.roundNum(it?.balance ?: 0.0, 2)
+                                }
                                 textSizeAuto = 60
                                 textColorInt = R.color.rma_black_33
-                            }.lparams(wrapContent, wrapContent){
+                            }.lparams(wrapContent, wrapContent) {
                                 marginStart = autoSize(78)
                                 topMargin = autoSize(15)
                             }
@@ -166,18 +217,20 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     textView {
                                         text = "余额(元)"
                                         textSizeAuto = 29
-                                        textColorInt =R.color.rma_hint_text_color_ccc
-                                    }.lparams(wrapContent, wrapContent){
+                                        textColorInt = R.color.rma_hint_text_color_ccc
+                                    }.lparams(wrapContent, wrapContent) {
                                         marginStart = autoSize(78)
                                     }
                                     textView {
-                                        text = "35000.44"
+                                        viewModel.accountData.bindOptional(context) {
+                                            text = NumberUtils.roundNum(it?.balance ?: 0.0, 2)
+                                        }
                                         textSizeAuto = 36
                                         textColorInt = R.color.rma_green_color
-                                    }.lparams(wrapContent, wrapContent){
+                                    }.lparams(wrapContent, wrapContent) {
                                         marginStart = autoSize(78)
                                     }
-                                }.lparams(0, autoSize(110),1f)
+                                }.lparams(0, autoSize(110), 1f)
 
                                 //持仓
                                 verticalLayout {
@@ -185,25 +238,30 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     textView {
                                         text = "持仓(元)"
                                         textSizeAuto = 29
-                                        textColorInt =R.color.rma_hint_text_color_ccc
-                                    }.lparams(wrapContent, wrapContent){
+                                        textColorInt = R.color.rma_hint_text_color_ccc
+                                    }.lparams(wrapContent, wrapContent) {
 
                                     }
                                     textView {
                                         text = "35000.44"
                                         textSizeAuto = 36
                                         textColorInt = R.color.rma_red_color
-                                    }.lparams(wrapContent, wrapContent){
+                                    }.lparams(wrapContent, wrapContent) {
 
                                     }
-                                }.lparams(0, autoSize(110),1f)
+                                }.lparams(0, autoSize(110), 1f)
 
-                            }.lparams(matchParent, autoSize(110)){
+                            }.lparams(matchParent, autoSize(110)) {
                                 topMargin = autoSize(20)
                             }
 
                             linearLayout {
                                 linearLayout {
+                                    onThrottleFirstClick {
+                                        val intent = Intent()
+                                        intent.setClass(context, WithdrawalActivity::class.java)
+                                        ActivityUtils.startActivity(intent)
+                                    }
                                     backgroundResource = R.mipmap.qhj_withdraw
                                     gravity = Gravity.CENTER
                                     textView {
@@ -211,12 +269,17 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                         textColorInt = R.color.qhj_withdraw_color
                                         textSizeAuto = 36
                                     }.lparams(wrapContent, wrapContent)
-                                }.lparams(0, autoSize(122),1f){
+                                }.lparams(0, autoSize(122), 1f) {
                                     marginStart = autoSize(78)
                                     marginEnd = autoSize(36)
                                 }
 
                                 linearLayout {
+                                    onThrottleFirstClick {
+                                        val intent = Intent()
+                                        intent.setClass(context, WithdrawalActivity::class.java)
+                                        ActivityUtils.startActivity(intent)
+                                    }
                                     backgroundResource = R.drawable.qhj_main_blue_bg
                                     gravity = Gravity.CENTER
                                     textView {
@@ -225,12 +288,12 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                         textColorInt = R.color.white
                                         textSizeAuto = 36
                                     }.lparams(wrapContent, wrapContent)
-                                }.lparams(0, autoSize(84),1f){
+                                }.lparams(0, autoSize(84), 1f) {
                                     marginStart = autoSize(36)
                                     marginEnd = autoSize(78)
                                     topMargin = autoSize(15)
                                 }
-                            }.lparams(matchParent, autoSize(100)){
+                            }.lparams(matchParent, autoSize(100)) {
                                 topMargin = autoSize(25)
                             }
 
@@ -246,13 +309,16 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                             verticalLayout {
                                 onThrottleFirstClick {
                                     val intent = Intent()
-                                    intent.setClass(context,PlatinumCancellationsActivity::class.java)
+                                    intent.setClass(
+                                        context,
+                                        PlatinumCancellationsActivity::class.java
+                                    )
                                     ActivityUtils.startActivity(intent)
                                 }
                                 gravity = Gravity.CENTER_HORIZONTAL
                                 imageView {
                                     imageResource = R.mipmap.qhj_trading_cancellations
-                                }.lparams(autoSize(60), autoSize(60)){
+                                }.lparams(autoSize(60), autoSize(60)) {
                                     topMargin = autoSize(45)
                                 }
 
@@ -260,23 +326,23 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     text = "交易撤单"
                                     textSizeAuto = 31
                                     textColorInt = R.color.rma_black_33
-                                }.lparams(wrapContent, wrapContent){
+                                }.lparams(wrapContent, wrapContent) {
                                     topMargin = autoSize(10)
                                 }
 
-                            }.lparams(0, autoSize(200),1f)
+                            }.lparams(0, autoSize(200), 1f)
 
                             //成交记录
                             verticalLayout {
                                 onThrottleFirstClick {
                                     val intent = Intent()
-                                    intent.setClass(context,PlatnumDealActivty::class.java)
+                                    intent.setClass(context, PlatnumDealActivty::class.java)
                                     ActivityUtils.startActivity(intent)
                                 }
                                 gravity = Gravity.CENTER_HORIZONTAL
                                 imageView {
                                     imageResource = R.mipmap.qhj_deal_the_record
-                                }.lparams(autoSize(60), autoSize(60)){
+                                }.lparams(autoSize(60), autoSize(60)) {
                                     topMargin = autoSize(45)
                                 }
 
@@ -284,22 +350,22 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     text = "成交记录"
                                     textSizeAuto = 31
                                     textColorInt = R.color.rma_black_33
-                                }.lparams(wrapContent, wrapContent){
+                                }.lparams(wrapContent, wrapContent) {
                                     topMargin = autoSize(10)
                                 }
-                            }.lparams(0, autoSize(200),1f)
+                            }.lparams(0, autoSize(200), 1f)
 
                             //资金流水
                             verticalLayout {
                                 onThrottleFirstClick {
                                     val intent = Intent()
-                                    intent.setClass(context,PlatnumMoneyActivity::class.java)
+                                    intent.setClass(context, PlatnumMoneyActivity::class.java)
                                     ActivityUtils.startActivity(intent)
                                 }
                                 gravity = Gravity.CENTER_HORIZONTAL
                                 imageView {
                                     imageResource = R.mipmap.qhj_money_flowing_water
-                                }.lparams(autoSize(60), autoSize(60)){
+                                }.lparams(autoSize(60), autoSize(60)) {
                                     topMargin = autoSize(45)
                                 }
 
@@ -307,23 +373,23 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     text = "资金流水"
                                     textSizeAuto = 31
                                     textColorInt = R.color.rma_black_33
-                                }.lparams(wrapContent, wrapContent){
+                                }.lparams(wrapContent, wrapContent) {
                                     topMargin = autoSize(10)
                                 }
-                            }.lparams(0, autoSize(200),1f)
+                            }.lparams(0, autoSize(200), 1f)
 
                             //提货查询
                             verticalLayout {
 
                                 onThrottleFirstClick {
                                     val intent = Intent()
-                                    intent.setClass(context,PickUpGoodsSearchActivity::class.java)
+                                    intent.setClass(context, PickUpGoodsSearchActivity::class.java)
                                     ActivityUtils.startActivity(intent)
                                 }
                                 gravity = Gravity.CENTER_HORIZONTAL
                                 imageView {
                                     imageResource = R.mipmap.qhj_goods_query
-                                }.lparams(autoSize(60), autoSize(60)){
+                                }.lparams(autoSize(60), autoSize(60)) {
                                     topMargin = autoSize(45)
                                 }
 
@@ -331,10 +397,10 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                     text = "提货查询"
                                     textSizeAuto = 31
                                     textColorInt = R.color.rma_black_33
-                                }.lparams(wrapContent, wrapContent){
+                                }.lparams(wrapContent, wrapContent) {
                                     topMargin = autoSize(10)
                                 }
-                            }.lparams(0, autoSize(200),1f)
+                            }.lparams(0, autoSize(200), 1f)
                         }.lparams(matchParent, autoSize(200))
 
                         view {
@@ -345,20 +411,20 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                             gravity = Gravity.CENTER_VERTICAL
                             onThrottleFirstClick {
                                 val intent = Intent()
-                                intent.setClass(context,MyCastSurelyActivity::class.java)
+                                intent.setClass(context, MyCastSurelyActivity::class.java)
                                 ActivityUtils.startActivity(intent)
                             }
                             imageView {
                                 imageResource = R.mipmap.qhj_cast_surely_management
-                            }.lparams(autoSize(50), autoSize(50)){
-                               marginStart = autoSize(60)
+                            }.lparams(autoSize(50), autoSize(50)) {
+                                marginStart = autoSize(60)
                             }
 
                             textView {
                                 text = "定投管理"
                                 textSizeAuto = 36
                                 textColorInt = R.color.rma_black_33
-                            }.lparams(wrapContent, wrapContent){
+                            }.lparams(wrapContent, wrapContent) {
                                 marginStart = autoSize(29)
                             }
 
@@ -377,13 +443,13 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                 )
                                 backgroundDrawable =
                                     createRoundRectDrawable("#FFA127", 45)
-                            }.lparams(wrapContent, wrapContent)  {
+                            }.lparams(wrapContent, wrapContent) {
                                 marginEnd = autoSize(20)
                             }
 
                             imageView {
                                 imageResource = R.mipmap.rma_more
-                            }.lparams(autoSize(40), autoSize(40)){
+                            }.lparams(autoSize(40), autoSize(40)) {
                                 marginEnd = autoSize(49)
                             }
                         }.lparams(matchParent, autoSize(140))
@@ -393,18 +459,18 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                         linearLayout {
                             onThrottleFirstClick {
                                 val intent = Intent()
-                                if (viewModel.userCollectConfigData.value?.bankid.isNullOrEmpty()){
+                                if (viewModel.userCollectConfigData.value?.bankid.isNullOrEmpty()) {
                                     intent.putExtra("data", BankAccountSignData())
-                                }else{
+                                } else {
                                     intent.putExtra("data", viewModel.userCollectConfigData.value)
                                 }
-                                intent.setClass(context,WithDrawManagementActivity::class.java)
+                                intent.setClass(context, WithDrawManagementActivity::class.java)
                                 ActivityUtils.startActivity(intent)
                             }
                             gravity = Gravity.CENTER_VERTICAL
                             imageView {
                                 imageResource = R.mipmap.qhj_account_manager
-                            }.lparams(autoSize(50), autoSize(50)){
+                            }.lparams(autoSize(50), autoSize(50)) {
                                 marginStart = autoSize(60)
                             }
 
@@ -412,7 +478,7 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                 text = "提现账户管理"
                                 textSizeAuto = 36
                                 textColorInt = R.color.rma_black_33
-                            }.lparams(wrapContent, wrapContent){
+                            }.lparams(wrapContent, wrapContent) {
                                 marginStart = autoSize(29)
                             }
 
@@ -431,13 +497,13 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                 )
                                 backgroundDrawable =
                                     createRoundRectDrawable("#FFA127", 45)
-                            }.lparams(wrapContent, wrapContent)  {
+                            }.lparams(wrapContent, wrapContent) {
                                 marginEnd = autoSize(20)
                             }
 
                             imageView {
                                 imageResource = R.mipmap.rma_more
-                            }.lparams(autoSize(40), autoSize(40)){
+                            }.lparams(autoSize(40), autoSize(40)) {
                                 marginEnd = autoSize(49)
                             }
                         }.lparams(matchParent, autoSize(140))
@@ -448,12 +514,12 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                             gravity = Gravity.CENTER_VERTICAL
                             onThrottleFirstClick {
                                 val intent = Intent()
-                                intent.setClass(context,MyAddressManagementActivity::class.java)
+                                intent.setClass(context, MyAddressManagementActivity::class.java)
                                 ActivityUtils.startActivity(intent)
                             }
                             imageView {
                                 imageResource = R.mipmap.qhj_good_address
-                            }.lparams(autoSize(50), autoSize(50)){
+                            }.lparams(autoSize(50), autoSize(50)) {
                                 marginStart = autoSize(60)
                             }
 
@@ -461,7 +527,7 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                 text = "收货地址管理"
                                 textSizeAuto = 36
                                 textColorInt = R.color.rma_black_33
-                            }.lparams(wrapContent, wrapContent){
+                            }.lparams(wrapContent, wrapContent) {
                                 marginStart = autoSize(29)
                             }
 
@@ -480,13 +546,13 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>(){
                                 )
                                 backgroundDrawable =
                                     createRoundRectDrawable("#FFA127", 45)
-                            }.lparams(wrapContent, wrapContent)  {
+                            }.lparams(wrapContent, wrapContent) {
                                 marginEnd = autoSize(20)
                             }
 
                             imageView {
                                 imageResource = R.mipmap.rma_more
-                            }.lparams(autoSize(40), autoSize(40)){
+                            }.lparams(autoSize(40), autoSize(40)) {
                                 marginEnd = autoSize(49)
                             }
                         }.lparams(matchParent, autoSize(140))

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

@@ -2,15 +2,25 @@ package cn.muchinfo.rma.view.base.main
 
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccountData
 import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.UserCollectConfigData
+import cn.muchinfo.rma.global.data.account.loginQeruy.UserAccount
+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 SeaKingMainViewModel : BaseViewModel(){
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
 
     /**
      * 提现账户设置信息
@@ -18,6 +28,47 @@ class SeaKingMainViewModel : BaseViewModel(){
     val userCollectConfigData : MutableLiveData<BankAccountSignData> = MutableLiveData()
 
     /**
+     * useraccount
+     */
+    val userAccount : MutableLiveData<UserAccount> = MutableLiveData()
+
+    /**
+     * 当前选择的资金账户
+     */
+    val accountData : MutableLiveData<AccountData> = MutableLiveData()
+
+    //重新赋值资金账户
+    fun resetAccountData(){
+        accountData.postValue(GlobalDataCollection.instance?.accountData)
+    }
+
+
+    fun customerRefernumOperateReq(isSuccess: (isCompleted: Boolean) -> Unit){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.commonManager?.customerRefernumOperateReq() { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    //设置页面userAccount
+    fun initDataUsrAccount(){
+        userAccount.postValue(GlobalDataCollection.instance?.loginQueryData?.userAccount)
+    }
+
+    /**
      * 查询提现账户设置信息
      */
     fun queryUserCollectConfig(){

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

@@ -149,9 +149,12 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     viewModel.goodsInfoData.bindOptional(context) {
-                        text = it?.goodsname
+                        if (it?.goodsname.isNullOrEmpty()){
+                            text = "请选择商品"
+                        }else{
+                            text = it?.goodsname
+                        }
                     }
-                    text = "请选择商品"
                     textSizeAuto = 40
                     textColorInt = R.color.qhj_yellow_text_color
                 }.lparams(wrapContent, wrapContent) {
@@ -279,10 +282,10 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                             selectTime.postValue(
                                 SelectData(
                                     id = opt1tx ?: "",
-                                    value = opt2tx ?: ""
+                                    value = viewModel.getCastSureRegularlyCycleValue(opt2tx ?: "")
                                 )
                             )
-                            ToastUtils.showLong(opt1tx + "----" + opt2tx)
+
                         })
                         .setTitleText("定投策略选择")
                         .setDividerColor(Color.BLACK)
@@ -340,9 +343,10 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                         if (check().not()){
                             return@onThrottleFirstClick
                         }
-                        viewModel.requestQhjRegularlyStrategyReq(goodsID = viewModel.goodsInfoData.value?.goodsid?.toLong() ?: 0,regularlyCycle = 1,regularlyCycleValue = 2,regularlyMode = selectPayType.value?.id?.toInt() ?: 0,
-                            regularlyModeValue = amount_input.text.toString().toDouble(),operateType = 1){
+                        viewModel.requestQhjRegularlyStrategyReq(goodsID = viewModel.goodsInfoData.value?.goodsid?.toLong() ?: 0,regularlyCycle = selectTime.value?.id?.toInt() ?: 1,regularlyCycleValue = selectTime.value?.value?.toInt() ?: 1,regularlyMode = selectPayType.value?.id?.toInt() ?: 0,
+                            regularlyModeValue = amount_input.text.toString().toDouble().times(Math.pow(10.0,viewModel.goodsInfoData.value?.qtydecimalplace?.toDouble() ?: 2.0)),operateType = 1){
                             viewModel.loadingDialogStatus.postValue(TaskUiModel.success(msg = "新增定投成功"))
+                            finish()
                         }
                     }
                     gravity = Gravity.CENTER
@@ -364,6 +368,11 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
 
     fun check(): Boolean {
 
+        if (viewModel.goodsInfoData.value?.goodsname.isNullOrEmpty()){
+            ToastUtils.showLong("请选择定投商品")
+            return false
+        }
+
         if (amount_input.text.toString().isNullOrEmpty()) {
             if (selectPayType.value?.id == "1") {//判断克数
                 ToastUtils.showLong("请输入定投克数")

+ 19 - 11
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/CastSurelyDetailsActivity.kt

@@ -22,6 +22,8 @@ import mtp.polymer.com.autowidget.adapter.BaseAdapter
 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.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -51,8 +53,12 @@ class CastSurelyDetailsActivity : BaseActivity<MyCastSurelyViewModel>() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(
+                context,
+                viewModel.loadingDialogStatus
+            )
             viewModel.queryRSTriggerLog(data.regularlystrategyid ?: "")
-            background = resources.getDrawable(R.color.main_title_bg_color)
+            background = resources.getDrawable(R.color.rma_item_bg)
             //页面标题
             topBar {
                 commonLeftButton()
@@ -90,12 +96,6 @@ class CastSurelyDetailsActivity : BaseActivity<MyCastSurelyViewModel>() {
                                 )
                             )
                         }
-                        selectDataList.add(
-                            SelectData(
-                                id = "4",
-                                value = "取消"
-                            )
-                        )
                         creatBottomSheetNoTitleDialog(selectDataList) {
                             if (this.id == "1"){
                                 val intent = Intent()
@@ -103,11 +103,17 @@ class CastSurelyDetailsActivity : BaseActivity<MyCastSurelyViewModel>() {
                                 intent.setClass(context,AddCastSurelyActivity::class.java)
                                 ActivityUtils.startActivity(intent)
                             } else if (this.id == "2"){//暂停
-
+                                viewModel.requestQhjRegularlyStrategyReq(operateType = 3,regularlyStrategyID = data.regularlystrategyid?.toLong() ?: 0){
+                                    finish()
+                                }
                             }else if (this.id == "3"){//终止
-
+                                viewModel.requestQhjRegularlyStrategyReq(operateType = 5,regularlyStrategyID = data.regularlystrategyid?.toLong() ?: 0){
+                                    finish()
+                                }
                             }else if (this.id == "5"){//恢复
-
+                                viewModel.requestQhjRegularlyStrategyReq(operateType = 4,regularlyStrategyID = data.regularlystrategyid?.toLong() ?: 0){
+                                    finish()
+                                }
                             }
                         }
                     }
@@ -253,7 +259,9 @@ class CastSurelyDetailsActivity : BaseActivity<MyCastSurelyViewModel>() {
                     textSizeAuto = 36
                     textColorInt = R.color.rma_black_33
                     typeface = Typeface.defaultFromStyle(Typeface.BOLD)
-                }.lparams(wrapContent, wrapContent)
+                }.lparams(wrapContent, wrapContent){
+                    marginStart = autoSize(36)
+                }
             }.lparams(matchParent, autoSize(95))
 
 

+ 12 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyActivity.kt

@@ -16,6 +16,8 @@ import cn.muchinfo.rma.view.base.home.spotmarket.SpotMarketPriceViewHolder
 import com.blankj.utilcode.util.ActivityUtils
 import com.qmuiteam.qmui.kotlin.matchParent
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -38,10 +40,18 @@ class MyCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
             )
         }
 
+    override fun onResume() {
+        super.onResume()
+        viewModel.queryRStrategy()
+    }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
-            viewModel.queryRStrategy()
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(
+                context,
+                viewModel.loadingDialogStatus
+            )
             linearLayout {
                 background = resources.getDrawable(R.color.rma_blue_color)
                 gravity = Gravity.CENTER_VERTICAL
@@ -95,7 +105,7 @@ class MyCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                 statusLayout = this
 //                bindTaskStatus(viewModule.status)
                 setRetryAction {
-
+                    viewModel.queryRStrategy()
                 }
                 swipeToLoadLayout {
                     swipeToLayout = this

+ 20 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewHolder.kt

@@ -1,5 +1,6 @@
 package cn.muchinfo.rma.view.base.main.castsurely
 
+import android.content.Intent
 import android.graphics.Typeface
 import android.view.Gravity
 import android.view.View
@@ -10,13 +11,11 @@ import cn.muchinfo.rma.global.data.RStrategyData
 import cn.muchinfo.rma.global.data.UserCollectConfigData
 import cn.muchinfo.rma.global.database.DataBase
 import cn.muchinfo.rma.lifecycle.bindOptional
-import cn.muchinfo.rma.view.autoWidget.autoSize
-import cn.muchinfo.rma.view.autoWidget.createRoundRectDrawable
-import cn.muchinfo.rma.view.autoWidget.textColorInt
-import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+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 com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
 import org.jetbrains.anko.*
 
@@ -33,6 +32,12 @@ class MyCastSurelyViewHolder(private val activity : AppCompatActivity,private va
 
     override fun _FrameLayout.createContentView() {
         verticalLayout {
+            onThrottleFirstClick {
+                val intent = Intent()
+                intent.putExtra("RStrategyData",data.value)
+                intent.setClass(context,CastSurelyDetailsActivity::class.java)
+                ActivityUtils.startActivity(intent)
+            }
             verticalLayout {
                 linearLayout {
                     gravity = Gravity.CENTER_VERTICAL
@@ -163,6 +168,17 @@ class MyCastSurelyViewHolder(private val activity : AppCompatActivity,private va
                                 text = "恢复"
                             }
                         }
+                        onThrottleFirstClick {
+                            if (data.value?.regularlystrategystatus == "1"){
+                                viewModel.requestQhjRegularlyStrategyReq(operateType = 3,regularlyStrategyID = data.value?.regularlystrategyid?.toLong() ?: 0){
+                                    viewModel.queryRStrategy()
+                                }
+                            }else if (data.value?.regularlystrategystatus == "2"){
+                                viewModel.requestQhjRegularlyStrategyReq(operateType = 4,regularlyStrategyID = data.value?.regularlystrategyid?.toLong() ?: 0){
+                                    viewModel.queryRStrategy()
+                                }
+                            }
+                        }
                         backgroundResource = R.drawable.qhj_transparent_bg
 //                    background = createRoundRectDrawable("#2794FF", 5)
                         gravity = Gravity.CENTER

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

@@ -48,7 +48,34 @@ class MyCastSurelyViewModel : BaseViewModel(){
 
     val secondSelectData : MutableLiveData<List<List<String>>> = MutableLiveData()//定投选择的月对应天,周对应周几
 
-
+    /**
+     * 根据选择的日期换算成服务需要的参数形式
+     * @param value String
+     * @return String
+     */
+    fun getCastSureRegularlyCycleValue(value : String) : String{
+        var returnValue : String = "1"
+        if (value.contains("号")){
+            returnValue = value.replace("号","")
+        }else{
+            if (value == "周一"){
+                returnValue = "1"
+            }else if (value == "周二"){
+                returnValue = "2"
+            }else if (value == "周三"){
+                returnValue = "3"
+            }else if (value == "周四"){
+                returnValue = "4"
+            }else if (value == "周五"){
+                returnValue = "5"
+            }else if (value == "周六"){
+                returnValue = "6"
+            }else if (value == "周日"){
+                returnValue = "0"
+            }
+        }
+        return returnValue
+    }
 
     //初始化定投周期选择数据集
     fun initCastSureData(){
@@ -147,6 +174,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
         val params = mutableMapOf<String, String>().apply {
             put("goodsCodes", goodsCodes)
         }
+
         MyApplication.getInstance()?.futureManager?.queryQuoteDay(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
                 if (respData?.isEmpty()?.not() == true) {
@@ -229,13 +257,13 @@ class MyCastSurelyViewModel : BaseViewModel(){
      */
     fun requestQhjRegularlyStrategyReq(
         regularlyStrategyID : Long = 0,
-        goodsID : Long,
-        regularlyCycle : Int,
-        regularlyCycleValue : Int,
-        regularlyMode : Int,
-        regularlyModeValue : Double,
+        goodsID : Long = 0,
+        regularlyCycle : Int = 0,
+        regularlyCycleValue : Int = 0,
+        regularlyMode : Int = 0,
+        regularlyModeValue : Double = 0.0,
         remark : String = "",
-        operateType : Int,
+        operateType : Int = 0,
         isSuccess: (isCompleted: Boolean) -> Unit
     ){
         loadingDialogStatus.value = TaskUiModel.inFlight()

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

@@ -11,10 +11,7 @@ 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.ContractTradeOrderDetailData
-import cn.muchinfo.rma.global.data.PickAreaData
-import cn.muchinfo.rma.global.data.PickGoodsData
-import cn.muchinfo.rma.global.data.UserReceiveInfoData
+import cn.muchinfo.rma.global.data.*
 import cn.muchinfo.rma.global.database.DataBase
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
@@ -39,7 +36,7 @@ import org.jetbrains.anko.*
 class PickUpGoodsActivity : BaseActivity<PickUpGoodsViewModel>(){
 
     //用于提货的商品
-    val data by lazy { intent.getParcelableExtra<ContractTradeOrderDetailData>("data") as ContractTradeOrderDetailData }
+    val data by lazy { intent.getParcelableExtra<ContractTradePositionData>("data") as ContractTradePositionData }
 
     //输入的提现数量
     lateinit var number_input : EditText

+ 18 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/promotioncode/MyPromotionCodeActivity.kt

@@ -1,5 +1,6 @@
 package cn.muchinfo.rma.view.base.main.promotioncode
 
+import android.graphics.Bitmap
 import android.os.Bundle
 import android.view.Gravity
 import android.view.View
@@ -7,7 +8,11 @@ import cn.muchinfo.rma.R
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.utils.QRCodeUtils
 import cn.muchinfo.rma.view.base.BaseActivity
+import com.blankj.utilcode.util.AppUtils
+import com.blankj.utilcode.util.ImageUtils
+import com.blankj.utilcode.util.StringUtils
 import com.blankj.utilcode.util.ToastUtils
+import org.apache.commons.io.CopyUtils
 import org.jetbrains.anko.*
 
 /**
@@ -16,6 +21,9 @@ import org.jetbrains.anko.*
 class MyPromotionCodeActivity : BaseActivity<MyPromotionCodeViewModel>(){
 
 
+    val code by lazy { intent.getStringExtra("code") }
+
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
@@ -41,12 +49,17 @@ class MyPromotionCodeActivity : BaseActivity<MyPromotionCodeViewModel>(){
                                 return true
                             }
                         })
-                        setImageBitmap(QRCodeUtils.createQRCode("22222dakjshfkahfkajhskjahsdsayeiuahweakndjahsuahuias",220,true))
+                        setImageBitmap(QRCodeUtils.createQRCode(code,220,true))
                     }.lparams(autoSize(500), autoSize(500)){
                         topMargin = autoSize(200)
                     }
 
                     textView {
+                        onThrottleFirstClick {
+                            ImageUtils.save(QRCodeUtils.createQRCode(code,220,true),AppUtils.getAppPackageName() + ".fileProvider",
+                                Bitmap.CompressFormat.JPEG
+                            )
+                        }
                         text = "长按保存二维码分享"
                         textColorInt = R.color.rma_hint_text_color_ccc
                         textSizeAuto = 36
@@ -70,7 +83,7 @@ class MyPromotionCodeActivity : BaseActivity<MyPromotionCodeViewModel>(){
                     linearLayout {
                         gravity = Gravity.CENTER_HORIZONTAL
                         textView {
-                            text = "7931"
+                            text = code
                             textColorInt = R.color.rma_blue_color
                             textSizeAuto = 72
                         }.lparams(wrapContent, wrapContent)
@@ -82,6 +95,9 @@ class MyPromotionCodeActivity : BaseActivity<MyPromotionCodeViewModel>(){
                         backgroundResource = R.mipmap.qhj_promotion_bg
                         gravity = Gravity.CENTER_HORIZONTAL
                         textView {
+                            onThrottleFirstClick {
+
+                            }
                             gravity = Gravity.CENTER
                             backgroundResource = R.drawable.bg_transparent_line
                             text = "复制推广码"

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

@@ -530,39 +530,7 @@ class MoneyInOnlineUI(private val activity: WithdrawalActivity,private val viewM
                     .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)

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

@@ -155,7 +155,13 @@ class NoPayViewHolder(private val activity : AppCompatActivity,private val viewM
                 textView {
                     onThrottleFirstClick {
                         val intent = Intent()
-                        intent.putExtra("tradepaydata",data.value)
+                         intent.putExtra("goodsId",data.value?.goodsid)
+                        intent.putExtra("marketId",data.value?.marketid)
+                        intent.putExtra("orderNo",data.value?.tradeid)
+                        intent.putExtra("orderDate",data.value?.tradedate)
+                        intent.putExtra("totalAmount",data.value?.payamount)
+                        intent.putExtra("paylimitedtime",data.value?.paylimitedtime)
+                        intent.putExtra("orderId","")
                         intent.setClass(context,PayActivity::class.java)
                         ActivityUtils.startActivity(intent)
                     }

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

@@ -10,6 +10,7 @@ import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.ContractTradeOrderDetailData
+import cn.muchinfo.rma.global.data.ContractTradePositionData
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
 import cn.muchinfo.rma.global.database.AppDatabase
 import cn.muchinfo.rma.global.database.DataBase
@@ -24,7 +25,10 @@ import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import cn.muchinfo.rma.view.base.main.castsurely.AddCastSurelyActivity
 import cn.muchinfo.rma.view.base.main.castsurely.MyCastSurelyViewHolder
+import cn.muchinfo.rma.view.eventbus.EventConstent
+import cn.muchinfo.rma.view.eventbus.MessageEvent
 import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
+import cn.muchinfo.rma.view.eventbus.TradeMessageEvent
 import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.LogUtils
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
@@ -74,7 +78,7 @@ class PlatinumBuyOrSellUI(
     /**
      * 交易下持仓
      */
-    private val positionAdapter: BaseAdapter<ContractTradeOrderDetailData, PositionViewHolder> =
+    private val positionAdapter: BaseAdapter<ContractTradePositionData, PositionViewHolder> =
         BaseAdapter { _, _ ->
             PositionViewHolder(
                 activity,
@@ -82,6 +86,8 @@ class PlatinumBuyOrSellUI(
             )
         }
 
+
+
     fun initData(
         goodsId: String,
         outGoodsCode: String = "",
@@ -105,6 +111,7 @@ class PlatinumBuyOrSellUI(
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
         val goodsids = quoteMessageEvent.goodsid
+
         //如果推送的goodsid包含当前页面的goodsid,则进行页面刷新
         if (goodsids.contains(goodsId?.toInt())) {
             LogUtils.eTag("dasjhdkjagfkask", "行情推送" + goodsId)
@@ -115,6 +122,31 @@ class PlatinumBuyOrSellUI(
             if (quote != null) {
                 viewModel.quoteDayData.postValue(quote)
             }
+        } else{
+            /** 行情推送过来的goodsid **/
+            quoteMessageEvent.goodsid.forEach { goodid ->
+                //找到相应商品信息
+                val goodsInfo = viewModel.buyOrSellTradePositionDataList.value?.find { it.goodsid?.toInt() == goodid }
+                viewModel.buyOrSellTradePositionDataList.value?.indexOf(goodsInfo)?.let {
+                    if (it != -1) {//刷新相应item
+                        positionAdapter.notifyItemChanged(it)
+                    }
+                }
+            }
+        }
+    }
+
+    //持仓单点击消息通知
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMeesageChangeTradeId(tradeMessageEvent: TradeMessageEvent){
+        initData(goodsId = tradeMessageEvent.goodsId,buyOrSell = tradeMessageEvent.buyOrSell,outGoodsCode = tradeMessageEvent.outGoodsCode,isShowLoading = false)
+    }
+
+    //通用的消息更新通知
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMessageEvent(messageEvent : MessageEvent) {
+        if (messageEvent.messageType == EventConstent.USERACCOUNTCHANGE){//接到通知更新当前的资金账号
+            viewModel.queryContractTradePosition()
         }
     }
 

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

@@ -7,6 +7,7 @@ import androidx.viewpager.widget.PagerAdapter
 import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.data.ContractTradeOrderDetailData
+import cn.muchinfo.rma.global.data.ContractTradePositionData
 import cn.muchinfo.rma.global.data.QhjContractDetailsData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
@@ -124,7 +125,7 @@ class PositionUI(private val activity: PlatinumTradeActivity,private val viewMod
     /**
      * 持仓汇总
      */
-    private val positionAdapter: BaseAdapter<ContractTradeOrderDetailData, PositionViewHolder> =
+    private val positionAdapter: BaseAdapter<ContractTradePositionData, PositionViewHolder> =
         BaseAdapter { _, _ ->
             PositionViewHolder(
                 activity,

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

@@ -19,6 +19,7 @@ import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.eventbus.EventConstent
 import cn.muchinfo.rma.view.eventbus.MessageEvent
 import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
+import cn.muchinfo.rma.view.eventbus.TradeMessageEvent
 import com.blankj.utilcode.util.ConvertUtils
 import com.blankj.utilcode.util.LogUtils
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
@@ -161,6 +162,18 @@ class PlatinumTradeActivity : BaseActivity<PlatinumTradeViewModel>(){
         }
     }
 
+    //持仓单点击消息通知
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMeesageChangeTradeId(tradeMessageEvent: TradeMessageEvent){
+        if (tradeMessageEvent.buyOrSell == 0){
+            segment.setupWithViewPager(viewPager)
+            segment.selectTab(0)
+        }else if (tradeMessageEvent.buyOrSell == 1){
+            segment.setupWithViewPager(viewPager)
+            segment.selectTab(1)
+        }
+    }
+
     override fun onDestroy() {
         super.onDestroy()
         viewModel.removeSubscriptQuote(thisTag)

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

@@ -11,6 +11,7 @@ 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.base.BaseViewModel
+import cn.muchinfo.rma.view.base.app.Constant
 import com.blankj.utilcode.util.LogUtils
 import com.blankj.utilcode.util.TimeUtils
 import kotlinx.coroutines.GlobalScope
@@ -39,13 +40,13 @@ class PlatinumTradeViewModel : BaseViewModel() {
     /**
      * 买卖页面的持仓汇总单据
      */
-    val buyOrSellTradePositionDataList: MutableLiveData<List<ContractTradeOrderDetailData>> =
+    val buyOrSellTradePositionDataList: MutableLiveData<List<ContractTradePositionData>> =
         MutableLiveData()
 
     /**
      * 持仓页面的持仓单
      */
-    val positionUiTradePositionDataList: MutableLiveData<List<ContractTradeOrderDetailData>> =
+    val positionUiTradePositionDataList: MutableLiveData<List<ContractTradePositionData>> =
         MutableLiveData()
 
     /**
@@ -155,11 +156,11 @@ class PlatinumTradeViewModel : BaseViewModel() {
      * 持仓页汇总单viewhodler内的item点击事件
      * @param deliverygoodsid String
      */
-    fun setOnPositionUipositionItemClick(orderid : String){
+    fun setOnPositionUipositionItemClick(goodsid : String){
         val oldList = positionUiTradePositionDataList.value
-        val newDataList = arrayListOf<ContractTradeOrderDetailData>()
+        val newDataList = arrayListOf<ContractTradePositionData>()
         oldList?.forEach {
-            if (orderid == it.orderid){
+            if (goodsid == it.goodsid){
                 if (it.isClick == 0){
                     newDataList.add(it.copy(isClick = 1))
                 }else{
@@ -176,11 +177,11 @@ class PlatinumTradeViewModel : BaseViewModel() {
      * 支付页汇总单viewhodler内的item点击事件
      * @param deliverygoodsid String
      */
-    fun setOnPaypositionItemClick(orderid : String){
+    fun setOnPaypositionItemClick(goodsid : String){
         val oldList = buyOrSellTradePositionDataList.value
-        val newDataList = arrayListOf<ContractTradeOrderDetailData>()
+        val newDataList = arrayListOf<ContractTradePositionData>()
         oldList?.forEach {
-            if (orderid == it.orderid){
+            if (goodsid == it.goodsid){
                 if (it.isClick == 0){
                     newDataList.add(it.copy(isClick = 1))
                 }else{
@@ -369,11 +370,44 @@ class PlatinumTradeViewModel : BaseViewModel() {
         MyApplication.getInstance()?.contractGoodsManager?.queryContractTradePosition(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
                 buyOrSellTradePositionDataList.postValue(respData)
+                queryPositionQuoteDay(Constant.position_tag,respData ?: arrayListOf())
             }
         }
     }
 
     /**
+     * 请求盘面信息
+     * @param first Int
+     * @param last Int
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryPositionQuoteDay(
+        tag: String,
+        list : List<ContractTradePositionData>
+    ) {
+        val goodsCodes = getgoodsCodes(list)
+        val params = mutableMapOf<String, String>().apply {
+            put("goodsCodes", goodsCodes)
+        }
+        MyApplication.getInstance()?.futureManager?.queryQuoteDay(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+
+            }
+        }
+
+        addSubscriptQuote(tag = tag, goodsCodes = setOf(goodsCodes))
+    }
+
+    //订阅当前持仓汇总的行情
+    fun getgoodsCodes(list : List<ContractTradePositionData>): String {
+        var goodsCodes = ""
+        list?.forEach {
+            goodsCodes = goodsCodes + it.goodscode + "," //+ DataBase.getInstance().goodsInfoDao().getGoodsInfo(it.relatedgoodsid).goodscode + ","
+        }
+        return goodsCodes
+    }
+
+    /**
      * 买卖页面查询持仓汇总单
      */
     fun queryPositionUIContractTradePosition() {

+ 172 - 44
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PositionViewHolder.kt

@@ -1,147 +1,275 @@
 package cn.muchinfo.rma.view.base.platinumtreasure.trade
 
 import android.content.Intent
+import android.os.Build
 import android.view.Gravity
 import android.view.View
+import android.widget.TextView
+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.ContractTradeOrderDetailData
+import cn.muchinfo.rma.global.data.ContractTradePositionData
 import cn.muchinfo.rma.global.database.DataBase
+import cn.muchinfo.rma.global.toPercentage
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.autoSize
 import cn.muchinfo.rma.view.autoWidget.onThrottleFirstClick
 import cn.muchinfo.rma.view.autoWidget.textColorInt
 import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+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 cn.muchinfo.rma.view.base.home.spotmarket.AddSpotMarketPriceActivity
-import cn.muchinfo.rma.view.base.home.spotmarket.SpotMarketDetailsActivity
 import cn.muchinfo.rma.view.base.main.pickup.PickUpGoodsActivity
+import cn.muchinfo.rma.view.eventbus.EventConstent
+import cn.muchinfo.rma.view.eventbus.TradeMessageEvent
 import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
-import mtp.polymer.com.autowidget.dialog.createWarningDialog
+import org.greenrobot.eventbus.EventBus
 import org.jetbrains.anko.*
 
-class PositionViewHolder(private val activity : AppCompatActivity,private val viewModel: PlatinumTradeViewModel) : BaseViewHolder<ContractTradeOrderDetailData>(activity){
+class PositionViewHolder(
+    private val activity: AppCompatActivity,
+    private val viewModel: PlatinumTradeViewModel
+) : BaseViewHolder<ContractTradePositionData>(activity) {
+
+    //盈亏比例
+    lateinit var proportion_Text : TextView
+
+    //成本价
+    lateinit var cost_price_text : TextView
 
     override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
 
+    @RequiresApi(Build.VERSION_CODES.O)
     override fun _FrameLayout.createContentView() {
         verticalLayout {
             onThrottleFirstClick {
-                viewModel.setOnPaypositionItemClick(data.value?.orderid ?: "")
+                viewModel.setOnPaypositionItemClick(data.value?.goodsid ?: "")
+
             }
             linearLayout {
                 verticalLayout {
                     gravity = Gravity.CENTER
                     //市值
                     textView {
-                        data.bindOptional(context){
+                        data.bindOptional(context) {
                             text = it?.goodsname
                         }
                         textSizeAuto = 29
+                        maxLines = 2
+                        setAutoSizeTextTypeWithDefaults(TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM)
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(15)
+                        marginStart = autoSize(36)
                     }
 
                     textView {
-                        data.bindOptional(context){
-                            val goodsInfoData = DataBase.getInstance().goodsInfoDao().getGoodsInfo(it?.goodsid?.toInt() ?: 0)
-                            val quoteDayData = GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find {data ->
-                                data.outgoodscode == goodsInfoData.outgoodscode
-                            }
-
+                        data.bindOptional(context) {
+                            val goodsInfoData = DataBase.getInstance().goodsInfoDao()
+                                .getGoodsInfo(it?.goodsid?.toInt() ?: 0)
+                            val quoteDayData =
+                                GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { data ->
+                                    data.outgoodscode == goodsInfoData.goodscode
+                                }?.quoteDayData
+                            text = quoteDayData?.ask?.times(
+                                it?.curpositionqty?.toDouble()?.div(
+                                    Math.pow(
+                                        10.0,
+                                        goodsInfoData.qtydecimalplace.toDouble() ?: 2.0
+                                    )
+                                ) ?: 0.0
+                            ).toString()
+//                            if (it?.buyorsell == "0"){//买
+//
+//                            }else{//卖
+//                                text = quoteDayData?.bid?.times(it?.tradeqty?.toDouble()?.div(Math.pow(10.0,goodsInfoData.qtydecimalplace.toDouble() ?: 2.0)) ?: 0.0).toString()
+//                            }
                         }
-                        text = "16081.25"
+
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(10)
                     }
-                }.lparams(0, autoSize(143),1f)
+                }.lparams(0, autoSize(143), 1f)
                 verticalLayout {
                     gravity = Gravity.CENTER
                     textView {
-                        text = "10"
+                        data.bindOptional(context) {
+                            val goodsInfoData = DataBase.getInstance().goodsInfoDao()
+                                .getGoodsInfo(it?.goodsid?.toInt() ?: 0)
+                            val quoteDayData =
+                                GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { data ->
+                                    data.outgoodscode == goodsInfoData.goodscode
+                                }?.quoteDayData
+
+
+                            val costPrice = NumberUtils.roundNum(it?.curholderamount?.toDouble()?.div(it?.curpositionqty?.toDouble()?.div(Math.pow(10.0,goodsInfoData?.qtydecimalplace?.toDouble() ?: 2.0)) ?: 1.0)?.div(goodsInfoData.agreeunit?.toDouble() ?: 1.0).toString(),0)
+                            cost_price_text.text = costPrice//赋值成本价
+                            var differencePrice = 0.0
+
+                            if (it?.buyorsell == "0"){
+                                differencePrice = quoteDayData?.ask?.minus(costPrice?.toDouble() ?: 0.0) ?: 0.0
+                            }else{
+                                differencePrice = quoteDayData?.bid?.minus(costPrice?.toDouble() ?: 0.0) ?: 0.0
+                            }
+
+                            if (differencePrice > 0){
+                                textColorInt = R.color.rma_red_color
+                                proportion_Text.textColorInt = R.color.rma_red_color
+                                proportion_Text.text = 1.minus(costPrice?.toDouble()?.minus(differencePrice)?.div(costPrice?.toDouble()) ?: 0.0)?.toString()?.toPercentage()
+                            }else if (differencePrice < 0){
+                                textColorInt = R.color.rma_green_color
+                                proportion_Text.textColorInt = R.color.rma_green_color
+                                proportion_Text.text = 1.minus(costPrice?.toDouble()?.plus(differencePrice)?.div(costPrice?.toDouble()) ?: 0.0)?.toString()?.toPercentage()
+                            }else{
+                                textColorInt = R.color.rma_black_33
+                                proportion_Text.textColorInt = R.color.rma_black_33
+                                proportion_Text.text = "0.0%"
+                            }
+
+                            text = NumberUtils.roundNum(differencePrice.times(it?.curpositionqty?.toDouble()?.div(Math.pow(
+                                10.0,
+                                goodsInfoData.qtydecimalplace.toDouble()
+                            )) ?: 0.0).toString(),2)
+
+
+                        }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_red_color
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(15)
                     }
 
                     textView {
-                        text = "16.25%"
+                        proportion_Text = this
                         textSizeAuto = 31
                         textColorInt = R.color.rma_red_color
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(10)
                     }
-                }.lparams(0, autoSize(143),1f)
+                }.lparams(0, autoSize(143), 1f)
                 verticalLayout {
                     gravity = Gravity.RIGHT
                     textView {
-                        text = "10g"
+                        data.bindOptional(context) {
+                            val goodsInfoData = DataBase.getInstance().goodsInfoDao()
+                                .getGoodsInfo(it?.goodsid?.toInt() ?: 0)
+                            text = NumberUtils.roundNum(
+                                it?.curpositionqty?.toDouble()?.div(
+                                    Math.pow(
+                                        10.0,
+                                        goodsInfoData.qtydecimalplace?.toDouble() ?: 2.0
+                                    )
+                                )?.toString(), 0
+                            )
+                        }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(15)
                     }
 
                     textView {
-                        text = "10g"
+                        data.bindOptional(context) {
+                            val goodsInfoData = DataBase.getInstance().goodsInfoDao()
+                                .getGoodsInfo(it?.goodsid?.toInt() ?: 0)
+                            text = NumberUtils.roundNum(
+                                it?.enableqty?.toDouble()?.div(
+                                    Math.pow(
+                                        10.0,
+                                        goodsInfoData.qtydecimalplace?.toDouble() ?: 2.0
+                                    )
+                                )?.toString(), 0
+                            )
+                        }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(10)
                     }
-                }.lparams(0, autoSize(143),1f)
+                }.lparams(0, autoSize(143), 1f)
                 verticalLayout {
                     gravity = Gravity.RIGHT
+                    //成本价
                     textView {
-                        text = "360"
+                        cost_price_text = this
+//                        data.bindOptional(context) {
+//                            val goodsInfoData = DataBase.getInstance().goodsInfoDao()
+//                                .getGoodsInfo(it?.goodsid?.toInt() ?: 0)
+//                            val quoteDayData =
+//                                GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { data ->
+//                                    data.outgoodscode == goodsInfoData.goodscode
+//                                }?.quoteDayData
+//                            text = NumberUtils.roundNum(it?.curholderamount?.toDouble()?.div(it?.curpositionqty?.toDouble()?.div(Math.pow(10.0,goodsInfoData?.qtydecimalplace?.toDouble() ?: 2.0)) ?: 1.0)?.div(goodsInfoData.agreeunit?.toDouble() ?: 1.0).toString(),0)
+//                        }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(15)
                         marginEnd = autoSize(30)
                     }
 
                     textView {
-                        text = "360"
+                        data.bindOptional(context) {
+                            val goodsInfoData = DataBase.getInstance().goodsInfoDao()
+                                .getGoodsInfo(it?.goodsid?.toInt() ?: 0)
+                            val quoteDayData =
+                                GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { data ->
+                                    data.outgoodscode == goodsInfoData.goodscode
+                                }?.quoteDayData
+                            if (it?.buyorsell == "0") {//买
+                                text = quoteDayData?.ask?.toString()
+                            } else {//卖
+                                text = quoteDayData?.bid?.toString()
+                            }
+                        }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_red_color
-                    }.lparams(wrapContent, wrapContent){
+                    }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(10)
                         marginEnd = autoSize(30)
                     }
-                }.lparams(0, autoSize(143),1f)
+                }.lparams(0, autoSize(143), 1f)
             }.lparams(matchParent, autoSize(143))
 
             itemView()
 
             // 控制区
             linearLayout {
-               data.bindOptional(context){
-                   if (it?.isClick == 1){
-                       visibility = View.VISIBLE
-                   }else{
-                       visibility = View.GONE
-                   }
-               }
+                data.bindOptional(context) {
+                    if (it?.isClick == 1) {
+                        visibility = View.VISIBLE
+                    } else {
+                        visibility = View.GONE
+                    }
+                }
                 gravity = Gravity.CENTER_VERTICAL
 
                 emptyView()
 
                 textView {
-
+                    data.bindOptional(context){
+                        if (it?.buyorsell == "0"){
+                            text = "卖出"
+                        }else{
+                            text = "买入"
+                        }
+                    }
                     onThrottleFirstClick {
-
+                        EventBus.getDefault().post(
+                            TradeMessageEvent(
+                                messageType = EventConstent.TRADEGOODSID,
+                                goodsId = data.value?.goodsid.toString(),
+                                buyOrSell = data.value?.buyorsell?.toInt() ?: 0,
+                                outGoodsCode = data.value?.goodscode ?: ""
+                            )
+                        )
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
-                    text = "卖出"
                     textColorInt = R.color.rma_item_click_color
                     textSizeAuto = 26
                 }.lparams(autoSize(120), autoSize(48)) {
@@ -165,8 +293,8 @@ class PositionViewHolder(private val activity : AppCompatActivity,private val vi
                 textView {
                     onThrottleFirstClick {
                         val intent = Intent()
-                        intent.putExtra("data",data.value)
-                        intent.setClass(context,PickUpGoodsActivity::class.java)
+                        intent.putExtra("data", data.value)
+                        intent.setClass(context, PickUpGoodsActivity::class.java)
                         ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg

+ 18 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/qhjhome/QhjHomeFragment.kt

@@ -40,7 +40,9 @@ import cn.muchinfo.rma.view.base.home.spotmarket.SpotMarketPriceActivity
 import cn.muchinfo.rma.view.base.home.tradingquery.TradingQueryActivity
 import cn.muchinfo.rma.view.base.home.warehouse.WarehouseInformationActivity
 import cn.muchinfo.rma.view.base.main.PayActivity
+import cn.muchinfo.rma.view.base.main.castsurely.MyCastSurelyActivity
 import cn.muchinfo.rma.view.base.main.withdrawmanagement.WithdrawalActivity
+import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatnumMoneyActivity
 import cn.muchinfo.rma.view.eventbus.EventConstent
 import cn.muchinfo.rma.view.eventbus.MessageEvent
 import com.blankj.utilcode.util.ActivityUtils
@@ -191,7 +193,7 @@ class QhjHomeFragment : BaseFragment<QhjHomeViewModel>() {
             // FIXME: - test
 //            viewModel.login()
             viewModel.getBanner()
-
+            viewModel.initAccountData()
             verticalLayout {
                 linearLayout {
                     background = resources.getDrawable(R.color.main_title_bg_color)
@@ -305,7 +307,12 @@ class QhjHomeFragment : BaseFragment<QhjHomeViewModel>() {
 //                                    }
                                     verticalLayout {
                                         onThrottleFirstClick {
-
+                                            val intent = Intent()
+                                            intent.setClass(
+                                                context,
+                                                TradingQueryActivity::class.java
+                                            )
+                                            ActivityUtils.startActivity(intent)
                                         }
                                         imageView {
                                             imageResource = R.mipmap.qhj_trading_query
@@ -360,7 +367,12 @@ class QhjHomeFragment : BaseFragment<QhjHomeViewModel>() {
 //                                        visibility = View.GONE
 //                                    }
                                     onThrottleFirstClick {
-
+                                        val intent = Intent()
+                                        intent.setClass(
+                                            context,
+                                            MyCastSurelyActivity::class.java
+                                        )
+                                        ActivityUtils.startActivity(intent)
                                     }
                                     imageView {
                                         imageResource = R.mipmap.qhj_cast_surely_management
@@ -386,7 +398,9 @@ class QhjHomeFragment : BaseFragment<QhjHomeViewModel>() {
 //                                    }
                                     verticalLayout {
                                         onThrottleFirstClick {
-
+                                            val intent = Intent()
+                                            intent.setClass(context, PlatnumMoneyActivity::class.java)
+                                            ActivityUtils.startActivity(intent)
                                         }
                                         imageView {
                                             imageResource = R.mipmap.qhj_money_information

+ 22 - 0
RMA/app/src/main/res/layout/view_countdowntime.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<cn.iwgang.countdownview.CountdownView
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    app:isHideTimeBackground="true"
+    app:isShowDay="false"
+    app:isShowHour="true"
+    app:isShowMinute="true"
+    app:isShowSecond="true"
+    app:isShowMillisecond="false"
+    app:timeTextColor="#FF2F2C"
+    app:timeBgColor="#333333"
+    app:timeTextSize="16sp"
+    app:isTimeTextBold="true"
+    app:suffixGravity="bottom"
+    app:suffixTextColor="#FF2F2C"
+    app:suffixTextSize="6sp"
+    app:suffixDay="天"
+    app:suffixHour=":"
+    app:suffixMinute=":"
+    xmlns:android="http://schemas.android.com/apk/res/android" />