Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
pms-ci-test
Commits
03c6a1c0
提交
03c6a1c0
authored
8月 15, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
功能:租赁商品列表
上级
08d02e17
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
254 行增加
和
7 行删除
+254
-7
LeaseGoodsController.java
...va/com/mmc/pms/controller/lease/LeaseGoodsController.java
+13
-2
LeaseGoodsDao.java
src/main/java/com/mmc/pms/dao/lease/LeaseGoodsDao.java
+5
-0
LeaseGoodsDO.java
src/main/java/com/mmc/pms/entity/lease/LeaseGoodsDO.java
+20
-1
LeaseGoodsQO.java
src/main/java/com/mmc/pms/model/lease/qo/LeaseGoodsQO.java
+55
-0
LeaseGoodsVO.java
src/main/java/com/mmc/pms/model/lease/vo/LeaseGoodsVO.java
+11
-3
LeasePriceStockVO.java
...in/java/com/mmc/pms/model/lease/vo/LeasePriceStockVO.java
+6
-0
LeaseGoodsService.java
...ain/java/com/mmc/pms/service/lease/LeaseGoodsService.java
+4
-1
LeaseGoodsServiceImpl.java
...com/mmc/pms/service/lease/impl/LeaseGoodsServiceImpl.java
+56
-0
LeaseGoodsDao.xml
src/main/resources/mapper/lease/LeaseGoodsDao.xml
+84
-0
没有找到文件。
src/main/java/com/mmc/pms/controller/lease/LeaseGoodsController.java
浏览文件 @
03c6a1c0
...
...
@@ -8,12 +8,16 @@ package com.mmc.pms.controller.lease;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.controller.BaseController
;
import
com.mmc.pms.model.group.Create
;
import
com.mmc.pms.model.group.Update
;
import
com.mmc.pms.model.lease.qo.LeaseGoodsQO
;
import
com.mmc.pms.model.lease.vo.LeaseGoodsVO
;
import
com.mmc.pms.service.lease.LeaseGoodsService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
...
...
@@ -33,7 +37,7 @@ public class LeaseGoodsController extends BaseController {
@ApiOperation
(
value
=
"新增租赁商品"
)
@PostMapping
(
"addLeaseGoods"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
public
ResultBody
addLeaseGoods
(
@RequestBody
LeaseGoodsVO
leaseGoodsVO
,
HttpServletRequest
request
)
{
public
ResultBody
addLeaseGoods
(
@
Validated
(
value
=
{
Create
.
class
})
@
RequestBody
LeaseGoodsVO
leaseGoodsVO
,
HttpServletRequest
request
)
{
return
leaseGoodsService
.
addLeaseGoods
(
leaseGoodsVO
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
...
...
@@ -55,7 +59,14 @@ public class LeaseGoodsController extends BaseController {
@ApiOperation
(
value
=
"编辑租赁商品"
)
@PostMapping
(
"editLeaseGoods"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
public
ResultBody
editLeaseGoods
(
@RequestBody
LeaseGoodsVO
leaseGoodsVO
,
HttpServletRequest
request
)
{
public
ResultBody
editLeaseGoods
(
@
Validated
(
value
=
{
Update
.
class
})
@
RequestBody
LeaseGoodsVO
leaseGoodsVO
,
HttpServletRequest
request
)
{
return
leaseGoodsService
.
editLeaseGoods
(
leaseGoodsVO
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
@ApiOperation
(
value
=
"租赁商品列表"
)
@PostMapping
(
"leaseGoodsList"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
LeaseGoodsVO
.
class
)})
public
ResultBody
leaseGoodsList
(
@RequestBody
LeaseGoodsQO
param
,
HttpServletRequest
request
)
{
return
leaseGoodsService
.
leaseGoodsList
(
param
,
this
.
getUserLoginInfoFromRedis
(
request
));
}
}
src/main/java/com/mmc/pms/dao/lease/LeaseGoodsDao.java
浏览文件 @
03c6a1c0
...
...
@@ -4,6 +4,7 @@ import com.mmc.pms.entity.lease.*;
import
com.mmc.pms.entity.mall.MallGoodsResourcesDO
;
import
com.mmc.pms.entity.mall.SpecAttrDO
;
import
com.mmc.pms.entity.mall.SpecAttrValueDO
;
import
com.mmc.pms.model.lease.qo.LeaseGoodsQO
;
import
com.mmc.pms.model.lease.vo.LeaseGoodsVO
;
import
com.mmc.pms.model.mall.SpecAttrVO
;
import
org.apache.ibatis.annotations.Mapper
;
...
...
@@ -61,4 +62,8 @@ public interface LeaseGoodsDao {
void
updateSpecAttr
(
SpecAttrVO
specAttrVO
);
void
deleteSpecAttrValue
(
List
<
Integer
>
delValueIds
);
int
countLeaseGoods
(
LeaseGoodsQO
param
);
List
<
LeaseGoodsDO
>
listLeaseGoods
(
LeaseGoodsQO
param
);
}
src/main/java/com/mmc/pms/entity/lease/LeaseGoodsDO.java
浏览文件 @
03c6a1c0
...
...
@@ -4,9 +4,12 @@ import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 租赁商品信息(LeaseGoodsDO)实体类
...
...
@@ -92,6 +95,18 @@ public class LeaseGoodsDO implements Serializable {
private
Integer
sort
;
/**
* 辅助字段 begin
*/
// 图片
private
List
<
LeaseGoodsResourcesDO
>
leaseGoodsResources
;
// 规格排列组合
private
List
<
LeasePriceStockDO
>
priceStockList
;
/**
* 辅助字段end
*/
public
LeaseGoodsDO
(
LeaseGoodsVO
leaseGoodsVO
)
{
this
.
id
=
leaseGoodsVO
.
getId
();
this
.
tradeName
=
leaseGoodsVO
.
getTradeName
();
...
...
@@ -118,7 +133,11 @@ public class LeaseGoodsDO implements Serializable {
.
productParam
(
productParam
).
productDetails
(
productDetails
).
minLeaseTerm
(
minLeaseTerm
)
.
maxLeaseTerm
(
maxLeaseTerm
).
shipAddress
(
shipAddress
).
returnAddress
(
returnAddress
)
.
logisticsCompany
(
logisticsCompany
).
modeOfDelivery
(
modeOfDelivery
).
createTime
(
createTime
)
.
userAccountId
(
userAccountId
).
build
();
.
userAccountId
(
userAccountId
).
resourcesList
(
CollectionUtils
.
isEmpty
(
leaseGoodsResources
)
?
null
:
leaseGoodsResources
.
stream
().
map
(
LeaseGoodsResourcesDO:
:
buildGoodsResourcesVO
).
collect
(
Collectors
.
toList
()))
.
priceStock
(
CollectionUtils
.
isEmpty
(
priceStockList
)
?
null
:
priceStockList
.
stream
().
map
(
LeasePriceStockDO:
:
buildPriceStockVO
).
collect
(
Collectors
.
toList
()))
.
build
();
}
}
src/main/java/com/mmc/pms/model/lease/qo/LeaseGoodsQO.java
0 → 100644
浏览文件 @
03c6a1c0
package
com
.
mmc
.
pms
.
model
.
lease
.
qo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.data.domain.Page
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @Author LW
* @date 2023/8/15 10:47
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
LeaseGoodsQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3779375235771767532L
;
@ApiModelProperty
(
value
=
"上架状态 0下架 1上架"
)
private
Integer
shelfStatus
;
@ApiModelProperty
(
value
=
"商品标题"
,
example
=
"商品标题"
)
private
String
tradeName
;
@ApiModelProperty
(
value
=
"商品类型id"
,
example
=
"1"
)
private
Integer
productTypeId
;
@ApiModelProperty
(
value
=
"品牌id"
,
example
=
"2"
)
private
Integer
brandInfoId
;
@ApiModelProperty
(
value
=
"用户id"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
}
src/main/java/com/mmc/pms/model/lease/vo/LeaseGoodsVO.java
浏览文件 @
03c6a1c0
...
...
@@ -10,7 +10,6 @@ import lombok.Builder;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
...
...
@@ -34,7 +33,7 @@ public class LeaseGoodsVO implements Serializable {
private
Integer
id
;
@ApiModelProperty
(
value
=
"商品标题"
,
example
=
"商品标题"
,
required
=
true
)
@Not
Blank
(
message
=
"商品标题不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
@Not
Empty
(
message
=
"商品标题不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
String
tradeName
;
@ApiModelProperty
(
value
=
"商品卖点"
,
example
=
"商品卖点"
)
...
...
@@ -43,7 +42,7 @@ public class LeaseGoodsVO implements Serializable {
@ApiModelProperty
(
value
=
"商品成新"
,
example
=
"1"
,
required
=
true
)
private
Integer
level
;
@ApiModelProperty
(
value
=
"商品状态"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"商品状态
:0下架 1上架
"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"商品状态不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
shelfStatus
;
...
...
@@ -102,4 +101,13 @@ public class LeaseGoodsVO implements Serializable {
@ApiModelProperty
(
value
=
"店铺id 小程序用"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"押金范围"
,
hidden
=
true
)
private
String
cashPledgeRange
;
@ApiModelProperty
(
value
=
"租金范围"
,
hidden
=
true
)
private
String
rentalRange
;
@ApiModelProperty
(
value
=
"库存"
,
hidden
=
true
)
private
Integer
stock
;
}
src/main/java/com/mmc/pms/model/lease/vo/LeasePriceStockVO.java
浏览文件 @
03c6a1c0
package
com
.
mmc
.
pms
.
model
.
lease
.
vo
;
import
com.mmc.pms.model.group.Create
;
import
com.mmc.pms.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.NotEmpty
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
...
...
@@ -25,6 +29,7 @@ public class LeasePriceStockVO implements Serializable {
private
Integer
id
;
@ApiModelProperty
(
value
=
"商品规格"
,
example
=
"示例:{\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"} 或 [\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"] 或 你怎么方便怎么来"
)
@NotEmpty
(
message
=
"商品规格不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
String
productSpec
;
@ApiModelProperty
(
value
=
"押金"
,
example
=
"1"
)
...
...
@@ -52,6 +57,7 @@ public class LeasePriceStockVO implements Serializable {
private
String
skuImage
;
@ApiModelProperty
(
value
=
"库存"
,
example
=
"10"
)
@Max
(
message
=
"最大不能超过9999"
,
groups
=
{
Update
.
class
,
Create
.
class
},
value
=
9999
)
private
Integer
stock
;
@ApiModelProperty
(
value
=
"是否缺货 0:否 1:是"
)
...
...
src/main/java/com/mmc/pms/service/lease/LeaseGoodsService.java
浏览文件 @
03c6a1c0
package
com
.
mmc
.
pms
.
service
.
lease
;
import
com.mmc.pms.auth.dto.LoginSuccessDTO
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.model.lease.qo.LeaseGoodsQO
;
import
com.mmc.pms.model.lease.vo.LeaseGoodsVO
;
/**
...
...
@@ -16,5 +18,6 @@ public interface LeaseGoodsService {
ResultBody
leaseGoodsDetails
(
Integer
id
);
ResultBody
editLeaseGoods
(
LeaseGoodsVO
leaseGoodsVO
,
Integer
userAccountId
);
ResultBody
leaseGoodsList
(
LeaseGoodsQO
param
,
LoginSuccessDTO
loginSuccessDTO
);
}
src/main/java/com/mmc/pms/service/lease/impl/LeaseGoodsServiceImpl.java
浏览文件 @
03c6a1c0
package
com
.
mmc
.
pms
.
service
.
lease
.
impl
;
import
com.mmc.pms.auth.dto.LoginSuccessDTO
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.dao.lease.LeaseGoodsDao
;
import
com.mmc.pms.entity.lease.*
;
import
com.mmc.pms.model.lease.qo.LeaseGoodsQO
;
import
com.mmc.pms.model.lease.vo.LeaseGoodsVO
;
import
com.mmc.pms.model.lease.vo.LeasePartsListVO
;
import
com.mmc.pms.model.lease.vo.LeasePriceStockVO
;
import
com.mmc.pms.page.PageResult
;
import
com.mmc.pms.service.lease.LeaseGoodsService
;
import
com.mmc.pms.service.mall.MallGoodsService
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -12,8 +16,12 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* @Author LW
...
...
@@ -106,4 +114,52 @@ public class LeaseGoodsServiceImpl implements LeaseGoodsService {
mallGoodsService
.
updateSpecInfo
(
null
,
leaseGoodsVO
);
return
ResultBody
.
success
();
}
@Override
public
ResultBody
leaseGoodsList
(
LeaseGoodsQO
param
,
LoginSuccessDTO
loginSuccessDTO
)
{
if
(
loginSuccessDTO
.
getRoleInfo
().
getSuperAdmin
().
equals
(
1
))
{
// 超级管理员获取所有商品信息
return
ResultBody
.
success
(
getMallGoodsInfo
(
param
));
}
else
{
// 非超级管理员获取自家的商品信息
param
.
setUserAccountId
(
loginSuccessDTO
.
getUserAccountId
());
return
ResultBody
.
success
(
getMallGoodsInfo
(
param
));
}
}
private
PageResult
getMallGoodsInfo
(
LeaseGoodsQO
param
)
{
int
count
=
leaseGoodsDao
.
countLeaseGoods
(
param
);
if
(
count
==
0
)
{
return
PageResult
.
buildPage
(
param
.
getPageNo
(),
param
.
getPageSize
(),
count
);
}
Integer
pageNo
=
param
.
getPageNo
();
param
.
buildCurrentPage
();
List
<
LeaseGoodsDO
>
leaseGoodsDOList
=
leaseGoodsDao
.
listLeaseGoods
(
param
);
// 转成vo
List
<
LeaseGoodsVO
>
leaseGoodsVOList
=
leaseGoodsDOList
.
stream
().
map
(
LeaseGoodsDO:
:
buildLeaseGoodsVO
).
collect
(
Collectors
.
toList
());
leaseGoodsVOList
=
leaseGoodsVOList
.
stream
().
peek
(
d
->
{
// 获取最低押金及最高押金
List
<
LeasePriceStockVO
>
list
=
d
.
getPriceStock
().
stream
().
sorted
(
Comparator
.
comparing
(
LeasePriceStockVO:
:
getCashPledge
)).
collect
(
Collectors
.
toList
());
LeasePriceStockVO
lastElement
=
list
.
get
(
list
.
size
()
-
1
);
LeasePriceStockVO
firstElement
=
list
.
get
(
0
);
d
.
setCashPledgeRange
(
"¥"
+
firstElement
.
getCashPledge
()
+
"~"
+
"¥"
+
lastElement
.
getCashPledge
());
// 获取最低租金
BigDecimal
minPrice
=
list
.
stream
()
.
map
(
o
->
Stream
.
of
(
o
.
getThreeDaysRental
(),
o
.
getSevenDaysRental
(),
o
.
getThirtyDaysRental
(),
o
.
getNinetyDaysRental
(),
o
.
getMaxDaysRental
())
.
filter
(
Objects:
:
nonNull
)
.
min
(
BigDecimal:
:
compareTo
)
.
orElse
(
BigDecimal
.
ZERO
))
.
min
(
Comparator
.
naturalOrder
()).
get
();
// 获取最高租金
BigDecimal
maxPrice
=
list
.
stream
()
.
map
(
o
->
Stream
.
of
(
o
.
getThreeDaysRental
(),
o
.
getSevenDaysRental
(),
o
.
getThirtyDaysRental
(),
o
.
getNinetyDaysRental
(),
o
.
getMaxDaysRental
())
.
filter
(
Objects:
:
nonNull
)
.
max
(
BigDecimal:
:
compareTo
)
.
orElse
(
BigDecimal
.
ZERO
))
.
max
(
Comparator
.
naturalOrder
()).
get
();
d
.
setRentalRange
(
"¥"
+
minPrice
+
"~"
+
"¥"
+
maxPrice
);
d
.
setStock
(
list
.
stream
().
mapToInt
(
LeasePriceStockVO:
:
getStock
).
sum
());
}).
collect
(
Collectors
.
toList
());
return
PageResult
.
buildPage
(
pageNo
,
param
.
getPageSize
(),
count
,
leaseGoodsVOList
);
}
}
src/main/resources/mapper/lease/LeaseGoodsDao.xml
浏览文件 @
03c6a1c0
...
...
@@ -286,4 +286,87 @@
)
</where>
</select>
<select
id=
"countLeaseGoods"
resultType=
"java.lang.Integer"
>
select count(*) from lease_goods
<where>
<if
test=
"shelfStatus != null"
>
and shelf_status = #{shelfStatus}
</if>
<if
test=
"tradeName != null and tradeName != ''"
>
and (trade_name LIKE CONCAT('%',#{tradeName},'%'))
</if>
<if
test=
"productTypeId != null"
>
and product_type_id = #{productTypeId}
</if>
<if
test=
"brandInfoId != null"
>
and brand_info_id = #{brandInfoId}
</if>
<if
test=
"userAccountId != null"
>
and user_account_id = #{userAccountId}
</if>
</where>
</select>
<resultMap
id=
"leaseGoodsMap"
type=
"com.mmc.pms.entity.lease.LeaseGoodsDO"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"trade_name"
property=
"tradeName"
/>
<result
column=
"product_type_id"
property=
"productTypeId"
/>
<result
column=
"shelf_status"
property=
"shelfStatus"
/>
<collection
property=
"leaseGoodsResources"
javaType=
"java.util.List"
ofType=
"com.mmc.pms.entity.lease.LeaseGoodsResourcesDO"
>
<id
column=
"resourceId"
property=
"id"
/>
<result
column=
"type"
property=
"type"
/>
<result
column=
"url"
property=
"url"
/>
</collection>
<collection
property=
"priceStockList"
javaType=
"java.util.List"
ofType=
"com.mmc.pms.entity.lease.LeasePriceStockDO"
>
<result
column=
"cash_pledge"
property=
"cashPledge"
/>
<result
column=
"three_days_rental"
property=
"threeDaysRental"
/>
<result
column=
"seven_days_rental"
property=
"sevenDaysRental"
/>
<result
column=
"thirty_days_rental"
property=
"thirtyDaysRental"
/>
<result
column=
"ninety_days_rental"
property=
"ninetyDaysRental"
/>
<result
column=
"max_days_rental"
property=
"maxDaysRental"
/>
<result
column=
"stock"
property=
"stock"
/>
</collection>
</resultMap>
<select
id=
"listLeaseGoods"
resultMap=
"leaseGoodsMap"
>
SELECT
lg.id,
lg.trade_name,
lg.product_type_id,
lg.shelf_status,
lg.create_time,
lgr.id resourceId,
lgr.type,
lgr.url,
lps.cash_pledge,
lps.three_days_rental,
lps.seven_days_rental,
lps.thirty_days_rental,
lps.ninety_days_rental,
lps.max_days_rental,
lps.stock
FROM
lease_goods lg
LEFT JOIN lease_goods_resources lgr ON lgr.lease_goods_id = lg.id
LEFT JOIN lease_price_stock lps ON lps.lease_goods_id = lg.id
<where>
<if
test=
"shelfStatus != null"
>
and shelf_status = #{shelfStatus}
</if>
<if
test=
"tradeName != null and tradeName != ''"
>
and (trade_name LIKE CONCAT('%',#{tradeName},'%'))
</if>
<if
test=
"productTypeId != null"
>
and product_type_id = #{productTypeId}
</if>
<if
test=
"brandInfoId != null"
>
and brand_info_id = #{brandInfoId}
</if>
<if
test=
"userAccountId != null"
>
and user_account_id = #{userAccountId}
</if>
</where>
order by lg.shelf_status DESC, lg.sort DESC
limit #{pageNo},#{pageSize}
</select>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论