中建365-优化/bug修复

develop
wlh 2 years ago
parent e4ad478c07
commit 5c35bc4bbb

@ -61,5 +61,15 @@
<option name="name" value="maven5" /> <option name="name" value="maven5" />
<option name="url" value="https://developer.huawei.com/repo/" /> <option name="url" value="https://developer.huawei.com/repo/" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="maven8" />
<option name="name" value="maven8" />
<option name="url" value="file:/$PROJECT_DIR$/libs" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="file:/$PROJECT_DIR$/libs/" />
</remote-repository>
</component> </component>
</project> </project>

@ -1064,6 +1064,7 @@ class DynamicManagementFrag : BaseVmFrag<DynamicManagementVm>() , EasyPermission
//设置用户头像 //设置用户头像
setUserImage(settingBean.user.id, settingBean.user.avatarUrl, settingBean.user.sex.toString()) setUserImage(settingBean.user.id, settingBean.user.avatarUrl, settingBean.user.sex.toString())
binding.mHeader.tvUserName.text = settingBean.user.name
if (settingBean.user.bluetooth.isNullOrEmpty()) { //没有mac地址表示未绑定 if (settingBean.user.bluetooth.isNullOrEmpty()) { //没有mac地址表示未绑定
// binding.mContent.visibility = View.VISIBLE // binding.mContent.visibility = View.VISIBLE

@ -45,6 +45,7 @@ import com.zj365.health.weight.DialogTip
import com.zj365.mime.weight.NoticeSettingDialog import com.zj365.mime.weight.NoticeSettingDialog
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import me.chunyu.call_kit.CallKit
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
@ -159,8 +160,13 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
// req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 // req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
req.miniprogramType = if(bannerBean.wxType == 3){
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版 req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
}else{
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版
}
api.sendReq(req) api.sendReq(req)
} }
@ -203,8 +209,13 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
//req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 //req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
req.miniprogramType = if(bannerBean.wxType == 3){
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版 req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
}else{
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版
}
api.sendReq(req) api.sendReq(req)
} }
@ -241,13 +252,23 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
} }
2->{ 2->{
contentData.jumpUrl?.let { if (contentData.name == "视频问诊"){
bundle.clear() if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){
bundle.putString("title", contentData.name) RouteManager.goAct(ARouterUrl.LOGIN_ACT)
bundle.putString("url", contentData.jumpUrl) }else {
RouteManager.goAct(ARouterUrl.WEB_ACT, bundle) mViewModel.getVideoDoctorType()
}
}else{
contentData.jumpUrl?.let {
bundle.clear()
bundle.putString("title", contentData.name)
bundle.putString("url", contentData.jumpUrl)
RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
}
} }
} }
3 ->{ 3 ->{
@ -261,8 +282,13 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
// req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 // req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
req.miniprogramType = if(contentData.wxType == 3){
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版 req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
}else{
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版
}
api.sendReq(req) api.sendReq(req)
} }
@ -344,9 +370,14 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
req.userName = contentData.wxId // 填小程序原始id req.userName = contentData.wxId // 填小程序原始id
//req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 //req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
if(contentData.wxType == 3){
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
}else{
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版
}
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
api.sendReq(req) api.sendReq(req)
} }
@ -608,6 +639,12 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
} }
layoutContentAdapter.setNewInstance(it.data.middle) layoutContentAdapter.setNewInstance(it.data.middle)
} }
mViewModel.videoDoctorLive.observe(this){
if (it.data.type == 2){
CallKit.startCallKitLogic(requireActivity(),it.data.data)
}
}
} }

@ -9,6 +9,7 @@ import com.xty.network.model.FamilyBean
import com.xty.network.model.HomeLayoutBean import com.xty.network.model.HomeLayoutBean
import com.xty.network.model.RespBody import com.xty.network.model.RespBody
import com.xty.network.model.ScienceBean import com.xty.network.model.ScienceBean
import com.xty.network.model.VideoDoctorBean
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -23,6 +24,8 @@ class HomeVm: BaseVm() {
val layoutLive by lazy { MutableLiveData<RespBody<HomeLayoutBean>>() } val layoutLive by lazy { MutableLiveData<RespBody<HomeLayoutBean>>() }
val videoDoctorLive by lazy { MutableLiveData<RespBody<VideoDoctorBean>>() }
fun getBanners(id: String?,location:Int){ fun getBanners(id: String?,location:Int){
startHttp(false) { startHttp(false) {
@ -84,4 +87,11 @@ class HomeVm: BaseVm() {
} }
} }
fun getVideoDoctorType(){
startHttp {
var body= apiInterface().getVideoDoctorType()
body.getCodeStatus(videoDoctorLive,nowData)
}
}
} }

