diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 66b5c95..9849609 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -159,6 +159,10 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + (), Consumer { listOf( HealthHomeFrag(), // Fragment(), + ShopFragment(), DynamicManagementFrag(), MessageFragment(), MineFrag() @@ -226,28 +228,28 @@ class MainActivity : BaseVmAct(), Consumer { return@setOnNavigationItemSelectedListener true } - /* R.id.nav_server -> { + R.id.nav_server -> { binding.mVp2.setCurrentItem(1, false) return@setOnNavigationItemSelectedListener true - }*/ + } R.id.nav_dynamic_management -> { if (MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else{ - binding.mVp2.setCurrentItem(1, false) + binding.mVp2.setCurrentItem(2, false) return@setOnNavigationItemSelectedListener true } } R.id.nav_message -> { - binding.mVp2.setCurrentItem(2, false) + binding.mVp2.setCurrentItem(3, false) return@setOnNavigationItemSelectedListener true } R.id.nav_mine -> { - binding.mVp2.setCurrentItem(3, false) + binding.mVp2.setCurrentItem(4, false) return@setOnNavigationItemSelectedListener true } 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 new file mode 100644 index 0000000..befa94d --- /dev/null +++ b/app/src/main/java/com/zj365/dc/activity/shop/ShopCategoryActivity.kt @@ -0,0 +1,181 @@ +package com.zj365.dc.activity.shop + +import android.view.LayoutInflater +import android.view.View +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.alibaba.android.arouter.facade.annotation.Route +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.network.model.ShopCategoryBean +import com.zj365.dc.adapter.shop.ShopCategoryAdapter +import com.zj365.dc.adapter.shop.ShopChildCategoryAdapter +import com.zj365.dc.adapter.shop.ShopGoodsTwoAdapter +import com.zj365.dc.databinding.ActShopCategoryBinding +import com.zj365.dc.vm.ShopMallVm +import okhttp3.internal.notify +import java.util.ArrayList + +@Route(path = ARouterUrl.SHOP_CATEGORY) +class ShopCategoryActivity : BaseVmAct() { + + val binding by lazy { ActShopCategoryBinding.inflate(layoutInflater) } + + val mCategoryAdapter by lazy { ShopCategoryAdapter() } + + val mGoodsAdapter by lazy { ShopGoodsTwoAdapter() } + + val mChildCategoryAdapter by lazy { ShopChildCategoryAdapter() } + + var goodsName:String? = null + + var categoryId:Long = 0L + var mCategoryList = ArrayList() + var parentId:Long = 0L + + var index = 0 + var page:Int = 1 + + fun initAdapter() { + + + + binding.recyclerView.adapter = mGoodsAdapter + binding.recyclerView.layoutManager = LinearLayoutManager(this@ShopCategoryActivity) + + binding.childRecyclerView.adapter = mChildCategoryAdapter + binding.childRecyclerView.layoutManager = LinearLayoutManager(this@ShopCategoryActivity) + + mChildCategoryAdapter.setOnItemClickListener { adapter, view, position -> + var bean = adapter.data[position] as ShopCategoryBean + (adapter.data as ArrayList).forEach { + it.isChecked = false + + } + bean.isChecked = true + categoryId = bean.id + mViewModel.getGoodsList(goodsName,categoryId,0,page) + mChildCategoryAdapter.notifyDataSetChanged() + } + + binding.mRefresh.setOnRefreshListener { + page = 1 + loadData() + binding.mRefresh.finishRefresh(1000) + } + binding.mRefresh.setEnableLoadMore(true) + binding.mRefresh.setOnLoadMoreListener { + page++ + loadData() + binding.mRefresh.finishLoadMore(1000) + } + + } + + fun loadData(){ + mViewModel.getGoodsList(goodsName,categoryId,0,page) + + } + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text ="商品分类" + binding.title.mIvBack.setOnClickListener { + finish() + } + categoryId = intent.getLongExtra("id",0) + parentId = categoryId + + mCategoryList = intent.getParcelableArrayListExtra("categoryList")!! + initAdapter() + mCategoryList.forEachIndexed { index, shopCategoryBean -> + if (shopCategoryBean.id == categoryId){ + this.index = index + shopCategoryBean.isChecked = true + } + } + + binding.categoryRecyclerView.adapter = mCategoryAdapter + + if(mCategoryList.size != 8){ + binding.categoryRecyclerView.layoutManager = LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false) + }else if(mCategoryList.size == 8){ + binding.categoryRecyclerView.layoutManager = GridLayoutManager(this,4) + } + mCategoryAdapter.setNewInstance(mCategoryList) + binding.categoryRecyclerView.scrollToPosition(index) + + mCategoryAdapter.setOnItemClickListener { adapter, view, position -> + var bean = adapter.data[position] as ShopCategoryBean + (adapter.data as ArrayList).forEach { + it.isChecked = false + + } + bean.isChecked = true + parentId = bean.id + mViewModel.getGoodsCategory(bean.id) + mCategoryAdapter.notifyDataSetChanged() + } + mViewModel.getGoodsCategory(categoryId) + + } + + + override fun liveObserver() { + mViewModel.categoryLiveDate.observe(this){ + it.data.add(0,ShopCategoryBean(parentId,parentId,"全部",0,null,true)) + it.data.forEachIndexed { index, shopCategoryBean -> + + if (shopCategoryBean.isChecked){ + categoryId = shopCategoryBean.id + mViewModel.getGoodsList(goodsName,shopCategoryBean.id,0,page) + + } + } + mChildCategoryAdapter.setNewInstance(it.data) + } + + + mViewModel.goodsLiveData.observe(this){ + + if (page == 1) { + if (it.data.records.isNullOrEmpty()) { + mGoodsAdapter.setNewInstance(null) + mGoodsAdapter.setEmptyView(getNoneView()) + binding.mRefresh?.setEnableLoadMore(false) + } else { + if (it.data.records.size < Const.PAGE_SIZE) { + binding.mRefresh?.setEnableLoadMore(false) + } else { + binding.mRefresh?.setEnableLoadMore(true) + ++page + } + mGoodsAdapter.setNewInstance(it.data.records) + } + } else { + if (it.data.records.isNullOrEmpty()) { + binding.mRefresh?.setEnableLoadMore(false) + }else{ + if (it.data.records.size < Const.PAGE_SIZE) { + binding.mRefresh?.setEnableLoadMore(false) + }else{ + ++page + } + mGoodsAdapter.addData(it.data.records) + + } + + } + } + + } + + fun getNoneView() = + LayoutInflater.from(this).inflate(R.layout.view_none_data, binding.recyclerView, false) + + override fun setLayout() = binding.root +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/adapter/shop/ShopCategoryAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/shop/ShopCategoryAdapter.kt new file mode 100644 index 0000000..e362800 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/adapter/shop/ShopCategoryAdapter.kt @@ -0,0 +1,40 @@ +package com.zj365.dc.adapter.shop + +import android.widget.LinearLayout +import android.widget.TextView +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.ruffian.library.widget.RImageView +import com.xty.base.adapter.BaseAdapter +import com.xty.common.setImage +import com.xty.network.model.ShopCategoryBean +import com.zj365.dc.R +import de.hdodenhof.circleimageview.CircleImageView + +class ShopCategoryAdapter : BaseAdapter(R.layout.item_shop_categroy) { + override fun convert(holder: BaseViewHolder, item: ShopCategoryBean) { + + if (data.size != 8){ + var screenWidth = context.resources.displayMetrics.widthPixels + val layoutParam = holder.getView(R.id.root).layoutParams + layoutParam.width = screenWidth /4 + holder.getView(R.id.root).layoutParams = layoutParam + } + + var img = holder.getView(R.id.img_category) + var categoryName = holder.getView(R.id.tv_category) + if (item.isChecked){ + img.borderColor = context.getColor(R.color.col_02c) + categoryName.setTextColor(context.getColor(R.color.col_02c)) + }else{ + img.borderColor = context.getColor(R.color.white) + categoryName.setTextColor(context.getColor(R.color.col_313)) + + } + item.pic?.let { + img.setImage(context,it) + + } + holder.setText(R.id.tv_category,item.categoryName) + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/adapter/shop/ShopChildCategoryAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/shop/ShopChildCategoryAdapter.kt new file mode 100644 index 0000000..ebd09ed --- /dev/null +++ b/app/src/main/java/com/zj365/dc/adapter/shop/ShopChildCategoryAdapter.kt @@ -0,0 +1,21 @@ +package com.zj365.dc.adapter.shop + +import android.graphics.Color +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.xty.base.adapter.BaseAdapter +import com.xty.network.model.ShopCategoryBean +import com.zj365.dc.R + +class ShopChildCategoryAdapter : BaseAdapter(R.layout.item_category_child) { + override fun convert(holder: BaseViewHolder, item: ShopCategoryBean) { + holder.setText(R.id.tv_child_category,item.categoryName) + if (item.isChecked){ + holder.setTextColor(R.id.tv_child_category,context.getColor(R.color.col_02c)) + holder.setBackgroundColor(R.id.tv_child_category, Color.parseColor("#2102C191")) + }else{ + holder.setTextColor(R.id.tv_child_category,context.getColor(R.color.col_313)) + holder.setBackgroundColor(R.id.tv_child_category,context.getColor(R.color.white)) + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsAdapter.kt new file mode 100644 index 0000000..2b7116c --- /dev/null +++ b/app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsAdapter.kt @@ -0,0 +1,21 @@ +package com.zj365.dc.adapter.shop + +import android.widget.TextView +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.ruffian.library.widget.RImageView +import com.xty.base.adapter.BaseAdapter +import com.xty.common.setImage +import com.xty.common.util.SpannableUtils +import com.xty.network.model.GoodsRecordsBean +import com.zj365.dc.R +import org.w3c.dom.Text + +class ShopGoodsAdapter : BaseAdapter(R.layout.item_shop_list) { + override fun convert(holder: BaseViewHolder, item: GoodsRecordsBean.GoodsBean) { + holder.getView(R.id.img_goods).setImage(context,item.imgs) + holder.setText(R.id.tv_goods_name,item.prodName) + holder.setText(R.id.tv_price,"¥ ${item.price}") + SpannableUtils.setMoney(holder.getView(R.id.tv_line_price),item.oriPrice) + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsTwoAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsTwoAdapter.kt new file mode 100644 index 0000000..b567d2c --- /dev/null +++ b/app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsTwoAdapter.kt @@ -0,0 +1,21 @@ +package com.zj365.dc.adapter.shop + +import android.widget.TextView +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.ruffian.library.widget.RImageView +import com.xty.base.adapter.BaseAdapter +import com.xty.common.setImage +import com.xty.common.util.SpannableUtils +import com.xty.network.model.GoodsRecordsBean +import com.zj365.dc.R + +class ShopGoodsTwoAdapter : BaseAdapter(R.layout.item_goods_list_two_style) { + override fun convert(holder: BaseViewHolder, item: GoodsRecordsBean.GoodsBean) { + holder.getView(R.id.img_goods).setImage(context,item.imgs) + holder.setText(R.id.tv_goods_name,item.prodName) + holder.setText(R.id.tv_price,"¥ ${item.price}") + SpannableUtils.setMoney(holder.getView(R.id.tv_line_price),item.oriPrice) + + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt b/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt new file mode 100644 index 0000000..2a5795c --- /dev/null +++ b/app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt @@ -0,0 +1,106 @@ +package com.zj365.dc.fragment + +import android.os.Parcelable +import android.text.TextUtils +import android.view.KeyEvent +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.tamsiree.rxkit.RxKeyboardTool +import com.xty.base.fragment.BaseFragList +import com.xty.base.fragment.BaseVmFrag +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.ShopCategoryBean +import com.zj365.dc.adapter.shop.ShopCategoryAdapter +import com.zj365.dc.adapter.shop.ShopGoodsAdapter +import com.zj365.dc.databinding.FragShopBinding +import com.zj365.dc.vm.ShopMallVm +import java.util.ArrayList + +class ShopFragment: BaseFragList() { + val binding by lazy { FragShopBinding.inflate(layoutInflater) } + + val mCategoryAdapter by lazy { ShopCategoryAdapter() } + + val mGoodsAdapter by lazy { ShopGoodsAdapter() } + + + var goodsName:String? = null + + override fun initAdapter() { + binding.recyclerView.adapter = mGoodsAdapter + binding.recyclerView.layoutManager = GridLayoutManager(requireContext(),2) + + binding.categoryRecyclerView.adapter = mCategoryAdapter + + mCategoryAdapter.setOnItemClickListener { adapter, view, position -> + var bean = adapter.data[position] as ShopCategoryBean + bundle.clear() + bundle.putLong("id",bean.id) + bundle.putParcelableArrayList("categoryList",adapter.data as ArrayList) + RouteManager.goAct(ARouterUrl.SHOP_CATEGORY,bundle) + } + + setRecycleRefresh(binding.recyclerView,binding.mRefresh,true) + } + + override fun refresh() { + mViewModel.getGoodsList(null,0L,1,page) + } + + override fun initView() { + super.initView() + mViewModel.getGoodsCategory(0L) + mViewModel.getGoodsList(null,0L,0,page) + + 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 + } + + mViewModel.getGoodsList(goodsName,0L,0,page) + + RxKeyboardTool.hideSoftInput(requireActivity()) + return true + + } + return false + } + + }) + } + + override fun setViewModel()= ShopMallVm() + override fun observer() { + mViewModel.categoryLiveDate.observe(this){ + if(it.data.size != 8){ + binding.categoryRecyclerView.layoutManager = LinearLayoutManager(requireContext(),LinearLayoutManager.HORIZONTAL,false) + }else if(it.data.size == 8){ + binding.categoryRecyclerView.layoutManager = GridLayoutManager(requireContext(),4) + + } + + mCategoryAdapter.setNewInstance(it.data) + } + + mViewModel.goodsLiveData.observe(this){ + if(page == 1){ + mGoodsAdapter.setNewInstance(it.data.records) + + }else{ + mGoodsAdapter.addData(it.data.records) + } + } + } + + override fun setLayout() = binding.root +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/vm/ShopMallVm.kt b/app/src/main/java/com/zj365/dc/vm/ShopMallVm.kt new file mode 100644 index 0000000..a3ccb78 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/vm/ShopMallVm.kt @@ -0,0 +1,37 @@ +package com.zj365.dc.vm + +import androidx.lifecycle.MutableLiveData +import com.alibaba.fastjson.JSONObject +import com.xty.base.vm.BaseVm +import com.xty.network.model.GoodsRecordsBean +import com.xty.network.model.RespBody +import com.xty.network.model.ShopCategoryBean + +class ShopMallVm : BaseVm() { + + val categoryLiveDate by lazy { MutableLiveData>>() } + + val goodsLiveData by lazy { MutableLiveData>() } + + fun getGoodsCategory(parentId:Long){ + startHttp { + var code = apiInterface().getGoodsCategory(parentId) + code.getCodeStatus(categoryLiveDate, nowData) + } + } + + fun getGoodsList(prodName:String?,categoryId:Long,isRec:Int,pageSize:Int){ + startHttp { + var json = JSONObject() + prodName?.let { + json.put("prodName",it) + } + json.put("categoryId",categoryId) + json.put("isRec",isRec) + json.put("pageSize",20) + json.put("pageNum",pageSize) + var code = apiInterface().getGoodsList(retrofits.getRequestBody(json.toString())) + code.getCodeStatus(goodsLiveData, nowData) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/act_shop_category.xml b/app/src/main/res/layout/act_shop_category.xml new file mode 100644 index 0000000..2e6603c --- /dev/null +++ b/app/src/main/res/layout/act_shop_category.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/frag_shop.xml b/app/src/main/res/layout/frag_shop.xml new file mode 100644 index 0000000..05b83cc --- /dev/null +++ b/app/src/main/res/layout/frag_shop.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_category_child.xml b/app/src/main/res/layout/item_category_child.xml new file mode 100644 index 0000000..198eb47 --- /dev/null +++ b/app/src/main/res/layout/item_category_child.xml @@ -0,0 +1,14 @@ + + + diff --git a/app/src/main/res/layout/item_goods_list_two_style.xml b/app/src/main/res/layout/item_goods_list_two_style.xml new file mode 100644 index 0000000..f28ec23 --- /dev/null +++ b/app/src/main/res/layout/item_goods_list_two_style.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_shop_categroy.xml b/app/src/main/res/layout/item_shop_categroy.xml new file mode 100644 index 0000000..f38a6cc --- /dev/null +++ b/app/src/main/res/layout/item_shop_categroy.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_shop_list.xml b/app/src/main/res/layout/item_shop_list.xml new file mode 100644 index 0000000..dccd992 --- /dev/null +++ b/app/src/main/res/layout/item_shop_list.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_nav_bar.xml b/app/src/main/res/menu/bottom_nav_bar.xml index 980abb8..1f82fd1 100644 --- a/app/src/main/res/menu/bottom_nav_bar.xml +++ b/app/src/main/res/menu/bottom_nav_bar.xml @@ -7,11 +7,11 @@ android:icon="@drawable/sel_home" android:title="@string/home" app:showAsAction="ifRoom" /> - + app:showAsAction="ifRoom" /> :BaseVmFrag() { } refresh.setEnableLoadMore(isLoadMore) refresh.setOnLoadMoreListener { + page++ + refresh() refresh.finishLoadMore(1000) } } diff --git a/build.gradle b/build.gradle index ed99960..952b266 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" } maven {url 'https://developer.huawei.com/repo/'} 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 { @@ -42,7 +42,7 @@ allprojects { maven { url "https://www.jitpack.io" } maven {url 'https://developer.huawei.com/repo/'} 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'} flatDir{ dirs project(':common').file('lib') 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 8674b58..066f520 100644 --- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt +++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt @@ -22,6 +22,9 @@ class ARouterUrl { const val MESSAGE_DETAIL_NEW = "/com/zj365/dc/activity/MessageDetailNewAct" const val WATCH_FAMILY_HEALTH = "/com/zj365/dc/activity/WatchFamilyHealthAct" + //商城 + const val SHOP_CATEGORY = "/com/zj365/dc/activity/shop/ShopCategoryActivity" + // const val FAMILY_INFO="/com/zj365/dc/act/FamilyMainAct" const val AGAIN_SIGN = "/com/zj365/dc/act/AgainSignAct" diff --git a/common/src/main/java/com/xty/common/util/SpannableUtils.kt b/common/src/main/java/com/xty/common/util/SpannableUtils.kt index 93bb786..f16bc9b 100644 --- a/common/src/main/java/com/xty/common/util/SpannableUtils.kt +++ b/common/src/main/java/com/xty/common/util/SpannableUtils.kt @@ -1,11 +1,13 @@ package com.xty.common.util +import android.graphics.Paint import android.graphics.Typeface import android.text.SpannableString import android.text.Spanned import android.text.style.AbsoluteSizeSpan import android.text.style.ForegroundColorSpan import android.text.style.StyleSpan +import android.widget.TextView object SpannableUtils { @@ -111,5 +113,12 @@ object SpannableUtils { return statuSpan } + fun setMoney(txtView: TextView, num:String){ + var statuSpan = SpannableString("¥ ${num}") + txtView.text = statuSpan + txtView.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG + txtView.paint.isAntiAlias = true + } + } \ No newline at end of file diff --git a/common/src/main/res/color/color_02c_333.xml b/common/src/main/res/color/color_02c_333.xml new file mode 100644 index 0000000..1ad3800 --- /dev/null +++ b/common/src/main/res/color/color_02c_333.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/selector_ele_setting.xml b/common/src/main/res/drawable/selector_ele_setting.xml new file mode 100644 index 0000000..63e8a49 --- /dev/null +++ b/common/src/main/res/drawable/selector_ele_setting.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/mipmap-xxhdpi/icon_seekbar_drawer.png b/common/src/main/res/mipmap-xxhdpi/icon_seekbar_drawer.png new file mode 100644 index 0000000..1e0e985 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_seekbar_drawer.png differ diff --git a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt index 810d852..386c786 100644 --- a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt @@ -27,6 +27,7 @@ import com.xty.common.setImage import com.xty.common.util.PermissionUtils import com.xty.network.MyRetrofit import com.xty.network.model.SettingBean +import com.xty.network.model.UserEquipmentInformationizationBean import com.zj365.mime.BuildConfig import com.zj365.mime.R import com.zj365.mime.databinding.ActDevInfoBinding @@ -53,6 +54,8 @@ class DevInfoAct : BaseVmAct() { var user: SettingBean.User? = null var userId: String? = null + + var devInfo: UserEquipmentInformationizationBean? = null private val unBindDialog by lazy { FactorySettingDialog(this, getString(R.string.dialog_un_bind)) { //确认解除绑定 @@ -129,9 +132,16 @@ class DevInfoAct : BaseVmAct() { binding.tvContactKefu.text = span binding.tvDeviceSetting.setOnClickListener { - bundle.clear() - bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=braceletSetting") - RouteManager.goAct(ARouterUrl.H5_ACT,bundle) + devInfo?.let { + if(it.bindType == 1){ + bundle.clear() + bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=braceletSetting") + RouteManager.goAct(ARouterUrl.H5_ACT,bundle) + }else{ + RouteManager.goAct(ARouterUrl.WEAR_MANAGER) + } + } + } binding.tvRecharge.setOnClickListener { @@ -169,6 +179,7 @@ class DevInfoAct : BaseVmAct() { } mViewModel.deviceInfo.observe(this) { + devInfo = it.data if(it.data.bindType == 1){ binding.mNickName.text = "设备名称:${it.data.watchName?:""}" binding.mNum.text = "设备编码:${it.data.bluetooth?:""}" @@ -184,7 +195,7 @@ class DevInfoAct : BaseVmAct() { binding.mActiveCode.text = "设备激活码:${it.data.activationCode?:""}" binding.mActiveCode.visibility = View.GONE binding.tvRecharge.visibility = View.GONE - binding.tvDeviceSetting.visibility = View.GONE + binding.tvDeviceSetting.visibility = View.VISIBLE binding.ivDevice.setImage(this,it.data.deviceImageUrl) } diff --git a/mine/src/main/res/layout/act_wear_manager.xml b/mine/src/main/res/layout/act_wear_manager.xml index 16a4e93..a5fdad2 100644 --- a/mine/src/main/res/layout/act_wear_manager.xml +++ b/mine/src/main/res/layout/act_wear_manager.xml @@ -655,6 +655,7 @@ android:background="@color/col_f1f" /> - + + + + + + + + + + + diff --git a/network/src/main/java/com/xty/network/ApiInterface.kt b/network/src/main/java/com/xty/network/ApiInterface.kt index a48dfdb..fda81a1 100644 --- a/network/src/main/java/com/xty/network/ApiInterface.kt +++ b/network/src/main/java/com/xty/network/ApiInterface.kt @@ -1846,4 +1846,16 @@ interface ApiInterface { */ @POST("customer/material/index") suspend fun getEnterpriseInfoHomeList():RespBody> + + /** + * 商城分类 + */ + @GET("customer/mall/category/list") + suspend fun getGoodsCategory(@Query("parentId") parentId:Long):RespBody> + + /** + * 商品列表 + */ + @POST("customer/mall/prod/getProdList") + suspend fun getGoodsList(@Body rb: RequestBody):RespBody } \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/GoodsRecordsBean.kt b/network/src/main/java/com/xty/network/model/GoodsRecordsBean.kt new file mode 100644 index 0000000..1719fe8 --- /dev/null +++ b/network/src/main/java/com/xty/network/model/GoodsRecordsBean.kt @@ -0,0 +1,19 @@ +package com.xty.network.model + +data class GoodsRecordsBean( + var records:ArrayList +) { + data class GoodsBean( + var id:Long, + var prodName:String, + var oriPrice:String, + var price:String, + var brief:String, + var content:String, + var pic:String, + var imgs:String, + var status:Int, + var categoryId:Long, + var prodType:Int, + var soldNum:String) +} \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/ShopCategoryBean.kt b/network/src/main/java/com/xty/network/model/ShopCategoryBean.kt new file mode 100644 index 0000000..0cf5a4c --- /dev/null +++ b/network/src/main/java/com/xty/network/model/ShopCategoryBean.kt @@ -0,0 +1,15 @@ +package com.xty.network.model + +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize + +@Parcelize +data class ShopCategoryBean( + var id:Long, + var parentId:Long, + var categoryName:String, + var categoryType:Int, //商品类型,1,普通商品,2,VIP商品,3,增值服务 + + var pic:String?, + var isChecked:Boolean = false +): Parcelable