lmw
2025-03-14 81d91378a2a726dcfffec74ce7cda43486806b77
fix bug
1 文件已重命名
37个文件已修改
2个文件已删除
35个文件已添加
2491 ■■■■ 已修改文件
ChipsLayoutManager/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/release/output.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/release/xianning-1.95-2025-03-14.apk 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/BaseDialogFragment.kt 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/Const.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/MyApplication.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/ShareActivity.kt 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/gaode/BaiduUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/base/gaode/gpsnav/BaiduNaviActivity.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/InviteInfo.kt 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/InviteRecord.kt 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/MajorMoneyBean.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/NoticeBean.kt 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/OrderBean.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/OrderListBean.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/WalletRecord.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/WithdrawDetails.kt 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/bean/WxpayBean.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/netUtls/Api.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/adapter/InviteRecordAdapter.kt 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/adapter/MainAdapter.kt 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/adapter/WalletRecordAdapter.kt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/adapter/WithdrawRecordAdapter.kt 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/main/BaseDialogFragment.kt 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/main/MainActivity.kt 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/main/OrderOverActivity.kt 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/main/major/MajorMoneyDetailActivity.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/main/major/MajorSureMoneyOfflineActivity.kt 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/InviteActivity.kt 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/InviteRecordActivity.kt 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/InviteRecordFragment.kt 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/MineActivity.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/RechargeActivity.kt 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/WalletActivity.kt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/WithdrawDetailActivity.kt 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/WithdrawOfflineActivity.kt 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/WithdrawRecordFragment.kt 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/ui/mine/setting/SettingActivity.kt 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/utils/glide/GlideUtil.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/utils/view/DateFilterDialog.kt 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xianning/driver/wxapi/WXPayEntryActivity.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/bg_blue_line_4.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/bg_gray_line_4.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/bg_white_grayline_4.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/bg_white_line_20.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_invite.xml 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_invite_record.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_major_money_detail.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_mine.xml 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_order_over.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_sure_money_off.xml 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_withdraw_details.xml 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_withdraw_offline.xml 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_filter_date.xml 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_notice.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_invite.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_withdraw.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_share.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_btn.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_invite.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_date.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_date_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_dialog_close.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_irrow_date.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/invite.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/invite_t1.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
easyfloat/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rxnetty/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldUtils/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldUtils/src/main/java/cn/sinata/xldutils/utils/TimeUtils.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ChipsLayoutManager/build.gradle
@@ -36,7 +36,7 @@
    testBuildType "debug"
    defaultConfig {
        minSdkVersion 21
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 10
        versionName "1.0.1"
app/build.gradle
@@ -23,9 +23,9 @@
    defaultConfig {
        applicationId "com.xianning.driver"
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 12
        versionName "1.7"
        targetSdkVersion 30
        versionCode 18
        versionName "1.95"
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -49,7 +49,6 @@
                abiFilters "armeabi-v7a", "arm64-v8a" // 保留这种架构的CPU
            }
            applicationVariants.all { variant ->
                // 更新至Android Studio 3.3 gradle 4.10.1
                variant.outputs.all {
                    outputFileName = "xianning-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk"
                }
@@ -123,12 +122,11 @@
    implementation 'com.google.zxing:core:3.3.0'
    implementation 'cn.jiguang.sdk:jpush:3.6.6'  // 此处以JPush 3.6.6 版本为例。
    implementation 'cn.jiguang.sdk:jcore:2.3.8'  // 此处以JCore 2.3.8 版本为例。
//    implementation 'com.tencent.bugly:crashreport:3.1.0'
//    implementation 'com.tencent.bugly:nativecrashreport:3.1.0'
    implementation project(path: ':ChipsLayoutManager')
    //http日志拦截器
    implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
    implementation project(path: ':easyfloat')
    implementation 'com.tencent.bugly:crashreport:latest.release' //tx bugly
    implementation 'com.baidu.lbsyun:BaiduMapSDK_Location_All:9.6.4'
    implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.9'
@@ -139,4 +137,4 @@
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'com.airbnb.android:lottie:3.6.0'
}
}
app/release/output.json
@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":12,"versionName":"1.7","enabled":true,"outputFile":"xianning-1.7-2025-01-14.apk","fullName":"release","baseName":"release","dirName":""},"path":"xianning-1.7-2025-01-14.apk","properties":{}}]
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":18,"versionName":"1.95","enabled":true,"outputFile":"xianning-1.95-2025-03-14.apk","fullName":"release","baseName":"release","dirName":""},"path":"xianning-1.95-2025-03-14.apk","properties":{}}]
app/release/xianning-1.95-2025-03-14.apk
Binary files differ
app/src/main/AndroidManifest.xml
@@ -47,13 +47,11 @@
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <application
        android:name="com.xianning.driver.base.MyApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
@@ -130,9 +128,6 @@
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="8c5529a431322b2237c263055d561eb6" />
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
@@ -157,7 +152,12 @@
        <activity android:name=".ui.mine.WithdrawRecordActivity" />
        <activity android:name=".ui.mine.WalletRecordActivity" />
        <activity android:name=".ui.main.CallOrderActivity" />
        <activity android:name=".base.gaode.gpsnav.BaiduNaviActivity" /> <!-- 微信 -->
        <activity android:name=".base.gaode.gpsnav.BaiduNaviActivity" />
        <activity android:name=".ui.main.major.MajorSureMoneyOfflineActivity" />
        <activity android:name=".ui.mine.WithdrawOfflineActivity" />
        <activity android:name=".ui.mine.WithdrawDetailActivity" />
        <activity android:name=".ui.mine.InviteActivity" />
        <activity android:name=".ui.mine.InviteRecordActivity" /> <!-- 微信 -->
        <!-- Since JCore2.0.0 Required SDK核心功能-->
        <!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false -->
app/src/main/java/com/xianning/driver/base/BaseDialogFragment.kt
New file
@@ -0,0 +1,88 @@
package com.xianning.driver.base
import android.os.Bundle
import android.os.CountDownTimer
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.R
abstract class BaseDialogFragment : DialogFragment() {
    abstract fun setContentView(): Int
    abstract fun setGravity(): Int
    abstract fun initView()
    var isFirstResume = true
    var canceledOnTouchOutside = true
    var mCancelable = true;
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(setContentView(), container, false)
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(
            STYLE_NO_FRAME,
            if (setGravity() == Gravity.CENTER) R.style.FadeDialog else R.style.Dialog
        )
    }
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        dialog?.window?.setGravity(setGravity())
        dialog?.setCanceledOnTouchOutside(canceledOnTouchOutside)
        isCancelable = mCancelable
    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initView()
    }
    /**
     * 显示键盘
     *
     * @param et 输入焦点
     */
    fun showInput(et: EditText) {
        et.postDelayed({
            et.requestFocus()
            val imm =
                requireContext().getSystemService(AppCompatActivity.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT)
        }, 200)
    }
    override fun onStop() {
        super.onStop()
        dialog?.window?.setWindowAnimations(0) //阻止二次动画
    }
    override fun onResume() {
        super.onResume()
        if (isFirstResume)
            isFirstResume = false
        else
            object : CountDownTimer(500, 500) {
                override fun onTick(millisUntilFinished: Long) {
                }
                override fun onFinish() {
                    dialog?.window?.setWindowAnimations(if (setGravity() == Gravity.CENTER) R.style.FadeDialog else R.style.Dialog)
                }
            }.start()
    }
}
app/src/main/java/com/xianning/driver/base/Const.java
@@ -20,15 +20,6 @@
    public static String endpoint = "oss-cn-wuhan-lr.aliyuncs.com";
    //手动请求权限列表
    public static String permissions_write = "android.permission.WRITE_EXTERNAL_STORAGE";
    public static String permissions_camera = "android.permission.CAMERA";
    //    地图
    public static String permissions_location_fine = "android.permission.ACCESS_FINE_LOCATION";
    public static String permissions_location_coarse = "android.permission.ACCESS_COARSE_LOCATION";
    public static String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";
    public static String[] PERMISSIONS_LIST = {Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.READ_PHONE_STATE
            , Manifest.permission.WRITE_EXTERNAL_STORAGE
app/src/main/java/com/xianning/driver/base/MyApplication.kt
@@ -28,6 +28,7 @@
import com.xianning.driver.utils.Cache.CacheUtil
import com.xianning.driver.utils.LogUtils
import com.google.gson.Gson
import com.tencent.bugly.crashreport.CrashReport
import com.umeng.commonsdk.UMConfigure
import com.umeng.socialize.PlatformConfig
import com.xuexiang.xui.XUI
@@ -67,6 +68,7 @@
        SDKInitializer.setAgreePrivacy(this,true)
        SDKInitializer.initialize(this)
        SDKInitializer.setCoordType(CoordType.BD09LL)
        CrashReport.initCrashReport(this, "aef1d069f7", true)
    }
    fun initPersionDate(){
@@ -77,8 +79,7 @@
                UMConfigure.DEVICE_TYPE_PHONE,
                ""
        )
        PlatformConfig.setWeixin("wx484d3afa3d9f8251", "cf21c4d18ef5afa174d9fecec3e7359b")
        PlatformConfig.setQQZone("1105920536", "bx7zWrVgTskXHZTr") //qq互联
        PlatformConfig.setWeixin("wxf6dbaef77a7d3b91", "7b3f7f7091da783cb4c6531f42d9915b")
        JPushInterface.setDebugMode(true)
        JPushInterface.init(this)
        setAlisa()
app/src/main/java/com/xianning/driver/base/ShareActivity.kt
File was deleted
app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt
@@ -41,11 +41,12 @@
        //设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKillProcess(true)
        option.SetIgnoreCacheException(false);
        option.setIsNeedAddress(true)
        //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
        option.setCoorType("bd09ll")
        //可选,设置是否收集Crash信息,默认收集,即参数为false
        mLocationClient?.setLocOption(option)
        mLocationClient?.registerLocationListener(lisener)
        mLocationClient?.start()
        return mLocationClient
    }
@@ -79,7 +80,7 @@
    }
    fun drawLine(context: Context, aMap: BaiduMap, points: List<LatLng>?): Overlay {
    fun drawLine(context: Context, aMap: BaiduMap, points: List<LatLng>?): Overlay? {
        val latLngs: MutableList<LatLng> = ArrayList()
        latLngs.addAll(points?: arrayListOf())
        //设置折线的属性
@@ -89,12 +90,14 @@
            .points(latLngs)
        //在地图上绘制折线
        //mPloyline 折线对象
        return aMap.addOverlay(mOverlayOptions)
        if (aMap!=null)
            return aMap.addOverlay(mOverlayOptions)
        return null
    }
    fun moveCamera(aMap: BaiduMap, latlng: LatLng) {
        val mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latlng)
        aMap.animateMapStatus(mapStatusUpdate,16)
        aMap.animateMapStatus(mapStatusUpdate,8)
    }
    fun moveCamera(aMap: BaiduMap, start: LatLng?, end: LatLng?) {
app/src/main/java/com/xianning/driver/base/gaode/BaiduUtils.java
@@ -44,7 +44,7 @@
                        DrivingRouteLine.DrivingStep steps = drivingRouteLine.getAllStep().get(i);
                        latLngs.addAll(steps.getWayPoints());
                    }
                    callback.onGetDrivingRouteResult(latLngs,(float) drivingRouteLine.getDistance(), drivingRouteLine.getDuration());
                    callback.onGetDrivingRouteResult(latLngs,(float) drivingRouteLine.getDistance(), drivingRouteLine.getDuration()/60);
                }
                mSearch.destroy();
            }
