Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ShenghuoquanBusiness
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
ShenghuoquanBusiness
Commits
33655ac7
Commit
33655ac7
authored
Aug 23, 2021
by
yinjiacheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update 订单详情页UI
parent
df147c92
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
261 additions
and
12 deletions
+261
-12
OrderDetailCommodityListAdapter.kt
...huoquan/border/adapter/OrderDetailCommodityListAdapter.kt
+71
-0
OrderDetailDto.kt
...java/com/yidian/shenghuoquan/border/dto/OrderDetailDto.kt
+31
-6
OrderDetailActivity.kt
.../com/yidian/shenghuoquan/border/ui/OrderDetailActivity.kt
+2
-1
OrderCommodityInfoView.kt
...n/shenghuoquan/border/ui/widget/OrderCommodityInfoView.kt
+18
-1
OrderDetailCommodityListItemViewModel.kt
...border/viewmodel/OrderDetailCommodityListItemViewModel.kt
+39
-0
img_order_commodity_placeholder.webp
.../res/drawable-xxhdpi/img_order_commodity_placeholder.webp
+0
-0
border_item_order_detail_commodity_list.xml
...in/res/layout/border_item_order_detail_commodity_list.xml
+73
-0
border_view_order_commodity_info.xml
.../src/main/res/layout/border_view_order_commodity_info.xml
+26
-3
border_view_order_info.xml
...nts/BOrder/src/main/res/layout/border_view_order_info.xml
+1
-1
No files found.
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/adapter/OrderDetailCommodityListAdapter.kt
0 → 100644
View file @
33655ac7
package
com.yidian.shenghuoquan.border.adapter
import
android.graphics.Rect
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.databinding.DataBindingUtil
import
androidx.recyclerview.widget.RecyclerView
import
com.yidian.shenghuoquan.border.R
import
com.yidian.shenghuoquan.border.databinding.BorderItemOrderDetailCommodityListBinding
import
com.yidian.shenghuoquan.border.dto.OrderItem
import
com.yidian.shenghuoquan.border.viewmodel.OrderDetailCommodityListItemViewModel
import
com.yidian.utils.DensityUtil
/**
* author: yinjiacheng
* date: 2021/8/23 16:18
* description: 订单详情商品列表
*/
class
OrderDetailCommodityListAdapter
(
data
:
List
<
OrderItem
>?)
:
RecyclerView
.
Adapter
<
OrderDetailCommodityListAdapter
.
OrderDetailCommodityListViewHolder
>()
{
private
val
data
by
lazy
{
ArrayList
<
OrderItem
>()
}
init
{
data
?.
let
{
this
.
data
.
addAll
(
it
)
}
}
/**
* 更新数据
*/
fun
updateData
(
data
:
List
<
OrderItem
>?)
{
data
?.
let
{
notifyItemRangeRemoved
(
0
,
this
.
data
.
size
)
this
.
data
.
clear
()
this
.
data
.
addAll
(
it
)
notifyItemRangeInserted
(
0
,
this
.
data
.
size
)
}
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
OrderDetailCommodityListViewHolder
{
val
binding
=
DataBindingUtil
.
inflate
<
BorderItemOrderDetailCommodityListBinding
>(
LayoutInflater
.
from
(
parent
.
context
),
R
.
layout
.
border_item_order_detail_commodity_list
,
parent
,
false
)
return
OrderDetailCommodityListViewHolder
(
binding
.
root
,
binding
)
}
override
fun
onBindViewHolder
(
holder
:
OrderDetailCommodityListViewHolder
,
position
:
Int
)
{
holder
.
binding
.
vm
=
OrderDetailCommodityListItemViewModel
()
holder
.
binding
.
data
=
data
[
position
]
}
override
fun
getItemCount
():
Int
{
return
data
.
size
}
class
OrderDetailCommodityListViewHolder
(
itemView
:
View
,
val
binding
:
BorderItemOrderDetailCommodityListBinding
)
:
RecyclerView
.
ViewHolder
(
itemView
)
class
OrderDetailCommodityListItemDecoration
:
RecyclerView
.
ItemDecoration
()
{
override
fun
getItemOffsets
(
outRect
:
Rect
,
view
:
View
,
parent
:
RecyclerView
,
state
:
RecyclerView
.
State
)
{
outRect
.
top
=
DensityUtil
.
dp2px
(
16f
)
}
}
}
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/dto/OrderDetailDto.kt
View file @
33655ac7
...
...
@@ -22,11 +22,11 @@ data class OrderDetailDto(
@SerializedName
(
"comment"
)
val
comment
:
String
,
@SerializedName
(
"coupon_list"
)
val
couponList
:
List
<
Any
>,
val
couponList
:
List
<
Coupon
>,
@SerializedName
(
"create_time"
)
val
createTime
:
String
,
@SerializedName
(
"discount_fee"
)
val
discountFee
:
String
,
val
discountFee
:
Double
,
@SerializedName
(
"is_refund"
)
val
isRefund
:
Int
,
@SerializedName
(
"life_account_icon"
)
...
...
@@ -74,10 +74,10 @@ data class OrderDetailDto(
@SerializedName
(
"shop_id"
)
val
shopId
:
String
,
@SerializedName
(
"total_price"
)
val
totalPrice
:
Int
,
val
totalPrice
:
Double
,
@SerializedName
(
"update_time"
)
val
updateTime
:
String
,
@SerializedName
(
"use_coupon"
)
@SerializedName
(
"use_coupon"
)
// 是否使用优惠券,0未使用,1使用
val
useCoupon
:
Int
,
@SerializedName
(
"user_id"
)
val
userId
:
Long
,
...
...
@@ -85,6 +85,31 @@ data class OrderDetailDto(
val
wechat
:
Wechat
)
data class
Coupon
(
@SerializedName
(
"coupon_amount"
)
val
couponAmount
:
Int
,
@SerializedName
(
"coupon_id"
)
val
couponId
:
String
,
@SerializedName
(
"create_time"
)
val
createTime
:
String
,
@SerializedName
(
"goods_sku_id"
)
val
goodsSkuId
:
String
,
@SerializedName
(
"order_id"
)
val
orderId
:
String
,
@SerializedName
(
"order_item_id"
)
val
orderItemId
:
String
,
@SerializedName
(
"recover_coupon_amount"
)
val
recoverCouponAmount
:
Int
,
@SerializedName
(
"share_coupon_amount"
)
val
shareCouponAmount
:
Int
,
@SerializedName
(
"share_coupon_id"
)
val
shareCouponId
:
Int
,
@SerializedName
(
"update_time"
)
val
updateTime
:
String
,
@SerializedName
(
"user_id"
)
val
userId
:
Long
)
data class
MergeOrderItem
(
@SerializedName
(
"desc_pic_url"
)
val
descPicUrl
:
String
,
...
...
@@ -93,7 +118,7 @@ data class MergeOrderItem(
@SerializedName
(
"goods_num"
)
val
goodsNum
:
Int
,
@SerializedName
(
"price"
)
val
price
:
Int
val
price
:
Double
)
data class
OrderItem
(
...
...
@@ -136,7 +161,7 @@ data class OrderItem(
@SerializedName
(
"payment"
)
val
payment
:
Int
,
@SerializedName
(
"price"
)
val
price
:
Int
,
val
price
:
Double
,
@SerializedName
(
"refund_amount"
)
val
refundAmount
:
Int
,
@SerializedName
(
"refund_count"
)
...
...
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/ui/OrderDetailActivity.kt
View file @
33655ac7
...
...
@@ -27,6 +27,7 @@ class OrderDetailActivity : BaseMvvmActivity<BorderActivityOrderDetailBinding, O
binding
.
ivCommodityInfo
.
setCommodityInfo
(
status
,
it
)
binding
.
ivOrderInfo
.
setOrderInfo
(
status
,
it
)
})
vm
.
requestOrderDetail
(
"21081915562568101010"
)
// Test
vm
.
requestOrderDetail
(
"21082017225320101002"
)
}
}
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/ui/widget/OrderCommodityInfoView.kt
View file @
33655ac7
...
...
@@ -5,10 +5,13 @@ import android.util.AttributeSet
import
android.view.LayoutInflater
import
androidx.constraintlayout.widget.ConstraintLayout
import
androidx.databinding.DataBindingUtil
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.yidian.shenghuoquan.border.R
import
com.yidian.shenghuoquan.border.adapter.OrderDetailCommodityListAdapter
import
com.yidian.shenghuoquan.border.databinding.BorderViewOrderCommodityInfoBinding
import
com.yidian.shenghuoquan.border.dto.OrderDetailDto
import
com.yidian.shenghuoquan.border.manager.OrderStatus
import
com.yidian.shenghuoquan.border.viewmodel.OrderCommodityInfoViewModel
/**
* author: yinjiacheng
...
...
@@ -25,6 +28,17 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
this
,
true
)
private
val
adapter
by
lazy
{
OrderDetailCommodityListAdapter
(
null
)
}
init
{
initRecycleView
()
}
private
fun
initRecycleView
()
{
binding
.
rvCommodityList
.
layoutManager
=
LinearLayoutManager
(
context
,
LinearLayoutManager
.
VERTICAL
,
false
)
binding
.
rvCommodityList
.
adapter
=
adapter
binding
.
rvCommodityList
.
addItemDecoration
(
OrderDetailCommodityListAdapter
.
OrderDetailCommodityListItemDecoration
())
}
/**
* 设置商品信息
...
...
@@ -32,6 +46,9 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
* @param info 商品信息
*/
fun
setCommodityInfo
(
status
:
OrderStatus
,
info
:
OrderDetailDto
)
{
binding
.
vm
=
OrderCommodityInfoViewModel
()
binding
.
status
=
status
binding
.
data
=
info
adapter
.
updateData
(
info
.
orderItemList
)
}
}
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/viewmodel/OrderDetailCommodityListItemViewModel.kt
0 → 100644
View file @
33655ac7
package
com.yidian.shenghuoquan.border.viewmodel
import
android.widget.ImageView
import
androidx.databinding.BindingAdapter
import
com.bumptech.glide.Glide
import
com.bumptech.glide.load.resource.bitmap.CenterCrop
import
com.bumptech.glide.load.resource.bitmap.RoundedCorners
import
com.bumptech.glide.request.RequestOptions
import
com.yidian.bcommon.mvvm.BaseViewModel
import
com.yidian.shenghuoquan.border.R
import
com.yidian.utils.DensityUtil
/**
* author: yinjiacheng
* date: 2021/8/23 16:01
* description: 订单详情商品列表
*/
class
OrderDetailCommodityListItemViewModel
:
BaseViewModel
()
{
companion
object
{
/**
* 加载商品图片
* @param url 图片url
* @param target 目标ImageView
*/
@BindingAdapter
(
"commodityImageUrl"
)
@JvmStatic
fun
loadCommodityImage
(
target
:
ImageView
,
url
:
String
)
{
Glide
.
with
(
target
.
context
).
load
(
url
)
.
apply
(
RequestOptions
()
.
transform
(
CenterCrop
(),
RoundedCorners
(
DensityUtil
.
dp2px
(
12F
)))
.
error
(
R
.
drawable
.
img_order_commodity_placeholder
)
.
placeholder
(
R
.
drawable
.
img_order_commodity_placeholder
)
)
.
into
(
target
)
}
}
}
Components/BOrder/src/main/res/drawable-xxhdpi/img_order_commodity_placeholder.webp
0 → 100644
View file @
33655ac7
File added
Components/BOrder/src/main/res/layout/border_item_order_detail_commodity_list.xml
0 → 100644
View file @
33655ac7
<?xml version="1.0" encoding="utf-8"?>
<layout
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"
>
<data>
<variable
name=
"vm"
type=
"com.yidian.shenghuoquan.border.viewmodel.OrderDetailCommodityListItemViewModel"
/>
<variable
name=
"data"
type=
"com.yidian.shenghuoquan.border.dto.OrderItem"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<ImageView
android:id=
"@+id/iv_commodity_pic"
android:layout_width=
"@dimen/dp82"
android:layout_height=
"@dimen/dp60"
app:commodityImageUrl=
"@{data.descPicUrl}"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:src=
"@drawable/img_order_commodity_placeholder"
/>
<TextView
android:id=
"@+id/tv_commodity_name"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/dp8"
android:ellipsize=
"end"
android:includeFontPadding=
"false"
android:maxLines=
"1"
android:text=
"@{data.goodsName}"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp15"
app:layout_constraintStart_toEndOf=
"@id/iv_commodity_pic"
app:layout_constraintTop_toTopOf=
"parent"
tools:text=
"肉末茄子+蔬蒸蛋套餐+肉末茄…"
/>
<TextView
android:id=
"@+id/tv_commodity_count"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp8"
android:includeFontPadding=
"false"
android:text=
"@{'共' + String.valueOf(data.goodsNum) + '件'}"
android:textColor=
"@color/color_999999"
android:textSize=
"@dimen/sp13"
app:layout_constraintStart_toStartOf=
"@id/tv_commodity_name"
app:layout_constraintTop_toBottomOf=
"@id/tv_commodity_name"
tools:text=
"共2件"
/>
<TextView
android:id=
"@+id/tv_commodity_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp8"
android:includeFontPadding=
"false"
android:text=
"@{'¥' + String.valueOf(data.price)}"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp16"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"@id/tv_commodity_name"
app:layout_constraintTop_toBottomOf=
"@id/tv_commodity_count"
tools:text=
"¥15.00"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
Components/BOrder/src/main/res/layout/border_view_order_commodity_info.xml
View file @
33655ac7
...
...
@@ -5,6 +5,23 @@
<data>
<import
type=
"android.view.View"
/>
<import
type=
"com.yidian.shenghuoquan.border.manager.OrderStatus"
/>
<import
type=
"java.util.List"
/>
<variable
name=
"vm"
type=
"com.yidian.shenghuoquan.border.viewmodel.OrderCommodityInfoViewModel"
/>
<variable
name=
"status"
type=
"com.yidian.shenghuoquan.border.manager.OrderStatus"
/>
<variable
name=
"data"
type=
"com.yidian.shenghuoquan.border.dto.OrderDetailDto"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
...
...
@@ -20,6 +37,7 @@
android:id=
"@+id/tv_activity_title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@{data.marketingName}"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp16"
app:layout_constraintStart_toStartOf=
"parent"
...
...
@@ -54,6 +72,7 @@
android:text=
"@string/apply_refund"
android:textColor=
"@color/color_999999"
android:textSize=
"@dimen/sp11"
android:visibility=
"@{status == OrderStatus.ORDER_STATUS_PAID ? View.VISIBLE : View.GONE}"
app:layout_constraintEnd_toStartOf=
"@id/tv_contract_seller"
app:layout_constraintTop_toTopOf=
"@id/tv_contract_seller"
/>
...
...
@@ -89,19 +108,19 @@
android:layout_marginStart=
"@dimen/dp3"
android:ellipsize=
"end"
android:maxLines=
"1"
android:text=
"@string/red_packet_or_coupon"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp14"
app:layout_constraintBottom_toBottomOf=
"@id/iv_coupon"
app:layout_constraintEnd_toStartOf=
"@id/tv_coupon_amount"
app:layout_constraintStart_toEndOf=
"@id/iv_coupon"
app:layout_constraintTop_toTopOf=
"@id/iv_coupon"
/>
app:layout_constraintTop_toTopOf=
"@id/iv_coupon"
tools:text=
"@string/red_packet_or_coupon"
/>
<TextView
android:id=
"@+id/tv_coupon_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/shape_solid_d66948_corner_9"
android:drawableEnd=
"@drawable/icon_next_white"
android:paddingStart=
"@dimen/dp8"
android:paddingTop=
"@dimen/dp2"
...
...
@@ -122,6 +141,7 @@
android:text=
"@string/discount_amount"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp14"
android:visibility=
"@{data.useCoupon == 1 ? View.VISIBLE : View.GONE}"
app:layout_constraintBaseline_toBaselineOf=
"@id/tv_total_amount"
app:layout_constraintEnd_toStartOf=
"@id/tv_discount_amount"
/>
...
...
@@ -130,8 +150,10 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"@dimen/dp8"
android:text=
"@{'¥' + String.valueOf(data.discountFee)}"
android:textColor=
"@color/color_D66948"
android:textSize=
"@dimen/sp14"
android:visibility=
"@{data.useCoupon == 1 ? View.VISIBLE : View.GONE}"
app:layout_constraintBaseline_toBaselineOf=
"@id/tv_total_amount"
app:layout_constraintEnd_toStartOf=
"@id/tv_total_amount_text"
tools:text=
"¥10.00"
/>
...
...
@@ -151,6 +173,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp24"
android:text=
"@{'¥' + String.valueOf(data.totalPrice)}"
android:textColor=
"@color/black"
android:textSize=
"@dimen/sp18"
android:textStyle=
"bold"
...
...
Components/BOrder/src/main/res/layout/border_view_order_info.xml
View file @
33655ac7
...
...
@@ -161,7 +161,7 @@
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/dp14"
android:text=
"@{data.
marketingName
}"
android:text=
"@{data.
comment
}"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp14"
app:layout_constraintEnd_toEndOf=
"parent"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment