Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
15a94253
提交
15a94253
authored
3月 05, 2019
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
商品分页
上级
83fdf181
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
385 行增加
和
6 行删除
+385
-6
AdminController.java
.../admin/application/controller/admins/AdminController.java
+1
-1
AdminPageDTO.java
...main/java/cn/iocoder/mall/admin/api/dto/AdminPageDTO.java
+4
-0
AdminsProductSpuController.java
...ication/controller/admins/AdminsProductSpuController.java
+14
-2
ProductSpuConvert.java
...r/mall/product/application/convert/ProductSpuConvert.java
+6
-0
AdminsProductSpuVO.java
...all/product/application/vo/admins/AdminsProductSpuVO.java
+95
-0
ProductSpuService.java
...n/java/cn/iocoder/mall/product/api/ProductSpuService.java
+6
-0
ProductSpuBO.java
...ain/java/cn/iocoder/mall/product/api/bo/ProductSpuBO.java
+110
-1
ProductSpuPageBO.java
...java/cn/iocoder/mall/product/api/bo/ProductSpuPageBO.java
+35
-0
ProductSpuPageDTO.java
...va/cn/iocoder/mall/product/api/dto/ProductSpuPageDTO.java
+42
-0
ProductSpuConvert.java
...va/cn/iocoder/mall/product/convert/ProductSpuConvert.java
+13
-1
ProductSpuMapper.java
...in/java/cn/iocoder/mall/product/dao/ProductSpuMapper.java
+10
-0
ProductSpuServiceImpl.java
...n/iocoder/mall/product/service/ProductSpuServiceImpl.java
+15
-0
ProductSpuMapper.xml
...rvice-impl/src/main/resources/mapper/ProductSpuMapper.xml
+34
-1
没有找到文件。
admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/AdminController.java
浏览文件 @
15a94253
...
...
@@ -82,7 +82,7 @@ public class AdminController {
@GetMapping
(
"/page"
)
@ApiOperation
(
value
=
"管理员分页"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"nickname"
,
value
=
"昵称,模糊匹配"
,
required
=
true
,
example
=
"小王"
),
@ApiImplicitParam
(
name
=
"nickname"
,
value
=
"昵称,模糊匹配"
,
example
=
"小王"
),
@ApiImplicitParam
(
name
=
"pageNo"
,
value
=
"页码,从 0 开始"
,
example
=
"0"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"每页条数"
,
required
=
true
,
example
=
"10"
),
})
...
...
admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/AdminPageDTO.java
浏览文件 @
15a94253
package
cn
.
iocoder
.
mall
.
admin
.
api
.
dto
;
import
javax.validation.constraints.NotNull
;
public
class
AdminPageDTO
{
private
String
nickname
;
@NotNull
(
message
=
"页码不能为空"
)
private
Integer
pageNo
;
@NotNull
(
message
=
"每页条数不能为空"
)
private
Integer
pageSize
;
public
Integer
getPageNo
()
{
...
...
product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/admins/AdminsProductSpuController.java
浏览文件 @
15a94253
...
...
@@ -4,8 +4,10 @@ import cn.iocoder.common.framework.vo.CommonResult;
import
cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder
;
import
cn.iocoder.mall.product.api.ProductSpuService
;
import
cn.iocoder.mall.product.api.bo.ProductSpuDetailBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuPageBO
;
import
cn.iocoder.mall.product.api.dto.ProductSkuAddOrUpdateDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuAddDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuPageDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO
;
import
cn.iocoder.mall.product.application.convert.ProductSpuConvert
;
import
cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuDetailVO
;
...
...
@@ -103,8 +105,18 @@ public class AdminsProductSpuController {
@GetMapping
(
"/spu/page"
)
@ApiOperation
(
"商品 SPU 分页列表"
)
public
CommonResult
<
AdminsProductSpuPageVO
>
spuPage
()
{
return
null
;
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"name"
,
value
=
"商品名称,模糊匹配"
,
example
=
"小王"
),
@ApiImplicitParam
(
name
=
"pageNo"
,
value
=
"页码,从 0 开始"
,
example
=
"0"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"每页条数"
,
required
=
true
,
example
=
"10"
),
})
public
CommonResult
<
AdminsProductSpuPageVO
>
spuPage
(
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"pageNo"
,
defaultValue
=
"0"
)
Integer
pageNo
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
)
{
// 创建 ProductSpuPageDTO 对象
ProductSpuPageDTO
productSpuPageDTO
=
new
ProductSpuPageDTO
().
setName
(
name
).
setPageNo
(
pageNo
).
setPageSize
(
pageSize
);
CommonResult
<
ProductSpuPageBO
>
result
=
productSpuService
.
getProductSpuPage
(
productSpuPageDTO
);
return
ProductSpuConvert
.
INSTANCE
.
convert2
(
result
);
}
@GetMapping
(
"/spu/info"
)
...
...
product/product-application/src/main/java/cn/iocoder/mall/product/application/convert/ProductSpuConvert.java
浏览文件 @
15a94253
...
...
@@ -2,7 +2,9 @@ package cn.iocoder.mall.product.application.convert;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.product.api.bo.ProductSpuDetailBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuPageBO
;
import
cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuDetailVO
;
import
cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuPageVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -18,4 +20,7 @@ public interface ProductSpuConvert {
@Mappings
({})
CommonResult
<
AdminsProductSpuDetailVO
>
convert
(
CommonResult
<
ProductSpuDetailBO
>
result
);
@Mappings
({})
CommonResult
<
AdminsProductSpuPageVO
>
convert2
(
CommonResult
<
ProductSpuPageBO
>
result
);
}
\ No newline at end of file
product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductSpuVO.java
浏览文件 @
15a94253
package
cn
.
iocoder
.
mall
.
product
.
application
.
vo
.
admins
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.util.List
;
@ApiModel
(
value
=
"商品 SPU VO"
,
description
=
"不包括 SKU 信息 VO"
)
public
class
AdminsProductSpuVO
{
@ApiModelProperty
(
value
=
"SPU 编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
// ========== 基本信息 =========
@ApiModelProperty
(
value
=
"SPU 名字"
,
required
=
true
,
example
=
"厮大牛逼"
)
private
String
name
;
@ApiModelProperty
(
value
=
"卖点"
,
required
=
true
,
example
=
"各种 MQ 骚操作"
)
private
String
sellPoint
;
@ApiModelProperty
(
value
=
"描述"
,
required
=
true
,
example
=
"你就说强不强"
)
private
String
description
;
@ApiModelProperty
(
value
=
"分类编号"
,
required
=
true
,
example
=
"反正我是信了"
)
private
Integer
cid
;
@ApiModelProperty
(
value
=
"商品主图地址的数组"
,
required
=
true
,
example
=
"http://www.iocoder.cn"
)
private
List
<
String
>
picUrls
;
// ========== 其他信息 =========
@ApiModelProperty
(
value
=
"是否上架商品(是否可见)"
,
required
=
true
,
example
=
"true"
)
private
Boolean
visible
;
@ApiModelProperty
(
value
=
"排序字段"
,
required
=
true
,
example
=
"10"
)
private
Integer
sort
;
public
Integer
getId
()
{
return
id
;
}
public
AdminsProductSpuVO
setId
(
Integer
id
)
{
this
.
id
=
id
;
return
this
;
}
public
String
getName
()
{
return
name
;
}
public
AdminsProductSpuVO
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
public
String
getSellPoint
()
{
return
sellPoint
;
}
public
AdminsProductSpuVO
setSellPoint
(
String
sellPoint
)
{
this
.
sellPoint
=
sellPoint
;
return
this
;
}
public
String
getDescription
()
{
return
description
;
}
public
AdminsProductSpuVO
setDescription
(
String
description
)
{
this
.
description
=
description
;
return
this
;
}
public
Integer
getCid
()
{
return
cid
;
}
public
AdminsProductSpuVO
setCid
(
Integer
cid
)
{
this
.
cid
=
cid
;
return
this
;
}
public
List
<
String
>
getPicUrls
()
{
return
picUrls
;
}
public
AdminsProductSpuVO
setPicUrls
(
List
<
String
>
picUrls
)
{
this
.
picUrls
=
picUrls
;
return
this
;
}
public
Boolean
getVisible
()
{
return
visible
;
}
public
AdminsProductSpuVO
setVisible
(
Boolean
visible
)
{
this
.
visible
=
visible
;
return
this
;
}
public
Integer
getSort
()
{
return
sort
;
}
public
AdminsProductSpuVO
setSort
(
Integer
sort
)
{
this
.
sort
=
sort
;
return
this
;
}
}
\ No newline at end of file
product/product-service-api/src/main/java/cn/iocoder/mall/product/api/ProductSpuService.java
浏览文件 @
15a94253
...
...
@@ -3,11 +3,14 @@ package cn.iocoder.mall.product.api;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.product.api.bo.ProductSpuBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuDetailBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuPageBO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuAddDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuPageDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO
;
public
interface
ProductSpuService
{
// TODO 芋艿,需要去改改
ProductSpuBO
getProductSpu
(
Integer
id
);
CommonResult
<
ProductSpuDetailBO
>
addProductSpu
(
Integer
adminId
,
ProductSpuAddDTO
productSpuAddDTO
);
...
...
@@ -16,4 +19,6 @@ public interface ProductSpuService {
CommonResult
<
Boolean
>
updateProductSpuSort
(
Integer
adminId
,
Integer
spuId
,
Integer
sort
);
CommonResult
<
ProductSpuPageBO
>
getProductSpuPage
(
ProductSpuPageDTO
productSpuPageDTO
);
}
\ No newline at end of file
product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductSpuBO.java
浏览文件 @
15a94253
package
cn
.
iocoder
.
mall
.
product
.
api
.
bo
;
import
java.util.List
;
public
class
ProductSpuBO
{
/**
* SPU 编号
*/
private
Integer
id
;
// ========== 基本信息 =========
/**
* SPU 名字
*/
private
String
name
;
/**
* 卖点
*/
private
String
sellPoint
;
/**
* 描述
*/
private
String
description
;
/**
* 分类编号
*/
private
Integer
cid
;
/**
* 商品主图地址
*
* 数组,以逗号分隔
*
* 建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
*/
private
List
<
String
>
picUrls
;
// ========== 其他信息 =========
/**
* 是否上架商品(是否可见)。
*
* true 为已上架
* false 为已下架
*/
private
Boolean
visible
;
/**
* 排序字段
*/
private
Integer
sort
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
public
ProductSpuBO
setId
(
Integer
id
)
{
this
.
id
=
id
;
return
this
;
}
public
String
getName
()
{
return
name
;
}
public
ProductSpuBO
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
public
String
getSellPoint
()
{
return
sellPoint
;
}
public
ProductSpuBO
setSellPoint
(
String
sellPoint
)
{
this
.
sellPoint
=
sellPoint
;
return
this
;
}
public
String
getDescription
()
{
return
description
;
}
public
ProductSpuBO
setDescription
(
String
description
)
{
this
.
description
=
description
;
return
this
;
}
public
Integer
getCid
()
{
return
cid
;
}
public
ProductSpuBO
setCid
(
Integer
cid
)
{
this
.
cid
=
cid
;
return
this
;
}
public
List
<
String
>
getPicUrls
()
{
return
picUrls
;
}
public
ProductSpuBO
setPicUrls
(
List
<
String
>
picUrls
)
{
this
.
picUrls
=
picUrls
;
return
this
;
}
public
Boolean
getVisible
()
{
return
visible
;
}
public
ProductSpuBO
setVisible
(
Boolean
visible
)
{
this
.
visible
=
visible
;
return
this
;
}
public
Integer
getSort
()
{
return
sort
;
}
public
ProductSpuBO
setSort
(
Integer
sort
)
{
this
.
sort
=
sort
;
return
this
;
}
}
\ No newline at end of file
product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductSpuPageBO.java
0 → 100644
浏览文件 @
15a94253
package
cn
.
iocoder
.
mall
.
product
.
api
.
bo
;
import
java.util.List
;
public
class
ProductSpuPageBO
{
/**
* Spu 数组
*/
private
List
<
ProductSpuBO
>
spus
;
/**
* 总量
*/
private
Integer
count
;
public
List
<
ProductSpuBO
>
getSpus
()
{
return
spus
;
}
public
ProductSpuPageBO
setSpus
(
List
<
ProductSpuBO
>
spus
)
{
this
.
spus
=
spus
;
return
this
;
}
public
Integer
getCount
()
{
return
count
;
}
public
ProductSpuPageBO
setCount
(
Integer
count
)
{
this
.
count
=
count
;
return
this
;
}
}
\ No newline at end of file
product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductSpuPageDTO.java
0 → 100644
浏览文件 @
15a94253
package
cn
.
iocoder
.
mall
.
product
.
api
.
dto
;
import
javax.validation.constraints.NotNull
;
public
class
ProductSpuPageDTO
{
private
String
name
;
@NotNull
(
message
=
"页码不能为空"
)
private
Integer
pageNo
;
@NotNull
(
message
=
"每页条数不能为空"
)
private
Integer
pageSize
;
public
String
getName
()
{
return
name
;
}
public
ProductSpuPageDTO
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
public
Integer
getPageNo
()
{
return
pageNo
;
}
public
ProductSpuPageDTO
setPageNo
(
Integer
pageNo
)
{
this
.
pageNo
=
pageNo
;
return
this
;
}
public
Integer
getPageSize
()
{
return
pageSize
;
}
public
ProductSpuPageDTO
setPageSize
(
Integer
pageSize
)
{
this
.
pageSize
=
pageSize
;
return
this
;
}
}
\ No newline at end of file
product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/ProductSpuConvert.java
浏览文件 @
15a94253
...
...
@@ -13,6 +13,7 @@ import cn.iocoder.mall.product.dataobject.ProductSpuDO;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.Named
;
import
org.mapstruct.factory.Mappers
;
import
java.util.ArrayList
;
...
...
@@ -25,9 +26,14 @@ public interface ProductSpuConvert {
ProductSpuConvert
INSTANCE
=
Mappers
.
getMapper
(
ProductSpuConvert
.
class
);
@Mappings
({})
@Mappings
({
@Mapping
(
source
=
"picUrls"
,
target
=
"picUrls"
,
qualifiedByName
=
"translatePicUrlsFromString"
)
})
ProductSpuBO
convert
(
ProductSpuDO
spu
);
@Mappings
({})
List
<
ProductSpuBO
>
convert
(
List
<
ProductSpuDO
>
spus
);
@Mappings
({
@Mapping
(
source
=
"picUrls"
,
target
=
"picUrls"
,
ignore
=
true
)
})
...
...
@@ -79,4 +85,9 @@ public interface ProductSpuConvert {
return
spuDetail
;
}
@Named
(
"translatePicUrlsFromString"
)
default
List
<
String
>
translatePicUrlsFromString
(
String
picUrls
)
{
return
StringUtil
.
split
(
picUrls
,
","
);
}
}
\ No newline at end of file
product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/ProductSpuMapper.java
浏览文件 @
15a94253
package
cn
.
iocoder
.
mall
.
product
.
dao
;
import
cn.iocoder.mall.product.dataobject.ProductSpuDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
ProductSpuMapper
{
...
...
@@ -12,4 +15,10 @@ public interface ProductSpuMapper {
void
update
(
ProductSpuDO
productSpuDO
);
List
<
ProductSpuDO
>
selectListByNameLikeOrderBySortAsc
(
@Param
(
"name"
)
String
name
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByNameLike
(
@Param
(
"name"
)
String
name
);
}
\ No newline at end of file
product/product-service-impl/src/main/java/cn/iocoder/mall/product/service/ProductSpuServiceImpl.java
浏览文件 @
15a94253
...
...
@@ -9,10 +9,12 @@ import cn.iocoder.mall.product.api.ProductSpuService;
import
cn.iocoder.mall.product.api.bo.ProductAttrDetailBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuDetailBO
;
import
cn.iocoder.mall.product.api.bo.ProductSpuPageBO
;
import
cn.iocoder.mall.product.api.constant.ProductErrorCodeEnum
;
import
cn.iocoder.mall.product.api.constant.ProductSpuConstants
;
import
cn.iocoder.mall.product.api.dto.ProductSkuAddOrUpdateDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuAddDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuPageDTO
;
import
cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO
;
import
cn.iocoder.mall.product.convert.ProductSpuConvert
;
import
cn.iocoder.mall.product.dao.ProductSkuMapper
;
...
...
@@ -169,6 +171,19 @@ public class ProductSpuServiceImpl implements ProductSpuService {
return
CommonResult
.
success
(
true
);
}
@Override
public
CommonResult
<
ProductSpuPageBO
>
getProductSpuPage
(
ProductSpuPageDTO
productSpuPageDTO
)
{
ProductSpuPageBO
productSpuPage
=
new
ProductSpuPageBO
();
// 查询分页数据
int
offset
=
productSpuPageDTO
.
getPageNo
()
*
productSpuPageDTO
.
getPageSize
();
productSpuPage
.
setSpus
(
ProductSpuConvert
.
INSTANCE
.
convert
(
productSpuMapper
.
selectListByNameLikeOrderBySortAsc
(
productSpuPageDTO
.
getName
(),
offset
,
productSpuPageDTO
.
getPageSize
())));
// 查询分页总数
productSpuPage
.
setCount
(
productSpuMapper
.
selectCountByNameLike
(
productSpuPageDTO
.
getName
()));
// 返回结果
return
CommonResult
.
success
(
productSpuPage
);
}
private
CommonResult
<
Boolean
>
validProductSku
(
List
<
ProductSkuAddOrUpdateDTO
>
productSkuAddDTOs
,
List
<
ProductAttrDetailBO
>
productAttrDetailBOs
)
{
// 创建 ProductAttrDetailBO 的映射。其中,KEY 为 ProductAttrDetailBO.attrValueId ,即规格值的编号
Map
<
Integer
,
ProductAttrDetailBO
>
productAttrDetailBOMap
=
productAttrDetailBOs
.
stream
().
collect
(
...
...
product/product-service-impl/src/main/resources/mapper/ProductSpuMapper.xml
浏览文件 @
15a94253
...
...
@@ -2,11 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.iocoder.mall.product.dao.ProductSpuMapper"
>
<sql
id=
"FIELDS"
>
id, name, sell_point, description, cid,
pic_urls, visible, sort, create_time
</sql>
<select
id=
"selectById"
parameterType=
"Integer"
resultType=
"ProductSpuDO"
>
SELECT
id
<include
refid=
"FIELDS"
/>
FROM product_spu
WHERE id = #{id}
AND deleted = 0
</select>
<insert
id=
"insert"
parameterType=
"ProductSpuDO"
useGeneratedKeys=
"true"
keyColumn=
"id"
keyProperty=
"id"
>
...
...
@@ -50,4 +56,30 @@
WHERE id = #{id}
</update>
<select
id=
"selectListByNameLikeOrderBySortAsc"
resultType=
"ProductSpuDO"
>
SELECT
<include
refid=
"FIELDS"
/>
FROM product_spu
<where>
<if
test=
"name != null"
>
name LIKE "%"#{name}"%"
</if>
AND deleted = 0
</where>
ORDER BY sort ASC
LIMIT #{offset}, #{limit}
</select>
<select
id=
"selectCountByNameLike"
resultType=
"Integer"
>
SELECT
COUNT(1)
FROM product_spu
<where>
<if
test=
"name != null"
>
name LIKE "%"#{name}"%"
</if>
AND deleted = 0
</where>
</select>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论