From 35996556a9bd5711042698409a74bfb0d9ad2ce7 Mon Sep 17 00:00:00 2001
From: wlh <646507849@qq.com>
Date: Wed, 17 Jan 2024 09:04:47 +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?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 4 +
.../com/zj365/dc/activity/MainActivity.kt | 12 +-
.../dc/activity/shop/ShopCategoryActivity.kt | 181 ++++++++++++++++++
.../dc/adapter/shop/ShopCategoryAdapter.kt | 40 ++++
.../adapter/shop/ShopChildCategoryAdapter.kt | 21 ++
.../zj365/dc/adapter/shop/ShopGoodsAdapter.kt | 21 ++
.../dc/adapter/shop/ShopGoodsTwoAdapter.kt | 21 ++
.../com/zj365/dc/fragment/ShopFragment.kt | 106 ++++++++++
.../main/java/com/zj365/dc/vm/ShopMallVm.kt | 37 ++++
app/src/main/res/layout/act_shop_category.xml | 100 ++++++++++
app/src/main/res/layout/frag_shop.xml | 85 ++++++++
.../main/res/layout/item_category_child.xml | 14 ++
.../res/layout/item_goods_list_two_style.xml | 70 +++++++
.../main/res/layout/item_shop_categroy.xml | 32 ++++
app/src/main/res/layout/item_shop_list.xml | 64 +++++++
app/src/main/res/menu/bottom_nav_bar.xml | 4 +-
.../com/xty/base/fragment/BaseFragList.kt | 2 +
build.gradle | 4 +-
.../java/com/xty/common/arouter/ARouterUrl.kt | 3 +
.../com/xty/common/util/SpannableUtils.kt | 9 +
common/src/main/res/color/color_02c_333.xml | 5 +
.../res/drawable/selector_ele_setting.xml | 20 ++
.../res/mipmap-xxhdpi/icon_seekbar_drawer.png | Bin 0 -> 3609 bytes
.../java/com/zj365/mime/act/DevInfoAct.kt | 19 +-
mine/src/main/res/layout/act_wear_manager.xml | 1 +
.../activity_electronic_fence_setting.xml | 4 +-
.../res/layout/layout_ele_fence_setting.xml | 41 ++++
.../main/java/com/xty/network/ApiInterface.kt | 12 ++
.../com/xty/network/model/GoodsRecordsBean.kt | 19 ++
.../com/xty/network/model/ShopCategoryBean.kt | 15 ++
30 files changed, 952 insertions(+), 14 deletions(-)
create mode 100644 app/src/main/java/com/zj365/dc/activity/shop/ShopCategoryActivity.kt
create mode 100644 app/src/main/java/com/zj365/dc/adapter/shop/ShopCategoryAdapter.kt
create mode 100644 app/src/main/java/com/zj365/dc/adapter/shop/ShopChildCategoryAdapter.kt
create mode 100644 app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsAdapter.kt
create mode 100644 app/src/main/java/com/zj365/dc/adapter/shop/ShopGoodsTwoAdapter.kt
create mode 100644 app/src/main/java/com/zj365/dc/fragment/ShopFragment.kt
create mode 100644 app/src/main/java/com/zj365/dc/vm/ShopMallVm.kt
create mode 100644 app/src/main/res/layout/act_shop_category.xml
create mode 100644 app/src/main/res/layout/frag_shop.xml
create mode 100644 app/src/main/res/layout/item_category_child.xml
create mode 100644 app/src/main/res/layout/item_goods_list_two_style.xml
create mode 100644 app/src/main/res/layout/item_shop_categroy.xml
create mode 100644 app/src/main/res/layout/item_shop_list.xml
create mode 100644 common/src/main/res/color/color_02c_333.xml
create mode 100644 common/src/main/res/drawable/selector_ele_setting.xml
create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_seekbar_drawer.png
create mode 100644 network/src/main/java/com/xty/network/model/GoodsRecordsBean.kt
create mode 100644 network/src/main/java/com/xty/network/model/ShopCategoryBean.kt
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 0000000000000000000000000000000000000000..1e0e985be601cdf0dbcc9edbfc784c5e31d38806
GIT binary patch
literal 3609
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
literal 0
HcmV?d00001
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