app/src/main/java/com/xianning/driver/base/gaode/gpsnav/BaiduNaviActivity.kt
@@ -25,6 +25,8 @@
        val fullScreen: Boolean = supportFullScreen()
        val params = Bundle()
        params.putBoolean(BNaviCommonParams.ProGuideKey.IS_SUPPORT_FULL_SCREEN, fullScreen)
        // IS_REALNAVI代表导航类型,true表示真实导航,false表示模拟导航,默认是true
//        params.putBoolean(BNaviCommonParams.ProGuideKey.IS_REALNAVI, false)
        mRouteGuideManager = BaiduNaviManagerFactory.getRouteGuideManager()
        val config = BNGuideConfig.Builder()
            .params(params)
app/src/main/java/com/xianning/driver/bean/InviteInfo.kt
New file
@@ -0,0 +1,12 @@
package com.xianning.driver.bean
data class InviteInfo(
    val code: Int,
    val `data`: InviteInfoData,
    val msg: String
)
data class InviteInfoData(
    val code: String,
    val inviteNumber: String
)
app/src/main/java/com/xianning/driver/bean/InviteRecord.kt
New file
@@ -0,0 +1,17 @@
package com.xianning.driver.bean
data class InviteRecord(
    val code: Int,
    val `data`: List<InviteData>,
    val msg: String
)
data class InviteData(
    val avatar: String,
    val id: Int,
    val inviteUserId: Int,
    val phone: String,
    val registerTime: String,
    val userId: Int,
    val userType: Int
)
app/src/main/java/com/xianning/driver/bean/MajorMoneyBean.java
@@ -60,6 +60,7 @@
        private double mileageMoney;
        private double orderMoney;
        private double parkMoney;
        public double platformFee;
        private double redPacketMoney;
        private double roadTollMoney;
        private double startMoney;
app/src/main/java/com/xianning/driver/bean/NoticeBean.kt
New file
@@ -0,0 +1,27 @@
package com.xianning.driver.bean
data class NoticeBean(
    val code: Int,
    val `data`: List<NoticeData>,
    val msg: String
)
data class NoticeData(
    val content: String,
    val flag: String,
    val id: String,
    val imgUrl: String,
    val insertTime: String,
    val insertUser: Int,
    val isAlert: Int,
    val isBroadcast: String,
    val isDelete: Int,
    val isDriver: Int,
    val isShow: Int,
    val isUser: Int,
    val sort: String,
    val title: String,
    val type: Int,
    val updateTime: String,
    val updateUser: String
)
app/src/main/java/com/xianning/driver/bean/OrderBean.java
@@ -66,7 +66,7 @@
        private  Double orderMoney;
        private String orderName;
        private Integer orderState;
        private Integer payManner;
        private Integer payManner; //1.线上  2.线下 3.打表
        private String phone;
        private String startAddress;
        private Double startDistance;
app/src/main/java/com/xianning/driver/bean/OrderListBean.java
@@ -59,6 +59,7 @@
        private String time;
        private int type;
        public int isBack; //1已投诉
        public int payManner;
        private String remark;
        private String peopleNumber;
        private String cargoNumber;
app/src/main/java/com/xianning/driver/bean/WalletRecord.kt
@@ -11,4 +11,28 @@
    val createTime: String,
    val money: Double,
    val state: String
)
data class WithdrawBean(
    val code: Int,
    val `data`: WithdrawData,
    val msg: String
)
data class WithdrawData(
    val rows: List<Row>,
    val total: String
)
data class Row(
    val id: String,
    val openBank: String,
    val receiptVoucher: String,
    val receivePaymentAccount: String,
    val receivePaymentName: String,
    val remark: String,
    val status: Int,
    val withdrawalMoney: Double,
    val withdrawalTime: String,
    val withdrawalType: Int
)
app/src/main/java/com/xianning/driver/bean/WithdrawDetails.kt
New file
@@ -0,0 +1,19 @@
package com.xianning.driver.bean
data class WithdrawDetails(
    val code: Int,
    val `data`: WithdrawDetailsData,
    val msg: String
)
data class WithdrawDetailsData(
    val openBank: String,
    val receiptVoucher: String,
    val receivePaymentAccount: String,
    val receivePaymentName: String,
    val remark: String,
    val status: Int,
    val withdrawalMoney: Double,
    val withdrawalTime: String,
    val withdrawalType: Int
)
app/src/main/java/com/xianning/driver/bean/WxpayBean.java
New file
@@ -0,0 +1,32 @@
package com.xianning.driver.bean;
public class WxpayBean {
    /**
     * code : 0
     * data : {"amount":0,"content":"string","id":0,"lat":0,"lon":0,"minute":0,"name":"string","number":0}
     * msg : string
     */
    private int code;
    public OrderPayBean data;
    private String msg;
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
}
app/src/main/java/com/xianning/driver/netUtls/Api.java
@@ -7,11 +7,13 @@
 */
