From 52075ffabc17b2473c79d099c7ff580cd4d0f831 Mon Sep 17 00:00:00 2001 From: wlh <646507849@qq.com> Date: Mon, 22 Jan 2024 17:57:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AD=E5=BB=BA365-=E4=BA=8C=E6=9C=9F?= =?UTF-8?q?=E5=BC=80=E5=8F=91-=E5=95=86=E5=9F=8E=E5=BC=80=E5=8F=91/?= =?UTF-8?q?=E7=94=B5=E5=AD=90=E5=9B=B4=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 7 + .../zj365/dc/activity/DietManagementAct.kt | 2 + .../dc/activity/shop/CreateGoodsOrderAct.kt | 50 ++- .../dc/activity/shop/ShopCategoryActivity.kt | 28 ++ .../java/com/zj365/dc/fragment/MineFrag.kt | 86 ++++- .../com/zj365/dc/fragment/ShopFragment.kt | 2 +- app/src/main/res/layout/frag_mine.xml | 21 +- .../base/act/BaseTenCentWebViewActivity.kt | 24 +- .../com/xty/base/dialog/DialogActivities.kt | 15 +- .../java/com/xty/base/h5/CloudJSBridge.kt | 77 +++- .../com/xty/base/model/ChooseAddressBean.kt | 16 + .../com/xty/base/model/ChooseCouponBean.kt | 19 + .../java/com/xty/base/model/OpenWXBean.kt | 8 + .../java/com/xty/base/utils/UserInfoDefin.kt | 4 +- .../res/layout/act_base_tencent_webview.xml | 5 + base/src/main/res/values/colors.xml | 2 + .../java/com/xty/common/arouter/ARouterUrl.kt | 4 +- .../event/BtFenceSettingSuccessEvent.kt | 4 + .../main/java/com/xty/common/util/NumUtils.kt | 15 + common/src/main/res/drawable/seek_bar.xml | 25 ++ .../res/drawable/shape_storke_white_c53.xml | 7 + .../res/drawable/shape_stroke_white_d42.xml | 6 + .../src/main/res/mipmap-xhdpi/ic_search.png | Bin .../mipmap-xxhdpi/icon_address_checked.png | Bin 0 -> 1619 bytes .../mipmap-xxhdpi/icon_address_location.png | Bin 0 -> 1921 bytes .../main/res/mipmap-xxhdpi/icon_disease.png | Bin 1386 -> 1422 bytes .../main/res/mipmap-xxhdpi/icon_healthy.png | Bin 1442 -> 1461 bytes .../res/mipmap-xxhdpi/icon_insufficient.png | Bin 1436 -> 1410 bytes .../res/mipmap-xxhdpi/icon_sub_health.png | Bin 1362 -> 1433 bytes common/src/main/res/values/colors.xml | 2 + config.gradle | 1 + health/src/main/AndroidManifest.xml | 8 + .../java/com/zj365/health/act/OrderListAct.kt | 27 +- .../com/zj365/health/act/ShopOrderListAct.kt | 75 +++- .../act/healthrecord/HealthRecordMainAct.kt | 5 + .../PsychologicalQuestionnaireAct.kt | 148 ++++++++ .../psychological/PsychologicalTestMainAct.kt | 12 +- .../health/act/skin/SkinMeasurementMainAct.kt | 10 + .../zj365/health/adapter/GoodsOrderAdapter.kt | 7 + .../java/com/zj365/health/vm/PayCancerVm.kt | 16 + .../java/com/zj365/health/vm/ShopOrderVm.kt | 8 + .../com/zj365/health/weight/DialogTipNew.kt | 4 + .../act_psychological_questionnaire.xml | 8 +- health/src/main/res/layout/frag_boold_fat.xml | 2 +- .../ElectronicAddOrModifyAct.kt | 321 +++++++++++++++++ .../ElectronicAddressChooseAct.kt | 341 ++++++++++++++++++ .../ElectronicFenceSettingAct.kt | 135 ++++++- .../mime/adapter/ElectronicAddressAdapter.kt | 22 ++ .../mime/adapter/ElectronicFenceAdapter.kt | 4 +- .../com/zj365/mime/adapter/MessageAdapter.kt | 2 +- .../com/zj365/mime/model/CustomerPOItem.kt | 8 + .../zj365/mime/vm/ElectronicFenceSettingVm.kt | 32 ++ .../main/java/com/zj365/mime/vm/SettingVm.kt | 9 +- .../res/drawable/shape_radius_66f04d42.xml | 5 + .../res/drawable/shape_raduis_61ffac53.xml | 6 + .../layout/act_electronic_address_choose.xml | 118 ++++++ .../activity_electronic_fence_setting.xml | 62 +++- .../main/res/layout/item_electron_setting.xml | 9 +- .../layout/item_electronic_address_search.xml | 49 +++ .../main/res/layout/layout_bt_fence_enter.xml | 27 ++ .../main/res/layout/layout_bt_fence_leave.xml | 27 ++ .../res/layout/layout_ele_fence_setting.xml | 11 +- .../main/java/com/xty/network/ApiInterface.kt | 28 +- .../java/com/xty/network/model/BannerBean.kt | 6 +- .../com/xty/network/model/EtFenceListBean.kt | 13 +- .../xty/network/model/HealthArchiveBean.kt | 6 +- .../com/xty/network/model/UserOtherInfo.kt | 10 + 67 files changed, 1901 insertions(+), 110 deletions(-) create mode 100644 base/src/main/java/com/xty/base/model/ChooseAddressBean.kt create mode 100644 base/src/main/java/com/xty/base/model/ChooseCouponBean.kt create mode 100644 base/src/main/java/com/xty/base/model/OpenWXBean.kt create mode 100644 common/src/main/java/com/xty/common/event/BtFenceSettingSuccessEvent.kt create mode 100644 common/src/main/java/com/xty/common/util/NumUtils.kt create mode 100644 common/src/main/res/drawable/seek_bar.xml create mode 100644 common/src/main/res/drawable/shape_storke_white_c53.xml create mode 100644 common/src/main/res/drawable/shape_stroke_white_d42.xml rename {health => common}/src/main/res/mipmap-xhdpi/ic_search.png (100%) create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_address_checked.png create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_address_location.png create mode 100644 mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicAddOrModifyAct.kt create mode 100644 mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicAddressChooseAct.kt create mode 100644 mine/src/main/java/com/zj365/mime/adapter/ElectronicAddressAdapter.kt create mode 100644 mine/src/main/java/com/zj365/mime/model/CustomerPOItem.kt create mode 100644 mine/src/main/res/drawable/shape_radius_66f04d42.xml create mode 100644 mine/src/main/res/drawable/shape_raduis_61ffac53.xml create mode 100644 mine/src/main/res/layout/act_electronic_address_choose.xml create mode 100644 mine/src/main/res/layout/item_electronic_address_search.xml create mode 100644 mine/src/main/res/layout/layout_bt_fence_enter.xml create mode 100644 mine/src/main/res/layout/layout_bt_fence_leave.xml create mode 100644 network/src/main/java/com/xty/network/model/UserOtherInfo.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6e0266e..1c66bc5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -303,6 +303,13 @@ android:screenOrientation="portrait" /> + + + + diff --git a/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt b/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt index a38aefa..e5366a3 100644 --- a/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt @@ -53,6 +53,7 @@ class DietManagementAct : BaseVmAct(){ "web_site_url", "${BuildConfig.h5url}pages/index/index?pageId=cookbook" ) + bundle.putBoolean("isShowTitle",false) RouteManager.goAct(ARouterUrl.H5_ACT, bundle) } // var url = "${BuildConfig.}" @@ -67,6 +68,7 @@ class DietManagementAct : BaseVmAct(){ "web_site_url", "${BuildConfig.h5url}pages/index/index?pageId=herbal" ) + bundle.putBoolean("isShowTitle",false) RouteManager.goAct(ARouterUrl.H5_ACT, bundle) } diff --git a/app/src/main/java/com/zj365/dc/activity/shop/CreateGoodsOrderAct.kt b/app/src/main/java/com/zj365/dc/activity/shop/CreateGoodsOrderAct.kt index 50a1d6f..85b31c0 100644 --- a/app/src/main/java/com/zj365/dc/activity/shop/CreateGoodsOrderAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/shop/CreateGoodsOrderAct.kt @@ -1,5 +1,6 @@ package com.zj365.dc.activity.shop +import android.content.Intent import android.view.LayoutInflater import android.view.View import android.widget.ImageView @@ -7,19 +8,27 @@ import android.widget.LinearLayout import android.widget.TextView import com.alibaba.android.arouter.facade.annotation.Route import com.google.android.material.bottomsheet.BottomSheetDialog +import com.tamsiree.rxkit.RxActivityTool +import com.xty.base.act.BaseTenCentWebViewActivity import com.xty.base.act.BaseVmAct +import com.xty.base.model.ChooseAddressBean +import com.xty.base.model.ChooseCouponBean import com.xty.base.model.CreateOrderBean import com.xty.base.utils.PayUtils import com.xty.base.vm.BaseVm import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager +import com.xty.common.event.ReChangeEvent import com.xty.common.setImage import com.xty.common.util.SpannableUtils import com.xty.network.model.ShopGoodsOrderBean import com.zj365.dc.BuildConfig +import com.zj365.dc.activity.DeviceChoiceAct import com.zj365.dc.databinding.ActCreateGoodsOrderBinding import com.zj365.dc.vm.ShopMallVm import com.zj365.health.R +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode @Route(path = ARouterUrl.CREATE_SHOP_ORDER_ACT) class CreateGoodsOrderAct : BaseVmAct() { @@ -32,6 +41,10 @@ class CreateGoodsOrderAct : BaseVmAct() { var bottomSheetDialog: BottomSheetDialog? = null + companion object{ + const val REQUEST_ADDRESS = 0x000011 + const val REQUEST_COUP = 0x000012 + } override fun liveObserver() { mViewModel.createOrderLiveData.observe(this){ @@ -65,7 +78,7 @@ class CreateGoodsOrderAct : BaseVmAct() { binding.tvPlatformDiscounts.text = "${(bean.ori_price * bean.skuNum) - (bean.skuPrice * bean.skuNum)}" if (bean.delivery_mode == 0){ //0,无需发货,1,需要发货 - binding.rxAddress.visibility = View.GONE + // binding.rxAddress.visibility = View.GONE }else{ binding.rxAddress.visibility = View.VISIBLE } @@ -86,7 +99,7 @@ class CreateGoodsOrderAct : BaseVmAct() { "web_site_url", "${BuildConfig.h5url}pages/index/index?pageId=address&type=order" ) - RouteManager.goAct(ARouterUrl.H5_ACT, bundle) + RouteManager.goActRequest(ARouterUrl.H5_ACT, this@CreateGoodsOrderAct,REQUEST_ADDRESS,bundle) } @@ -96,11 +109,42 @@ class CreateGoodsOrderAct : BaseVmAct() { "web_site_url", "${BuildConfig.h5url}pages/index/index?pageId=coupon&type=order" ) - RouteManager.goAct(ARouterUrl.H5_ACT, bundle) + RouteManager.goActRequest(ARouterUrl.H5_ACT, this@CreateGoodsOrderAct,REQUEST_COUP,bundle) } } override fun setLayout()=binding.root + @Subscribe(threadMode = ThreadMode.MAIN) + fun paySuccess(event: ReChangeEvent){ + RouteManager.goAct(ARouterUrl.SHOP_ORDER_LIST_ACT) + RxActivityTool.finishActivity(BaseTenCentWebViewActivity::class.java) + finish() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if(resultCode == RESULT_OK){ + when(requestCode){ + REQUEST_ADDRESS ->{ + var addressBean = data?.extras!!.getParcelable("address") + if (addressBean != null) { + addrId = addressBean.id + binding.tvChooseAddress.text = "${addressBean.province}${addressBean.city}${addressBean.district}${addressBean.address}" + } + + } + + REQUEST_COUP ->{ + var couponBean = data?.extras!!.getParcelable("coupon") + if (couponBean != null) { + couponsId = couponBean.id + binding.tvDiscounts.text = "可优惠${couponBean.as_amount}" + } + } + } + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/shop/ShopCategoryActivity.kt b/app/src/main/java/com/zj365/dc/activity/shop/ShopCategoryActivity.kt index 97aad7d..22a20f7 100644 --- a/app/src/main/java/com/zj365/dc/activity/shop/ShopCategoryActivity.kt +++ b/app/src/main/java/com/zj365/dc/activity/shop/ShopCategoryActivity.kt @@ -1,16 +1,22 @@ package com.zj365.dc.activity.shop +import android.text.TextUtils +import android.view.KeyEvent import android.view.LayoutInflater import android.view.View +import android.view.inputmethod.EditorInfo +import android.widget.TextView import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import com.alibaba.android.arouter.facade.annotation.Route +import com.tamsiree.rxkit.RxKeyboardTool import com.xty.base.act.BaseListAct import com.xty.base.act.BaseVmAct import com.xty.common.Const import com.xty.common.R import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager +import com.xty.common.util.CommonToastUtils import com.xty.network.model.GoodsRecordsBean import com.xty.network.model.ShopCategoryBean import com.zj365.dc.BuildConfig @@ -83,6 +89,7 @@ class ShopCategoryActivity : BaseVmAct() { "web_site_url", "${BuildConfig.h5url}pages/index/index?pageId=commodityDetail&id=${bean.id}" ) + bundle.putBoolean("isShowTitle",false) RouteManager.goAct(ARouterUrl.H5_ACT, bundle) } @@ -135,6 +142,27 @@ class ShopCategoryActivity : BaseVmAct() { } mViewModel.getGoodsCategory(categoryId) + binding.etSearch.setOnEditorActionListener(object : TextView.OnEditorActionListener { + override fun onEditorAction(p0: TextView?, p1: Int, p2: KeyEvent?): Boolean { + if(p1 == EditorInfo.IME_ACTION_SEARCH){ + goodsName = binding.etSearch.text.toString().trim() + if(TextUtils.isEmpty(goodsName)){ + CommonToastUtils.showToast("请输入搜索内容") + return true + } + page = 1 + mViewModel.getGoodsList(goodsName,categoryId,0,page) + //mViewModel.getGoodsList(goodsName,0L,0,page) + + RxKeyboardTool.hideSoftInput(this@ShopCategoryActivity) + return true + + } + return false + } + + }) + } diff --git a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt index d5a9143..31cd5d9 100644 --- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt @@ -4,6 +4,7 @@ import android.Manifest import android.content.Intent import android.net.Uri import android.os.Build +import android.text.TextUtils import android.view.View import androidx.annotation.RequiresApi import cn.jpush.android.api.JPushInterface @@ -24,6 +25,7 @@ import com.xty.common.xqr_code.XQRCodeAct import com.xty.network.model.InviteCustodyBean import com.xty.network.model.SettingBean +import com.xty.network.model.UserOtherInfo import com.zj365.dc.BuildConfig import com.zj365.dc.activity.MainActivity import com.zj365.dc.databinding.FragMineBinding @@ -55,6 +57,8 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ } var isDemonstrate: Boolean = false + + var otherInfo: UserOtherInfo? = null override fun setLayout(): View = binding.root private val defaultIcon by lazy { @@ -278,7 +282,22 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else { - CommonToastUtils.showToast("敬请期待") + otherInfo?.let { + if (!TextUtils.isEmpty(it.start_business)){ + bundle.clear() + bundle.putString( + "web_site_url", + "${it.start_business}" + ) + RouteManager.goAct(ARouterUrl.H5_ACT, bundle) + }else{ + CommonToastUtils.showToast("敬请期待") + + } + }?:{ + CommonToastUtils.showToast("敬请期待") + + } } } @@ -286,7 +305,23 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else { - CommonToastUtils.showToast("敬请期待") + otherInfo?.let { + if (!TextUtils.isEmpty(it.placard)){ + bundle.clear() + bundle.putString( + "web_site_url", + "${it.placard}" + ) + RouteManager.goAct(ARouterUrl.H5_ACT, bundle) + }else{ + CommonToastUtils.showToast("敬请期待") + + } + }?:{ + CommonToastUtils.showToast("敬请期待") + + } + } } @@ -352,11 +387,22 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else { - bundle.clear() - bundle.putString("title", "操作手册") - bundle.putBoolean("isAgree", false) - bundle.putString("url", "https://mp.weixin.qq.com/s?__biz=MzkxMzI0NzU3NA==&mid=2247487161&idx=1&sn=ed2fca4f04beb00b16f1b7e6c922d40a&chksm=c101d280f6765b967665df1c3e3c5cc609f1fcf7f0434c3bb26fbc13f7806cd9a2b37048f9e8#rd") - RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) + otherInfo?.let { + if (!TextUtils.isEmpty(it.placard)){ + bundle.clear() + bundle.putString("title", "操作手册") + bundle.putBoolean("isAgree", false) + bundle.putString("url", "${it.operation_guide}") + RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) + }else{ + CommonToastUtils.showToast("敬请期待") + + } + }?:{ + CommonToastUtils.showToast("敬请期待") + + } + } } @@ -425,7 +471,7 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ private fun refresh() { refresh.setRefresh(binding.mRefresh) { mViewModel.getMySetting() - mViewModel.getUserEquity() + mViewModel.getUserOtherInfo() mViewModel.getAllInfo(showIdInfo,false) mViewModel.searchInviteInfo() } @@ -444,7 +490,7 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ // mViewModel.getScore(1) mViewModel.searchInviteInfo() - mViewModel.getUserEquity() + mViewModel.getUserOtherInfo() // } } @@ -452,8 +498,26 @@ class MineFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ /* mViewModel.familyLive.observe(this) { binding.mFamily.text = it.data.size.toString() }*/ - mViewModel.userEqualityLiveData.observe(this){ - binding.tvMemberValidity.text ="有效期至:${it.data}" + mViewModel.useOtherInfoLiveData.observe(this){ + otherInfo = it.data + binding.tvMemberValidity.text ="有效期至:${it.data.vip_end_time}" + binding.mCoupon.text = "${it.data.coupons_count}" + binding.mTvWallet.text = "${it.data.money}" + binding.tvOrder.text = "${it.data.order_count}" + + if(TextUtils.isEmpty(it.data.start_business)){ + binding.llStartBs.visibility = View.GONE + }else{ + binding.llStartBs.visibility = View.VISIBLE + } + + if(TextUtils.isEmpty(it.data.placard)){ + binding.llDailyPoster.visibility = View.GONE + }else{ + binding.llDailyPoster.visibility = View.VISIBLE + } + + } mViewModel.scoreLive.observe(this) { binding.mIntegral.text = (if (it.data.num.isNullOrEmpty()) "0" else it.data.num!!) diff --git a/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt b/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt index 57ffaad..0f8c857 100644 --- a/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt +++ b/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt @@ -78,7 +78,7 @@ class ShopFragment: BaseFragList() { CommonToastUtils.showToast("请输入搜索内容") return true } - + page = 1 mViewModel.getGoodsList(goodsName,0L,0,page) RxKeyboardTool.hideSoftInput(requireActivity()) diff --git a/app/src/main/res/layout/frag_mine.xml b/app/src/main/res/layout/frag_mine.xml index 9df8569..a9857a1 100644 --- a/app/src/main/res/layout/frag_mine.xml +++ b/app/src/main/res/layout/frag_mine.xml @@ -135,7 +135,7 @@ android:layout_height="wrap_content" android:paddingTop="@dimen/dp_25" android:orientation="horizontal" - android:weightSum="4" + android:weightSum="3" android:background="@color/white" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" @@ -636,6 +636,7 @@ - + + + + bean.linkAddress?.let { + if(bean.bannerType != 5 &&it.startsWith("http")){ + var bundle = Bundle() + bundle.putString("title", bean.title) + bundle.putString("url", it) + RouteManager.goAct(ARouterUrl.WEB_ACT, bundle) + } } + } } diff --git a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt index 072a79f..7afbeff 100644 --- a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt +++ b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt @@ -1,12 +1,21 @@ package com.xty.base.h5 +import android.Manifest import android.content.Context +import android.content.Intent +import android.net.Uri import android.os.Bundle import android.webkit.JavascriptInterface +import androidx.appcompat.app.AppCompatActivity import com.blankj.utilcode.util.GsonUtils import com.google.gson.Gson +import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram +import com.tencent.mm.opensdk.openapi.WXAPIFactory import com.xty.base.act.BaseVmAct +import com.xty.base.model.ChooseAddressBean +import com.xty.base.model.ChooseCouponBean import com.xty.base.model.CreateOrderBean +import com.xty.base.model.OpenWXBean import com.xty.base.model.ScienceDetailBean import com.xty.base.model.WatchReChangeBean import com.xty.base.utils.PayUtils @@ -17,6 +26,7 @@ import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager import com.xty.common.util.ToastUtils import org.json.JSONObject +import pub.devrel.easypermissions.EasyPermissions open class CloudJSBridge(val context: Context, val listener: IJsBridge) { private var baseActivity: BaseVmAct<*> = context as BaseVmAct<*> @@ -87,24 +97,81 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) { @JavascriptInterface fun createOrder(str: String?){ str?.let { - var orderBean = GsonUtils.fromJson(it, CreateOrderBean::class.java) - var bundle = Bundle() - bundle.putParcelable("bean",orderBean) - RouteManager.goAct(ARouterUrl.CREATE_SHOP_ORDER_ACT,bundle) + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + var orderBean = GsonUtils.fromJson(it, CreateOrderBean::class.java) + var bundle = Bundle() + bundle.putParcelable("bean", orderBean) + RouteManager.goAct(ARouterUrl.CREATE_SHOP_ORDER_ACT, bundle) + } } } @JavascriptInterface fun selectAdd(str: String?){ str?.let { - + var addressBean = GsonUtils.fromJson(it, ChooseAddressBean::class.java) + baseActivity.bundle.clear() + baseActivity.bundle.putParcelable("address", addressBean) + baseActivity.intent.putExtras( baseActivity.bundle) + baseActivity.setResult(AppCompatActivity.RESULT_OK, baseActivity.intent) + baseActivity.finish() } } @JavascriptInterface fun selectCoupon(str: String?){ str?.let { + var couponBean = GsonUtils.fromJson(it, ChooseCouponBean::class.java) + baseActivity.bundle.clear() + baseActivity.bundle.putParcelable("coupon", couponBean) + baseActivity.intent.putExtras( baseActivity.bundle) + baseActivity.setResult(AppCompatActivity.RESULT_OK, baseActivity.intent) + baseActivity.finish() + } + } + + @JavascriptInterface + fun toHome(str: String?){ + baseActivity.finish() + } + + @JavascriptInterface + fun callTell(str: String?){ + if(EasyPermissions.hasPermissions(baseActivity, + Manifest.permission.CALL_PHONE)){ + baseActivity.startActivity(Intent(Intent.ACTION_CALL, Uri.parse("tel:4000063365"))) + }else{ + EasyPermissions.requestPermissions(baseActivity,"", + 0x00011, + Manifest.permission.CALL_PHONE) + } + } + + @JavascriptInterface + fun jumpWallet(str: String?){ + str?.let { + var wxBean = GsonUtils.fromJson(it, OpenWXBean::class.java) + + val appId = "wx032bacb749c0dcb0" // 填移动应用(App)的 AppId,非小程序的 AppID + + val api = WXAPIFactory.createWXAPI(baseActivity, appId) + + val req = WXLaunchMiniProgram.Req() + req.userName = wxBean.id // 填小程序原始id + + req.path = wxBean.path ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 + + if(wxBean.type == 3){ + req.miniprogramType = + WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版 + }else{ + req.miniprogramType = + WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版 + } + api.sendReq(req) } } diff --git a/base/src/main/java/com/xty/base/model/ChooseAddressBean.kt b/base/src/main/java/com/xty/base/model/ChooseAddressBean.kt new file mode 100644 index 0000000..b0d675c --- /dev/null +++ b/base/src/main/java/com/xty/base/model/ChooseAddressBean.kt @@ -0,0 +1,16 @@ +package com.xty.base.model + +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize + +@Parcelize +data class ChooseAddressBean( + var id:Long, + var username:String, + var mobile:String, + var province:String, + var city:String, + var district:String, + var address:String, + var is_default:Int +):Parcelable diff --git a/base/src/main/java/com/xty/base/model/ChooseCouponBean.kt b/base/src/main/java/com/xty/base/model/ChooseCouponBean.kt new file mode 100644 index 0000000..a38cf76 --- /dev/null +++ b/base/src/main/java/com/xty/base/model/ChooseCouponBean.kt @@ -0,0 +1,19 @@ +package com.xty.base.model + +import android.os.Parcelable +import io.reactivex.observers.DefaultObserver +import kotlinx.android.parcel.Parcelize + +@Parcelize +data class ChooseCouponBean( + var id:Long, + var card_type:Int, + var status:Int, + var is_share:Int, + var share_user_id:Long, + var share_user_name:String, + var as_amount:Double, + var discount:Double, + var card_name:String +) : Parcelable { +} \ No newline at end of file diff --git a/base/src/main/java/com/xty/base/model/OpenWXBean.kt b/base/src/main/java/com/xty/base/model/OpenWXBean.kt new file mode 100644 index 0000000..b4aa7e8 --- /dev/null +++ b/base/src/main/java/com/xty/base/model/OpenWXBean.kt @@ -0,0 +1,8 @@ +package com.xty.base.model + +data class OpenWXBean( + var path:String, + var id:String, + var type:Int +) { +} \ No newline at end of file diff --git a/base/src/main/java/com/xty/base/utils/UserInfoDefin.kt b/base/src/main/java/com/xty/base/utils/UserInfoDefin.kt index 009a7da..5f29fe9 100644 --- a/base/src/main/java/com/xty/base/utils/UserInfoDefin.kt +++ b/base/src/main/java/com/xty/base/utils/UserInfoDefin.kt @@ -173,8 +173,8 @@ object UserInfoDefin { arrayOf( R.color.col_7b8, R.color.col_7b8, - R.color.col_48d, - R.color.col_e6b, + R.color.col_9BDd, + R.color.col_96D, R.color.col_FDA481 ) } diff --git a/base/src/main/res/layout/act_base_tencent_webview.xml b/base/src/main/res/layout/act_base_tencent_webview.xml index 9baad2f..91a5b56 100644 --- a/base/src/main/res/layout/act_base_tencent_webview.xml +++ b/base/src/main/res/layout/act_base_tencent_webview.xml @@ -4,6 +4,11 @@ android:layout_height="match_parent" android:orientation="vertical"> + + #6EA8F6 #FDA481 #F7891D + #F5F6FA + \ No newline at end of file diff --git a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt index bf25f80..f19cb29 100644 --- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt +++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt @@ -148,6 +148,7 @@ class ARouterUrl { //心理测试 const val PSYCHOLOGICAL_TEST_LIST_ACT = "/health/com/zj365/health/act/psychological/PsychologicalTestMainAct" + const val PSYCHOLOGICAL_QUESTION_ACT = "/health/com/zj365/health/act/psychological/PsychologicalQuestionnaireAct" //设备绑定相关 @@ -228,7 +229,8 @@ class ARouterUrl { //地理围栏 const val ELECTRONIC_FENCE_SET_ACT = "/mine/com/zj365/dc/mime/act/electronicfence/ElectronicFenceSettingAct" - + const val ELECTRONIC_ADDRESS_CHOOSE_ACT = "/mine/com/zj365/dc/mime/act/electronicfence/ElectronicAddressChooseAct" + const val ELECTRONIC_ADD_MODIFY_ACT ="/mine/com/zj365/dc/mime/act/electronicfence/ElectronicAddOrModifyAct" const val CHANGE_PHONE = "/mine/com/zj365/dc/mime/act/ChangePhoneAct" diff --git a/common/src/main/java/com/xty/common/event/BtFenceSettingSuccessEvent.kt b/common/src/main/java/com/xty/common/event/BtFenceSettingSuccessEvent.kt new file mode 100644 index 0000000..24cfdd3 --- /dev/null +++ b/common/src/main/java/com/xty/common/event/BtFenceSettingSuccessEvent.kt @@ -0,0 +1,4 @@ +package com.xty.common.event + +class BtFenceSettingSuccessEvent { +} \ No newline at end of file diff --git a/common/src/main/java/com/xty/common/util/NumUtils.kt b/common/src/main/java/com/xty/common/util/NumUtils.kt new file mode 100644 index 0000000..e1bbc1b --- /dev/null +++ b/common/src/main/java/com/xty/common/util/NumUtils.kt @@ -0,0 +1,15 @@ +package com.xty.common.util + +import java.math.BigDecimal + +object NumUtils { + + fun divide(valueOne: Int, valueTwo: Int, scale: Int): Double { + if (scale < 0) { + throw IllegalArgumentException("The scale must be a positive integer or zero") + } + val b1 = BigDecimal(java.lang.Double.toString(valueOne.toDouble())) + val b2 = BigDecimal(java.lang.Double.toString(valueTwo.toDouble())) + return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toDouble() + } +} \ No newline at end of file diff --git a/common/src/main/res/drawable/seek_bar.xml b/common/src/main/res/drawable/seek_bar.xml new file mode 100644 index 0000000..c911ba0 --- /dev/null +++ b/common/src/main/res/drawable/seek_bar.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/shape_storke_white_c53.xml b/common/src/main/res/drawable/shape_storke_white_c53.xml new file mode 100644 index 0000000..115bb34 --- /dev/null +++ b/common/src/main/res/drawable/shape_storke_white_c53.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/shape_stroke_white_d42.xml b/common/src/main/res/drawable/shape_stroke_white_d42.xml new file mode 100644 index 0000000..d6a24b2 --- /dev/null +++ b/common/src/main/res/drawable/shape_stroke_white_d42.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/health/src/main/res/mipmap-xhdpi/ic_search.png b/common/src/main/res/mipmap-xhdpi/ic_search.png similarity index 100% rename from health/src/main/res/mipmap-xhdpi/ic_search.png rename to common/src/main/res/mipmap-xhdpi/ic_search.png diff --git a/common/src/main/res/mipmap-xxhdpi/icon_address_checked.png b/common/src/main/res/mipmap-xxhdpi/icon_address_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..9e28a7339fb11550060483457d7aa5e1bdd69d8b GIT binary patch literal 1619 zcmV-Z2CVssP)Px*4M{{nRA@u(nQd&7RTRhn=RD8TmA7PyMiO5>Xkye5d5J=tTieMXqDIt&kPr)Ly+dAiZH zgRL)5m#m}xvShvI-v95Od+t5wlyHT8=nCUS33$AFyyW4MhsW6tl#cW`bLb^FB@Y*+ zhjoy#|7t6#{Q-Y;IF6$CFts&)N+cBk6o@pmHnrxH+UKvn9CT3wQzW#POmh)p@j*5w z2=qc!1-=|tz}yyE1HzU|pfp|;U*N^@b)-9Y%;b3d7yvT~#sm@^R-RQAiK9Ktr}&O^ z>$Y-c{vAw{Ap=~@fXF{G_3RCp{z~6S7jJO^x9*rs96v|~&w-MDE+RndE<>a`R=xT} zrdOtTfOU{LQoapDexx5*1vXYnRqdOZU=#b3&7d(cCK6i2mbDjsu|YWogOu!1-oTP< zH5LbOI8?zJ5il9h1MV%eK+(Py<*l2SEo^akxTE1FR_FlnjY(KLZbeRuX?Rh&>aXzw z-1?52_}}-5>Cxnk+)vjnz+!j<`*MLD^B(55(0Y_v>(b(OLK)EA_ni3rn{tI6)4)c! zVYz00E6uYuY;UwlJOO_`uwxe3ifo^)pxU7^F$qQlt@R;osTx$Q=@~!39nDi%oezU( zR`Qav>9p<=)2u{g?N9l_j^ttcxf(Vfb+TY4TM9RPL8kd2;%ac{L^q_Tw+5cT!A$m< zz904-rf}#0G0lhQftBsQ^pRYkpw;7>8M`aRj9Qxrj|xH z)S{WIAt@VdCpzFtcvf{f7NS8EX*fZqd1o?i6BUq%#p?EGRsAoH*GQQlBQU<&G>OYx zhv71(CtE3Y{i)PBG0Zurs&yoY!wtLPaxF<+I-9)Ek{(9|DKWBH2G|9##{PwlXAFmGbUK|=t+4t3easut0x#_ zuD07W>`zM@6HRo~iYKtk0ZUeT~$WK#X*$sb~= z8K_uuHfzNW2RZ`A@i#1^JGxH;HA7-DD$onyt&2eKF(~}^USfJ^$e0*|9*TSY2OKiw zWbO>uUdnE=#p!zx$_L}wE??=io>X=RU+8@qrm;5d6ijg0ZJK)V6{Z5ph1fZ;{R2<9 z={|uROmw*~=0>Ig9hdLOWzI@V8xwIZABfMtG#8dPuCM>N{^j=Ja`2pK>DFiEZJ46Y;!p z3dh|?!F1at(6)Dh#meLV*ok1LwuJ?@)pR!A!f|~J%vU9AXv+j*u@}T!x6!F!r}l*h zwiSi9R4`ec2`?v#3)wB#oL!dbw_B$$+1QT`uzg>(ho01eAVHr}MszVMpZ_l#L8Cop z)PP4@c)s(Ofb-qCVzDcExL7=uug;Q(^WC{(u`7AFSUi=l&XR}o-MM11`yX3j8e2%y RGE4vf002ovPDHLkV1lz22S@+_ literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-xxhdpi/icon_address_location.png b/common/src/main/res/mipmap-xxhdpi/icon_address_location.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4dd27797f7347fca48309b7da865fa89709a57 GIT binary patch literal 1921 zcmV-{2Y&d8P)Px+J4r-ARCr$PTx)DpMHK$d+`D(TT~pBttqKwdG(HLx0joT0t0pFxm>7Xzj6cL6 zF~JsyXpB)nV~j%RgC+)u@WU8M!H}3pVxnvp3Ro?QfR7X-L8_K_t+d_l?wv7nw_D2g zwfC{Ldhh+Q$>z>EbG~!toS8ZI%n&m19NwG-MaxDyf^ z_%GxS03tw2Knzd_U@Y;!E80S!Zw16b4*heKtU2M7oQ?oi!<7$l!QKO5s$oG1L?Y|K zWm;H6DoQG*9RjBq@t5NztM{Acl|o=0a44h##|jljwL;V8Ar`-8IlEG&(n|&UR8TZ} zNatcDP;?SyWpOLrSOa{pwt(sSD^S@o!X znngm0?I0S{>x*W4wcB1QS%@|wTCP7>zQ+u^^a0nc)7Y)K8ZL<)hALha3HJ>f*eHFDS1VsOf-! zjj1QwzkAd~mWv9mHv;Hc;G6Aj)U3<UYq& z?S2!G1a49T$k(#5casYQgRcr_dVh#Fe;Q)Q~ga z6$T!Q&qUekV@W{Q0an5_4MJt}>;@{%b&T}~u{^&JOUD&pTJV;%6nLWJB6gi`#`e~e zxX|4J#+0<^25n?4O5%s~l2!Bj0XDXHn*U2gW41csdJK#5?!=ZUrO4NUmUy*BJMiK! z_1JUnXE4QQiAOJy<^zj%Kb+iJ_F9owv$a4*1QPgE_r;eI8f$Y|L_Y>XBH?D@k9}P(peh#)viKP!j;QJAn*Yq<^hjU{Rq!kgu-C1EgrdA+oE(s`y^Ih3D;fLAJnD5*M#XU_Q;-}6l=7+VW00P82-Z$o_Zr0dUog$<{Vm=9ix0-@_6Y2jutnre2F&v_j6MN3dJ zX1sZ+ZBT^UT2Okd4veYhxEL7`aY_Pi1yP>aDM`+~zdo?McOzh~ck8X?hGX)P?dIp? zL~8dOv2aZU5Pq{Fa6Jl9Cf6$?|4?WXn4($en7Z8v*mXnNWkJhb(-PlL>_Al|e7;q# zSa?KZRkoLw^)sGKJB4E*tX@ar$kNhvn+Nx84_%i4a9xT=h6T4J@g!zszIo#J3h4-GknNpAJgEv&!y7JuKFO}vvPG;$wLolR~5AwnB7*kWPo;6VOnx0 z>Z;PiBxqL^mnK2Gs(iRlqQyN0;(fDAZaMbEk&To7gopokc|-#Dc<*puZ4|GRw( zZpd!?Zyd!NCezN2ZWFjV#Bsu40DSfeM~iAxMan4i)XrGbRxxDJxd+(p$C>{0o`s#) z={1htkWSUE=flpAH_wNi*Qw{jgX`4uVdux2=flqH)bnA_hkG^P1uf?t%nMr1>(mQc zUeNM_RtEjb3tAaeF1(C~m+|oO(vEwW7qlE#X&;7O(DH(o7qlGrFfV91u2L^(4RJ-} z|1QPz_4{JT>oerl6ZgH4Q8&vd^L`Zo_0=s<*zE(>dB~fGb^bdqt;p!50wW7JRJ9TT z-Px)NJ&INRA@uhT5E_^RTTc#K4)|)%B(31%}1mb`lBLyS(+6^BUz9}HRn2kq()*; zC==B^``jWG$shK|Fszw-u7(vPm;Ajf`quZIea_i?t+fdm4{mdBQG(_HG!Xz1=xajwCOO{sS%#)8!MP+SD5kG^i=lw~ z>m2ustm0=XEcCs@00#6y{H3xXVp!E3wH$Sm=BE0Sq!Ea=>!jD-3Oo%~BT@ zl)M}<+Kd?hV9*TP$*-uyM`xS5u+aDR02r(beAfJa%W} zq3`_;U}Qp4+bqYuJ|RY@dn&?$k~fVQtJ5Hq*0&a07`MK0Ir;@dRfvfIF9Ogn4PgMH zv*Uchya5*eqNn76IJjkn@#=*G5VQ{oIUGhTMgTmDh;CqD7#P<8xFAl@3Vcog*h8RQ z4E_zkc4q9fn0KMRem6bda-=V;ZehGqHiV&QB;v8eG=_GJRHZ!9RvM~UdYGATwi2`7nll!=~+_Cw-Tg_~5!TauvFny+9UPs;b! zGw@)okxRmdfsGUvy^|pHPXbhfzDFqZz39(VUxVb5P&!1)FRWqklq4v%=1ZXU#I16a zvS?eakxRly2pZeDk9GLoeFFGA30ST8GO5XSleeyWgYIaP_Xa#P5rCa`@T~9@Z%VKeRqi_q?(&Mk(G@!-rr9&|T!@qqnQaD4(_z<#mc^Gk{C8dX3`Z3aC5E zb!@bWCYR*3is=Uc4RJ}N?570OcwHMxD=Z?#t*;MOR`_!T)!me}bi2%USxxf}GX<>Z%{#5WektK@JM(jO+ES=n^vSveW~(6qx?SWt2siNz;c z#4HUMv#p%_wn+$MVWD4`f2tZ~f}54ia?5dNnt+=NE6Po?06MS=F zzV|DDF(#lH+8h*vc@RyKfi8xTFm79XkrKzF!sR*7v<34>%E=w+2rIcaDi*)!z^XB? zm>;Uk$@RKeMk^Nhaw>s7(1BHHey-)XXHHYGy8kO$bS5^+r!USTSS0wu#Wa21vEG>Tx~2Wq!9y=ZO}>f~Swf4|ys#VA@fp8~)Is$D`;AOVseyR%+XTIyot(XJgp3W<`gv}JvVw#?h c9Px)BuPX;R9HvNn16^=RTRg+=iWDOW@lU#vHU}`BFp}e$O^3}OF=3MTK&VYnN`t0 z%>KyyL(9~e`&KcEs6bGRHgacIYC$E)e^z6oGT6!uArQ$wDs>YotNlIm-n}R8xZ3LO z8+T@B)C0o|%zNj2-uIsS&N-J*A>)1CLYAx;G?y7Cq+pMd>S!h0Qze{m)_WF?_}uzp zV?aU_+-hU$oMh&+@x~Z8BsXrV$FctFPw*`nql;&zz4 zKY~L=OC~eZ%T=>%$e`JKfq)hOaty&WGgdnF8GC)n zRu&|;Zm7|@Ne2bd)Bo@1@Yptp0kz3KvxL^F{!%H+g7mWuk4u5CiY@bKAcko{q(1$1 zRUx@uIXDx!SIeML3OR4I9UTTBqyQT}?vq*V_H>=3wI7UpXNBAxswB7Wm>vYdY{8fV zrUw|9Er1!!m>>jAHp5=rV^u~7f-(FL0lkKCjzFg%xYICxa=@o3rOuA#s{q-%|BY!i zx@IYpeoU~K%Y<1X7Ky+xU}21b{ap@NsIqq33j#=7{I(B}%Ll|b&EQTzek)vkfR?HA z#7*1pG{UrtsCzrKg)y+XR%*VDRn218*-~mhu(e+b3w>6QSVSh0xW>V9tXkgwIKV#$N_awJ?4T#6Knf{#J+GSOu%1BEr;!!gF z18Glzdan@UJ2=4*7?rIJ# z@iv)MJBB~ss35wz;Uy7~d)NeA z#m3&EkQZ8Cn>0Be|B`|GtEMDyYB0x(5^Gdfc}jkw?lA!!0WhkSBcc9Y807qTBY$%?h`^JtE!|O(6nyr?CW~&p^)LM2&8gN zj*bgSbBvvJs$_*y$b4R0`11~WWmm4GEh#@hM` zHv;%Hg_4{9E(wzNsryh{bHelw7S+(gAyUYz4lwW5gdZf)gJ7(a5$6$TZO7Q+KH@P1 z-ThBRR(WkDK?W_}8X0vzG=oJ>%p3_5=w4>5lEg=bR}F4_t5&-M3rSF;aGa^d20g2! z@%^++X113E={KoGP9pY&8Mrb{hK3{Ss~3cKWHRGjD_wQg+X%wz0H)ZH_3HEyHBsn+ z+)^i%IaCrPx3)^1J9$jT-1)GlxOR)V5%8e@JAprjlzV9T)-%@vy!1bRwDT6@2J67Q zLd2tY!JcW_EGYQQ|41`<9xYU(&eg>mj3#xf5n>C7mw@4ekrm9lQJ?vPZ1+-zb?;YG s6NZ)p{4zij0UQ=udbD!uxiEMC0Twqm0l>8X<^TWy07*qoM6N<$g5AlLYybcN diff --git a/common/src/main/res/mipmap-xxhdpi/icon_healthy.png b/common/src/main/res/mipmap-xxhdpi/icon_healthy.png index 9eca33f38379dca86c07bdc0c634fc01a9244f5b..c0819f928db9f2ee3b1289a38d2183568cbaeceb 100644 GIT binary patch delta 1430 zcmV;H1!?-C3$+W7F@JAKL_t(&L)BVaj1)x_J-24%p-~{B#DF|>rw0P@1-sJ&2<%P| z1c+!NB>G`AArg!P6Ac7oV$>fcL_YKfgTcp-#z!Iv0`B&(D39p@7o(9Z(*r0Xff#~- z2)nRb*Ysp}gD^W)Gu=H5^;`FzdrsZ%uDZ9H5b|g|)G|#_WPcTiX9FMtevriPW}_)5 z%+M4j_;fctOM<^I7K2z?nb_QPSn)#@X1exS0K*0#f6JfD7sm_OBKP}l=_X(pQ5RF03zHgI94YySygv?}ob<{77) zm~~HCJ__SNg~i?0CkgabB?OuAbT(#vUWsqfeKIH@565)vqW~sUh1NW&Kjw&{b2O@1}Dt5T>w!(q!`F$4S#E*AB;eSCGzPd%=|?Vgo1k4 zD$ZDAhka+Hj>iIGHZ!jUFenIN03DPlYapk4`2*{JIWwZP1Ao0q6xnf^Ff9St$%Uz!>5PDl-|#MOOi?0e!yzQmsu># z#+tYGZ_tg0(#=9}XnnqF2q)mNjA3o*-=O<~#`CQvF=eVjBIp>`HejziD<*R3Mkd|^ zpf2d(Vc{__H)~j}SK}8w1e^KvBVgWpQ|xcVO-?km^V&rl@O0mh-!VDD(i2y!hhRX; znSaj2x!%)t-6&bMBo4RLOWCuZfZ<_1MwQ|+aiY|Xjk3^eaP9jdKo-ErN=XFlCz*JL z>KaNZ%p;Y^rAISydl}u`fVK3)U1A{~&DJ-2TuKftVID%G+qzJI3VXzj8}x!>Bsb{9 z*A`}Ww2eok=QkbDuxz|KD^s8JK4{9JEq^SY+p&O1eycQOCxo^z)3sLv z@VZeqZV+vBqRC}C1j-Ti8GxsBKtr_I=NML82VYxQ!nJ>8V6qNqh&E@2oQRCt+0@jn zilHU!fuFy-?be|YuW@<9D{T^yXr{jDa3I2_yDbk%h@Vto)tD!N`I&layDFAe#(&~@ zdoeM-RDo4zo>w|Xs`TFoeGO9;p+w$(of&Vc?5Z)(z^1HWEmg(R%2*<2f5U{wRbbVa zC&G`JsMVl~r6tS^;O03Q<3 zWy!ppfS9h3Vs^3zv3-*)@1k+Qp??%+9%`8ZA$C_ngn*L_yyFTcBycbk76G{Z`bNoPbYv|06qW~8=P2jn<_{p^Mzk-g;)W`98h6F k_XA>`V>EjUtQ`LV4Ry!cJ`V(y$N&HU07*qoM6N<$g8HJZWB>pF delta 1410 zcmV-|1%3Lp3!)2> zTTv4s(H}+=BEd*7(a>N_4Eje2ksta8gTcoijgLfQ?atgSDL%jlkKI`%1TZLqff!Oj zk%#TxV`dEmY`b%J9!uf;z2|)A`|h2Yd+xbIh}kkfh!)9ML4S;U7$5*&66n>ep87V< z)Lx?4EK_vmN~SM{NYG~M#>Tjk$12Qn#ZdsGhai7qc4Etwt7w&sLtJda%wldCF~44s zG~-!2X{^1dgjufW1u&)}X~Lg&!We2rL+OoW#jK)u9E`VAm=V#EY$CN@#kU%tScIir zahQSeibRgsx_@!4qOY=Br zKY&le5M$6nM^Akm2IEX@WWv&}*uy|$I8wCR)>Ai!!+-cMIuc=4Q7i)EgD40A(Y$Mc zh0Wj9eNDq@o&@r$c3usjAsS(j%;*5go`$}Wzkb%zdL#&LMPY5*a--|&OA|@cCNnUV z7}JPx3lk;-xB1_6dodPg2EYdKGKjsNL31HMP zBNmp#M`*VbM%UR5I_*05 zGAOn_Uo9q0GA|HGvvWWZoOW}w8T?HxNW_riyaw!mTG1@nw-ITZ0o2EkJQhf)u_0!f zxpTn>ErLzgzLlVDxhVEGNv(EsYSaH`Y{=@~EZ9w?XJ1X7S_#QOdi`_StSbhg!TnHXfhDrj>@wvi*VKg-MFxz|eG%hyV1F#Nlg1k=DU^koMbSYFuN!s2jKS+2-CUwV zKv|gOiuV9KtO6RN&-b=&+^&LOjj$g9G^v2b=+k?ucf|Njt*!ljIh2GMu5*P3@*0;H z{G`qGve9X>eu_j`CNGjwL*5Up7UK*p?dWY@1FE7atytQ17Bc8VKd@Si6Vvi+GJjS1 zZv@p#iF84{z=RiTLEJ9~6K!x3sl|SNN-Ji$&L;pp;0IQt@olzl%<{{nBrKY{FFz`3 z;|v@<(l_?H?JX^Rl_GqFwHG_bl(@lb^anms6R=kj-qe`>VPGl1)74}Q?xnFdy(`(a zCzP;sUd&+)Uk4&WI0WWbY~6hA+<$npD4rt5%JOYa03-0CtZr7k#P?mXApdOuI0f)( z39J#i`S)Pl(|fx{@`<`<7}QbiL6!(Bvk9YOdFLyv>b4wVZN02p+nJpIo62I8Z$|s% z)67_*S^z|{V)J@>>PL<3JEU-eeg`PMZ0qSjU1jeu+fStq0Ly(Q%eD^G9<@UgU6(&$8OM1y}ZriG|LViA}ylAY`@H~LW2J>aexsGmq<%i?@D4qc* zcdbzO9Ek4(Fap31B3_qGm|4FhLB`9!+)6A1FptU;%3f1xO_y$Z6YOjM0^2aq?s|m8 Q`2YX_07*qoM6N<$g1XzN5dZ)H diff --git a/common/src/main/res/mipmap-xxhdpi/icon_insufficient.png b/common/src/main/res/mipmap-xxhdpi/icon_insufficient.png index 9911cadb48dec92ae5ea0110355134bf088a352f..a08fc69e51f525185439c3f073ef89054d3f0b56 100644 GIT binary patch delta 1378 zcmV-o1)chw3xW%fF@HQsL_t(&L)BVaY*j@RU3+e!HAazGB?jbS1T^rWruah9s&Hn` z%|#O-(GQ~ukzgd4XdoIBgZ?NX@}WN%3_gA|J`zoP&&+L0>I(%c_#-iZK@kkZ5Claj zZSUFUw17z4J9E$D_AA?fga}tN<9{w95WrtB^Q*q^Z_6?? zWeHv^mKF%XpN|}a?^8-`$tr%P!n8KW08AK#{6E{bZ@Xme+O=U8;xZFvj9JNy*DI6e zXOvPKE+}DIo1*|GT1fw?lpJkG6Y0%l$F$au0rZv&GiEIJeYwfSwi=sEgav^)OoT~} zM2;vWuW+<=Hh)W9m@(!NX1wdn001*B^L=k~H9j`m)P-qXItcJ&Tj2BN4=W|Fs?w*T zd8)#UF%L51qj&`QVWrgj@qCASr7BEovk$k?uNx~C#cYrPbp4}a1i1f=t>#TM4p)pdDaU*A+f zL|OYf0OQjUhL8wr0Ce~F_y1Zb6pqBftthOsvvWeZT%N+r(}-vWGtFY=>xnQ8psNAC zC{9p!A3Dj*2Z^vB;2)XAULklN5$zX399Xz;;qlS1&I)U5YirKs#`#1v7r-2VrvsP* z;8J%YHGj4IiwFk+{KCw;0PGS%1fJ*pe)b&;g3<#-{C0&Bqo#}#1Umunk-dt5WK-^OtPY?A{nN=d`$bO@hHJ?(qFZ(bF|-R4iMJG1mgp&n}=@*+g}g=XufB+B&Kc<^xo; zB4%p9E0j`ixP)*PW{g?GJlKsIvq6MSQh&0DeU&_1d}q#+WCW z@$Bi_oT{OjX{qmf6)*9vI~M1^4SxW=0Iw55toJp^E&`uR!YU{ zDo4d^L&Nwr0I#wv$O-1K+4ucZiQciH&%K@pP}Ck6w!=~JNyINHrFvX;$XjO9(a|xp zTrNKk(4!;S5@CUq@=F_z^-(+nFx0i;=K#7Lz&HRqnQ5c%d)gKx&iv3Xx8;=p-OW6> kpgqjAKA-oZ1-6cV0hY7Q?36H@i2wiq07*qoM6N<$f|N0n?f?J) delta 1404 zcmV-?1%vv63!Dp(F@IJ`L_t(&L)DsDj1*NAhW~SW5YQ+RM~MMhoLYu-S2vo$Z4?|e z8X=;Ikm!Tagh((FOf*b1CMNo#gvf)wU@*A6Xj~FW5J}XG8*U&lz1URUZgd0!F$4h- zhNbT@H7p@aPuK0Ps;0TGb-V+3RN5>g4ElSzOYMt16VqyWyd2%m+ z37SUsIhJ{~W`C@9Sma z!$>nj|9|zNiSQ>g7Z@n85bHCB@%P!^Sk^5)M8xmb*kUx(aF|+$iRnrIeMki#T!LjxE zngh-cIF_|;*dn-J%3B2Er{J(h7E`mXdZclX@{?j#V)ZDfdN+m-n-UQ&v zIDa3cMzj^-)>rUjVc>VjzYbr3l?Y$54S_zOiktJ264xw>rAJG4KpY z9%Vsyqz%LOQgdj5`3gDDn+wp;JL19(e#)_|RXX*x!L}BQQ`-`4f9QzD79*(JF%16? zEpTXqW!>@|BK3KoVvGR{UYxe9w{%KqgMZ~cua`l7H|l~7Cag}I<{}*f+F&`)`v9Ov zbVOr}`PH$^n|1WH!Lpvr6OhyqjWK5bzTLYf^z`(c46308*5BWMnHYPi-?+TsJ8dDz zOd3Wh60m~j%}}7NL1N9gE(G15Gz`B1RdZ;~SV7A9it%xfSaYt^QpYlCevRP!(0>BU zO8F8oUT%)@z$$AT%Ul=~r3IFEDY0<(H~|kPUVt{RJj4FYZim+!)@9+;AM;w7*`R%1{ z7W_kFMraS9UUMw#jdSz!u6&va&wrmj&8b^j5Edj&v*sawAXr1+Z2*H{ELVd^R%9}n z|Ef8cQjQ)}cou}-dN;EEO-Y+(&E;JnSiNmIBCI^A)XEvQy<2B0{FBj2V$?GXUZ%SM zh-Ak4`uf`1Cr;WEw1Z~wd#u!}na<9Jy2__Evx#1Smj>LB!(#~TrfD7v^>rKblk;wQ zCX@2p1J!1D9kF;NWq0_!kiifKJ0000< KMNUMnLSTZz-J^;C diff --git a/common/src/main/res/mipmap-xxhdpi/icon_sub_health.png b/common/src/main/res/mipmap-xxhdpi/icon_sub_health.png index 63caab34a583b10e4c336bda37847e4eaeb2c58d..e0c642d910131b23e989bfce592f64a8b996d9b9 100644 GIT binary patch delta 1401 zcmV-<1%~?43YiO#F@IA@L_t(&L)BVqY!p=#{?0rWj8P;-i2->S0S)|61HMoYfzB2p znh1&hFq#k>usaKgG#C?8{i6iIuu}|z!N(tok3^CRGusk;AtH)@BnB`jQUfuFpeS_r z&OK%-Z3u05-pg|S-gCb5eRJ>3z31E^q->>PZn6Se0mgIy1b^UjsbEcJw)J(Isl7z0 zS=m`KjUYekF98$H((4O5(n_AHFyWY|01O#`{J-k%x~r(AMW!JxHDRu8=9pkrB27fg z)%wEP%SxDV%##3y`jGxhGpvDTG?v~}W=s^#C&73t5Hm)jmbEqo@(tmXjxfhO4q$j7 z9*h%O*19&3Z+{4<#Dxhv|2T->4Z*>4U8ot>=8!QJ-IEvQ5`qOgQFY0AnMPJE|GhsEDzB!V(iEin)1U+8T=(^L#Da z`cW*5^TCM;D?8>v0>;H5#lQjGux^fn(G#19Fj34c0Dsf_Ne}{(dDkKfJ(cx%x;|QAZOnRx*z#&@Ie7ng}-l zxFSl@5HV*N=p^6>z&{d{L(F{GB|4H(&K;%M8&3~})hmp5E+6K0mF6&E5`iZ&(HLTk z1aNf-B7fC%{hPs^1p0-+`-y13%H?fjZ1~+H(Jf3kxrYIIyF!UkO~P?0E1!z)mr#zPuN)igKLdhOg?{lOK~d* z^I`(kTDVQz(KOz5l>@cLEDj%+<)rSi8!%k#wgFG~U3Sw%^?z}-dI$y+->cWRdaJ9CRW4iX zr+;s9N!<(Jn)DV@G-RpZ?n*Z{zJ(@tEW6PaVh;$zqESdZN=gM&{jQ;Wg?Y4i$FdQw z5Z?vv?k29K7x1hE-Ip;69+!$1NSKEpY;!IM-Fw8PGGbn=W?MG|$sbr4Z(lmbRotJ0 zfTrc+)mgex@IGk17Fd`l=I4O<6JNv>9e;?hNUgWt2$CYOFt?a%W+ty2bt!F=W>}3u z2m}@;oZNc=JsJcwMW1gp!@4sFeqdp)WB$Ov#2}z4`kYiVb;D^!i}1@4NEkcMUg@IC zYg}IPN?T=j9A#hsDG_0%;?i3ccE9%ntHwApHR#!b?UyUij0wk_58wkouxgAGD1WaS zg^GV8csv3Lb8YhlCcIb;;sJ7O)(mT*pI;zh!ZAMv@Q@!^mBzo-3~P#Cu0X<)xcl-W z5@P(6TGw?QP2O0p6yqz5+ZGRXba@6)uc-i+}khW?l(&-{wTI1)5=1yu|mNv55a|oMX@`4Vl$s zy!uan%z2wRNUHP4`B%{Vjw;ocsbO8DuCiCm3L%;a$oo8yGpdVWG{@?S^>U7R!KLj> zrYMTs)BnClZBo)pnTB;-zH9XyfO`Pw zVC)0&2F+;Q?w2IWc=s>2j2wvW2YUwz+ABe;GsZga0sGp23@FOTECNPr00000NkvXX Hu0mjfEwPO3 delta 1330 zcmV-21C?O!A5zxSc7x2RF^z3?p zusc0sghU^VCPadfV4{&=OpN-Xgvf)wpcuToXhfqsJuE1gWqKC8AowCNs6i17#1I5Q zS%v8`Jt&~NJKfWl*`Z!f)nEUAPIsSEby`T+v?n_Q)hB>7ihqDO82X~L*qlSL(KdqN###gn3FjIGI9X&e~`Lygvc{)656G3|j?G?Ly#R!kl1LE!aZ%yf~M`8C0OgL@?-tY{rX855AkAu;XC0{RAa zi(Qx&t@}~l3V+PNa}-%9sodJCVtkzA7gn(LBaEw(R5Y#D?^goC#F3iWNe?X*o0{zn?y8eDbw-$WTcc^zcGQ>-It`cvj0Y~Rf=Df0kCjC$KO*b`cG1w-CCwlFa^~Zq zjx`VTjeiOyMlA_P$#op$A#XnvEo84pbY~Q_x{Fn#S=7mH1f5fNThM)MCd~sPQ>4Iy8xR16>T7{jQ;Wg_ZZY zZGV|@lw?O0-Q9SloJBiBC~?R|m--Tv+$KNi>vx z2m+dzk5^}u$qjE%#~DbqhGFIE9PY8gRJudtI_yUG40BKBLux|QO9~3 zc(z8wE2mLiE9v|~KP~}R%=!?x%MYw3&T)X|ZDzYIu$QC>6DLOY$1%U%+BuYETvZ`blZ3q`JJx9?<-SIoW2=o{&TiAiN+c z`=xW^wUBuPF_wdRw>cq97l@g!c!}>XEX;o!(2L3ndV5#OoR5F+kGXcu9mYjN9s^xg zbs;M(my})cc;_#y>b9J$qS0L?vw!kG2U&{p&FIjRkAisrGzL5X#Ia)Ct&KE{I1r$M zeiK8UmzG?pu5!7UJ?UN1veainj&uCfXldW@XQX$`3)U^xObopCKz}Qo$K^R`wY}a* zWYa=sG9pg_5A+M>x~807*qoM6N<$g2#D@vj6}9 diff --git a/common/src/main/res/values/colors.xml b/common/src/main/res/values/colors.xml index f62a39f..0ac1872 100644 --- a/common/src/main/res/values/colors.xml +++ b/common/src/main/res/values/colors.xml @@ -205,4 +205,6 @@ #E3FCF6 #F15C42 #FFD04F + #FFAC53 + #F04D42 \ No newline at end of file diff --git a/config.gradle b/config.gradle index 4cb2718..7dbdf00 100644 --- a/config.gradle +++ b/config.gradle @@ -107,6 +107,7 @@ ext { gd_location : 'com.amap.api:location:latest.integration', gd_map : 'com.amap.api:3dmap:8.0.1', + gd_search : 'com.amap.api:search:latest.integration', wixin : 'com.tencent.mm.opensdk:wechat-sdk-android:+', //核心必须依赖 diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml index b0aecf0..668f47c 100644 --- a/health/src/main/AndroidManifest.xml +++ b/health/src/main/AndroidManifest.xml @@ -312,6 +312,10 @@ + + @@ -331,6 +335,10 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/OrderListAct.kt b/health/src/main/java/com/zj365/health/act/OrderListAct.kt index 21cea33..88446b8 100644 --- a/health/src/main/java/com/zj365/health/act/OrderListAct.kt +++ b/health/src/main/java/com/zj365/health/act/OrderListAct.kt @@ -25,9 +25,15 @@ class OrderListAct : BaseListAct() { var userId: String? = null val mAdapter by lazy { OrderListAdapter() } + var type:Int = 0 //默认全部 1 是从糖医进来 + override fun initData() { super.initData() - userId = intent.getStringExtra("id") + type = intent.getIntExtra("type",0) + if(intent.hasExtra("id")){ + userId = intent.getStringExtra("id") + + } } override fun initView() { @@ -55,7 +61,13 @@ class OrderListAct : BaseListAct() { } override fun loadData() { - mViewModel.getOrderList(userId, page) + if (type == 1){ + mViewModel.getSugarMedicineOrderList( page) + + }else { + mViewModel.getOrderList(userId, page) + + } } @SuppressLint("SetTextI18n") @@ -70,5 +82,16 @@ class OrderListAct : BaseListAct() { } } } + + mViewModel.sugarMedicalListLiveData.observe(this){ + it.data?.let { listData -> + setDate(mAdapter, listData) + /*if (listData.size <= 0){ + binding.title.mTvTitle.text = "我的订单" + }else{ + binding.title.mTvTitle.text = "我的订单(${listData.size})" + }*/ + } + } } } \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/ShopOrderListAct.kt b/health/src/main/java/com/zj365/health/act/ShopOrderListAct.kt index 0c72df6..c6726af 100644 --- a/health/src/main/java/com/zj365/health/act/ShopOrderListAct.kt +++ b/health/src/main/java/com/zj365/health/act/ShopOrderListAct.kt @@ -6,13 +6,18 @@ import androidx.recyclerview.widget.RecyclerView import com.alibaba.android.arouter.facade.annotation.Route import com.androidkun.xtablayout.XTabLayout import com.xty.base.act.BaseListAct +import com.xty.base.utils.PayUtils import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager +import com.xty.common.event.ReChangeEvent import com.xty.network.model.ShopOrderListBean import com.zj365.health.R import com.zj365.health.adapter.GoodsOrderAdapter import com.zj365.health.databinding.ActShopOrderListBinding import com.zj365.health.vm.ShopOrderVm +import com.zj365.health.weight.DialogTipNew +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode @Route(path = ARouterUrl.SHOP_ORDER_LIST_ACT) class ShopOrderListAct : BaseListAct() { @@ -25,6 +30,34 @@ class ShopOrderListAct : BaseListAct() { private val mTitles = mutableListOf() + var bean : ShopOrderListBean.ShopOrderBean? = null + + + val dialogCancel by lazy { + DialogTipNew(this, "取消订单","", "确认","取消",false,{ + bean?.let { + mViewModel.cancelOrder(it.id) + + } + }){ + + } + + } + + val dialogReturn by lazy { + DialogTipNew(this, "退款申请","", "确认","取消",false,{ + bean?.let { + mViewModel.applyReturn(it.id) + + } + }){ + + } + + } + + override fun initAdapter() { binding.mRecycle.adapter = mAdapter binding.mRecycle.layoutManager = LinearLayoutManager(this) @@ -50,20 +83,36 @@ class ShopOrderListAct : BaseListAct() { mAdapter.setOnItemChildClickListener { adapter, view, position -> - var bean = adapter.data[position] as ShopOrderListBean.ShopOrderBean - when(view.id){ - R.id.tv_confirm_receive_goods ->{ - mViewModel.receiveGoods(bean.id) - } - R.id.tv_logistics->{ - if (bean.status == 1){ - mViewModel.cancelOrder(bean.id) + bean = adapter.data[position] as ShopOrderListBean.ShopOrderBean + bean?.let { + when(view.id){ + R.id.tv_confirm_receive_goods ->{ + mViewModel.receiveGoods(it.id) } - } - R.id.tv_refund ->{ + R.id.tv_logistics->{ + if (it.status == 1){ + dialogCancel.setContentNew("您是否确认取消订单,取消订单后如涉及退款" + + ",请注意查收") + dialogCancel.show() + }else{ + + } + } + R.id.tv_refund ->{ + if (it.status == 3 || it.status == 2){ + dialogReturn.setContentNew("您是否确认对此订单进行退款申请,申请完成" + + "后会在1~3个工作日对订单进行审核,请及时" + + "关注订单状态") + dialogReturn.show() + }else if (it.status == 1){ + PayUtils(this).payForGoods(it.pay_price.toFloat(),it.order_no) + + } + } } } + } } @@ -149,4 +198,10 @@ class ShopOrderListAct : BaseListAct() { } override fun setLayout() = binding.root + + @Subscribe(threadMode = ThreadMode.MAIN) + fun paySuccess(event: ReChangeEvent){ + page = 1 + loadData() + } } \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt index b472f5b..72d8b6e 100644 --- a/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt +++ b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt @@ -1,5 +1,6 @@ package com.zj365.health.act.healthrecord +import android.graphics.Color import android.util.Log import android.view.View import androidx.core.view.get @@ -60,6 +61,10 @@ class HealthRecordMainAct : BaseVmAct() { mViewModel.healthArchiveLiveData.observe(this){ binding.tvBmi.text = "${it.data.bmiInfo.bmi}" binding.tvBmiDesc.text = it.data.bmiInfo.levelName + if (it.data.bmiInfo.levelName.equals("理想")){ + binding.tvBmiDesc.setTextColor(Color.parseColor("#02C191")) + } + binding.tvBmr.text = "${it.data.bmr}" mAdapter.setNewInstance(it.data.healData) } diff --git a/health/src/main/java/com/zj365/health/act/psychological/PsychologicalQuestionnaireAct.kt b/health/src/main/java/com/zj365/health/act/psychological/PsychologicalQuestionnaireAct.kt index 0552f55..db1439c 100644 --- a/health/src/main/java/com/zj365/health/act/psychological/PsychologicalQuestionnaireAct.kt +++ b/health/src/main/java/com/zj365/health/act/psychological/PsychologicalQuestionnaireAct.kt @@ -1,10 +1,28 @@ package com.zj365.health.act.psychological +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.os.Build import android.view.View +import android.webkit.WebChromeClient +import android.webkit.WebSettings +import android.webkit.WebView +import android.webkit.WebViewClient +import com.alibaba.android.arouter.facade.annotation.Route +import com.tamsiree.rxkit.RxNetTool +import com.tamsiree.rxkit.RxTool import com.xty.base.act.BaseVmAct import com.xty.base.vm.BaseVm +import com.xty.common.LogUtils +import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager +import com.xty.common.util.CommonUtils +import com.zj365.health.BuildConfig import com.zj365.health.databinding.ActPsychologicalQuestionnaireBinding +import com.zj365.health.weight.QuestionDialog +@Route(path = ARouterUrl.PSYCHOLOGICAL_QUESTION_ACT) class PsychologicalQuestionnaireAct : BaseVmAct() { val binding by lazy { ActPsychologicalQuestionnaireBinding.inflate(layoutInflater) } @@ -14,4 +32,134 @@ class PsychologicalQuestionnaireAct : BaseVmAct() { } override fun setLayout() = binding.root + + var surveyId: Long = 0 + override fun initData() { + super.initData() + surveyId = intent.getLongExtra("surveyId",0) + } + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text = "心理测试 " + binding.title.mIvBack.setOnClickListener { finish() } + initWebSettings() + var userId = CommonUtils.getMyUserId() + binding.wvContent.loadUrl(BuildConfig.url+"shareApi/H5_question/${userId}/${surveyId}/android") + + } + + @SuppressLint("SetJavaScriptEnabled") + private fun initWebSettings() { + binding.wvContent.isHorizontalScrollBarEnabled = false //水平不显示 + binding.wvContent.isVerticalScrollBarEnabled = false //垂直不显示 + var webViewClient = MyClient() + + binding.wvContent.apply { + isHorizontalScrollBarEnabled = false //水平不显示 + isVerticalScrollBarEnabled = false //垂直不显示 + + val webSetting: WebSettings = settings + webSetting.apply { + setRenderPriority(WebSettings.RenderPriority.HIGH) + cacheMode = if (RxNetTool.isConnected(RxTool.getContext())) { + WebSettings.LOAD_DEFAULT // 设置缓存模式 + } else { + WebSettings.LOAD_CACHE_ELSE_NETWORK // 设置缓存模式 + } + loadWithOverviewMode = true + domStorageEnabled = true//不添加可能加载H5的页面时候出现一片空白 + databaseEnabled = true + setAppCacheEnabled(true) + allowFileAccess = true + javaScriptEnabled = true + textZoom = 110 + useWideViewPort = false//设置此属性,可任意比例缩放 + setLayerType(View.LAYER_TYPE_HARDWARE, null) // 启用硬件加速 + layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL + builtInZoomControls = false //设置内置的缩放控件。若为false,则该WebView不可缩放 + displayZoomControls = false //隐藏原生的缩放控件 + defaultTextEncodingName = "utf-8" //设置编码格式 + blockNetworkImage = false //解决图片不显示 + loadsImagesAutomatically = true //支持自动加载图片 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + setAllowFileAccessFromFileURLs(true) + setAllowUniversalAccessFromFileURLs(true) + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//解决视频加载不出来的问题 + mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW; + } + } + settings.domStorageEnabled = true + this.webViewClient = webViewClient + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + + settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); + + } + webChromeClient = object : WebChromeClient() { + override fun getDefaultVideoPoster(): Bitmap? { + + try { + //这个地方是加载h5的视频列表 默认图 点击前的视频图 + LogUtils.d("WebView---------加载视频默认图片"); + return BitmapFactory.decodeResource( + context.getResources(), + com.xty.common.R.mipmap.ic_chat_picture + ); + + } catch (e: Exception) { + LogUtils.e("WebView---------默认图片加载失败"); + + } + + return null + } + + } + } + } + + override fun onPause() { + super.onPause() + //暂停WebView在后台的所有活动 + binding.wvContent.onPause() + //暂停WebView在后台的JS活动 + binding.wvContent.pauseTimers() + } + + override fun onResume() { + super.onResume() + binding.wvContent.onResume(); + binding.wvContent.resumeTimers(); + } + + override fun onDestroy() { + super.onDestroy() + binding.root.removeView(binding.wvContent) + binding.wvContent.destroy() + } + val tipDialog by lazy { + QuestionDialog(this, false, "温馨提示", { + /* bundle.clear() + bundle.putString("orderNo", orderNo) + RouteManager.goAct(ARouterUrl.UPLOAD_CHECK, bundle)*/ + }) + } + inner class MyClient : WebViewClient() { + override fun shouldOverrideUrlLoading(p0: WebView?, p1: String): Boolean { + if (p1.contains("code:0")) { + showDialog() + } else { + p0?.loadUrl(p1) + } + return true + } + } + + private fun showDialog() { + tipDialog.show() + } + } \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt b/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt index 8f452c5..c0674eb 100644 --- a/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt +++ b/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt @@ -6,6 +6,10 @@ import com.xty.base.act.BaseListAct import com.xty.base.act.BaseVmAct import com.xty.base.vm.BaseVm import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager +import com.xty.common.util.CommonUtils +import com.xty.network.model.PsychologicalListBean +import com.zj365.health.BuildConfig import com.zj365.health.adapter.psychological.PsychologicalTestMainAdapter import com.zj365.health.databinding.ActPsychologicalTestMainBinding import com.zj365.health.vm.PsychologicalTestMainVm @@ -32,7 +36,13 @@ class PsychologicalTestMainAct : BaseListAct() { binding.mRecycle.layoutManager = LinearLayoutManager(this) binding.mRecycle.adapter = mAdapter - mAdapter.setOnItemChildClickListener { adapter, view, position -> + mAdapter.setOnItemClickListener { adapter, view, position -> + var bean = adapter.data[position] as PsychologicalListBean.PsychologicalBean + bundle.clear() + bundle.putString("web_site_url","${BuildConfig.url}shareApi/H5_question/${CommonUtils.getMyUserId()}/${bean.id}/android") + bundle.putBoolean("isShowTitle",true) + RouteManager.goAct(ARouterUrl.H5_ACT,bundle) + } diff --git a/health/src/main/java/com/zj365/health/act/skin/SkinMeasurementMainAct.kt b/health/src/main/java/com/zj365/health/act/skin/SkinMeasurementMainAct.kt index c4f3422..d458eb0 100644 --- a/health/src/main/java/com/zj365/health/act/skin/SkinMeasurementMainAct.kt +++ b/health/src/main/java/com/zj365/health/act/skin/SkinMeasurementMainAct.kt @@ -105,10 +105,20 @@ class SkinMeasurementMainAct : BaseVmAct() { binding.title.mTvRight.visibility = View.VISIBLE }else{ binding.title.mTvTitle.text ="AI糖医" + binding.title.mTvRight.text ="购买记录" + binding.title.mTvRight.setTextColor(resources.getColor(R.color.col_02c)) + binding.title.mTvRight.visibility = View.VISIBLE mViewModel.getAIGoods() } binding.title.mTvRight.setOnClickListener { + if(type == 0){ + + }else{ + bundle.clear() + bundle.putInt("type",1) + RouteManager.goAct(ARouterUrl.ORDER_LIST,bundle) + } } diff --git a/health/src/main/java/com/zj365/health/adapter/GoodsOrderAdapter.kt b/health/src/main/java/com/zj365/health/adapter/GoodsOrderAdapter.kt index 3927203..35a7ff4 100644 --- a/health/src/main/java/com/zj365/health/adapter/GoodsOrderAdapter.kt +++ b/health/src/main/java/com/zj365/health/adapter/GoodsOrderAdapter.kt @@ -43,12 +43,19 @@ class GoodsOrderAdapter : BaseAdapter(R.layout. holder.setGone(R.id.tv_confirm_receive_goods,true) holder.setText(R.id.tv_logistics,"取消订单") holder.setText(R.id.tv_refund,"立即支付") + + holder.setGone(R.id.tv_logistics,false) + + holder.setGone(R.id.tv_refund,false) } 3->{ status.setTextColor(context.getColor(R.color.col_9BD)) holder.setGone(R.id.tv_confirm_receive_goods,false) holder.setText(R.id.tv_logistics,"查看物流") holder.setText(R.id.tv_refund,"申请退款") + holder.setGone(R.id.tv_logistics,false) + + holder.setGone(R.id.tv_refund,false) } 4->{ diff --git a/health/src/main/java/com/zj365/health/vm/PayCancerVm.kt b/health/src/main/java/com/zj365/health/vm/PayCancerVm.kt index af37daa..74f1702 100644 --- a/health/src/main/java/com/zj365/health/vm/PayCancerVm.kt +++ b/health/src/main/java/com/zj365/health/vm/PayCancerVm.kt @@ -23,6 +23,8 @@ class PayCancerVm : BaseVm() { val isCanReservationOb by lazy { MutableLiveData>() } val orderListData by lazy { MutableLiveData>>() } + val sugarMedicalListLiveData by lazy { MutableLiveData>>() } + fun payUrl(goodsId: String?, channelName: String, exchangeCode: String) { if (goodsId.isNullOrEmpty()) { return @@ -129,6 +131,18 @@ class PayCancerVm : BaseVm() { } } + fun getSugarMedicineOrderList(pageNum:Int){ + startHttp { + var json = JSONObject() + json.put("pageNum",pageNum) + json.put("pageSize",20) + var response = + apiInterface().getSugarMedicineOrderList(retrofits.getRequestBody(json.toString())) + response.getCodeStatus(sugarMedicalListLiveData, nowData) + } + + } + fun getEstimateRecord() { startHttp { var json = JSONObject() @@ -198,4 +212,6 @@ class PayCancerVm : BaseVm() { response.getCodeStatus(isCanReservationOb, nowData) } } + + } \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/vm/ShopOrderVm.kt b/health/src/main/java/com/zj365/health/vm/ShopOrderVm.kt index b464b37..852e87a 100644 --- a/health/src/main/java/com/zj365/health/vm/ShopOrderVm.kt +++ b/health/src/main/java/com/zj365/health/vm/ShopOrderVm.kt @@ -54,4 +54,12 @@ class ShopOrderVm : BaseVm() { } } + + fun applyReturn(id:Long){ + startHttp { + val response = apiInterface().applyReturn(id) + response.getCodeStatus(cancelOrderLiveData, nowData) + + } + } } \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt b/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt index a46ea77..b95378a 100644 --- a/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt +++ b/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt @@ -53,4 +53,8 @@ class DialogTipNew( fun setContentNew(content:String){ binding.mTitle.text= content } + + fun setTitleNew(title:String){ + binding.tvTitle.text = title + } } \ No newline at end of file diff --git a/health/src/main/res/layout/act_psychological_questionnaire.xml b/health/src/main/res/layout/act_psychological_questionnaire.xml index dc145bb..402229d 100644 --- a/health/src/main/res/layout/act_psychological_questionnaire.xml +++ b/health/src/main/res/layout/act_psychological_questionnaire.xml @@ -12,9 +12,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/title" - android:layout_margin="@dimen/dp_14" + android:layout_marginStart="@dimen/dp_14" + android:layout_marginTop="@dimen/dp_14" + android:layout_marginEnd="@dimen/dp_14" + android:layout_marginBottom="@dimen/dp_14" android:background="@drawable/shape_white_8radius" - android:padding="@dimen/dp_10"/> + android:padding="@dimen/dp_10" /> () { + val binding by lazy { ActivityElectronicFenceSettingBinding.inflate(layoutInflater) } + + val mAdapter by lazy { ElectronicFenceAdapter() } + + var type: Int = 0 //0 列表页 1 设置页 2 修改已设计的电子围栏 + + private var aMap: AMap? = null + + var poiItem: PoiItem? = null + + var settingType :Int =2 // 1-禁入 2-禁出 + + var radius:Int = 500 + + var title:String = "" + + var latitude:Double = 0.00 + var longitude:Double = 0.00 + + var markerOptionsList = ArrayList() + + var bean: EtFenceListBean.EtFenceChildBean? = null + + + override fun liveObserver() { + mViewModel.addOrDeleteLiveData.observe(this){ + EventBus.getDefault().post(BtFenceSettingSuccessEvent()) + finish() + } + } + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text = "电子围栏设置" + binding.title.mIvBack.setOnClickListener { + finish() + } + aMap = binding.map.map + + initLocation() + + if (intent.hasExtra("type")){ + type = intent.getIntExtra("type",0) + + } + + if(intent.hasExtra("poiItem")){ + poiItem = intent.getParcelableExtra("poiItem") + } + + if(intent.hasExtra("bean")){ + bean = intent.getParcelableExtra("bean") + } + + if(type == 0){ + binding.llData.visibility = View.VISIBLE + binding.llSetting.visibility = View.GONE + + mViewModel.getElectronicFenceList() + binding.tvCancel.visibility = View.GONE + }else if(type == 1){ + binding.llData.visibility = View.GONE + binding.llSetting.visibility = View.VISIBLE + binding.tvCancel.visibility = View.VISIBLE + initSettingData() + }else { + binding.llData.visibility = View.GONE + binding.llSetting.visibility = View.VISIBLE + binding.tvCancel.visibility = View.VISIBLE + binding.tvCancel.text = "删除" + initModifyData() + } + + binding.recycler.adapter = mAdapter + binding.recycler.layoutManager = LinearLayoutManager(this) + + binding.tvConfirm.setOnClickListener { + if (type == 0){ + RouteManager.goAct(ARouterUrl.ELECTRONIC_ADDRESS_CHOOSE_ACT) + + }else if(type == 1){ + poiItem?.let { + mViewModel.setBtFence(title,radius,settingType,longitude,latitude,null) + } + }else if(type == 2){ + bean?.let { + mViewModel.setBtFence(title,radius,settingType,longitude,latitude,it.id) + } + } + } + + binding.tvCancel.setOnClickListener { + if(type == 2){ + bean?.let { + mViewModel.deleteBtFence(it.id) + } + }else{ + finish() + } + + } + + + + binding.clSetting.skbRadius.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{ + override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) { + radius = p1 + } + + override fun onStartTrackingTouch(p0: SeekBar?) { + } + + override fun onStopTrackingTouch(p0: SeekBar?) { + } + + }) + + binding.clSetting.rbType.setOnCheckedChangeListener { radioGroup, checkedId -> + + when(radioGroup.checkedRadioButtonId){ + R.id.rb_leave ->{ + settingType = 2 + aMap?.let { + it.clear() + var markerOptions = MarkerOptions().position(LatLng(latitude,longitude)).icon( + BitmapDescriptorFactory.fromView(View.inflate(this, + R.layout.layout_bt_fence_leave,null))) + var marker = it.addMarker(markerOptions) + + it.addCircle(CircleOptions().center(LatLng(latitude,longitude)) + .radius(radius.toDouble()).fillColor(Color.parseColor("#61FFAC53")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f) + ) + } + + } + + R.id.rb_enter ->{ + settingType = 1 + + aMap?.let { + it.clear() + var markerOptions = MarkerOptions().position(LatLng(latitude,longitude)).icon( + BitmapDescriptorFactory.fromView(View.inflate(this, + R.layout.layout_bt_fence_enter,null))) + var marker = it.addMarker(markerOptions) + + it.addCircle(CircleOptions().center(LatLng(latitude,longitude)) + .radius(radius.toDouble()).fillColor(Color.parseColor("#66F04D42")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f) + ) + } + + } + } + + } + } + + fun initLocation(){ + var locationStyle = MyLocationStyle() + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) + aMap?.let { + it.clear() + it.myLocationStyle = locationStyle + it.uiSettings.isMyLocationButtonEnabled = false + it.isMyLocationEnabled = false + it.moveCamera(CameraUpdateFactory.zoomTo(20f)) + + var uiSettings = it.uiSettings + uiSettings.isZoomControlsEnabled = false + uiSettings.isMyLocationButtonEnabled = false + uiSettings.isScaleControlsEnabled = false + uiSettings.logoPosition = AMapOptions.LOGO_MARGIN_LEFT + } + } + + fun initModifyData(){ + bean?.let { + title = "${it.title}" + binding.clSetting.tvAddress.text = "${it.title}" + latitude = it.lat + longitude = it.log + radius = it.radius + settingType = it.type + binding.clSetting.skbRadius.progress = radius + if (settingType == 1){ + binding.clSetting.rbType.check(R.id.rb_enter) + }else{ + binding.clSetting.rbType.check(R.id.rb_leave) + + } + + } + + aMap?.let { + + + if(settingType == 1){ + var markerOptions = MarkerOptions().position(LatLng(latitude,longitude)).icon( + BitmapDescriptorFactory.fromView(View.inflate(this, + R.layout.layout_bt_fence_enter,null))) + + var marker = it.addMarker(markerOptions) + it.addCircle(CircleOptions().center(LatLng(latitude,longitude)) + .radius(radius.toDouble()).fillColor(Color.parseColor("#66F04D42")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f) + ) + }else{ + var markerOptions = MarkerOptions().position(LatLng(latitude,longitude)).icon( + BitmapDescriptorFactory.fromView(View.inflate(this, + R.layout.layout_bt_fence_leave,null))) + + var marker = it.addMarker(markerOptions) + it.addCircle(CircleOptions().center(LatLng(latitude,longitude)) + .radius(radius.toDouble()).fillColor(Color.parseColor("#61FFAC53")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f)) + + } + + it.moveCamera(CameraUpdateFactory.newCameraPosition(CameraPosition(LatLng(latitude,longitude),14f,0f,0f))) + } + + } + + fun initSettingData(){ + + poiItem?.let { + title = "${it.provinceName}${it.cityName}${it.adName}${it.title}" + binding.clSetting.tvAddress.text = "${it.provinceName}${it.cityName}${it.adName}${it.title}" + latitude = it.latLonPoint.latitude + longitude = it.latLonPoint.longitude + + } + + binding.clSetting.skbRadius.progress = radius + + binding.clSetting.rbType.check(R.id.rb_leave) + + aMap?.let { + var markerOptions = MarkerOptions().position(LatLng(latitude,longitude)).icon( + BitmapDescriptorFactory.fromView(View.inflate(this, + R.layout.layout_bt_fence_leave,null))) + var marker = it.addMarker(markerOptions) + it.animateCamera(CameraUpdateFactory.newCameraPosition(CameraPosition(LatLng(latitude,longitude),15f,0f,0f))) + + it.addCircle(CircleOptions().center(LatLng(latitude,longitude)) + .radius(radius.toDouble()).fillColor(Color.parseColor("#61FFAC53")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f) + ) + + } + } + + override fun setLayout() = binding.root + + override fun onDestroy() { + super.onDestroy() + binding.map.onDestroy() + } + + override fun onPause() { + super.onPause() + binding.map.onPause() + } + + + override fun onResume() { + super.onResume() + binding.map.onResume() + } + + @SuppressLint("MissingSuperCall") + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.map.onSaveInstanceState(outState) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding.map.onCreate(savedInstanceState) + } +} \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicAddressChooseAct.kt b/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicAddressChooseAct.kt new file mode 100644 index 0000000..a8b53ee --- /dev/null +++ b/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicAddressChooseAct.kt @@ -0,0 +1,341 @@ +package com.zj365.mime.act.electronicfence + +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import android.text.method.KeyListener +import android.view.KeyEvent +import android.view.View +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import com.alibaba.android.arouter.facade.annotation.Route +import com.amap.api.location.AMapLocation +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.amap.api.location.AMapLocationListener +import com.amap.api.maps.AMap +import com.amap.api.maps.AMapOptions +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.MyLocationStyle +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.core.PoiItem +import com.amap.api.services.core.PoiItemV2 +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult +import com.amap.api.services.poisearch.PoiResult +import com.amap.api.services.poisearch.PoiResultV2 +import com.amap.api.services.poisearch.PoiSearch +import com.amap.api.services.poisearch.PoiSearchV2 +import com.tamsiree.rxkit.RxKeyboardTool +import com.xty.base.act.BaseVmAct +import com.xty.base.vm.BaseVm +import com.xty.common.LogUtils +import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager +import com.xty.common.event.BtFenceSettingSuccessEvent +import com.xty.common.util.CommonToastUtils +import com.zj365.mime.R +import com.zj365.mime.adapter.ElectronicAddressAdapter +import com.zj365.mime.databinding.ActElectronicAddressChooseBinding +import com.zj365.mime.model.CustomerPOItem +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +@Route(path = ARouterUrl.ELECTRONIC_ADDRESS_CHOOSE_ACT) +class ElectronicAddressChooseAct : BaseVmAct(),AMapLocationListener ,GeocodeSearch.OnGeocodeSearchListener + ,PoiSearch.OnPoiSearchListener{ + val binding by lazy { ActElectronicAddressChooseBinding.inflate(layoutInflater) } + + private var aMap: AMap? = null + + var mLocationClient:AMapLocationClient? = null + var mLocationOption:AMapLocationClientOption? = null + + var geocodeSearch: GeocodeSearch? = null + + val mAdapter by lazy { ElectronicAddressAdapter() } + + var searchAddress:String = "" + + var latitude:Double=0.00 + var longitude:Double = 0.00 + + var cityName :String = "" + var poiList = ArrayList() + + var choosePoiItem: PoiItem? = null + + var isHandDrag:Boolean = false + + var page:Int = 1 + + + override fun liveObserver() { + + } + + override fun initView() { + super.initView() + + binding.tvCancel.setOnClickListener { + finish() + } + + binding.tvConfirm.setOnClickListener { + choosePoiItem?.let { + bundle.clear() + bundle.putParcelable("poiItem",it) + bundle.putInt("type",1) + RouteManager.goAct(ARouterUrl.ELECTRONIC_ADD_MODIFY_ACT,bundle) + } + } + + aMap = binding.mapView.map + initLocation() + + binding.recycler.adapter = mAdapter + binding.recycler.layoutManager = LinearLayoutManager(this) + + binding.etSearch.setOnEditorActionListener(object : TextView.OnEditorActionListener { + override fun onEditorAction(p0: TextView?, p1: Int, p2: KeyEvent?): Boolean { + if(p1 == EditorInfo.IME_ACTION_SEARCH){ + searchAddress = binding.etSearch.text.toString() + page = 1 + searchPOI() + RxKeyboardTool.hideSoftInput(this@ElectronicAddressChooseAct) + return true + + } + return false + } + + }) + + mAdapter.setOnItemClickListener { adapter, view, position -> + var bean = adapter.data[position] as CustomerPOItem + (adapter.data as ArrayList).forEachIndexed { index, customerPOItem -> + customerPOItem.isChecked = false + } + + bean.isChecked = true + choosePoiItem = bean.poiItem + mAdapter.notifyDataSetChanged() + } + + binding.mRefresh.setOnRefreshListener { + page = 1 + searchPOI() + binding.mRefresh.finishRefresh(1000) + } + binding.mRefresh.setEnableLoadMore(true) + binding.mRefresh.setOnLoadMoreListener { + page++ + searchPOI() + binding.mRefresh.finishLoadMore(1000) + } + } + + fun searchPOI(){ + LogUtils.e("ElectronicAddressChooseAct","keyword${searchAddress}") + var query = PoiSearch.Query(searchAddress,"",cityName) + query.pageNum = page + query.pageSize = 20 + + var poisearch = PoiSearch(this,query) + poisearch.bound = PoiSearch.SearchBound(LatLonPoint(latitude,longitude),50000) + poisearch.setOnPoiSearchListener(this) + poisearch.searchPOIAsyn() + } + + + fun initLocation(){ + var locationStyle = MyLocationStyle() + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) + aMap?.let { + it.myLocationStyle = locationStyle + it.uiSettings.isMyLocationButtonEnabled = false + it.isMyLocationEnabled = false + + it.moveCamera(CameraUpdateFactory.zoomTo(30f)) + + var uiSettings = it.uiSettings + uiSettings.isZoomControlsEnabled = false + uiSettings.isMyLocationButtonEnabled = false + uiSettings.isScaleControlsEnabled = false + uiSettings.logoPosition= AMapOptions.LOGO_MARGIN_LEFT + + goLocation() + + it.setOnCameraChangeListener(object :AMap.OnCameraChangeListener{ + override fun onCameraChange(p0: CameraPosition?) { + + } + + override fun onCameraChangeFinish(cameraPosition: CameraPosition) { + LogUtils.e("ElectronicAddressChooseAct","onCameraChangeFinish") + if(isHandDrag && TextUtils.isEmpty(searchAddress)){ + getGeocodeSearch(cameraPosition.target) + + } + isHandDrag = true + } + }) + } + } + + fun goLocation(){ + mLocationClient = AMapLocationClient(this) + mLocationOption = AMapLocationClientOption() + mLocationClient?.setLocationListener(this) + mLocationOption?.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy) + mLocationOption?.setInterval(1000) + mLocationOption?.setOnceLocation(false) + mLocationOption?.setGpsFirst(true) + mLocationOption?.setNeedAddress(true) + mLocationOption?.setOnceLocationLatest(false) + mLocationOption?.setSensorEnable(true) + + mLocationClient?.setLocationOption(mLocationOption) + mLocationClient?.startLocation() + + } + + + fun getGeocodeSearch(targe: LatLng){ + LogUtils.e("ElectronicAddressChooseAct","getGeocodeSearch ${targe.latitude},${targe.longitude},") + + if(geocodeSearch == null) { + geocodeSearch = GeocodeSearch(this) + } + searchAddress = "" + latitude = targe.latitude + longitude = targe.longitude + var query = RegeocodeQuery(LatLonPoint(targe.latitude,targe.longitude),5000f,GeocodeSearch.AMAP) + geocodeSearch?.setOnGeocodeSearchListener(this) + geocodeSearch?.getFromLocationAsyn(query) + + } + + fun setMapCenter(amapLocation:AMapLocation){ + aMap?.let { + var locationMark = it.addMarker(MarkerOptions().position(LatLng(amapLocation.latitude,amapLocation.longitude)).icon( + BitmapDescriptorFactory.fromResource(R.mipmap.icon_address_location) + )) + locationMark.setPositionByPixels(binding.mapView.width / 2,binding.mapView.height /2) + it.animateCamera(CameraUpdateFactory.newCameraPosition(CameraPosition(LatLng(amapLocation.latitude,amapLocation.longitude),30f,0f,0f))) + } + } + + override fun setLayout() = binding.root + + override fun onDestroy() { + super.onDestroy() + binding.mapView.onDestroy() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + @SuppressLint("MissingSuperCall") + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) + } + + override fun onLocationChanged(amapLocation: AMapLocation?) { + LogUtils.e("ElectronicAddressChooseAct","onLocationChanged:${amapLocation?.errorCode!!}") + amapLocation?.let { + if (it.errorCode == AMapLocation.LOCATION_SUCCESS){ + mLocationClient?.stopLocation() + mLocationClient?.onDestroy() + + setMapCenter(it) + latitude = it.latitude + longitude = it.longitude + var latLng = LatLng(latitude,longitude) + cityName =it.city + + + }else{ + + } + } + + } + + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult?, code: Int) { + LogUtils.e("ElectronicAddressChooseAct","onRegeocodeSearched:${code}") + + if(code == 1000){ + if(regeocodeResult != null && regeocodeResult?.regeocodeAddress != null && regeocodeResult?.regeocodeAddress?.formatAddress != null){ + var split = regeocodeResult!!.regeocodeAddress!!.province +regeocodeResult!!.regeocodeAddress!!.city + regeocodeResult!!.regeocodeAddress!!.district + regeocodeResult!!.regeocodeAddress!!.township + LogUtils.e("ElectronicAddressChooseAct","split:${split}") + searchPOI() + } + } + + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, code: Int) { + LogUtils.e("ElectronicAddressChooseAct","onGeocodeSearched:${code}") + + + } + override fun onPoiSearched(result: PoiResult?, code: Int) { + if(code == 1000){ + if(result != null && result?.query != null){ + LogUtils.e("ElectronicAddressChooseAct","query${result!!.pois.size}") + if(page == 1){ + mAdapter.data.clear() + poiList.clear() + choosePoiItem = null + if (result!!.pois.size > 0){ + aMap?.moveCamera(CameraUpdateFactory.newCameraPosition(CameraPosition(LatLng(result!!.pois[0].latLonPoint.latitude,result!!.pois[0].latLonPoint.longitude),15f,0f,30f))) + } + result!!.pois.forEach { + poiList.add(CustomerPOItem(it,false)) + } + mAdapter.setList(poiList) + }else{ + result!!.pois.forEach { + poiList.add(CustomerPOItem(it,false)) + } + mAdapter.addData(poiList) + } + + } + } + } + + override fun onPoiItemSearched(p0: PoiItem?, p1: Int) { + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun settingSuccess(event: BtFenceSettingSuccessEvent){ + this.finish() + } +} \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt b/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt index b34132a..c922fa7 100644 --- a/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt @@ -1,15 +1,32 @@ package com.zj365.mime.act.electronicfence import android.annotation.SuppressLint +import android.graphics.Color import android.os.Bundle import android.view.View +import android.widget.SeekBar import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import com.alibaba.android.arouter.facade.annotation.Route import com.amap.api.maps.AMap +import com.amap.api.maps.AMapOptions +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.CircleOptions +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.LatLngBounds +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.MyLocationStyle +import com.amap.api.services.core.PoiItem +import com.hjq.toast.ToastUtils import com.xty.base.act.BaseVmAct import com.xty.base.vm.BaseVm import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager +import com.xty.common.util.CommonToastUtils +import com.xty.network.model.EtFenceListBean +import com.zj365.mime.R import com.zj365.mime.adapter.ElectronicFenceAdapter import com.zj365.mime.databinding.ActivityElectronicFenceSettingBinding import com.zj365.mime.vm.ElectronicFenceSettingVm @@ -21,21 +38,72 @@ class ElectronicFenceSettingAct : BaseVmAct() { val mAdapter by lazy { ElectronicFenceAdapter() } - var type: Int = 0 //0 列表页 1 设置页 + var type: Int = 0 //0 列表页 1 设置页 2 修改已设计的电子围栏 private var aMap: AMap? = null + + var poiItem:PoiItem? = null + + var bean: EtFenceListBean.EtFenceChildBean? = null + + var total :Int = 0 + + + override fun liveObserver() { mViewModel.electronicFenceListLiveDate.observe(this){ if(it.data.count == 0){ binding.inEmpty.root.visibility = View.VISIBLE - binding.recycler.visibility = View.GONE + binding.rxData.visibility = View.GONE }else{ - binding.recycler.visibility = View.VISIBLE - binding.inEmpty.root.visibility = View.VISIBLE + binding.rxData.visibility = View.VISIBLE + binding.inEmpty.root.visibility = View.GONE mAdapter.setNewInstance(it.data.list) + total = it.data.count + binding.tvCount.text ="${it.data.count}/5" + var boundsBuilder = LatLngBounds.Builder() + + it.data.list.forEach { + var latLng = LatLng(it.lat,it.log) + var options = MarkerOptions().position(latLng) + var radius = it.radius.toDouble() + + boundsBuilder.include(latLng) + options.visible(true) + if(it.type == 1){ + aMap?.let { + var markerOptions = MarkerOptions().position(latLng) + .icon(BitmapDescriptorFactory.fromView(View.inflate(this,R.layout.layout_bt_fence_enter,null))) + var marker = it.addMarker(markerOptions) + + it.addCircle(CircleOptions().center(latLng) + .radius(radius).fillColor(Color.parseColor("#66F04D42")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f) + ) + } + }else{ + aMap?.let { + var markerOptions = MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromView(View.inflate(this,R.layout.layout_bt_fence_leave,null))) + var marker = it.addMarker(markerOptions) + + it.addCircle(CircleOptions().center(latLng) + .radius(radius.toDouble()).fillColor(Color.parseColor("#61FFAC53")) + .strokeColor(Color.parseColor("#FFFFFF")) + .strokeWidth(1.0f) + ) + } + } + } + + aMap?.animateCamera(CameraUpdateFactory.newLatLngBounds(boundsBuilder.build(),50)) } } + + mViewModel.addOrDeleteLiveData.observe(this){ + finish() + } } override fun initView() { @@ -46,24 +114,64 @@ class ElectronicFenceSettingAct : BaseVmAct() { finish() } aMap = binding.map.map + + binding.llData.visibility = View.VISIBLE + binding.llSetting.visibility = View.GONE + mViewModel.getElectronicFenceList() + binding.tvCancel.visibility = View.GONE + binding.recycler.adapter = mAdapter binding.recycler.layoutManager = LinearLayoutManager(this) - binding.tvCancel.visibility = View.GONE + mAdapter.setOnItemClickListener { adapter, view, position -> + var bean = adapter.data[position] as EtFenceListBean.EtFenceChildBean + bundle.clear() + bundle.putParcelable("bean",bean) + bundle.putInt("type",2) + RouteManager.goAct(ARouterUrl.ELECTRONIC_ADD_MODIFY_ACT,bundle) + } + + binding.tvConfirm.setOnClickListener { - if (type == 0){ - binding.llData.visibility = View.GONE - type = 1 - }else{ - binding.llData.visibility = View.VISIBLE - type = 0 - } + if(total < 5){ + RouteManager.goAct(ARouterUrl.ELECTRONIC_ADDRESS_CHOOSE_ACT) + + }else{ + CommonToastUtils.showToast("最多可添加5个围栏") + } + } binding.tvCancel.setOnClickListener { + if(type == 2){ + bean?.let { + mViewModel.deleteBtFence(it.id) + } + }else{ + finish() + } + } + initLocation() + } + + fun initLocation(){ + var locationStyle = MyLocationStyle() + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) + locationStyle.interval(2000) + aMap?.let { + it.clear() + it.myLocationStyle = locationStyle + it.uiSettings.isMyLocationButtonEnabled = false + it.isMyLocationEnabled = false + + var uiSettings = it.uiSettings + uiSettings.isZoomControlsEnabled = false + uiSettings.isMyLocationButtonEnabled = false + uiSettings.isScaleControlsEnabled = false + uiSettings.logoPosition = AMapOptions.LOGO_MARGIN_LEFT } } @@ -83,6 +191,9 @@ class ElectronicFenceSettingAct : BaseVmAct() { override fun onResume() { super.onResume() binding.map.onResume() + if(type == 0){ + mViewModel.getElectronicFenceList() + } } @SuppressLint("MissingSuperCall") diff --git a/mine/src/main/java/com/zj365/mime/adapter/ElectronicAddressAdapter.kt b/mine/src/main/java/com/zj365/mime/adapter/ElectronicAddressAdapter.kt new file mode 100644 index 0000000..7cd7345 --- /dev/null +++ b/mine/src/main/java/com/zj365/mime/adapter/ElectronicAddressAdapter.kt @@ -0,0 +1,22 @@ +package com.zj365.mime.adapter + +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.xty.base.adapter.BaseAdapter +import com.xty.common.util.NumUtils +import com.zj365.mime.R +import com.zj365.mime.model.CustomerPOItem + +class ElectronicAddressAdapter : BaseAdapter(R.layout.item_electronic_address_search) { + override fun convert(holder: BaseViewHolder, item: CustomerPOItem) { + + holder.setText(R.id.tv_address,"${ item.poiItem.title}") + holder.setText(R.id.tv_distance,"${item.poiItem.distance}m | ${item.poiItem.adName}${item.poiItem.snippet}附近") + if (item.isChecked){ + holder.setGone(R.id.img_checked,false) + }else{ + holder.setGone(R.id.img_checked,true) + + } + + } +} \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt b/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt index b661c4e..44cfbe2 100644 --- a/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt +++ b/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt @@ -1,5 +1,6 @@ package com.zj365.mime.adapter +import android.graphics.Color import android.widget.TextView import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.xty.base.adapter.BaseAdapter @@ -16,14 +17,15 @@ class ElectronicFenceAdapter : BaseAdapter (R. var drawableLeft = context.getDrawable(R.mipmap.icon_forbid_enter) tvForbid.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,null,null,null) tvForbid.compoundDrawablePadding = 5 - tvForbid.text = "禁入" + tvForbid.setTextColor(Color.parseColor("#F04D42")) }else{ var drawableLeft = context.getDrawable(R.mipmap.icon_forbid_leave) tvForbid.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,null,null,null) tvForbid.compoundDrawablePadding = 5 tvForbid.text = "禁出" + tvForbid.setTextColor(Color.parseColor("#F09C42")) } diff --git a/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt b/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt index 9212d4d..d64aeb8 100644 --- a/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt +++ b/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt @@ -102,7 +102,7 @@ class MessageAdapter():BaseAdapter(R.layout.item_message) { fun choiceAll(){ data.forEachIndexed { pos, any -> - val item = any as MessageBean.SysMsg + val item = any as MessageTypeDataBean.MessageTypeBean if (!item.isChoice){ item.isChoice = true deletePos.add(pos) diff --git a/mine/src/main/java/com/zj365/mime/model/CustomerPOItem.kt b/mine/src/main/java/com/zj365/mime/model/CustomerPOItem.kt new file mode 100644 index 0000000..5325f83 --- /dev/null +++ b/mine/src/main/java/com/zj365/mime/model/CustomerPOItem.kt @@ -0,0 +1,8 @@ +package com.zj365.mime.model + +import android.os.Parcelable +import com.amap.api.services.core.PoiItem + + + data class CustomerPOItem (var poiItem: PoiItem,var isChecked:Boolean = false){ +} \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt b/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt index d873806..5b622bd 100644 --- a/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt +++ b/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt @@ -4,14 +4,46 @@ import androidx.lifecycle.MutableLiveData import com.xty.base.vm.BaseVm import com.xty.network.model.EtFenceListBean import com.xty.network.model.RespBody +import org.json.JSONObject class ElectronicFenceSettingVm : BaseVm() { val electronicFenceListLiveDate by lazy { MutableLiveData>() } + + val addOrDeleteLiveData by lazy { MutableLiveData>() } + fun getElectronicFenceList(){ startHttp { var response = apiInterface().getBtFenceList() response.getCodeStatus(electronicFenceListLiveDate, nowData) } } + + fun setBtFence(title:String,radius:Int, type:Int, log:Double,lat:Double,id:Long?){ + startHttp { + var json = JSONObject() + json.put("title",title) + json.put("radius",radius) + json.put("type",type) + json.put("log",log) + json.put("lat",lat) + id?.let { + json.put("id",id) + + } + var response = apiInterface().setBtFence(retrofits.getRequestBody(json.toString())) + response.getCodeStatus(addOrDeleteLiveData, nowData) + + } + } + + fun deleteBtFence(id:Long){ + startHttp { + var json = JSONObject() + json.put("id",id) + var response = apiInterface().deleteBtFence(retrofits.getRequestBody(json.toString())) + response.getCodeStatus(addOrDeleteLiveData, nowData) + + } + } } \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt b/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt index 2fdc02e..86426c9 100644 --- a/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt +++ b/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt @@ -13,6 +13,7 @@ import com.xty.network.model.SettingBean import com.xty.network.model.UnReadMessageBean import com.xty.network.model.Update import com.xty.network.model.UserEquipmentInformationizationBean +import com.xty.network.model.UserOtherInfo import org.json.JSONObject class SettingVm : BaseVm() { @@ -34,7 +35,7 @@ class SettingVm : BaseVm() { val confirmInviteLiveData by lazy { MutableLiveData>() } - val userEqualityLiveData by lazy { MutableLiveData>() } + val useOtherInfoLiveData by lazy { MutableLiveData>() } fun getNesProg(id: String) { @@ -187,10 +188,10 @@ class SettingVm : BaseVm() { } - fun getUserEquity(){ + fun getUserOtherInfo(){ startHttp { - val response = apiInterface().getUserEquity() - response.getCodeStatus(userEqualityLiveData,nowData) + val response = apiInterface().getUserOtherInfo() + response.getCodeStatus(useOtherInfoLiveData,nowData) } } } \ No newline at end of file diff --git a/mine/src/main/res/drawable/shape_radius_66f04d42.xml b/mine/src/main/res/drawable/shape_radius_66f04d42.xml new file mode 100644 index 0000000..d5cb4ef --- /dev/null +++ b/mine/src/main/res/drawable/shape_radius_66f04d42.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/mine/src/main/res/drawable/shape_raduis_61ffac53.xml b/mine/src/main/res/drawable/shape_raduis_61ffac53.xml new file mode 100644 index 0000000..dab36b5 --- /dev/null +++ b/mine/src/main/res/drawable/shape_raduis_61ffac53.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/mine/src/main/res/layout/act_electronic_address_choose.xml b/mine/src/main/res/layout/act_electronic_address_choose.xml new file mode 100644 index 0000000..15afc00 --- /dev/null +++ b/mine/src/main/res/layout/act_electronic_address_choose.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mine/src/main/res/layout/activity_electronic_fence_setting.xml b/mine/src/main/res/layout/activity_electronic_fence_setting.xml index b11abe7..ff1fd77 100644 --- a/mine/src/main/res/layout/activity_electronic_fence_setting.xml +++ b/mine/src/main/res/layout/activity_electronic_fence_setting.xml @@ -1,23 +1,24 @@ - + + android:id="@+id/ll_data" + android:layout_above="@+id/ll_btn"> + android:layout_height="match_parent" + /> - + android:layout_height="match_parent" + android:id="@+id/rx_data" + android:visibility="gone"> + + + + + + + - + + + + + - diff --git a/mine/src/main/res/layout/item_electron_setting.xml b/mine/src/main/res/layout/item_electron_setting.xml index 9c658c5..57a6e8c 100644 --- a/mine/src/main/res/layout/item_electron_setting.xml +++ b/mine/src/main/res/layout/item_electron_setting.xml @@ -1,14 +1,15 @@ diff --git a/mine/src/main/res/layout/item_electronic_address_search.xml b/mine/src/main/res/layout/item_electronic_address_search.xml new file mode 100644 index 0000000..1e3dff9 --- /dev/null +++ b/mine/src/main/res/layout/item_electronic_address_search.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mine/src/main/res/layout/layout_bt_fence_enter.xml b/mine/src/main/res/layout/layout_bt_fence_enter.xml new file mode 100644 index 0000000..54f7f6f --- /dev/null +++ b/mine/src/main/res/layout/layout_bt_fence_enter.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/mine/src/main/res/layout/layout_bt_fence_leave.xml b/mine/src/main/res/layout/layout_bt_fence_leave.xml new file mode 100644 index 0000000..9106611 --- /dev/null +++ b/mine/src/main/res/layout/layout_bt_fence_leave.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/mine/src/main/res/layout/layout_ele_fence_setting.xml b/mine/src/main/res/layout/layout_ele_fence_setting.xml index 19dfce3..b1f0f99 100644 --- a/mine/src/main/res/layout/layout_ele_fence_setting.xml +++ b/mine/src/main/res/layout/layout_ele_fence_setting.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:padding="@dimen/dp_16"> + android:max="1000" + android:progress="50" + android:progressDrawable="@drawable/seek_bar" + android:thumb="@mipmap/icon_seekbar_drawer"/> > + @POST("customer/sugarMedicine/orderList") + suspend fun getSugarMedicineOrderList(@Body rb: RequestBody):RespBody> + @POST("customer/tumor/order/orderList") suspend fun getEstimateRecord(@Body rb: RequestBody): RespBody> @@ -1825,9 +1828,24 @@ interface ApiInterface { @POST("customer/watch/realmeas") suspend fun measureWatchData(@Body rb: RequestBody):RespBody + /** + * 获取电子围栏 + */ @POST("customer/watch/getBtfenceList") suspend fun getBtFenceList():RespBody + /** + * 设置电子围栏 + */ + @POST("customer/watch/setBtfence") + suspend fun setBtFence(@Body rb: RequestBody):RespBody + + /** + * 删除电子围栏 + */ + @POST("customer/watch/delBtfence") + suspend fun deleteBtFence(@Body rb: RequestBody):RespBody + /** * 获取演示模式 @@ -1849,8 +1867,8 @@ interface ApiInterface { /** * 获取用户权益 */ - @POST("customer/user/getUserEquity") - suspend fun getUserEquity():RespBody + @POST("customer/user/getUserInfo") + suspend fun getUserOtherInfo():RespBody /** * 获取设备型号 @@ -1911,4 +1929,10 @@ interface ApiInterface { */ @GET("customer/mall/order/cancelOrder") suspend fun cancelOrder(@Query("orderId") orderId:Long): RespBody + + /** + * 申请退款 + */ + @GET("customer/mall/order/getOrderInfo") + suspend fun applyReturn(@Query("orderId") orderId:Long):RespBody } \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/BannerBean.kt b/network/src/main/java/com/xty/network/model/BannerBean.kt index cd46131..32e07b8 100644 --- a/network/src/main/java/com/xty/network/model/BannerBean.kt +++ b/network/src/main/java/com/xty/network/model/BannerBean.kt @@ -3,11 +3,11 @@ package com.xty.network.model import java.io.Serializable data class BannerBean( - val title: String, - val content: String, + val title: String?, + val content: String?, val bannerType: Int,//1:图文展示, 5:app内部打开, 10:web外部跳转, 15:视频播放,20 小程序跳转】,imgUrl 图片地址,linkAddress,连接地址 val imgUrl: String, - val linkAddress: String, + val linkAddress: String?, val wxId:String, //小程序ID val wxType:Int //1.开发版,2.体验版 3.正式版 ):Serializable \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/EtFenceListBean.kt b/network/src/main/java/com/xty/network/model/EtFenceListBean.kt index 5486c89..d51dbe3 100644 --- a/network/src/main/java/com/xty/network/model/EtFenceListBean.kt +++ b/network/src/main/java/com/xty/network/model/EtFenceListBean.kt @@ -1,13 +1,18 @@ package com.xty.network.model -data class EtFenceListBean(var count:Int,var list:ArrayList){ +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize + +@Parcelize +data class EtFenceListBean(var count:Int,var list:ArrayList):Parcelable{ + @Parcelize data class EtFenceChildBean( var id:Long, var user_id:Long, var title:String, var radius:Int, var type:Int, - var log:String, - var lat:String - ) + var log:Double, + var lat:Double + ):Parcelable } diff --git a/network/src/main/java/com/xty/network/model/HealthArchiveBean.kt b/network/src/main/java/com/xty/network/model/HealthArchiveBean.kt index 7ae538e..831cd79 100644 --- a/network/src/main/java/com/xty/network/model/HealthArchiveBean.kt +++ b/network/src/main/java/com/xty/network/model/HealthArchiveBean.kt @@ -1,6 +1,10 @@ package com.xty.network.model -data class HealthArchiveBean(var bmiInfo:BMIInfo,var healData:ArrayList){ +data class HealthArchiveBean( + var bmiInfo:BMIInfo, + var healData:ArrayList, + var bmr:String, + var bmi:String){ data class BMIInfo(var levelName:String,var bmi:Float) } diff --git a/network/src/main/java/com/xty/network/model/UserOtherInfo.kt b/network/src/main/java/com/xty/network/model/UserOtherInfo.kt new file mode 100644 index 0000000..1e91f57 --- /dev/null +++ b/network/src/main/java/com/xty/network/model/UserOtherInfo.kt @@ -0,0 +1,10 @@ +package com.xty.network.model + +data class UserOtherInfo( + var vip_end_time:String, + var order_count:Int, + var money:Double, + var start_business:String, + var operation_guide:String, + var coupons_count:Int, + var placard:String)