@ -30,18 +30,33 @@
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<!-- 用户名 --> <!-- 用户名 -->
<TextView <TextView
android:id="@+id/mBMI" android:id="@+id/tv_userName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_14" android:layout_marginLeft="@dimen/dp_14"
tools:text="BMI 24" tools:text="张艾青"
android:textColor="@color/col_313" android:textColor="@color/col_313"
android:textSize="@dimen/sp_17" android:textSize="@dimen/sp_17"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@+id/mHeaderImage" app:layout_constraintLeft_toRightOf="@+id/mHeaderImage"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/mBMI"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_5"
tools:text="BMI 24"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@+id/mHeaderImage"
app:layout_constraintTop_toBottomOf="@+id/tv_userName"
/>
@ -63,8 +78,8 @@
android:textColor="@color/col_D9BD" android:textColor="@color/col_D9BD"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@+id/mHeaderImage" app:layout_constraintLeft_toRightOf="@+id/mBMI"
app:layout_constraintTop_toBottomOf="@+id/mBMI" app:layout_constraintTop_toBottomOf="@+id/tv_userName"
tools:ignore="UseCompatTextViewDrawableXml" /> tools:ignore="UseCompatTextViewDrawableXml" />
<!-- 佩戴管理 --> <!-- 佩戴管理 -->

@ -2,8 +2,11 @@ package com.xty.base.h5
import android.content.Context import android.content.Context
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import com.blankj.utilcode.util.GsonUtils
import com.google.gson.Gson import com.google.gson.Gson
import com.xty.base.act.BaseVmAct import com.xty.base.act.BaseVmAct
import com.xty.base.model.WatchReChangeBean
import com.xty.base.utils.PayUtils
import com.xty.common.Const import com.xty.common.Const
import com.xty.common.LogUtils import com.xty.common.LogUtils
import com.xty.common.MMkvHelper import com.xty.common.MMkvHelper
@ -68,7 +71,8 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
@JavascriptInterface @JavascriptInterface
fun watchRecharge(str: String?){ fun watchRecharge(str: String?){
str?.let { str?.let {
var watchBean = GsonUtils.fromJson(it,WatchReChangeBean::class.java)
PayUtils(context).reChangeWatch(watchBean.pay_price,watchBean.orderId)
} }
} }

@ -0,0 +1 @@
package com.xty.base.model; import android.text.TextUtils; import java.util.Map; public class PayBaseResult { private String resultStatus; private String result; private String memo; public PayBaseResult(Map<String, String> rawResult) { if (rawResult == null) { return; } for (String key : rawResult.keySet()) { if (TextUtils.equals(key, "resultStatus")) { resultStatus = rawResult.get(key); } else if (TextUtils.equals(key, "result")) { result = rawResult.get(key); } else if (TextUtils.equals(key, "memo")) { memo = rawResult.get(key); } } } @Override public String toString() { return "resultStatus={" + resultStatus + "};memo={" + memo + "};result={" + result + "}"; } /** * @return the resultStatus */ public String getResultStatus() { return resultStatus; } /** * @return the memo */ public String getMemo() { return memo; } /** * @return the result */ public String getResult() { return result; } }

@ -0,0 +1,7 @@
package com.xty.base.model
class WatchReChangeBean (
var orderId:String,
var pay_price:Float
){
}