public class Api {
//    http://120.220.4.60:8190/user/base/taxi/udeskTaxiOrder  http://120.220.4.60:8190/user/base/taxi/udeskTaxiOrder
//    public static final String BASE_URL = "http://192.168.110.111:7777/driver-server/";
//    http://120.220.4.60:8190/user/base/taxi/udeskTaxiOrder
//    public static final String BASE_URL = "http://192.168.110.64:7777/driver-server/";//周帅内
//    public static final String BASE_URL = "http://221.182.45.100:7777/driver-server/"; //内网映射
    public static final String BASE_URL = "https://xn95128.cn/driver/";
    //    public static final String SOCKET_SERVER = "192.168.110.111";
//        public static final String SOCKET_SERVER = "221.182.45.100";
//        public static final String SOCKET_SERVER = "192.168.110.64";
    public static final String SOCKET_SERVER = "36.134.221.234";
    public static final int SOCKET_PORT = 9977;
    public static final int SUCCESS = 200;
@@ -32,7 +34,7 @@
    public static String updateDriver = "base/driver/updateDriver"; //api/driver/updateDriver 司机注册后完善个人信息
    public static String companyList = "base/driver/companyList";
    /***
    /**
     * 首页
     */
    public static String queryHomeData = "api/driver/queryHomeData"; ///api/driver/queryHomeData获取首页统计数据
@@ -47,11 +49,10 @@
    public static String queryHistoryActivityInfo = "api/driver/queryHistoryActivityInfo"; //api/driver/queryHistoryActivityInfo 获取历史日期中的活动内容
    public static String queryNeedCertificate = "base/driver/queryNeedCertificate"; //base/driver/queryNeedCertificate 注册完善个人信息根据选择的从业地判断是否需要网约车资格证
    /***
    /**
     * 订单中
     */
    public static String queryOrderInfo = "api/order/queryOrderInfo"; ///api/order/queryOrderInfo 获取服务中页面订单详情
    public static String reassign = "api/order/reassign"; ///api/order/reassign 提交改派申请
    public static String process = "api/order/process"; //api/order/process司机走流程操作api/order/process司机走流程操作
    public static String confirmFees = "api/order/confirmFees"; //api/order/confirmFees 司机确认费用
    public static String orderStateSocket = "api/netty/orderStateSocket"; ///api/netty/orderStateSocket 主动调用获取订单状态
@@ -59,7 +60,7 @@
    public static String addCancelOrder = "api/order/addCancelOrder";
    public static String setOrderCrossCitySort = "api/orderCrossCity/setOrderCrossCitySort"; ///api/orderCrossCity/setOrderCrossCitySort 修改订单顺序(跨城)
    /***
    /**
     * 消息
     */
    public static String queryNotices = "api/systemNotice/queryNotices"; ///api/systemNotice/queryNotices= 获取系统消息和公告
@@ -67,7 +68,7 @@
    public static String clearSystemNotice = "api/systemNotice/clearSystemNotice"; //api/systemNotice/clearSystemNotice 清除所有消息或公告
    /***
    /**
     * 个人中心
     */
    public static String queryInfo = "api/driver/queryInfo"; //api/driver/queryInfo 获取个人中心详情
@@ -75,6 +76,7 @@
    public static String feedback = "api/feedback/feedback"; //api/feedback/feedback 提交反馈意见
    public static String querySetOrders = "api/driver/querySetOrders"; //api/driver/querySetOrders 获取设置接单的业务类型列表
    public static String updateOrders = "api/driver/updateOrders"; //api/driver/updateOrders 设置接单规则
    public static String addWithdrawal = "api/withdrawal/addWithdrawal";
    public static String queryMyCar = "api/driver/queryMyCar"; //api/driver/queryMyCar获取当前车辆及空闲车辆
    public static String queryAllBrand = "api/car/queryAllBrand"; //api/car/queryAllBrand 获取所有车辆品牌
@@ -95,7 +97,7 @@
    public static String reservation = "api/line/reservation"; //api/line/reservation 预约/取消预约
    public static String reassignOrderCrossCityReassign = "api/orderCrossCity/reassignOrderCrossCityReassign"; ///api/orderCrossCity/reassignOrderCrossCityReassign 提交改派申请(跨城)
    /***
    /**
     * card
     */
    public static String queryBankCard = "api/bankCard/queryBankCard"; ///api/bankCard/queryBankCard 获取银行卡号列表
@@ -124,6 +126,16 @@
    public static String out = "api/zion/out"; //微信提现操作
    public static String hisory = "api/zion/order/hisory"; //历史记录
    public static String backreson = "api/zion/order/backreson"; //反馈详情
    public static String queryList = "api/withdrawal/queryList";
    public static String queryDetailById = "api/withdrawal/queryDetailById";
    /**
     * 咸宁新增
     */
    public static String getCode = "api/user/getCode"; //获取用户邀请二维码
    public static String inviteList = "api/user/inviteList"; //获取用户邀请记录
    public static String confirm = "api/order/confirm"; //司机手动确认收款
    public static String allert = "api/user/allert"; //首页弹窗
}
app/src/main/java/com/xianning/driver/ui/adapter/InviteRecordAdapter.kt
New file
@@ -0,0 +1,22 @@
package com.xianning.driver.ui.adapter
import android.view.View
import com.xianning.driver.R
import com.xianning.driver.base.BaseRvAdapter
import com.xianning.driver.base.BaseViewHolder
import com.xianning.driver.base.MyApplication
import com.xianning.driver.bean.InviteData
import com.xianning.driver.utils.glide.GlideUtil
import kotlinx.android.synthetic.main.item_invite.view.*
class InviteRecordAdapter : BaseRvAdapter<InviteData>() {
    override fun getLayoutResId(viewType: Int) = R.layout.item_invite
    override fun onBindItem(holder: BaseViewHolder, view: View, item: InviteData) {
        holder.itemView?.apply {
            GlideUtil.loady2(MyApplication.getInstance(),item.avatar,iv_head)
            tv_phone.text = item.phone
            tv_time.text = item.registerTime.substring(0,16)
        }
    }
}
app/src/main/java/com/xianning/driver/ui/adapter/MainAdapter.kt
@@ -11,6 +11,7 @@
import com.xianning.driver.ui.main.OrderOverActivity
import com.xianning.driver.ui.main.TripActivity
import com.xianning.driver.ui.main.major.MajorSureMoneyActivity
import com.xianning.driver.ui.main.major.MajorSureMoneyOfflineActivity
import com.xianning.driver.ui.mine.ComplainOrderActivity
import kotlinx.android.synthetic.main.item_main_list.view.*
import org.jetbrains.anko.startActivity
@@ -89,11 +90,16 @@
                                context.startActivity<TripActivity>("orderId" to item.id.toString() , "orderType" to item.type.toString())
                            }
                            6 ->{
                                if (item.type.toString() == "1"){
//                                if (item.type.toString() == "1"){
//                                    context.startActivity<MajorSureMoneyActivity>("orderId" to item.id.toString() , "orderType" to item.type.toString())
//                                }
//                                if (item.type.toString() == "2"){
//                                    context.startActivity<FillOutActivity>("orderId" to item.id.toString() , "orderType" to item.type.toString())
//                                }
                                if (item.payManner == 2){
                                    context.startActivity<MajorSureMoneyOfflineActivity>("orderId" to item.id.toString() , "orderType" to item.type.toString())
                                }else{
                                    context.startActivity<MajorSureMoneyActivity>("orderId" to item.id.toString() , "orderType" to item.type.toString())
                                }
                                if (item.type.toString() == "2"){
                                    context.startActivity<FillOutActivity>("orderId" to item.id.toString() , "orderType" to item.type.toString())
                                }
                            }
                            7,12->{
app/src/main/java/com/xianning/driver/ui/adapter/WalletRecordAdapter.kt
@@ -10,12 +10,9 @@
class WalletRecordAdapter : BaseRvAdapter<WalletRecordData>() {
    override fun getLayoutResId(viewType: Int) = R.layout.item_withdraw
    var showState = false
    override fun onBindItem(holder: BaseViewHolder, view: View, item: WalletRecordData) {
        holder.itemView.tv_time.text = item.createTime
            holder.itemView.tv_money.text = "%s¥%.2f".format(if (item.addordown == 1) "+" else "-",item.money)
            holder.itemView.tv_state.text = if (!showState&&item.state!="充值"&&item.state!="扣除") "提现" else item.state
        holder.itemView.tv_money.text = "%s¥%.2f".format(if (item.addordown == 1) "+" else "-",item.money)
        holder.itemView.tv_state.text = item.state
    }
}
}
app/src/main/java/com/xianning/driver/ui/adapter/WithdrawRecordAdapter.kt
New file
@@ -0,0 +1,30 @@
package com.xianning.driver.ui.adapter
import android.view.View
import com.xianning.driver.R
import com.xianning.driver.base.BaseRvAdapter
import com.xianning.driver.base.BaseViewHolder
import com.xianning.driver.bean.Row
import com.xianning.driver.bean.WalletRecordData
import com.xianning.driver.ui.mine.WithdrawDetailActivity
import kotlinx.android.synthetic.main.item_withdraw.view.*
import org.jetbrains.anko.startActivity
class WithdrawRecordAdapter : BaseRvAdapter<Row>() {
    override fun getLayoutResId(viewType: Int) = R.layout.item_withdraw
    override fun onBindItem(holder: BaseViewHolder, view: View, item: Row) {
        holder.itemView.tv_time.text = item.withdrawalTime
        holder.itemView.tv_money.text = "¥%.2f".format(item.withdrawalMoney)
        holder.itemView.tv_state.text = when (item.status) {
            2 -> "提现成功"
            3 -> "提现失败"
            else -> "待提现"
        }
        holder.itemView.tv_money.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.more_black, 0)
        holder.itemView.setOnClickListener {
            context.startActivity<WithdrawDetailActivity>("id" to item.id)
        }
    }
}
app/src/main/java/com/xianning/driver/ui/main/BaseDialogFragment.kt
File was deleted
app/src/main/java/com/xianning/driver/ui/main/MainActivity.kt
@@ -14,16 +14,13 @@
import com.baidu.location.BDAbstractLocationListener
import com.baidu.location.BDLocation
import com.baidu.location.LocationClient
import com.example.emanagercar.ui.base.BaseWebActivity
import com.xianning.driver.R
import com.xianning.driver.base.BaseEvent
import com.xianning.driver.base.Const
import com.xianning.driver.base.MyApplication
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.base.gaode.AMapKit
import com.xianning.driver.bean.HomeDataBean
import com.xianning.driver.bean.OrderSimpleData
import com.xianning.driver.bean.SelectServerModeBean
import com.xianning.driver.bean.VersionBean
import com.xianning.driver.ui.DialogUtil
import com.xianning.driver.ui.main.event.MineEventActivity
import com.xianning.driver.ui.mine.MineActivity
@@ -39,13 +36,17 @@
import com.lzf.easyfloat.enums.SidePattern
import com.lzf.easyfloat.interfaces.OnInvokeView
import com.tbruyelle.rxpermissions2.RxPermissions
import com.tencent.bugly.crashreport.CrashReport
//import com.tencent.bugly.crashreport.CrashReport
import com.umeng.commonsdk.UMConfigure
import com.umeng.socialize.PlatformConfig
import com.xianning.driver.bean.*
import com.xianning.driver.netUtls.*
import com.xianning.driver.ui.mine.RechargeActivity
import com.xianning.driver.utils.HtmlUtils
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.app_title.*
import kotlinx.android.synthetic.main.dialog_notice.view.*
import kotlinx.android.synthetic.main.dialog_sure_and_del.view.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.dip
@@ -70,6 +71,7 @@
    private var listener:BDAbstractLocationListener? = null
    private var locationClient:LocationClient? = null
    private var isFirst = true
    override fun initView() {
        LocationClient.setAgreePrivacy(true)
@@ -115,6 +117,39 @@
        callVersion()
        checkGps()
        MyApplication.addOrderView(qeeOrderView)
        callNotice()
    }
    /**
     * 获取公告弹窗
     */
    private fun callNotice() {
        var map = getMapByAny()
        callNet(Api.allert, map) {
            var data = gson.fromJson<NoticeBean>(it, NoticeBean::class.java)
            if (!data.data.isNullOrEmpty()){
                val first = data.data.first()
                if (first.id != CacheKey.getKeyStr("notice")){
                    CacheKey.putKeyStr("notice",first.id)
                    val dialog = DialogUtil.getDialog(this, R.layout.dialog_notice,R.style.dialogFullScreen_not_float)
                    val view = DialogUtil.getView(dialog)
                    view.iv_notice.setImageURI(first.imgUrl)
                    view.tv_notice.text = HtmlUtils.getTextFromHtml(first.content)
                    view.iv_close.setOnClickListener {
                        dialog.dismiss()
                    }
                    view.cl.setOnClickListener {
                        var map = getMapByAny()
                        map["type"] = 5
                        callNet(Api.queryByType, map) {
                            var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java)
                            BaseWebActivity.to(mContext, data.data.content, "关于我们", "1")
                        }
                        dialog.dismiss()
                    }
                }
            }
        }
    }
@@ -198,16 +233,26 @@
//        map["id"] = CacheKey.getUserId()
        callNet(Api.queryNewData, map) {
            var data = gson.fromJson<VersionBean>(it, VersionBean::class.java)
            if (data.data.version != "" && data.data.version != Utils.getAppVersion(this)) {
            if (data.data.version != "" && data.data.version > Utils.getAppVersion(this)) {
                if (data.data.mandatory == 2) {
                    DialogUtil.getDelAndSureDialog(this, "有新版本是否更新?", {}, {
                        DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                        RxPermissions(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe{
                            if (it){
                                DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                            }else
                                toast("缺少文件权限")
                        }
                    })
                } else if (data.data.mandatory == 1) {
                    DialogUtil.getDelAndSureDialog(this, "版本已过时,是否强制升级?", {
                        EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP))
                    }, {
                        DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                        RxPermissions(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe{
                            if (it){
                                DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                            }else
                                toast("缺少文件权限")
                        }
                        ToastUtils.showShortToast(this, "后台开始下载,请等待")
                    })
                }else{
@@ -221,7 +266,10 @@
    override fun onResume() {
        super.onResume()
        mainFragment?.refresh()
        if (!isFirst){
            mainFragment?.refresh()
        }
        isFirst = false
    }
    fun beOnDuty(b:Boolean){
app/src/main/java/com/xianning/driver/ui/main/OrderOverActivity.kt
@@ -28,6 +28,7 @@
import kotlinx.android.synthetic.main.include_order_top.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast
class OrderOverActivity : MyBaseActivity() {
@@ -52,6 +53,7 @@
        MyApplication.currentOrderId = ""
        ll_pay_result.gone()
        tv_show_pay_over.gone()
        tv_login.gone()
    }
    override fun initView() {
@@ -81,6 +83,7 @@
    }
    private fun showUi(orderBean: OrderBean?) {
        tv_login.gone()
        orderBean?.let {
            tv_name.text = it.data.nickName
            tv_car_num.text = it.data.historyNum.toString() + "次乘车"
@@ -111,10 +114,15 @@
                }
                6, 7 -> {
                    if (it.data.payManner == 2) {
                        tv_show_pay_over.visible()
//                        tv_show_pay_over.visible()
                        setTitleText("已完成")
                        ll_pay_result.gone()
                    } else {
//                        ll_pay_result.gone()
                        showPayResultText(it, it.data.orderState)
                        addSocketLisener()
                    } else if (it.data.payManner == 3){
                        setTitleText("已完成")
                        tv_show_pay_over.visible()
                    }else {
                        addSocketLisener()
                        showPayResultText(it, it.data.orderState)
                    }
@@ -123,7 +131,12 @@
                    if (it.data.payManner == 2) {
                        tv_show_pay_over.visible()
                        setTitleText("已完成")
                        ll_pay_result.gone()
//                        ll_pay_result.gone()
                        showPayResultText(it, it.data.orderState)
                    } else if (it.data.payManner == 3){
                        setTitleText("已完成")
                        tv_show_pay_over.visible()
                    } else {
                        showPayResultText(it, it.data.orderState)
                    }
@@ -185,17 +198,19 @@
        if (statue in 6..7) {
            tv_pay_result_title.text = "待乘客支付"
            setTitleText("待支付")
//            if (it.data.payManner == 2)
//                tv_login.visible()
        } else {
            tv_pay_result_title.text = "乘客已支付"
            setTitleText("已完成")
            ll_pay_result.visible()
        }
        tv_pay_result_money.text = "¥" + it.data.orderMoney.toString()
        when (orderType) {
            "2" -> {
                tv_pay_result_small_money.text = "其中含红包费用:¥" + it.data.tipMoney.toString()
        when (it.data.payManner) {
            2 -> {
                tv_pay_result_small_money.text = ""
            }
            "1" -> {
            else -> {
                tv_pay_result_small_money.text = "查看收费明细"
                tv_pay_result_small_money.clickDelay {
                    startActivity<MajorMoneyDetailActivity>(
@@ -214,6 +229,16 @@
    }
    override fun setOnclick() {
        tv_login.setOnClickListener {
            DialogUtil.getDelAndSureDialog(this, "是否确认收款?", {}, {
                val mapByAny = getMapByAny()
                mapByAny["orderId"] = orderId
                mapByAny["orderType"] = orderType
                callNet(Api.confirm,mapByAny){
                    toast("操作成功")
                    initView()
                }
            })
        }
    }
}
app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt
@@ -39,6 +39,8 @@
import com.xianning.driver.base.gaode.AMapKit.moveCamera3
import com.xianning.driver.base.gaode.BaiduUtils
import com.xianning.driver.base.gaode.gpsnav.BaiduNaviActivity
import com.xianning.driver.bean.MajorMoneyBean
import com.xianning.driver.ui.main.major.MajorSureMoneyOfflineActivity
import com.ypx.imagepicker.utils.PBitmapUtils
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -270,23 +272,10 @@
                        }
                    }
                    5, 6 -> {
                        it.data.orderState = 6
                        when(orderType){
                            "2" -> {
                                showMoneyTypeDialog()
                            }
                            "1" -> {
                                callStatue(6,{
                                    startActivity<MajorSureMoneyActivity>(
                                        "orderId" to orderId,
                                        "orderType" to orderType
                                    )
                                    finish()
                                }) {
                                }
                            }
                        }
                        if (it.data.payManner == 3){
                            showMoneyTypeDialog()
                        }else
                            callorderMoney()
                    }
                }
            }
@@ -295,6 +284,33 @@
        iv_phone.clickDelay {
            orderBean.let {
                Utils.callPhone(this, it.data.phone)
            }
        }
    }
    /**
     * 陈昆:结束订单前(state==5)需要计算费用
     */
    private fun callorderMoney() {
        var map = getMapByAny()
        map["orderId"] = orderId
        map["orderType"] = orderType
        callNet(false, Api.queryMoneyInfo, map) {
            orderBean.data.orderState = 6
            callStatue(6,{
                if (orderBean.data.payManner == 2){
                    startActivity<MajorSureMoneyOfflineActivity>(
                        "orderId" to orderId,
                        "orderType" to orderType
                    )
                }else
                    startActivity<MajorSureMoneyActivity>(
                        "orderId" to orderId,
                        "orderType" to orderType
                    )
                finish()
            }) {
            }
        }
    }
@@ -354,7 +370,7 @@
            val map = getMapByAny()
            map["orderId"] = orderId
            map["orderType"] = orderType
            map["type"] = 2
            map["type"] = 3
            callStatue(6,{
                callNet(Api.confirmFees, map) {
                    finish()
@@ -481,7 +497,7 @@
            startMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "") as Marker
        }
        startMarker!!.isVisible = false
        if (endMarker == null) {
        if (endMarker == null&&it.data.endLat!=0.0) {
            val view = createView(R.layout.item_map_market, this)
            view.iv_img.setImageResource(R.mipmap.end_point)
            endMarker = addMarker(aMap, it.data.endLat, it.data.endLon, view, "") as Marker
app/src/main/java/com/xianning/driver/ui/main/major/MajorMoneyDetailActivity.kt
@@ -56,6 +56,8 @@
            tv_long_distance_money.text = it.data.longDistanceMoney.toString()+"元"
            tv_long_go_money.text = it.data.roadTollMoney.toString()+"元"
            et_stop_car_money.text = it.data.parkMoney.toString()+"元"
            et_coupon_money.text = "-"+it.data.couponMoney.toString()+"元"
            et_platform_money.text = "-"+it.data.platformFee.toString()+"元"
            tv_all_money.text = "¥"+it.data.orderMoney.toString()+""
            rl_start_num.visibility = if (it.data.startMoney == 0.0) View.GONE else View.VISIBLE
            rl_wait_name.visibility = if (it.data.wait == 0.0) View.GONE else View.VISIBLE
@@ -64,8 +66,8 @@
            rl_long_distance_money.visibility = if (it.data.longDistanceMoney == 0.0) View.GONE else View.VISIBLE
            rl_long_go_money.visibility = if (it.data.roadTollMoney == 0.0) View.GONE else View.VISIBLE
            rl_stop_car_money.visibility = if (it.data.parkMoney == 0.0) View.GONE else View.VISIBLE
            rl_platform_money.visibility = if (it.data.platformFee == 0.0) View.GONE else View.VISIBLE
            rl_coupon_money.visibility = if (it.data.couponMoney == 0.0) View.GONE else View.VISIBLE
        }
    }
app/src/main/java/com/xianning/driver/ui/main/major/MajorSureMoneyOfflineActivity.kt
New file
@@ -0,0 +1,75 @@
package com.xianning.driver.ui.main.major
import cn.sinata.xldutils.utils.clickDelay
import com.xianning.driver.R
import com.xianning.driver.base.BaseEvent
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.callNet
import com.xianning.driver.netUtls.getMapByAny
import com.xianning.driver.ui.main.OrderOverActivity
import kotlinx.android.synthetic.main.activity_sure_money_off.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast
import java.lang.Exception
class MajorSureMoneyOfflineActivity :MyBaseActivity(){
    val orderType by lazy {
        intent.getStringExtra("orderType")
    }
    val orderId by lazy {
        intent.getStringExtra("orderId")
    }
    override fun setContentView() {
        setContentView(R.layout.activity_sure_money_off)
    }
    override fun initView() {
        setTitleText("确认费用")
    }
    override fun setOnclick() {
        tv_sure.clickDelay {
            val etMoneyS = et_money.text.toString()
            if (etMoneyS.isNullOrEmpty()){
                toast("请输入行程费用")
                return@clickDelay
            }
            var money = 0.0
            try {
                money = etMoneyS.toDouble()
            }catch (e:Exception){
                toast("请输入正确的行程费用")
                return@clickDelay
            }
            if (money == 0.0){
                toast("请输入正确的行程费用")
                return@clickDelay
            }
            sureMoneyCall(money)
        }
    }
    private fun sureMoneyCall(money:Double) {
        var map = getMapByAny()
        map["orderId"] = orderId
        map["orderType"] = orderType
        map["type"] = 2
        map["travelFee"] = money
        callNet(false, Api.confirmFees, map) {
            EventBus.getDefault().post(BaseEvent(BaseEvent.BACK_CAR_OVER))
            finish()
            startActivity<OrderOverActivity>(
                "orderId" to orderId,
                "orderType" to orderType,
                "isTrip" to true
            )
        }
    }
}
app/src/main/java/com/xianning/driver/ui/mine/InviteActivity.kt
New file
@@ -0,0 +1,74 @@
package com.xianning.driver.ui.mine
import android.Manifest
import android.graphics.Bitmap
import android.os.Environment
import android.provider.MediaStore
import androidx.core.view.drawToBitmap
import cn.sinata.xldutils.utils.SpanBuilder
import com.tbruyelle.rxpermissions2.RxPermissions
import com.xianning.driver.R
import com.xianning.driver.base.MyApplication
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.bean.InviteInfo
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.callNet
import com.xianning.driver.netUtls.getMapByAny
import com.xianning.driver.utils.Cache.CacheKey
import com.xianning.driver.utils.glide.GlideUtil
import kotlinx.android.synthetic.main.activity_invite.*
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast
import java.io.File
import java.io.FileOutputStream
class InviteActivity : MyBaseActivity() {
    override fun setContentView() {
        setContentView(R.layout.activity_invite)
    }
    override fun initView() {
        setTitleText("邀请好友")
        val userInfo = CacheKey.getUserInfo()
        GlideUtil.loady(MyApplication.getInstance(),userInfo.avatar,iv_head)
        tv_name.text = userInfo.name
        callNet(Api.getCode, getMapByAny()){
            val fromJson = gson.fromJson(it, InviteInfo::class.java)
            tv_count.text = SpanBuilder.content("您已成功邀请 ${fromJson.data.inviteNumber} 位乘客")
                .sizeSpan(7,7+fromJson.data.inviteNumber.length,18)
                .colorSpan(this,7,7+fromJson.data.inviteNumber.length,R.color.end_red).build()
            GlideUtil.load(MyApplication.getInstance(),fromJson.data.code,iv_code,0)
        }
    }
    override fun setOnclick() {
        tv_download.setOnClickListener {
            RxPermissions(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe {
                if (it)
                    try {
                        val copyPath =
                            getExternalFilesDir(Environment.DIRECTORY_DCIM)!!.absolutePath + "/" + System.currentTimeMillis() + ".png"
                        val file = File(copyPath)
                        if (!file.exists()) {
                            file.createNewFile()
                        }
                        val fors = FileOutputStream(file)
                        iv_code.drawToBitmap()?.compress(Bitmap.CompressFormat.PNG, 0, fors)
                        fors.flush()
                        fors.close()
                        MediaStore.Images.Media.insertImage(this.contentResolver, file.absolutePath, copyPath, null);
                        toast("保存成功")
                    } catch (e: Exception) {
                        toast("保存失败")
                    }
                else
                    toast("缺少文件存储权限")
            }
        }
        tv_action.setOnClickListener {
            startActivity<InviteRecordActivity>()
        }
    }
}
app/src/main/java/com/xianning/driver/ui/mine/InviteRecordActivity.kt
New file
@@ -0,0 +1,52 @@
package com.xianning.driver.ui.mine
import androidx.core.os.bundleOf
import cn.sinata.xldutils.utils.TimeUtils
import com.xianning.driver.R
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.utils.view.DateFilterDialog
import kotlinx.android.synthetic.main.activity_invite_record.*
import org.jetbrains.anko.toast
class InviteRecordActivity:MyBaseActivity() {
    override fun setContentView() {
        setContentView(R.layout.activity_invite_record)
    }
    val listFragment by lazy {
        InviteRecordFragment()
    }
    override fun initView() {
        setTitleText("邀请记录")
        addFragment(listFragment,R.id.rl_container)
    }
    override fun setOnclick() {
        tv_time.setOnClickListener {
            val dateFilterDialog = DateFilterDialog()
//            dateFilterDialog.arguments = bundleOf("start" to tv_start.text.toString(),"end" to tv_end.text.toString())
            dateFilterDialog.show(supportFragmentManager,"date")
            dateFilterDialog.callback = object :DateFilterDialog.StringCallback{
                override fun onResult(start: String?, end: String?) {
                    if (start.isNullOrEmpty()){
                        toast("请选择开始时间")
                    }else if (end.isNullOrEmpty()){
                        toast("请选择结束时间")
                    }else if (TimeUtils.parseDateMillisecond(start) > TimeUtils.parseDateMillisecond(end)){
                        toast("开始时间不能大于结束时间")
                    }else{
                        tv_start.text = start
                        tv_end.text = end
                        dateFilterDialog.dismissAllowingStateLoss()
                        listFragment.startTime = start.replace("/","-")
                        listFragment.endTime = end.replace("/","-")
                        listFragment.refresh()
                    }
                }
            }
        }
    }
}
app/src/main/java/com/xianning/driver/ui/mine/InviteRecordFragment.kt
New file
@@ -0,0 +1,45 @@
package com.xianning.driver.ui.mine
import android.view.View
import com.example.emanagercar.ui.base.BaseRecyclerFragment
import com.xianning.driver.bean.InviteData
import com.xianning.driver.bean.InviteRecord
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.getMapByAny
import com.xianning.driver.ui.adapter.InviteRecordAdapter
import java.util.HashMap
class InviteRecordFragment:BaseRecyclerFragment<InviteData>(InviteRecordAdapter()) {
    var startTime:String? = null //开始时间 yyyy-MM-dd
    var endTime:String? = null //结束时间 yyyy-MM-dd
    override fun pathUrl(): String? {
        return Api.inviteList
    }
    override fun mapObject(): HashMap<String?, Any?>? {
        var map = getMapByAny()
        if (startTime!=null&&endTime!=null){
            map["endTime"] = endTime
            map["startTime"] = startTime
        }
        return map
    }
    override fun mapString(): HashMap<String?, String?>? {
        return null
    }
    override fun getDatas(t: String?): List<InviteData> {
        var data = gson.fromJson<InviteRecord>(t,InviteRecord::class.java)
        return data.data
    }
    override fun onItemClick(view: View?, position: Int) {
    }
    override fun initView() {
    }
}
app/src/main/java/com/xianning/driver/ui/mine/MineActivity.kt
@@ -104,6 +104,10 @@
        rl_put_friend.setOnClickListener {
            showShareDialog()
        }
        //邀请有礼
        rl_invite.setOnClickListener {
            startActivity<InviteActivity>()
        }
        //联系客服
        rl_call_server.setOnClickListener {
app/src/main/java/com/xianning/driver/ui/mine/RechargeActivity.kt
@@ -7,11 +7,13 @@
import com.xianning.driver.R
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.bean.RechargeMoneyBean
import com.xianning.driver.bean.WxpayBean
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.callNet
import com.xianning.driver.netUtls.getMapByAny
import com.xianning.driver.ui.DialogUtil
import com.xianning.driver.ui.adapter.MoneyAdapter
import com.xianning.driver.wxapi.WXPayEntryActivity
import kotlinx.android.synthetic.main.activity_recharge.*
import kotlinx.android.synthetic.main.dialog_wx_pay.view.*
import java.lang.Exception
@@ -79,7 +81,8 @@
                    val mapByAny = getMapByAny()
                    mapByAny["money"] = money
                    callNet(Api.recharge,mapByAny){
                        val bean = gson.fromJson(it, WxpayBean::class.java).data
                        WXPayEntryActivity.to(this,1,bean)
                    }
                }
            }
app/src/main/java/com/xianning/driver/ui/mine/WalletActivity.kt
@@ -32,7 +32,8 @@
        }
        tv_withdraw.clickDelay {
            startActivity<WithdrawActivity>("balance" to balance,"appid" to appid)
//            startActivity<WithdrawActivity>("balance" to balance,"appid" to appid)
            startActivity<WithdrawOfflineActivity>("balance" to balance,"appid" to appid)
        }
        tv_money_detail.clickDelay {
app/src/main/java/com/xianning/driver/ui/mine/WithdrawDetailActivity.kt
New file
@@ -0,0 +1,66 @@
package com.xianning.driver.ui.mine
import android.graphics.Color
import cn.sinata.xldutils.utils.gone
import cn.sinata.xldutils.utils.visible
import com.xianning.driver.R
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.bean.WithdrawDetails
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.callNet
import com.xianning.driver.netUtls.getMapByAny
import kotlinx.android.synthetic.main.activity_withdraw_details.*
class WithdrawDetailActivity:MyBaseActivity() {
    override fun setContentView() {
        setContentView(R.layout.activity_withdraw_details)
    }
    private val id by lazy { intent.getStringExtra("id") }
    override fun initView() {
        setTitleText("提现记录")
        getData()
    }
    override fun setOnclick() {
    }
    private fun getData(){
        var map = getMapByAny()
        map["id"] = id
        callNet(false, Api.queryDetailById, map) {
            val data = gson.fromJson(it, WithdrawDetails::class.java).data
            tv_time.text = data.withdrawalTime
            tv_money.text = "¥%.2f".format(data.withdrawalMoney)
            tv_way.text = if (data.withdrawalType == 1){
                tv_bank.gone()
                tv_1.gone()
                "支付宝"
            } else{
                tv_bank.text = data.openBank
                "银行卡"
            }
            tv_name.text = data.receivePaymentName
            tv_account.text = data.receivePaymentAccount
            tv_state.text = when(data.status){ //提现状态 1=待处理 2=成功 3=失败
                2->{
                    tv_state.setTextColor(Color.parseColor("#3495F8"))
                    iv_img.visible()
                    iv_img.setImageURI(data.receiptVoucher)
                    "提现成功"
                }
                3->{
                    tv_remark.text = data.remark
                    "提现失败"
                }
                else->{
                    tv_remark.gone()
                    tv_2.gone()
                    "待提现"
                }
            }
        }
    }
}
app/src/main/java/com/xianning/driver/ui/mine/WithdrawOfflineActivity.kt
New file
@@ -0,0 +1,110 @@
package com.xianning.driver.ui.mine
import cn.sinata.xldutils.utils.clickDelay
import cn.sinata.xldutils.utils.gone
import cn.sinata.xldutils.utils.visible
import com.xianning.driver.R
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.callNet
import com.xianning.driver.netUtls.getMapByAny
import com.xianning.driver.ui.DialogUtil
import kotlinx.android.synthetic.main.activity_withdraw_offline.*
import java.lang.Exception
class WithdrawOfflineActivity : MyBaseActivity(){
    override fun setContentView() {
        setContentView(R.layout.activity_withdraw_offline)
    }
    private var balance = 0.0
    private var payType = 1 //1支付宝 2银行卡
    override fun initView() {
        setTitleText("提现")
        balance = intent.getDoubleExtra("balance",0.0)
        et_money.hint = "填写提现金额(最多可提¥%.2f)".format(balance)
        //默认银行卡
        payType = 2
        gp_ali.gone()
        gp_bank.visible()
    }
    override fun setOnclick() {
        tv_withdraw.clickDelay {
            var money = 0.0
            val text = et_money.text.toString()
            if (text.isNullOrEmpty())
                showToast("请输入提现金额")
            else{
                try {
                    money = text.toDouble()
                    if (money == 0.0){
                        showToast("提现金额不能为0")
                        return@clickDelay
                    }else if (money > balance){
                        showToast("最多可提现${balance}元")
                        return@clickDelay
                    }else{
                    }
                }catch (e:Exception){
                    showToast("提现金额错误")
                    return@clickDelay
                }
            }
            val mapByAny = getMapByAny()
            val name = et_name.text.toString()
            if (payType == 1){
                if (name.isNullOrEmpty()){
                    showToast("请输入收款人姓名")
                    return@clickDelay
                }
                val ali = et_ali.text.toString()
                if (ali.isNullOrEmpty()){
                    showToast("请输入支付宝账号")
                    return@clickDelay
                }else
                    mapByAny["receivePaymentAccount"] = ali
            }else{
                val bank = et_bank.text.toString()
                if (bank.isNullOrEmpty()){
                    showToast("请输入开户行")
                    return@clickDelay
                }else
                    mapByAny["openBank"] = bank
                val bankNo = et_bank_no.text.toString()
                if (bankNo.isNullOrEmpty()){
                    showToast("请输入银行卡号")
                    return@clickDelay
                }else
                    mapByAny["receivePaymentAccount"] = bankNo
                if (name.isNullOrEmpty()){
                    showToast("请输入收款人姓名")
                    return@clickDelay
                }
            }
            mapByAny["receivePaymentName"] = name
            mapByAny["withdrawalType"] = payType
            mapByAny["withdrawalMoney"] = money
            callNet(Api.addWithdrawal, mapByAny){
                DialogUtil.getOnlySureDialog(this,"提交成功!我们将尽快为您处理!"){
                    finish()
                }
            }
        }
//        rg_type.setOnCheckedChangeListener { group, checkedId ->
//            if (checkedId == R.id.rb_ali){
//                payType = 1
//                gp_ali.visible()
//                gp_bank.gone()
//            }else{
//                payType = 2
//                gp_ali.gone()
//                gp_bank.visible()
//            }
//        }
    }
}
app/src/main/java/com/xianning/driver/ui/mine/WithdrawRecordFragment.kt
@@ -2,24 +2,21 @@
import android.view.View
import com.example.emanagercar.ui.base.BaseRecyclerFragment
import com.xianning.driver.bean.WalletRecord
import com.xianning.driver.bean.WalletRecordData
import com.xianning.driver.bean.Row
import com.xianning.driver.bean.WithdrawBean
import com.xianning.driver.netUtls.Api
import com.xianning.driver.netUtls.getMapByAny
import com.xianning.driver.ui.adapter.WalletRecordAdapter
import com.xianning.driver.ui.adapter.WithdrawRecordAdapter
import java.util.HashMap
class WithdrawRecordFragment:BaseRecyclerFragment<WalletRecordData>(WalletRecordAdapter()) {
    var state = 3 //充值1扣除2体现3
class WithdrawRecordFragment:BaseRecyclerFragment<Row>(WithdrawRecordAdapter()) {
    override fun pathUrl(): String? {
        return Api.hisory
        return Api.queryList
    }
    override fun mapObject(): HashMap<String?, Any?>? {
        var map = getMapByAny()
        map["state"] = state
        return map
    }
@@ -27,16 +24,15 @@
        return null
    }
    override fun getDatas(t: String?): List<WalletRecordData> {
        var data = gson.fromJson<WalletRecord>(t,WalletRecord::class.java)
        return data.data
    override fun getDatas(t: String?): List<Row> {
        var data = gson.fromJson<WithdrawBean>(t, WithdrawBean::class.java)
        return data.data.rows
    }
    override fun onItemClick(view: View?, position: Int) {
    }
    override fun initView() {
        (adapter as WalletRecordAdapter).showState = true
    }
}
app/src/main/java/com/xianning/driver/ui/mine/setting/SettingActivity.kt
@@ -1,5 +1,6 @@
package com.xianning.driver.ui.mine.setting
import android.Manifest
import cn.sinata.xldutils.utils.Utils
import com.example.emanagercar.ui.base.BaseWebActivity
import com.xianning.driver.R
@@ -15,6 +16,7 @@
import com.xianning.driver.utils.download.DownloadUtil
import com.xianning.driver.utils.glide.GlideCacheUtil
import com.lljjcoder.style.citylist.Toast.ToastUtils
import com.tbruyelle.rxpermissions2.RxPermissions
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
@@ -108,13 +110,23 @@
            if (data.data.version != "" && data.data.version != Utils.getAppVersion(this)) {
                if (data.data.mandatory == 2) {
                    DialogUtil.getDelAndSureDialog(this, "有新版本是否更新?", {}, {
                        DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                        RxPermissions(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe{
                            if (it){
                                DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                            }else
                                toast("缺少文件权限")
                        }
                    })
                } else if (data.data.mandatory == 1) {
                    DialogUtil.getDelAndSureDialog(this, "版本已过时,是否强制升级?", {
                        EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP))
                    }, {
                        DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                        RxPermissions(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe{
                            if (it){
                                DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
                            }else
                                toast("缺少文件权限")
                        }
                        ToastUtils.showShortToast(this, "后台开始下载,请等待")
                    })
                }else{
app/src/main/java/com/xianning/driver/utils/glide/GlideUtil.java
@@ -49,6 +49,15 @@
            .placeholder(R.mipmap.default_head)
            .apply(RequestOptions.circleCropTransform())
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE);
    /**
     * 默认应用图标头像
     */
    public static RequestOptions defaultCircleIcon = new RequestOptions()
            .circleCrop()
            .error(R.mipmap.ic_launcher)
            .placeholder(R.mipmap.ic_launcher)
            .apply(RequestOptions.circleCropTransform())
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE);
    /**
     *
@@ -123,6 +132,13 @@
                .into(imageView);
    }
    public static void loady2(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .apply(defaultCircleIcon)
                .into(imageView);
    }
    public static void loadBitMap(Context context, String url, ImageView imageView) {
        loadBitMap(context, url, imageView, 4,false);
app/src/main/java/com/xianning/driver/utils/view/DateFilterDialog.kt
New file
@@ -0,0 +1,136 @@
package com.xianning.driver.utils.view
import android.graphics.Color
import android.view.Gravity
import cn.sinata.xldutils.utils.TimeUtils
import com.xianning.driver.R
import com.xianning.driver.base.BaseDialogFragment
import kotlinx.android.synthetic.main.dialog_filter_date.*
import java.util.*
class DateFilterDialog: BaseDialogFragment() {
    override fun setContentView() = R.layout.dialog_filter_date
    override fun setGravity() = Gravity.BOTTOM
    var callback:StringCallback? = null
    private var startDate:String? = null
    private var endDate:String? = null
    var isStart = true
    override fun initView() {
        startDate = arguments?.getString("start")
        endDate = arguments?.getString("end")
        if (startDate.isNullOrEmpty())
            startDate = TimeUtils.getCurrentDate()
        if (endDate.isNullOrEmpty())
            endDate = TimeUtils.getCurrentDate()
        start.text = startDate
        end.text = endDate
        start.setOnClickListener {
            isStart = true
            checkBtn()
        }
        end.setOnClickListener {
            isStart = false
            checkBtn()
        }
        initYear()
        initMonth()
        initDay(true)
        wv_1.setOnWheelViewListener { selectedIndex, item ->
            initDay(false)
        }
        wv_2.setOnWheelViewListener { selectedIndex, item ->
            initDay(false)
        }
        wv_3.setOnWheelViewListener { selectedIndex, item ->
            inputDate()
        }
        tv_cancel.setOnClickListener { dismissAllowingStateLoss() }
        tv_sure.setOnClickListener {
            callback?.onResult(startDate,endDate)
        }
    }
    private fun inputDate(){
        val y = wv_1.seletedItem.substring(0, 4).toInt()
        val m = wv_2.seletedItem.substring(0, wv_2.seletedItem.length-1)
        val d = wv_3.seletedItem.substring(0, wv_3.seletedItem.length-1)
        if (isStart){
            startDate = "%d/%02d/%02d".format(y,m.toInt(),d.toInt())
            start.text = startDate
        }
        else{
            endDate = "%d/%02d/%02d".format(y,m.toInt(),d.toInt())
            end.text = endDate
        }
    }
    private fun initDay(isFirst:Boolean) {
        var selectIndex = 0
        if (!isFirst){
            selectIndex = wv_3.seletedIndex
        }
        val c = Calendar.getInstance()
        val day = c.get(Calendar.DAY_OF_MONTH)
        val year = wv_1.seletedItem.substring(0,4).toInt()
        val month = wv_2.seletedItem.substring(0,wv_2.seletedItem.length-1).toInt()
        c.set(Calendar.YEAR,year)
        c.set(Calendar.MONTH,month-1)
        val actualMaximum = c.getActualMaximum(Calendar.DAY_OF_MONTH)
        val list = (1..actualMaximum).map { "${it}日" }
        wv_3.setItems(list)
        if (isFirst){
            wv_3.setSeletion(day-1)
        }else{
//            if (selectIndex+1 > actualMaximum){
//                wv_3.setSeletion(list.lastIndex)
//            }else{
//                wv_3.setSeletion(0)
//            }
            wv_3.setSeletion(0)
        }
        if (!isFirst)
            inputDate()
    }
    private fun initMonth() {
        val list = (1..12).map { "${it}月" }
        wv_2.setItems(list)
        wv_2.setSeletion(list.lastIndex)
        val c = Calendar.getInstance()
        wv_2.setSeletion(c.get(Calendar.MONTH))
    }
    private fun initYear() {
        val c = Calendar.getInstance()
        val list = (2024..c.get(Calendar.YEAR)).map { "${it}年" }
        wv_1.setItems(list)
        wv_1.setSeletion(list.lastIndex)
    }
    private fun checkBtn(){
        if (isStart){
            start.setTextColor(Color.parseColor("#1677FF"))
            end.setTextColor(Color.parseColor("#333333"))
            start.setBackgroundResource(R.drawable.bg_blue_line_4)
            end.setBackgroundResource(R.drawable.bg_gray_line_4)
            start.setCompoundDrawablesWithIntrinsicBounds(0,0,R.mipmap.ic_date_blue,0)
            end.setCompoundDrawablesWithIntrinsicBounds(0,0,R.mipmap.ic_date,0)
        }else{
            end.setTextColor(Color.parseColor("#1677FF"))
            start.setTextColor(Color.parseColor("#333333"))
            end.setBackgroundResource(R.drawable.bg_blue_line_4)
            start.setBackgroundResource(R.drawable.bg_gray_line_4)
            end.setCompoundDrawablesWithIntrinsicBounds(0,0,R.mipmap.ic_date_blue,0)
            start.setCompoundDrawablesWithIntrinsicBounds(0,0,R.mipmap.ic_date,0)
        }
    }
    interface StringCallback{
        fun onResult(start:String?,end:String?)
    }
}
app/src/main/java/com/xianning/driver/wxapi/WXPayEntryActivity.java
@@ -58,7 +58,7 @@
        request.timeStamp = orderInfo.getTimeStamp();
        request.sign = orderInfo.getSign();
        Boolean Pay = api.sendReq(request);
        Toast.makeText(this, "发起支付", Toast.LENGTH_SHORT).show();
//        Toast.makeText(this, "发起支付", Toast.LENGTH_SHORT).show();
        finish();
    }
@@ -108,7 +108,7 @@
            if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
                WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;
                String extraData =launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
            }
        }
    };
@@ -138,7 +138,7 @@
//                EventBus.getDefault().post(new BaseEvent(BaseEvent.PAY_FAIL,resp.errStr));
            }
            EventBus.getDefault().post(new BaseEvent(BaseEvent.WEIXIN_BACK));
//            finish();
            finish();
        }
    }
app/src/main/res/drawable/bg_blue_line_4.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="1dp" android:color="@color/colorAccent"/>
    <corners android:radius="4dp"/>
</shape>
app/src/main/res/drawable/bg_gray_line_4.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="4dp"/>
    <stroke android:color="@color/textColorHint" android:width="1dp"/>
</shape>
app/src/main/res/drawable/bg_white_grayline_4.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="4dp"/>
    <solid android:color="@color/white"/>
    <stroke android:color="#D9D9D9" android:width="1dp"/>
</shape>
app/src/main/res/drawable/bg_white_line_20.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="20dp"/>
    <stroke android:color="@color/white" android:width="1dp"/>
</shape>
app/src/main/res/layout/activity_invite.xml
New file
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FEF8E8"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <ImageView
            android:id="@+id/tv_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/invite_t1"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="24dp"/>
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintTop_toBottomOf="@id/tv_1"
            android:layout_marginTop="18dp"
            app:layout_constraintDimensionRatio="390:694"
            android:background="@mipmap/bg_invite"
            app:layout_constraintBottom_toBottomOf="parent">
            <ImageView
                android:id="@+id/tv_action"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintBottom_toBottomOf="parent"
                android:src="@mipmap/bg_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginBottom="28dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="邀请记录"
                android:textColor="#FF3918"
                android:textSize="18sp"
                android:textStyle="bold"
                app:layout_constraintStart_toStartOf="@id/tv_action"
                app:layout_constraintEnd_toEndOf="@id/tv_action"
                app:layout_constraintTop_toTopOf="@id/tv_action"
                app:layout_constraintBottom_toBottomOf="@id/tv_action"
                android:layout_marginEnd="25dp"
                android:layout_marginBottom="6dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tv_download"
                android:text="下载邀请码"
                android:textColor="@color/white"
                android:textSize="14sp"
                android:paddingVertical="10dp"
                android:paddingHorizontal="15dp"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintVertical_bias="0.71"
                android:background="@drawable/bg_white_line_20"/>
            <ImageView
                android:id="@+id/iv_head"
                android:layout_width="66dp"
                android:layout_height="66dp"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginTop="4dp"
                android:src="@mipmap/default_head" />
            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintTop_toBottomOf="@id/iv_head"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:textSize="15sp"
                android:textStyle="bold"
                android:textColor="@color/textColor"
                android:layout_marginTop="2dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintTop_toBottomOf="@id/tv_name"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:id="@+id/tv_count"
                android:textSize="14sp"
                android:textColor="@color/textColor"
                android:layout_marginTop="3dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintTop_toBottomOf="@id/tv_count"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:textSize="14sp"
                android:text="加入咸宁95128出行平台"
                android:textColor="@color/textColor"/>
            <androidx.constraintlayout.widget.Guideline
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/guide_1"
                android:orientation="vertical"
                app:layout_constraintGuide_percent="0.27"/>
            <androidx.constraintlayout.widget.Guideline
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/guide_2"
                android:orientation="vertical"
                app:layout_constraintGuide_percent="0.74"/>
            <ImageView
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:id="@+id/iv_code"
                app:layout_constraintStart_toEndOf="@id/guide_1"
                app:layout_constraintEnd_toStartOf="@id/guide_2"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintDimensionRatio="1:1"
                app:layout_constraintVertical_bias="0.452"/>
        </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
app/src/main/res/layout/activity_invite_record.xml
New file
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="#F3F4F5">
    <View
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:id="@+id/tv_time"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_margin="14dp"
        android:background="@drawable/bg_white_grayline_4"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/iv_1"
        android:src="@mipmap/ic_date"
        app:layout_constraintEnd_toEndOf="@id/tv_time"
        app:layout_constraintTop_toTopOf="@id/tv_time"
        app:layout_constraintBottom_toBottomOf="@id/tv_time"
        android:layout_marginEnd="14dp"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/iv_2"
        android:src="@mipmap/ic_irrow_date"
        app:layout_constraintStart_toStartOf="@id/tv_time"
        app:layout_constraintEnd_toStartOf="@id/iv_1"
        app:layout_constraintTop_toTopOf="@id/tv_time"
        app:layout_constraintBottom_toBottomOf="@id/tv_time"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_start"
        app:layout_constraintStart_toStartOf="@id/tv_time"
        app:layout_constraintTop_toTopOf="@id/tv_time"
        app:layout_constraintBottom_toBottomOf="@id/tv_time"
        android:textSize="14sp"
        android:hint="开始日期"
        android:textColorHint="@color/textColorHint"
        android:textColor="@color/textColor"
        android:layout_marginStart="14dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_end"
        app:layout_constraintStart_toEndOf="@id/iv_2"
        app:layout_constraintTop_toTopOf="@id/tv_time"
        app:layout_constraintBottom_toBottomOf="@id/tv_time"
        android:textSize="14sp"
        android:hint="结束日期"
        android:textColorHint="@color/textColorHint"
        android:textColor="@color/textColor"
        android:layout_marginStart="14dp"/>
    <RelativeLayout
        android:layout_marginTop="9dp"
        android:id="@+id/rl_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@id/tv_time"
        app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_major_money_detail.xml
@@ -291,6 +291,70 @@
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/rl_coupon_money"
            android:layout_marginTop="15dp"
            android:layout_marginStart="12dp"
            android:layout_marginEnd="12dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:text="优惠券抵扣"
                android:textColor="#ff000000"
                android:textSize="12sp"
                />
            <TextView
                android:id="@+id/et_coupon_money"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:background="@null"
                android:gravity="end|center_vertical"
                android:text="0.00元"
                android:inputType="numberDecimal"
                android:textColor="#ff333333"
                android:textSize="12sp" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/rl_platform_money"
            android:layout_marginTop="15dp"
            android:layout_marginStart="12dp"
            android:layout_marginEnd="12dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:text="平台服务费"
                android:textColor="#ff000000"
                android:textSize="12sp"
                />
            <TextView
                android:id="@+id/et_platform_money"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:background="@null"
                android:gravity="end|center_vertical"
                android:text="0.00元"
                android:inputType="numberDecimal"
                android:textColor="#ff333333"
                android:textSize="12sp" />
        </RelativeLayout>
    </LinearLayout>
</LinearLayout>
app/src/main/res/layout/activity_mine.xml
@@ -85,7 +85,6 @@
                android:textColor="#ffffffff"
                android:textSize="12sp" />
        </RelativeLayout>
        <LinearLayout
@@ -122,7 +121,6 @@
                    android:textColor="#333333"
                    android:textSize="12sp" />
            </LinearLayout>
            <LinearLayout
@@ -148,7 +146,6 @@
                    android:textColor="#333333"
                    android:textSize="12sp" />
            </LinearLayout>
            <LinearLayout
@@ -171,13 +168,11 @@
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="余额"
                    android:text="人民币"
                    android:textColor="#333333"
                    android:textSize="12sp" />
            </LinearLayout>
        </LinearLayout>
@@ -218,10 +213,9 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
            <include layout="@layout/include_line_left_15" />
@@ -255,10 +249,9 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
            <include layout="@layout/include_line_left_15" />
@@ -292,13 +285,11 @@
            </RelativeLayout>
            <RelativeLayout
                android:id="@+id/rl_set_order"
                android:visibility="gone"
                android:layout_width="match_parent"
                android:layout_height="43dp">
                <TextView
                    android:layout_width="match_parent"
@@ -315,7 +306,6 @@
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <ImageView
                    android:layout_width="16dp"
                    android:layout_height="wrap_content"
@@ -325,10 +315,9 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
            <View
                android:layout_width="match_parent"
@@ -339,7 +328,6 @@
                android:id="@+id/rl_change_car"
                android:layout_width="match_parent"
                android:layout_height="43dp">
                <TextView
                    android:layout_width="match_parent"
@@ -356,7 +344,6 @@
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <ImageView
                    android:layout_width="16dp"
                    android:layout_height="wrap_content"
@@ -366,10 +353,9 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
@@ -378,12 +364,10 @@
                android:layout_height="4dp"
                android:background="#F3F4F5" />
            <RelativeLayout
                android:id="@+id/rl_put_friend"
                android:layout_width="match_parent"
                android:layout_height="43dp">
                <TextView
                    android:layout_width="match_parent"
@@ -400,7 +384,6 @@
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <ImageView
                    android:layout_width="16dp"
                    android:layout_height="wrap_content"
@@ -410,10 +393,9 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
            <include layout="@layout/include_line_left_15" />
@@ -452,7 +434,43 @@
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
            <include layout="@layout/include_line_left_15" />
            <RelativeLayout
                android:id="@+id/rl_invite"
                android:layout_width="match_parent"
                android:layout_height="43dp">
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="43dp"
                    android:alpha="0.8"
                    android:background="@color/white"
                    android:drawableEnd="@mipmap/more_black"
                    android:drawablePadding="10dp"
                    android:gravity="center_vertical"
                    android:paddingStart="42dp"
                    android:paddingEnd="15dp"
                    android:text="邀请有礼"
                    android:textColor="@color/black"
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <ImageView
                    android:layout_width="16dp"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginStart="15dp"
                    android:src="@mipmap/invite" />
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="4dp"
                android:background="@color/white" />
            <include layout="@layout/include_line_left_15" />
@@ -462,7 +480,6 @@
                android:visibility="gone"
                android:layout_width="match_parent"
                android:layout_height="43dp">
                <TextView
                    android:layout_width="match_parent"
@@ -479,7 +496,6 @@
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <ImageView
                    android:layout_width="16dp"
                    android:layout_height="wrap_content"
@@ -489,10 +505,9 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:visibility="gone"
                android:background="@color/white" />
@@ -502,7 +517,6 @@
                android:id="@+id/rl_setting"
                android:layout_width="match_parent"
                android:layout_height="43dp">
                <TextView
                    android:layout_width="match_parent"
@@ -519,7 +533,6 @@
                    android:textSize="15sp"
                    android:textStyle="bold" />
                <ImageView
                    android:layout_width="16dp"
                    android:layout_height="wrap_content"
@@ -529,21 +542,16 @@
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="7dp"
                android:layout_height="4dp"
                android:background="@color/white" />
            <Space
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"/>
        </LinearLayout>
    </RelativeLayout>
    <RelativeLayout
app/src/main/res/layout/activity_order_over.xml
@@ -28,5 +28,21 @@
        android:textStyle="bold"
        android:textColor="@color/main_yellow"
        android:textSize="14sp" />
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/tv_login"
        android:layout_width="match_parent"
        android:text="确认收款"
        android:textColor="#ffffffff"
        android:gravity="center"
        android:visibility="gone"
        android:layout_marginStart="14dp"
        android:layout_marginBottom="20dp"
        android:layout_marginEnd="14dp"
        android:background="@drawable/bg_login"
        android:textSize="14sp"
        android:layout_height="40dp"/>
</LinearLayout>
app/src/main/res/layout/activity_sure_money_off.xml
New file
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="#F3F4F5"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@color/dividing_line_color"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="1dp"
        android:background="@color/white">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="本次行程费用"
            android:textSize="14sp"
            android:textStyle="bold"
            android:textColor="@color/textColor"
            android:paddingVertical="11dp"
            android:layout_marginEnd="14dp"
            android:layout_marginStart="14dp"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="金额"
            android:inputType="numberDecimal"
            android:paddingVertical="11dp"
            android:background="@null"
            android:id="@+id/et_money"
            android:paddingHorizontal="14dp"
            android:textSize="14sp"
            android:textColor="@color/textColor"/>
    </LinearLayout>
    <TextView
        android:id="@+id/tv_sure"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginStart="14dp"
        android:layout_marginEnd="14dp"
        android:layout_marginBottom="14dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:background="@drawable/bg_login"
        android:gravity="center"
        android:text="确认费用"
        android:textColor="#ffffffff"
        android:textSize="14sp" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_withdraw_details.xml
New file
@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="#F3F4F5">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="8dp"
        android:padding="12dp"
        android:layout_marginHorizontal="12dp"
        android:background="@drawable/bg_white_4">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_time"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:textStyle="bold"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_time"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="提现时间"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_money"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_time"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_money"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="提现金额"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_way"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_money"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_way"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="提现方式"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_bank"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_way"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_bank"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="开户行"
            android:id="@+id/tv_1"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_name"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_bank"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="收款人"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_account"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_name"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_account"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="收款账号"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_state"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_account"
            android:textColor="@color/end_red"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_state"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="提现状态"
            />
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="60dp"
            android:layout_height="60dp"
            app:layout_constraintTop_toBottomOf="@id/tv_state"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginTop="12dp"
            android:id="@+id/iv_img"
            android:visibility="gone"
            app:actualImageScaleType="centerCrop"
            app:roundedCornerRadius="1dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_remark"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tv_state"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:maxWidth="250dp"
            android:textStyle="bold"
            android:layout_marginTop="12dp"/>
        <TextView
            android:id="@+id/tv_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_remark"
            app:layout_constraintStart_toStartOf="parent"
            android:textColor="@color/textColor"
            android:textSize="12sp"
            android:text="备注"
            />
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_withdraw_offline.xml
New file
@@ -0,0 +1,242 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="#F3F4F5">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="1dp"
        android:background="@color/white">
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="填写提现金额(最多可提¥100)"
            android:background="@null"
            app:layout_constraintTop_toTopOf="parent"
            android:textSize="14sp"
            android:paddingVertical="14dp"
            android:inputType="numberDecimal"
            app:layout_constraintStart_toEndOf="@id/tv_1"
            app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/et_money"
            android:layout_marginStart="60dp"
            android:layout_marginEnd="14dp"/>
        <TextView
            android:id="@+id/tv_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/et_money"
            android:text="提现金额"
            android:textSize="14sp"
            android:layout_marginStart="14dp"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/dividing_line_color"
            app:layout_constraintTop_toBottomOf="@id/et_money"
            android:layout_marginHorizontal="14dp"/>
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintTop_toBottomOf="@id/et_money"
            android:id="@+id/rg_type">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintBaseline_toBaselineOf="@id/et_money"
                android:text="提现方式"
                android:textSize="14sp"
                android:layout_marginStart="14dp"
                android:textColor="@color/textColor"
                android:textStyle="bold"
                app:layout_constraintStart_toStartOf="parent"/>
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/rb_ali"
                android:text="支付宝"
                android:textSize="12sp"
                android:visibility="gone"
                android:paddingVertical="14dp"
                android:paddingHorizontal="8dp"
                android:layout_marginStart="55dp"
                android:checked="true"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/rb_bank"
                android:text="银行卡"
                android:textSize="12sp"
                android:textColor="@color/textColor"
                android:paddingVertical="14dp"
                android:layout_marginStart="60dp"/>
        </RadioGroup>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/dividing_line_color"
            app:layout_constraintTop_toBottomOf="@id/rg_type"
            android:layout_marginHorizontal="14dp"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="输入银行名称"
            android:background="@null"
            app:layout_constraintTop_toBottomOf="@id/rg_type"
            android:textSize="14sp"
            android:paddingVertical="14dp"
            android:singleLine="true"
            app:layout_constraintStart_toEndOf="@id/tv_1"
            app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/et_bank"
            android:layout_marginStart="60dp"
            android:layout_marginEnd="14dp"/>
        <TextView
            android:id="@+id/tv_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/et_bank"
            android:text="开户行"
            android:textSize="14sp"
            android:layout_marginStart="14dp"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"/>
        <View
            android:id="@+id/line_bank"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/dividing_line_color"
            app:layout_constraintTop_toBottomOf="@id/et_bank"
            android:layout_marginHorizontal="14dp"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="输入银行卡号"
            android:background="@null"
            app:layout_constraintTop_toBottomOf="@id/et_bank"
            android:textSize="14sp"
            android:paddingVertical="14dp"
            android:singleLine="true"
            android:inputType="number"
            app:layout_constraintStart_toEndOf="@id/tv_1"
            app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/et_bank_no"
            android:layout_marginStart="60dp"
            android:layout_marginEnd="14dp"/>
        <TextView
            android:id="@+id/tv_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/et_bank_no"
            android:text="卡号"
            android:textSize="14sp"
            android:layout_marginStart="14dp"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"/>
        <View
            android:id="@+id/line_bank_no"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/dividing_line_color"
            app:layout_constraintTop_toBottomOf="@id/et_bank_no"
            android:layout_marginHorizontal="14dp"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="输入收款人"
            android:background="@null"
            app:layout_constraintTop_toBottomOf="@id/et_bank_no"
            android:textSize="14sp"
            android:paddingVertical="14dp"
            android:singleLine="true"
            app:layout_constraintStart_toEndOf="@id/tv_1"
            app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/et_name"
            android:layout_marginStart="60dp"
            android:layout_marginEnd="14dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/et_name"
            android:text="收款人"
            android:textSize="14sp"
            android:layout_marginStart="14dp"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/dividing_line_color"
            app:layout_constraintTop_toBottomOf="@id/et_name"
            android:layout_marginHorizontal="14dp"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="输入支付宝账号"
            android:background="@null"
            app:layout_constraintTop_toBottomOf="@id/et_name"
            android:textSize="14sp"
            android:paddingVertical="14dp"
            android:singleLine="true"
            app:layout_constraintStart_toEndOf="@id/tv_1"
            app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/et_ali"
            android:layout_marginStart="60dp"
            android:layout_marginEnd="14dp"/>
        <TextView
            android:id="@+id/tv_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBaseline_toBaselineOf="@id/et_ali"
            android:text="支付宝账号"
            android:textSize="14sp"
            android:layout_marginStart="14dp"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"/>
        <View
            android:id="@+id/line_ali"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/dividing_line_color"
            app:layout_constraintTop_toBottomOf="@id/et_ali"
            android:layout_marginHorizontal="14dp"/>
        <androidx.constraintlayout.widget.Group
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/gp_bank"
            app:constraint_referenced_ids="et_bank,tv_2,line_bank,et_bank_no,tv_3,line_bank_no"
            android:visibility="gone"/>
        <androidx.constraintlayout.widget.Group
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/gp_ali"
            app:constraint_referenced_ids="et_ali,tv_4,line_ali"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_withdraw"
        android:textStyle="bold"
        android:textColor="@color/white"
        android:textSize="14sp"
        android:layout_marginHorizontal="14dp"
        android:layout_marginBottom="14dp"
        android:gravity="center"
        android:paddingVertical="10dp"
        android:background="@drawable/bg_orange_4"
        app:layout_constraintBottom_toBottomOf="parent"
        android:text="确定提现"/>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/dialog_filter_date.xml
New file
@@ -0,0 +1,121 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/white"
    android:orientation="vertical">
    <RelativeLayout
        android:id="@+id/rl"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="取消"
            android:layout_marginTop="8dp"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/textSize" />
        <TextView
            android:id="@+id/tv_sure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:padding="16dp"
            android:text="确定"
            android:layout_marginTop="8dp"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/textSize" />
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text=""
            android:textColor="@color/textColor"
            android:textSize="16sp"
            android:textStyle="bold" />
    </RelativeLayout>
    <View
        android:layout_width="12dp"
        android:layout_height="1dp"
        android:id="@+id/center"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/start"
        app:layout_constraintBottom_toBottomOf="@id/start"
        android:background="#CCCCCC"/>
    <TextView
        android:id="@+id/start"
        android:layout_width="0dp"
        android:layout_height="34dp"
        app:layout_constraintTop_toBottomOf="@id/rl"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginStart="12dp"
        android:layout_marginTop="13dp"
        android:layout_marginEnd="15dp"
        android:paddingStart="12dp"
        android:paddingEnd="8dp"
        android:drawableEnd="@mipmap/ic_date_blue"
        android:textColor="@color/colorAccent"
        android:text="0000/00/00"
        android:gravity="center_vertical"
        android:background="@drawable/bg_blue_line_4"
        app:layout_constraintEnd_toStartOf="@id/center"/>
    <TextView
        android:id="@+id/end"
        android:layout_width="0dp"
        android:layout_height="34dp"
        app:layout_constraintTop_toBottomOf="@id/rl"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginStart="12dp"
        android:layout_marginTop="13dp"
        android:layout_marginEnd="15dp"
        android:paddingStart="12dp"
        android:paddingEnd="8dp"
        android:drawableEnd="@mipmap/ic_date"
        android:textColor="@color/textColor"
        android:text="0000/00/00"
        android:gravity="center_vertical"
        android:background="@drawable/bg_gray_line_4"
        app:layout_constraintStart_toEndOf="@id/center"/>
    <LinearLayout
        android:id="@+id/ll_content"
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:layout_marginTop="8dp"
        app:layout_constraintTop_toBottomOf="@id/start"
        android:layout_marginBottom="14dp"
        android:orientation="horizontal">
        <cn.sinata.xldutils.view.WheelView
            android:id="@+id/wv_1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.2" />
        <cn.sinata.xldutils.view.WheelView
            android:id="@+id/wv_2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
        <cn.sinata.xldutils.view.WheelView
            android:id="@+id/wv_3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/dialog_notice.xml
New file
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rl_container"
    android:background="@color/l_transparent"
    android:layout_height="match_parent">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/bg_white_round_5"
        android:orientation="vertical"
        android:layout_marginStart="68dp"
        android:id="@+id/cl"
        android:layout_marginEnd="68dp">
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:id="@+id/iv_notice"
            app:layout_constraintTop_toTopOf="parent"
            app:roundedCornerRadius="5dp"
            app:roundTopEnd="true"
            app:roundTopStart="true"
            app:roundBottomEnd="false"
            app:placeholderImage="@color/page_bg"
            app:roundBottomStart="false"
            app:layout_constraintDimensionRatio="5:6"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toBottomOf="@id/iv_notice"
            android:id="@+id/tv_notice"
            android:textSize="14sp"
            android:textColor="@color/textColor"
            android:paddingHorizontal="10dp"
            android:paddingVertical="8dp"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
    <ImageView
        android:id="@+id/iv_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/cl"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:padding="10dp"
        android:src="@mipmap/ic_dialog_close"/>
</RelativeLayout>
app/src/main/res/layout/item_invite.xml
New file
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginVertical="4dp">
        <ImageView
            android:id="@+id/iv_head"
            android:layout_width="50dp"
            android:layout_height="50dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_margin="14dp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_phone"
            app:layout_constraintTop_toTopOf="@id/iv_head"
            app:layout_constraintStart_toEndOf="@id/iv_head"
            android:layout_marginStart="14dp"
            android:layout_marginTop="5dp"
            android:textColor="@color/textColor"
            android:textSize="14sp"
            android:textStyle="bold"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_time"
            app:layout_constraintTop_toBottomOf="@id/tv_phone"
            android:layout_marginTop="4dp"
            app:layout_constraintStart_toStartOf="@id/tv_phone"
            android:textColor="@color/textColorHint"
            android:textSize="12sp"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/item_withdraw.xml
@@ -39,6 +39,7 @@
        android:layout_marginEnd="14dp"
        android:textStyle="bold"
        android:text="¥100.00"
        android:drawablePadding="13dp"
        android:textSize="14sp"
        android:textColor="@color/textColor"/>
    <View
app/src/main/res/layout/pop_share.xml
@@ -80,6 +80,7 @@
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical"
                android:visibility="gone"
                android:paddingTop="26dp">
                <ImageView
app/src/main/res/mipmap-xxhdpi/bg_btn.png
app/src/main/res/mipmap-xxhdpi/bg_invite.png
app/src/main/res/mipmap-xxhdpi/ic_date.png
app/src/main/res/mipmap-xxhdpi/ic_date_blue.png
app/src/main/res/mipmap-xxhdpi/ic_dialog_close.png
app/src/main/res/mipmap-xxhdpi/ic_irrow_date.png
app/src/main/res/mipmap-xxhdpi/invite.png
app/src/main/res/mipmap-xxhdpi/invite_t1.png
app/src/main/res/values/colors.xml
@@ -2,7 +2,7 @@
<resources>
    <color name="colorPrimary">#6200EE</color>
    <color name="colorPrimaryDark">#3700B3</color>
    <color name="colorAccent">#03DAC5</color>
    <color name="colorAccent">#4D8BFF</color>
    <color name="red_main">#FF3277</color>
    <!--    100% — FF-->
@@ -93,4 +93,5 @@
    <color name="color_F85460">#F85460</color>
    <color name="color_3590FA" >#3590FA</color>
    <color name="text_gray_car">#ff27282d</color>
    <color name="page_bg">#F5F5F5</color>
</resources>
easyfloat/build.gradle
@@ -8,8 +8,8 @@
    buildToolsVersion "29.0.3"
    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 28
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
    }
rxnetty/build.gradle
@@ -6,8 +6,8 @@
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
xldUtils/build.gradle
@@ -7,7 +7,7 @@
    compileSdkVersion 29
    defaultConfig {
        minSdkVersion 21
        minSdkVersion 26
        targetSdkVersion 29
    }
    buildTypes {
xldUtils/src/main/java/cn/sinata/xldutils/utils/TimeUtils.java
@@ -292,6 +292,18 @@
    }
    /**
     * 获取当前时间
     * @return
     */
    public static String getCurrentDate() {
        SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd",Locale.CHINA);
        return f.format(new Date(System.currentTimeMillis()));
    }
    /**
     * 获取时间的年份
     * @return
     */
@@ -466,6 +478,22 @@
        return 0;
    }
    public static long parseDateMillisecond(String time) {
        SimpleDateFormat formart = new SimpleDateFormat("yyyy/MM/dd",Locale.CHINA);
        try {
            Date d = formart.parse(time);
            return d.getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
    public static Date parseTaskTime(String time) {
        SimpleDateFormat formart = new SimpleDateFormat("yyyy/MM/dd HH:mm",Locale.CHINA);