@ -0,0 +1,242 @@
package com.xty.base.utils
import android.content.Context
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.text.TextUtils
import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider
import com.alipay.sdk.app.PayTask
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.modelpay.PayReq
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.xty.base.R
import com.xty.base.act.BaseVmAct
import com.xty.base.model.PayBaseResult
import com.xty.base.vm.PayVm
import com.xty.common.BuildConfig
import com.xty.common.LogUtils
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
import com.xty.common.event.WxPayEvent
import com.xty.common.util.SpannableUtils
import com.xty.network.model.WeixinPayBean
open class PayUtils(var context: Context) {
lateinit var bottomSheetDialog: BottomSheetDialog
private var baseActivity: BaseVmAct<*> = context as BaseVmAct<*>
private val SDK_PAY_FLAG = 1
private val WEIXIN_PAY_FLAG = 2
val mViewModel by lazy { ViewModelProvider(baseActivity).get(PayVm::class.java)}
var price:Float? = null
open fun reChangeWatch(xPrice:Float,orderNo:String){
bottomSheetDialog = BottomSheetDialog(context, R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog ->
val view = LayoutInflater.from(context).inflate(R.layout.dialog_pay, null)
dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice)
tvprice.text = SpannableUtils.setSpanMoney(xPrice)
val ivClose = view.findViewById<ImageView>(R.id.close_button)
ivClose.setOnClickListener {
dialog.dismiss()
}
val tvZhifubao = view.findViewById<TextView>(R.id.tv_gouxuan_zhifubao)
val tvWeixin = view.findViewById<TextView>(R.id.tv_gouxuan_weixin)
tvWeixin.isSelected = true
val tvDuihuanma = view.findViewById<TextView>(R.id.tv_gouxuan_duihuanma)
val llWeixin = view.findViewById<LinearLayout>(R.id.llWeixin)
val llZhifu = view.findViewById<LinearLayout>(R.id.llZhifu)
val tvZhifu = view.findViewById<TextView>(R.id.tvZhifu)
llZhifu.setOnClickListener {
tvZhifubao.isSelected = true
tvDuihuanma.isSelected = false
tvWeixin.isSelected = false
tvZhifu.text = "确认支付"
}
llWeixin.setOnClickListener {
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = false
tvWeixin.isSelected = true
tvZhifu.text = "确认支付"
}
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan)
llDuihuan.setOnClickListener {
tvWeixin.isSelected = false
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = true
tvZhifu.text = "去兑换"
}
tvZhifu.setOnClickListener {
//支付
if (tvZhifubao.isSelected) {
//支付宝
mViewModel.payWatch(orderNo, "ALIPAY_APP")
} else if (tvWeixin.isSelected) {
//微信
mViewModel.payWatch(orderNo, "WEIXIN_APP")
} else {
}
liveObserver()
}
}
bottomSheetDialog?.show()
}
fun liveObserver(){
baseActivity.runOnUiThread {
mViewModel.payObservable.observe(baseActivity) {
it.data?.let {
val orderInfo: String? = it.alipayOrderInfo // 支付宝订单信息
val wxmodel: WeixinPayBean? = it.wxmodel // 微信订单信息
if (wxmodel != null) {
startWechatPay(wxmodel)
} else if (orderInfo != null) {
LogUtils.i("start Alipay")
val orderInfo: String = it.alipayOrderInfo!! // 订单信息
val payRunnable = Runnable {
val alipay = PayTask(baseActivity)
val result = alipay.payV2(orderInfo, true)
val msg = Message()
msg.what = SDK_PAY_FLAG
msg.obj = result
mHandler.sendMessage(msg)
}
// 必须异步调用
val payThread = Thread(payRunnable)
payThread.start()
}
bottomSheetDialog?.dismiss()
}
}
}
}
/**
* 微信支付
*/
fun startWechatPay(wxModel: WeixinPayBean) {
LogUtils.i("startWechatPay")
val appId = wxModel.appId
val partnerId = wxModel.partnerid
val prepayId = wxModel.prepayId
val packageValue = wxModel.packageName
val nonceStr = wxModel.noncestr
val timeStamp = wxModel.timestamp
val sign = wxModel.sign
val api = WXAPIFactory.createWXAPI(context, BuildConfig.appid)
api.registerApp(appId)
//以下这些都应该从服务器去获取
val payRequest = PayReq()
payRequest.appId = appId//你的微信appid
payRequest.partnerId = partnerId//微信支付分配的商户号
payRequest.prepayId = prepayId//微信返回的支付交易会话ID
payRequest.packageValue = packageValue//固定值
payRequest.nonceStr = nonceStr//随机字符串
payRequest.timeStamp = timeStamp//时间戳
payRequest.sign = sign//签名
//传入一个标识,以便区分回调
payRequest.extData = "AICancelPay"
//在支付之前如果应用没有注册到微信应该先调用IWXMsg.registerApp将应用注册到微信
//发起请求,调起微信前去支付
api.sendReq(payRequest);
}
private val mHandler: Handler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(msg: Message) {
when (msg.what) {
SDK_PAY_FLAG -> {
val payResult = PayBaseResult(msg.obj as Map<String?, String?>)
/**
* 对于支付结果请商户依赖服务端的异步通知结果同步通知结果仅作为支付结束的通知
*/
val resultInfo: String = payResult.getResult() // 同步返回需要验证的信息
val resultStatus: String = payResult.getResultStatus()
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
// Toast.makeText(this@PreventCancertAct,"支付成功"+payResult,Toast.LENGTH_SHORT).show()
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
// this@PayDemoActivity,
// getString(R.string.pay_success) + payResult
// )
/* bundle.clear()
bundle.putString("orderNo", orderNo)
bundle.putString("orderType", "1")
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/
Toast.makeText(
context,
"支付成功",
Toast.LENGTH_SHORT
)
.show()
} else {
Toast.makeText(
context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
)
.show()
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
// this@PayDemoActivity,
// getString(R.string.pay_failed) + payResult
// )
}
}
WEIXIN_PAY_FLAG -> {
val event = msg.obj as WxPayEvent
when (event.code) {
BaseResp.ErrCode.ERR_OK -> {
/* bundle.clear()
bundle.putString("orderNo", orderNo)
bundle.putString("orderType", "1")
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/
Toast.makeText(
context,
"支付成功",
Toast.LENGTH_SHORT
)
.show()
}
BaseResp.ErrCode.ERR_USER_CANCEL -> {
}
else -> {
Toast.makeText(
context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
).show()
}
}
}
}
}
}
}

@ -0,0 +1,25 @@
package com.xty.base.vm
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.MutableLiveData
import com.xty.network.model.PayBean
import com.xty.network.model.RespBody
import org.json.JSONObject
class PayVm : BaseVm() , LifecycleObserver {
val payObservable by lazy { MutableLiveData<RespBody<PayBean>>() }
fun payWatch(orderNo:String,channelName:String){
startHttp {
var json = JSONObject()
json.put("orderNo", orderNo)
json.put("channelName", channelName)
var response = apiInterface().toPay(retrofits.getRequestBody(json.toString()))
response.getCodeStatus(payObservable, nowData)
}
}
}

@ -17,7 +17,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_500" android:layout_height="@dimen/dp_500"
android:maxWidth="@dimen/dp_312" android:maxWidth="@dimen/dp_312"
android:scaleType="centerCrop"
android:maxHeight="@dimen/dp_500" android:maxHeight="@dimen/dp_500"
android:adjustViewBounds="true" android:adjustViewBounds="true"
app:is_circle="false" app:is_circle="false"

@ -0,0 +1,182 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/shape_radio_bg"
android:orientation="vertical">
<!-- 顶部布局 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_15"
android:paddingLeft="@dimen/dp_20"
android:paddingTop="@dimen/dp_20"
android:paddingRight="@dimen/dp_20">
<TextView
android:id="@+id/cancel_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="@dimen/dp_6"
android:text="订单总金额"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_17"
android:textStyle="bold" />
<!-- 确定按钮 -->
<ImageView
android:id="@+id/close_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:padding="@dimen/dp_6"
android:src="@mipmap/ic_close"
tools:ignore="RtlHardcoded" />
</RelativeLayout>
<TextView
android:id="@+id/tvPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="@dimen/dp_27"
tools:text="68.8"
android:textColor="@android:color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold"
tools:ignore="ObsoleteLayoutParam" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_31"
android:paddingRight="@dimen/dp_31">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_18"
android:text="选择支付方式"
android:textColor="@color/col_C7C"
android:textSize="@dimen/sp_13" />
<LinearLayout
android:id="@+id/llWeixin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_18"
android:orientation="horizontal"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/ic_weixinzhif"
android:drawablePadding="@dimen/dp_9"
android:text="微信"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
android:textStyle="bold" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_gouxuan_weixin"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:background="@drawable/selector_zhifu" />
</LinearLayout>
<LinearLayout
android:id="@+id/llZhifu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_18"
android:orientation="horizontal"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/ic_zhifubao"
android:drawablePadding="@dimen/dp_9"
android:text="支付宝"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
android:textStyle="bold" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_gouxuan_zhifubao"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:background="@drawable/selector_zhifu" />
</LinearLayout>
<LinearLayout
android:id="@+id/llDuihuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_85"
android:orientation="horizontal"
android:paddingTop="@dimen/dp_10"
android:visibility="gone"
android:paddingBottom="@dimen/dp_10">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@mipmap/ic_duihuanma"
android:drawablePadding="@dimen/dp_9"
android:text="兑换码"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
tools:ignore="UseCompatTextViewDrawableXml" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_gouxuan_duihuanma"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:background="@drawable/selector_zhifu" />
</LinearLayout>
<TextView
android:id="@+id/tvZhifu"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_80"
android:layout_marginBottom="@dimen/dp_10"
android:background="@drawable/shape_button_bg"
android:gravity="center"
android:text="确认支付"
android:textColor="@color/white"
android:textSize="@dimen/sp_18" />
</LinearLayout>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -16,6 +16,7 @@ buildscript {
maven {url 'https://developer.huawei.com/repo/'} maven {url 'https://developer.huawei.com/repo/'}
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'} maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
maven{ url 'https://oss.sonatype.org/content/repositories/snapshots'} maven{ url 'https://oss.sonatype.org/content/repositories/snapshots'}
} }
dependencies { dependencies {
classpath "com.android.tools.build:gradle:4.2.2" classpath "com.android.tools.build:gradle:4.2.2"
@ -28,9 +29,13 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
maven {
url uri("${project.rootDir}/libs/")
}
google() google()
mavenCentral() mavenCentral()
maven {url 'https://maven.aliyun.com/repository/google/'} maven {url 'https://maven.aliyun.com/repository/google/'}
maven {url 'https://maven.aliyun.com/repository/public/'} maven {url 'https://maven.aliyun.com/repository/public/'}
maven {url 'https://maven.aliyun.com/repository/gradle-plugin/'} maven {url 'https://maven.aliyun.com/repository/gradle-plugin/'}

@ -105,5 +105,7 @@ dependencies {
api 'com.github.maning0303:MNZXingCode:V2.1.9' api 'com.github.maning0303:MNZXingCode:V2.1.9'
api 'pub.devrel:easypermissions:3.0.0' api 'pub.devrel:easypermissions:3.0.0'
api 'com.alipay.sdk:alipaysdk-android:+@aar'
api 'me.chunyu.call_kit:call_kit:2.0.1'
} }

@ -126,6 +126,7 @@ class ARouterUrl {
const val ADD_FAMILY_GUARDIAN_ACT = "/health/com/zj365/health/act/familyhealth/AddFamilyGuardianAct" const val ADD_FAMILY_GUARDIAN_ACT = "/health/com/zj365/health/act/familyhealth/AddFamilyGuardianAct"
const val FAMILY_HEALTH_ACT = "/health/com/zj365/health/act/familyhealth/FamilyHealthAct" const val FAMILY_HEALTH_ACT = "/health/com/zj365/health/act/familyhealth/FamilyHealthAct"
const val FAMILY_HEALTH_REAL_TIME_ACT = "/health/com/zj365/health/act/familyhealth/FamilyHealthRealTimeAct" const val FAMILY_HEALTH_REAL_TIME_ACT = "/health/com/zj365/health/act/familyhealth/FamilyHealthRealTimeAct"
const val FAMILY_GUARDIAN_LIST_ACT = "/health/com/zj365/health/act/familyhealth/FamilyHealthGuardianListAct"
//设备绑定相关 //设备绑定相关

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -75,7 +75,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
kapt rely.arouter_compiler kapt rely.arouter_compiler
kapt rely.utilcode kapt rely.utilcode
api 'com.alipay.sdk:alipaysdk-android:+@aar'
api 'com.github.barteksc:android-pdf-viewer:2.8.2' api 'com.github.barteksc:android-pdf-viewer:2.8.2'
implementation files('libs/bluetooth-mini-fatscale-2.9.5.jar') implementation files('libs/bluetooth-mini-fatscale-2.9.5.jar')
implementation files('libs/bluetooth-mini-core-2.9.5.jar') implementation files('libs/bluetooth-mini-core-2.9.5.jar')

@ -303,6 +303,9 @@
<activity android:name=".act.XTangHistoryAct" <activity android:name=".act.XTangHistoryAct"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity android:name=".act.familyhealth.FamilyHealthGuardianListAct"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
</application> </application>
</manifest> </manifest>

@ -140,7 +140,7 @@ class OpenOrRenewAct : BaseVmAct<XTangVm>() {
if (bottomSheetDialog == null) { if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this) bottomSheetDialog = BottomSheetDialog(this)
bottomSheetDialog?.let { dialog -> bottomSheetDialog?.let { dialog ->
val view = LayoutInflater.from(this).inflate(R.layout.bottom_cancer, null) val view = LayoutInflater.from(this).inflate(R.layout.dialog_pay, null)
dialog.setContentView(view) dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice) val tvprice = view.findViewById<TextView>(R.id.tvPrice)

@ -46,7 +46,7 @@ class FamilyHealthAct : BaseListAct<FamilyHealthVm>() {
setRecycleRefresh(binding.recyclerView, binding.mRefresh, true) setRecycleRefresh(binding.recyclerView, binding.mRefresh, true)
binding.recyclerView.layoutManager = LinearLayoutManager(this) binding.recyclerView.layoutManager = LinearLayoutManager(this)
binding.recyclerView.adapter = mAdapter binding.recyclerView.adapter = mAdapter
mAdapter.addChildClickViewIds(R.id.tv_add_cancel, R.id.tv_watch,R.id.tv_current_time) mAdapter.addChildClickViewIds(R.id.tv_add_cancel, R.id.tv_watch,R.id.tv_current_time,R.id.ll_avatar)
mAdapter.setOnItemChildClickListener { adapter, view, position -> mAdapter.setOnItemChildClickListener { adapter, view, position ->
val familyHealthBean = adapter.data[position] as FamilyHealthBean val familyHealthBean = adapter.data[position] as FamilyHealthBean
when (view.id) { when (view.id) {
@ -57,6 +57,10 @@ class FamilyHealthAct : BaseListAct<FamilyHealthVm>() {
mViewModel.exitCustody(familyHealthBean.id.toString()) mViewModel.exitCustody(familyHealthBean.id.toString())
} }
} }
R.id.ll_avatar ->{
RouteManager.goAct(ARouterUrl.FAMILY_GUARDIAN_LIST_ACT)
}
} }
} }
} }

@ -0,0 +1,58 @@
package com.zj365.health.act.familyhealth
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.xty.base.act.BaseListAct
import com.xty.common.arouter.ARouterUrl
import com.xty.network.model.FamilyHealthBean
import com.zj365.health.R
import com.zj365.health.adapter.familyhealth.FamilyHealthGuardianAdapter
import com.zj365.health.databinding.ActFamilyHealthGuardianBinding
import com.zj365.health.vm.FamilyHealthVm
@Route(path = ARouterUrl.FAMILY_GUARDIAN_LIST_ACT)
class FamilyHealthGuardianListAct : BaseListAct<FamilyHealthVm>() {
val binding by lazy { ActFamilyHealthGuardianBinding.inflate(layoutInflater) }
val adapter by lazy { FamilyHealthGuardianAdapter() }
override fun initAdapter() {
setRecycleRefresh(binding.recyclerView, binding.mRefresh, true)
binding.recyclerView.layoutManager = LinearLayoutManager(this)
binding.recyclerView.adapter = adapter
adapter.addChildClickViewIds(R.id.cb_frist, R.id.img_delete)
adapter.setOnItemChildClickListener { adapter, view, position ->
val familyHealthBean = adapter.data[position] as FamilyHealthBean
when (view.id) {
R.id.img_delete -> {
mViewModel.exitCustody(familyHealthBean.id.toString())
}
R.id.cb_frist->{
}
}
}
}
override fun initView() {
super.initView()
statusBar(binding.title.mView)
binding.title.mTvTitle.text = "监护人列表"
binding.title.mIvBack.setOnClickListener {
finish()
}
}
override fun loadData() {
mViewModel.getFamilyHealthGuardianList()
}
override fun liveObserver() {
mViewModel.familyGuardianLiveData.observe(this){
adapter.setNewInstance(it.data)
}
}
override fun setLayout()= binding.root
}

@ -1,6 +1,5 @@
package com.zj365.health.act.skin package com.zj365.health.act.skin
import android.graphics.Color
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.os.Message import android.os.Message
@ -29,11 +28,9 @@ import com.zj365.health.R
import com.zj365.health.databinding.ActAiSkinMeasurementBinding import com.zj365.health.databinding.ActAiSkinMeasurementBinding
import com.zj365.health.model.PayResult import com.zj365.health.model.PayResult
import com.zj365.health.vm.SkinMeasurementVm import com.zj365.health.vm.SkinMeasurementVm
import com.zj365.health.vm.TongueDiagnosisVm
import com.zj365.health.weight.CancerDialog import com.zj365.health.weight.CancerDialog
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import retrofit2.http.Path
@Route(path = ARouterUrl.AI_SKIN_MEASUREMENT_ACTIVITY) @Route(path = ARouterUrl.AI_SKIN_MEASUREMENT_ACTIVITY)
class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() { class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
@ -101,7 +98,7 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
if (bottomSheetDialog == null) { if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager) bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog -> bottomSheetDialog?.let { dialog ->
val view = LayoutInflater.from(this).inflate(R.layout.bottom_cancer, null) val view = LayoutInflater.from(this).inflate(R.layout.dialog_pay, null)
dialog.setContentView(view) dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice) val tvprice = view.findViewById<TextView>(R.id.tvPrice)

@ -1,6 +1,5 @@
package com.zj365.health.act.tonguediagnosis package com.zj365.health.act.tonguediagnosis
import android.graphics.Color
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.os.Message import android.os.Message
@ -90,7 +89,7 @@ class TongueDiagnosisMainActivity : BaseVmAct<TongueDiagnosisVm>() {
if (bottomSheetDialog == null) { if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager) bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog -> bottomSheetDialog?.let { dialog ->
val view = LayoutInflater.from(this).inflate(R.layout.bottom_cancer, null) val view = LayoutInflater.from(this).inflate(R.layout.dialog_pay, null)
dialog.setContentView(view) dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice) val tvprice = view.findViewById<TextView>(R.id.tvPrice)

@ -0,0 +1,27 @@
package com.zj365.health.adapter.familyhealth
import android.graphics.Color
import android.widget.CheckBox
import android.widget.TextView
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.xty.base.adapter.BaseAdapter
import com.xty.common.setImageUser
import com.xty.network.model.FamilyGuardianBean
import com.zj365.health.R
import de.hdodenhof.circleimageview.CircleImageView
class FamilyHealthGuardianAdapter : BaseAdapter<FamilyGuardianBean>(R.layout.item_health_family_guardian) {
override fun convert(holder: BaseViewHolder, item: FamilyGuardianBean) {
holder.getView<CircleImageView>(R.id.img_avatar).setImageUser(context,item.avatarUrl)
holder.setText(R.id.tv_relation,item.relation)
holder.setText(R.id.tv_phone,item.phone)
if(item.isFirst == 1){
holder.getView<CheckBox>(R.id.cb_frist).isChecked = true
holder.getView<TextView>(R.id.desc).setTextColor(Color.parseColor("#02C191"))
}else{
holder.getView<CheckBox>(R.id.cb_frist).isChecked = false
holder.getView<TextView>(R.id.desc).setTextColor(Color.parseColor("#7C7C7C"))
}
}
}

@ -38,7 +38,6 @@ class HealthFamilyTargetAdapter : BaseAdapter<FamilyHealthBean.FamilyTargetBean>
contentValue = if (item.value == "0") "--" else item.value contentValue = if (item.value == "0") "--" else item.value
} }
LogUtils.e("HealthFamilyTargetAdapter","contentValue:${contentValue}")
if(item.status == 1){ if(item.status == 1){
tvValue.setTextColor(Color.parseColor("#7C7C7C")) tvValue.setTextColor(Color.parseColor("#7C7C7C"))
tvValue.text = SpannableUtils.setStrSpan( tvValue.text = SpannableUtils.setStrSpan(
@ -64,7 +63,6 @@ class HealthFamilyTargetAdapter : BaseAdapter<FamilyHealthBean.FamilyTargetBean>
"${contentValue}${context.getString(units[item.type-1])}".length - "${contentValue}${context.getString(units[item.type-1])}".length -
context.getString(units[item.type-1]).length) context.getString(units[item.type-1]).length)
} }
LogUtils.e("HealthFamilyTargetAdapter","textValue:${tvValue.text.toString()}")
when(item.type){ when(item.type){
1 ->{ 1 ->{

@ -2,6 +2,7 @@ package com.zj365.health.vm
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.xty.base.vm.BaseVm import com.xty.base.vm.BaseVm
import com.xty.network.model.FamilyGuardianBean
import com.xty.network.model.FamilyHealthBean import com.xty.network.model.FamilyHealthBean
import com.xty.network.model.RespBody import com.xty.network.model.RespBody
import org.json.JSONObject import org.json.JSONObject
@ -10,6 +11,8 @@ class FamilyHealthVm :BaseVm() {
val familyHealthListData by lazy { MutableLiveData<RespBody<MutableList<FamilyHealthBean>>>() } val familyHealthListData by lazy { MutableLiveData<RespBody<MutableList<FamilyHealthBean>>>() }
val familyGuardianLiveData by lazy { MutableLiveData<RespBody<MutableList<FamilyGuardianBean>>>() }
val exitCustody by lazy { MutableLiveData<RespBody<Any>>() } val exitCustody by lazy { MutableLiveData<RespBody<Any>>() }
fun getFamilyHealthList(){ fun getFamilyHealthList(){
startHttp (true){ startHttp (true){
@ -27,5 +30,14 @@ class FamilyHealthVm :BaseVm() {
} }
} }
fun getFamilyHealthGuardianList(){
startHttp (true){
val json = JSONObject()
val request = apiInterface().getFamilyGuardianList(retrofits.getRequestBody(json.toString()))
request.getCodeStatus(familyGuardianLiveData,nowData)
}
}
} }

@ -21,6 +21,7 @@
android:drawablePadding="@dimen/dp_6" android:drawablePadding="@dimen/dp_6"
android:text="注:血压校准须知" android:text="注:血压校准须知"
android:textColor="@color/col_f23" android:textColor="@color/col_f23"
android:visibility="gone"
android:textSize="@dimen/sp_15" android:textSize="@dimen/sp_15"
tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" /> tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/col_6f7">
<include layout="@layout/title_white_bar"
android:id="@+id/title"/>
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/mRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/col_f4f">
<com.scwang.smart.refresh.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_3"
/>
<com.scwang.smart.refresh.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</LinearLayout>

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@color/white"
android:layout_height="@dimen/dp_70">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/img_avatar"
android:layout_width="@dimen/dp_49"
android:layout_centerVertical="true"
android:layout_height="@dimen/dp_49"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/img_avatar"
android:orientation="vertical"
android:layout_marginLeft="@dimen/dp_13"
android:layout_centerVertical="true">
<TextView
android:id="@+id/tv_relation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
tools:text="大哥"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/sp_12"
android:textColor="@color/col_7c7"
android:id="@+id/tv_phone"
tools:text="13652458945"
android:layout_marginTop="@dimen/dp_10"/>
</LinearLayout>
<ImageView
android:layout_width="@dimen/dp_10"
android:layout_height="@dimen/dp_10"
android:layout_alignParentEnd="true"
android:id="@+id/img_delete"
android:background="@mipmap/icon_close_delet"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/dp_15"/>
<CheckBox
android:id="@+id/cb_frist"
android:layout_width="@dimen/dp_13"
android:layout_height="@dimen/dp_13"
android:layout_marginRight="2dp"
android:layout_toLeftOf="@+id/desc"
android:layout_marginTop="@dimen/dp_5"
android:gravity="center_vertical"
android:layout_centerVertical="true"
android:background="@drawable/selctor_check_niaosuan"
android:button="@null"
/>
<TextView
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一监护人"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_13"
android:layout_toLeftOf="@+id/img_delete"
android:layout_marginRight="@dimen/dp_10"
android:layout_centerVertical="true"
/>
</RelativeLayout>

@ -910,6 +910,9 @@ interface ApiInterface {
@POST("customer/layout/list") @POST("customer/layout/list")
suspend fun getHomeLayout():RespBody<HomeLayoutBean> suspend fun getHomeLayout():RespBody<HomeLayoutBean>
@POST("customer/layout/getVideoDoctorType")
suspend fun getVideoDoctorType():RespBody<VideoDoctorBean>
/** /**
* 膳食分析-热卡分析 * 膳食分析-热卡分析
*/ */
@ -1433,6 +1436,12 @@ interface ApiInterface {
@POST("pay/payAiTumorOrder") @POST("pay/payAiTumorOrder")
suspend fun payUrl(@Body rb: RequestBody): RespBody<PayBean> suspend fun payUrl(@Body rb: RequestBody): RespBody<PayBean>
/**
* 拉起支付
*/
@POST("pay/toPay")
suspend fun toPay(@Body rb: RequestBody):RespBody<PayBean>
/** /**
* 商品信息接口 * 商品信息接口
*/ */
@ -1709,6 +1718,12 @@ interface ApiInterface {
@POST("customer/family/familyList") @POST("customer/family/familyList")
suspend fun getFamilyList(@Body rb:RequestBody) : RespBody<MutableList<FamilyHealthBean>> suspend fun getFamilyList(@Body rb:RequestBody) : RespBody<MutableList<FamilyHealthBean>>
/**
* 监护人列表
*/
@POST("customer/family/getGuardianList")
suspend fun getFamilyGuardianList(@Body rb:RequestBody) : RespBody<MutableList<FamilyGuardianBean>>
/** /**
* 退出监护 * 退出监护
*/ */

@ -8,5 +8,6 @@ data class BannerBean(
val bannerType: Int,//1:图文展示, 5app内部打开 10web外部跳转 15视频播放20 小程序跳转】imgUrl 图片地址linkAddress连接地址 val bannerType: Int,//1:图文展示, 5app内部打开 10web外部跳转 15视频播放20 小程序跳转】imgUrl 图片地址linkAddress连接地址
val imgUrl: String, val imgUrl: String,
val linkAddress: String, val linkAddress: String,
val wxId:String //小程序ID val wxId:String, //小程序ID
val wxType:Int //1.开发版2.体验版 3.正式版
):Serializable ):Serializable

@ -0,0 +1,13 @@
package com.xty.network.model
data class FamilyGuardianBean(
var id:Long,
var userId:Long,
var name:String,
var phone:String,
var relation:String,
var avatarUrl:String,
var isMy:Int,
var isFirst:Int
) {
}

@ -14,6 +14,7 @@ data class HomeLayoutBean(
var jumpUrl:String?, //跳转地址或编码 var jumpUrl:String?, //跳转地址或编码
var status:Int, var status:Int,
var seq:String, var seq:String,
var wxId:String var wxId:String,
var wxType:Int //1.开发版2.体验版 3.正式版
) )
} }

@ -0,0 +1,7 @@
package com.xty.network.model
data class VideoDoctorBean (
val data:String,
val type:Int // 类型1-和缓(跳转小程序) 2-春雨H5打开 3-平安(跳转小程序)
) {
}
Loading…
Cancel
Save