Commit 0e3cdda08d505abe315ce953d1b8b3e1588068a4

Authored by sfmind
2 parents 13b5ad12 c6e901eb

Merge remote-tracking branch 'origin/feature/1.8.0-uniapp' into feature/1.8.0-uniapp

Showing 48 changed files with 1250 additions and 339 deletions
sql/mall.sql
@@ -253,3 +253,35 @@ create table product_sku @@ -253,3 +253,35 @@ create table product_sku
253 collate utf8mb4_general_ci; 253 collate utf8mb4_general_ci;
254 254
255 255
  256 +---Market-Banner管理SQL
  257 +drop table if exists market_banner;
  258 +CREATE TABLE `market_banner` (
  259 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Banner编号',
  260 + `title` varchar(64) NOT NULL DEFAULT '' COMMENT 'Banner标题',
  261 + `pic_url` varchar(255) NOT NULL COMMENT '图片URL',
  262 + `status` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '活动状态',
  263 + `url` varchar(255) NOT NULL COMMENT '跳转地址',
  264 + `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  265 + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  266 + `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  267 + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  268 + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
  269 + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号',
  270 + `sort` tinyint(4) DEFAULT NULL COMMENT '排序',
  271 + `memo` varchar(255) DEFAULT NULL COMMENT '描述',
  272 + PRIMARY KEY (`id`) USING BTREE
  273 +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Banner管理';
  274 +-- 菜单 SQL
  275 +INSERT INTO `system_menu`(`id`,`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
  276 +VALUES (2002, 'Banner管理', '', 2, 1, 2000, 'brand', '', 'mall/market/banner/index', 0);
  277 +-- 按钮父菜单ID
  278 +SELECT @parentId := LAST_INSERT_ID();
  279 +-- 按钮 SQL
  280 +INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
  281 +VALUES ('Banner查询', 'market:banner:query', 3, 1, @parentId, '', '', '', 0);
  282 +INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
  283 +VALUES ('Banner创建', 'market:banner:create', 3, 2, @parentId, '', '', '', 0);
  284 +INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
  285 +VALUES ('Banner更新', 'market:banner:update', 3, 3, @parentId, '', '', '', 0);
  286 +INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
  287 +VALUES ('Banner删除', 'market:banner:delete', 3, 4, @parentId, '', '', '', 0);
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/CommonStatusEnum.java
1 package cn.iocoder.yudao.framework.common.enums; 1 package cn.iocoder.yudao.framework.common.enums;
2 2
  3 +import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3 import lombok.AllArgsConstructor; 4 import lombok.AllArgsConstructor;
4 import lombok.Getter; 5 import lombok.Getter;
5 6
  7 +import java.util.Arrays;
  8 +
6 /** 9 /**
7 * 通用状态枚举 10 * 通用状态枚举
8 * 11 *
@@ -10,11 +13,14 @@ import lombok.Getter; @@ -10,11 +13,14 @@ import lombok.Getter;
10 */ 13 */
11 @Getter 14 @Getter
12 @AllArgsConstructor 15 @AllArgsConstructor
13 -public enum CommonStatusEnum { 16 +public enum CommonStatusEnum implements IntArrayValuable {
14 17
15 ENABLE(0, "开启"), 18 ENABLE(0, "开启"),
16 DISABLE(1, "关闭"); 19 DISABLE(1, "关闭");
17 20
  21 + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CommonStatusEnum::getStatus).toArray();
  22 +
  23 +
18 /** 24 /**
19 * 状态值 25 * 状态值
20 */ 26 */
@@ -24,4 +30,9 @@ public enum CommonStatusEnum { @@ -24,4 +30,9 @@ public enum CommonStatusEnum {
24 */ 30 */
25 private final String name; 31 private final String name;
26 32
  33 + @Override
  34 + public int[] array() {
  35 + return ARRAYS;
  36 + }
  37 +
27 } 38 }
yudao-module-mall/yudao-module-market-api/src/main/java/cn/iocoder/yudao/module/market/enums/ErrorCodeConstants.java
@@ -12,4 +12,7 @@ public interface ErrorCodeConstants { @@ -12,4 +12,7 @@ public interface ErrorCodeConstants {
12 12
13 // ========== 促销活动相关 1003001000============ 13 // ========== 促销活动相关 1003001000============
14 ErrorCode ACTIVITY_NOT_EXISTS = new ErrorCode(1003001000, "促销活动不存在"); 14 ErrorCode ACTIVITY_NOT_EXISTS = new ErrorCode(1003001000, "促销活动不存在");
  15 +
  16 + // ========== banner相关 1003002000============
  17 + ErrorCode BANNER_NOT_EXISTS = new ErrorCode(1003002000, "Banner不存在");
15 } 18 }
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/activity/vo/ActivityCreateReqVO.java
@@ -5,6 +5,9 @@ import java.util.*; @@ -5,6 +5,9 @@ import java.util.*;
5 import io.swagger.annotations.*; 5 import io.swagger.annotations.*;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
7 7
  8 +/**
  9 + * @author xia
  10 + */
8 @ApiModel("管理后台 - 促销活动创建 Request VO") 11 @ApiModel("管理后台 - 促销活动创建 Request VO")
9 @Data 12 @Data
10 @EqualsAndHashCode(callSuper = true) 13 @EqualsAndHashCode(callSuper = true)
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/BannerController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.admin.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.*;
  6 +import cn.iocoder.yudao.module.market.convert.banner.BannerConvert;
  7 +import cn.iocoder.yudao.module.market.dal.dataobject.banner.BannerDO;
  8 +import cn.iocoder.yudao.module.market.service.banner.BannerService;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiImplicitParam;
  11 +import io.swagger.annotations.ApiOperation;
  12 +import org.springframework.security.access.prepost.PreAuthorize;
  13 +import org.springframework.validation.annotation.Validated;
  14 +import org.springframework.web.bind.annotation.*;
  15 +
  16 +import javax.annotation.Resource;
  17 +import javax.validation.Valid;
  18 +
  19 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  20 +
  21 +@Api(tags = "管理后台 - Banner 管理")
  22 +@RestController
  23 +@RequestMapping("/market/banner")
  24 +@Validated
  25 +public class BannerController {
  26 +
  27 + @Resource
  28 + private BannerService bannerService;
  29 +
  30 + @PostMapping("/create")
  31 + @ApiOperation("创建 Banner")
  32 + @PreAuthorize("@ss.hasPermission('market:banner:create')")
  33 + public CommonResult<Long> createBanner(@Valid @RequestBody BannerCreateReqVO createReqVO) {
  34 + return success(bannerService.createBanner(createReqVO));
  35 + }
  36 +
  37 + @PutMapping("/update")
  38 + @ApiOperation("更新 Banner")
  39 + @PreAuthorize("@ss.hasPermission('market:banner:update')")
  40 + public CommonResult<Boolean> updateBanner(@Valid @RequestBody BannerUpdateReqVO updateReqVO) {
  41 + bannerService.updateBanner(updateReqVO);
  42 + return success(true);
  43 + }
  44 +
  45 + @DeleteMapping("/delete")
  46 + @ApiOperation("删除 Banner")
  47 + @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  48 + @PreAuthorize("@ss.hasPermission('market:banner:delete')")
  49 + public CommonResult<Boolean> deleteBanner(@RequestParam("id") Long id) {
  50 + bannerService.deleteBanner(id);
  51 + return success(true);
  52 + }
  53 +
  54 + @GetMapping("/get")
  55 + @ApiOperation("获得 Banner")
  56 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  57 + @PreAuthorize("@ss.hasPermission('market:banner:query')")
  58 + public CommonResult<BannerRespVO> getBanner(@RequestParam("id") Long id) {
  59 + BannerDO banner = bannerService.getBanner(id);
  60 + return success(BannerConvert.INSTANCE.convert(banner));
  61 + }
  62 +
  63 + @GetMapping("/page")
  64 + @ApiOperation("获得 Banner 分页")
  65 + @PreAuthorize("@ss.hasPermission('market:banner:query')")
  66 + public CommonResult<PageResult<BannerRespVO>> getBannerPage(@Valid BannerPageReqVO pageVO) {
  67 + PageResult<BannerDO> pageResult = bannerService.getBannerPage(pageVO);
  68 + return success(BannerConvert.INSTANCE.convertPage(pageResult));
  69 + }
  70 +
  71 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerBaseVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.admin.banner.vo;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +
  8 +import javax.validation.constraints.NotNull;
  9 +
  10 +/**
  11 + * Banner Base VO,提供给添加、修改、详细的子 VO 使用
  12 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  13 + * @author xia
  14 + */
  15 +@Data
  16 +public class BannerBaseVO {
  17 +
  18 + @ApiModelProperty(value = "标题", required = true)
  19 + @NotNull(message = "标题不能为空")
  20 + private String title;
  21 +
  22 + @ApiModelProperty(value = "跳转链接", required = true)
  23 + @NotNull(message = "跳转链接不能为空")
  24 + private String url;
  25 +
  26 + @ApiModelProperty(value = "图片地址", required = true)
  27 + @NotNull(message = "图片地址不能为空")
  28 + private String picUrl;
  29 +
  30 + @ApiModelProperty(value = "排序", required = true)
  31 + @NotNull(message = "排序不能为空")
  32 + private Integer sort;
  33 +
  34 + @ApiModelProperty(value = "状态", required = true)
  35 + @NotNull(message = "状态不能为空")
  36 + @InEnum(CommonStatusEnum.class)
  37 + private Integer status;
  38 +
  39 + @ApiModelProperty(value = "备注")
  40 + private String memo;
  41 +
  42 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerCreateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.admin.banner.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import java.util.Date;
  10 +
  11 +/**
  12 + * @author xia
  13 + */
  14 +@ApiModel("管理后台 - Banner 创建 Request VO")
  15 +@Data
  16 +@EqualsAndHashCode(callSuper = true)
  17 +@ToString(callSuper = true)
  18 +public class BannerCreateReqVO extends BannerBaseVO {
  19 +
  20 +
  21 +
  22 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.admin.banner.vo;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  5 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  6 +import io.swagger.annotations.ApiModel;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +import lombok.EqualsAndHashCode;
  10 +import lombok.ToString;
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +
  13 +import java.util.Date;
  14 +
  15 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  16 +
  17 +/**
  18 + * @author xia
  19 + */
  20 +@ApiModel("管理后台 - Banner 分页 Request VO")
  21 +@Data
  22 +@EqualsAndHashCode(callSuper = true)
  23 +@ToString(callSuper = true)
  24 +public class BannerPageReqVO extends PageParam {
  25 +
  26 + @ApiModelProperty(value = "标题")
  27 + private String title;
  28 +
  29 +
  30 + @ApiModelProperty(value = "状态")
  31 + @InEnum(CommonStatusEnum.class)
  32 + private Integer status;
  33 +
  34 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  35 + @ApiModelProperty(value = "开始创建时间")
  36 + private Date beginCreateTime;
  37 +
  38 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  39 + @ApiModelProperty(value = "结束创建时间")
  40 + private Date endCreateTime;
  41 +
  42 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.admin.banner.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.ToString;
  7 +
  8 +import javax.validation.constraints.NotNull;
  9 +import java.util.Date;
  10 +
  11 +/**
  12 + * @author xia
  13 + */
  14 +@ApiModel("管理后台 - Banner Response VO")
  15 +@Data
  16 +@ToString(callSuper = true)
  17 +public class BannerRespVO extends BannerBaseVO {
  18 +
  19 + @ApiModelProperty(value = "banner编号", required = true)
  20 + @NotNull(message = "banner编号不能为空")
  21 + private Long id;
  22 +
  23 + @ApiModelProperty(value = "创建时间", required = true)
  24 + private Date createTime;
  25 +
  26 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerUpdateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.admin.banner.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +/**
  12 + * @author xia
  13 + */
  14 +@ApiModel("管理后台 - Banner更新 Request VO")
  15 +@Data
  16 +@EqualsAndHashCode(callSuper = true)
  17 +@ToString(callSuper = true)
  18 +public class BannerUpdateReqVO extends BannerBaseVO {
  19 +
  20 + @ApiModelProperty(value = "banner 编号", required = true)
  21 + @NotNull(message = "banner 编号不能为空")
  22 + private Long id;
  23 +
  24 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/app/banner/AppBannerController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.controller.app.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerRespVO;
  5 +import cn.iocoder.yudao.module.market.convert.banner.BannerConvert;
  6 +import cn.iocoder.yudao.module.market.dal.dataobject.banner.BannerDO;
  7 +import cn.iocoder.yudao.module.market.service.banner.BannerService;
  8 +import io.swagger.annotations.Api;
  9 +import io.swagger.annotations.ApiOperation;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.security.access.prepost.PreAuthorize;
  12 +import org.springframework.validation.annotation.Validated;
  13 +import org.springframework.web.bind.annotation.GetMapping;
  14 +import org.springframework.web.bind.annotation.RequestMapping;
  15 +import org.springframework.web.bind.annotation.RestController;
  16 +
  17 +import java.util.List;
  18 +
  19 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  20 +
  21 +/**
  22 + * @author: XIA
  23 + */
  24 +@RestController
  25 +@RequestMapping("/market/banner")
  26 +@Api(tags = "用户APP- 首页Banner")
  27 +@Validated
  28 +public class AppBannerController {
  29 +
  30 + // TODO @xia:使用 @Resource 哈
  31 + @Autowired
  32 + private BannerService bannerService;
  33 +
  34 + // TODO @xia:新建一个 AppBannerRespVO,只返回必要的字段。status 要过滤下。然后 sort 下结果
  35 + @GetMapping("/list")
  36 + @ApiOperation("获得banner列表")
  37 + @PreAuthorize("@ss.hasPermission('market:banner:query')")
  38 + public CommonResult<List<BannerRespVO>> getBannerList() {
  39 + List<BannerDO> list = bannerService.getBannerList();
  40 + return success(BannerConvert.INSTANCE.convertList(list));
  41 + }
  42 +
  43 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/convert/banner/BannerConvert.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.convert.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerCreateReqVO;
  5 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerRespVO;
  6 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerUpdateReqVO;
  7 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerUpdateStatusReqVO;
  8 +import cn.iocoder.yudao.module.market.dal.dataobject.banner.BannerDO;
  9 +import org.mapstruct.Mapper;
  10 +import org.mapstruct.factory.Mappers;
  11 +
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * Banner Convert
  16 + *
  17 + * @author xia
  18 + */
  19 +@Mapper
  20 +public interface BannerConvert {
  21 +
  22 + BannerConvert INSTANCE = Mappers.getMapper(BannerConvert.class);
  23 +
  24 +
  25 + List<BannerRespVO> convertList(List<BannerDO> list);
  26 +
  27 + PageResult<BannerRespVO> convertPage(PageResult<BannerDO> pageResult);
  28 +
  29 + BannerRespVO convert(BannerDO banner);
  30 +
  31 + BannerDO convert(BannerCreateReqVO createReqVO);
  32 +
  33 + BannerDO convert(BannerUpdateReqVO updateReqVO);
  34 +
  35 + BannerDO convert(BannerUpdateStatusReqVO updateStatusReqVO);
  36 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/dataobject/banner/BannerDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.dal.dataobject.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.TableName;
  5 +import lombok.*;
  6 +
  7 +/**
  8 + * banner DO
  9 + *
  10 + * @author xia
  11 + */
  12 +@TableName("market_banner")
  13 +@Data
  14 +@EqualsAndHashCode(callSuper = true)
  15 +@ToString(callSuper = true)
  16 +@Builder
  17 +@NoArgsConstructor
  18 +@AllArgsConstructor
  19 +public class BannerDO extends BaseDO {
  20 +
  21 + /**
  22 + * 编号
  23 + */
  24 + private Long id;
  25 + /**
  26 + * 标题
  27 + */
  28 + private String title;
  29 + /**
  30 + * 跳转链接
  31 + */
  32 + private String url;
  33 + /**
  34 + * 图片链接
  35 + */
  36 + private String picUrl;
  37 + /**
  38 + * 排序
  39 + */
  40 + private Integer sort;
  41 +
  42 + /**
  43 + * 状态 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
  44 + */
  45 + private Integer status;
  46 + /**
  47 + * 备注
  48 + */
  49 + private String memo;
  50 +
  51 + // TODO 芋艿 点击次数。&& 其他数据相关
  52 +
  53 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/mysql/banner/BannerMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.dal.mysql.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerPageReqVO;
  7 +import cn.iocoder.yudao.module.market.dal.dataobject.banner.BannerDO;
  8 +import org.apache.ibatis.annotations.Mapper;
  9 +
  10 +/**
  11 + * Banner Mapper
  12 + *
  13 + * @author xia
  14 + */
  15 +@Mapper
  16 +public interface BannerMapper extends BaseMapperX<BannerDO> {
  17 +
  18 + default PageResult<BannerDO> selectPage(BannerPageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<BannerDO>()
  20 + .likeIfPresent(BannerDO::getTitle, reqVO.getTitle())
  21 + .eqIfPresent(BannerDO::getStatus, reqVO.getStatus())
  22 + .betweenIfPresent(BannerDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  23 + .betweenIfPresent(BannerDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  24 + .orderByDesc(BannerDO::getSort));
  25 + }
  26 +
  27 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/service/banner/BannerService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.service.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerCreateReqVO;
  5 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerPageReqVO;
  6 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerUpdateReqVO;
  7 +import cn.iocoder.yudao.module.market.dal.dataobject.banner.BannerDO;
  8 +
  9 +import javax.validation.Valid;
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * 首页 Banner Service 接口
  14 + *
  15 + * @author xia
  16 + */
  17 +public interface BannerService {
  18 +
  19 + /**
  20 + * 创建 Banner
  21 + *
  22 + * @param createReqVO 创建信息
  23 + * @return 编号
  24 + */
  25 + Long createBanner(@Valid BannerCreateReqVO createReqVO);
  26 +
  27 + /**
  28 + * 更新 Banner
  29 + *
  30 + * @param updateReqVO 更新信息
  31 + */
  32 + void updateBanner(@Valid BannerUpdateReqVO updateReqVO);
  33 +
  34 + /**
  35 + * 删除 Banner
  36 + *
  37 + * @param id 编号
  38 + */
  39 + void deleteBanner(Long id);
  40 +
  41 + /**
  42 + * 获得 Banner
  43 + *
  44 + * @param id 编号
  45 + * @return Banner
  46 + */
  47 + BannerDO getBanner(Long id);
  48 +
  49 + /**
  50 + * 获得所有 Banner列表
  51 + * @return Banner列表
  52 + */
  53 + List<BannerDO> getBannerList();
  54 +
  55 + /**
  56 + * 获得 Banner 分页
  57 + *
  58 + * @param pageReqVO 分页查询
  59 + * @return Banner分页
  60 + */
  61 + PageResult<BannerDO> getBannerPage(BannerPageReqVO pageReqVO);
  62 +
  63 +}
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/service/banner/BannerServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.market.service.banner;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerCreateReqVO;
  5 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerPageReqVO;
  6 +import cn.iocoder.yudao.module.market.controller.admin.banner.vo.BannerUpdateReqVO;
  7 +import cn.iocoder.yudao.module.market.convert.banner.BannerConvert;
  8 +import cn.iocoder.yudao.module.market.dal.dataobject.banner.BannerDO;
  9 +import cn.iocoder.yudao.module.market.dal.mysql.banner.BannerMapper;
  10 +import org.springframework.stereotype.Service;
  11 +import org.springframework.validation.annotation.Validated;
  12 +
  13 +import javax.annotation.Resource;
  14 +import java.util.List;
  15 +
  16 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  17 +import static cn.iocoder.yudao.module.market.enums.ErrorCodeConstants.BANNER_NOT_EXISTS;
  18 +
  19 +/**
  20 + * 首页banner 实现类
  21 + *
  22 + * @author xia
  23 + */
  24 +@Service
  25 +@Validated
  26 +public class BannerServiceImpl implements BannerService {
  27 +
  28 + @Resource
  29 + private BannerMapper bannerMapper;
  30 +
  31 + @Override
  32 + public Long createBanner(BannerCreateReqVO createReqVO) {
  33 + // 插入
  34 + BannerDO banner = BannerConvert.INSTANCE.convert(createReqVO);
  35 + bannerMapper.insert(banner);
  36 + // 返回
  37 + return banner.getId();
  38 + }
  39 +
  40 + @Override
  41 + public void updateBanner(BannerUpdateReqVO updateReqVO) {
  42 + // 校验存在
  43 + this.validateBannerExists(updateReqVO.getId());
  44 + // 更新
  45 + BannerDO updateObj = BannerConvert.INSTANCE.convert(updateReqVO);
  46 + bannerMapper.updateById(updateObj);
  47 + }
  48 +
  49 + @Override
  50 + public void deleteBanner(Long id) {
  51 + // 校验存在
  52 + this.validateBannerExists(id);
  53 + // 删除
  54 + bannerMapper.deleteById(id);
  55 + }
  56 +
  57 + private void validateBannerExists(Long id) {
  58 + if (bannerMapper.selectById(id) == null) {
  59 + throw exception(BANNER_NOT_EXISTS);
  60 + }
  61 + }
  62 +
  63 + @Override
  64 + public BannerDO getBanner(Long id) {
  65 + return bannerMapper.selectById(id);
  66 + }
  67 +
  68 + @Override
  69 + public List<BannerDO> getBannerList() {
  70 + return bannerMapper.selectList();
  71 + }
  72 +
  73 + @Override
  74 + public PageResult<BannerDO> getBannerPage(BannerPageReqVO pageReqVO) {
  75 + return bannerMapper.selectPage(pageReqVO);
  76 + }
  77 +
  78 +}
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/SkuController.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/ProductSkuController.java
@@ -22,31 +22,31 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; @@ -22,31 +22,31 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
22 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; 22 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
23 23
24 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*; 24 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
25 -import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO;  
26 -import cn.iocoder.yudao.module.product.convert.sku.SkuConvert;  
27 -import cn.iocoder.yudao.module.product.service.sku.SkuService; 25 +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
  26 +import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
  27 +import cn.iocoder.yudao.module.product.service.sku.ProductSkuService;
28 28
29 @Api(tags = "管理后台 - 商品sku") 29 @Api(tags = "管理后台 - 商品sku")
30 @RestController 30 @RestController
31 @RequestMapping("/product/sku") 31 @RequestMapping("/product/sku")
32 @Validated 32 @Validated
33 -public class SkuController { 33 +public class ProductSkuController {
34 34
35 @Resource 35 @Resource
36 - private SkuService skuService; 36 + private ProductSkuService ProductSkuService;
37 37
38 @PostMapping("/create") 38 @PostMapping("/create")
39 @ApiOperation("创建商品sku") 39 @ApiOperation("创建商品sku")
40 @PreAuthorize("@ss.hasPermission('product:sku:create')") 40 @PreAuthorize("@ss.hasPermission('product:sku:create')")
41 - public CommonResult<Integer> createSku(@Valid @RequestBody SkuCreateReqVO createReqVO) {  
42 - return success(skuService.createSku(createReqVO)); 41 + public CommonResult<Integer> createSku(@Valid @RequestBody ProductSkuCreateReqVO createReqVO) {
  42 + return success(ProductSkuService.createSku(createReqVO));
43 } 43 }
44 44
45 @PutMapping("/update") 45 @PutMapping("/update")
46 @ApiOperation("更新商品sku") 46 @ApiOperation("更新商品sku")
47 @PreAuthorize("@ss.hasPermission('product:sku:update')") 47 @PreAuthorize("@ss.hasPermission('product:sku:update')")
48 - public CommonResult<Boolean> updateSku(@Valid @RequestBody SkuUpdateReqVO updateReqVO) {  
49 - skuService.updateSku(updateReqVO); 48 + public CommonResult<Boolean> updateSku(@Valid @RequestBody ProductSkuUpdateReqVO updateReqVO) {
  49 + ProductSkuService.updateSku(updateReqVO);
50 return success(true); 50 return success(true);
51 } 51 }
52 52
@@ -55,7 +55,7 @@ public class SkuController { @@ -55,7 +55,7 @@ public class SkuController {
55 @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Integer.class) 55 @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Integer.class)
56 @PreAuthorize("@ss.hasPermission('product:sku:delete')") 56 @PreAuthorize("@ss.hasPermission('product:sku:delete')")
57 public CommonResult<Boolean> deleteSku(@RequestParam("id") Integer id) { 57 public CommonResult<Boolean> deleteSku(@RequestParam("id") Integer id) {
58 - skuService.deleteSku(id); 58 + ProductSkuService.deleteSku(id);
59 return success(true); 59 return success(true);
60 } 60 }
61 61
@@ -63,38 +63,38 @@ public class SkuController { @@ -63,38 +63,38 @@ public class SkuController {
63 @ApiOperation("获得商品sku") 63 @ApiOperation("获得商品sku")
64 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Integer.class) 64 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Integer.class)
65 @PreAuthorize("@ss.hasPermission('product:sku:query')") 65 @PreAuthorize("@ss.hasPermission('product:sku:query')")
66 - public CommonResult<SkuRespVO> getSku(@RequestParam("id") Integer id) {  
67 - SkuDO sku = skuService.getSku(id);  
68 - return success(SkuConvert.INSTANCE.convert(sku)); 66 + public CommonResult<ProductSkuRespVO> getSku(@RequestParam("id") Integer id) {
  67 + ProductSkuDO sku = ProductSkuService.getSku(id);
  68 + return success(ProductSkuConvert.INSTANCE.convert(sku));
69 } 69 }
70 70
71 @GetMapping("/list") 71 @GetMapping("/list")
72 @ApiOperation("获得商品sku列表") 72 @ApiOperation("获得商品sku列表")
73 @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) 73 @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
74 @PreAuthorize("@ss.hasPermission('product:sku:query')") 74 @PreAuthorize("@ss.hasPermission('product:sku:query')")
75 - public CommonResult<List<SkuRespVO>> getSkuList(@RequestParam("ids") Collection<Integer> ids) {  
76 - List<SkuDO> list = skuService.getSkuList(ids);  
77 - return success(SkuConvert.INSTANCE.convertList(list)); 75 + public CommonResult<List<ProductSkuRespVO>> getSkuList(@RequestParam("ids") Collection<Integer> ids) {
  76 + List<ProductSkuDO> list = ProductSkuService.getSkuList(ids);
  77 + return success(ProductSkuConvert.INSTANCE.convertList(list));
78 } 78 }
79 79
80 @GetMapping("/page") 80 @GetMapping("/page")
81 @ApiOperation("获得商品sku分页") 81 @ApiOperation("获得商品sku分页")
82 @PreAuthorize("@ss.hasPermission('product:sku:query')") 82 @PreAuthorize("@ss.hasPermission('product:sku:query')")
83 - public CommonResult<PageResult<SkuRespVO>> getSkuPage(@Valid SkuPageReqVO pageVO) {  
84 - PageResult<SkuDO> pageResult = skuService.getSkuPage(pageVO);  
85 - return success(SkuConvert.INSTANCE.convertPage(pageResult)); 83 + public CommonResult<PageResult<ProductSkuRespVO>> getSkuPage(@Valid ProductSkuPageReqVO pageVO) {
  84 + PageResult<ProductSkuDO> pageResult = ProductSkuService.getSkuPage(pageVO);
  85 + return success(ProductSkuConvert.INSTANCE.convertPage(pageResult));
86 } 86 }
87 87
88 @GetMapping("/export-excel") 88 @GetMapping("/export-excel")
89 @ApiOperation("导出商品sku Excel") 89 @ApiOperation("导出商品sku Excel")
90 @PreAuthorize("@ss.hasPermission('product:sku:export')") 90 @PreAuthorize("@ss.hasPermission('product:sku:export')")
91 @OperateLog(type = EXPORT) 91 @OperateLog(type = EXPORT)
92 - public void exportSkuExcel(@Valid SkuExportReqVO exportReqVO, 92 + public void exportSkuExcel(@Valid ProductSkuExportReqVO exportReqVO,
93 HttpServletResponse response) throws IOException { 93 HttpServletResponse response) throws IOException {
94 - List<SkuDO> list = skuService.getSkuList(exportReqVO); 94 + List<ProductSkuDO> list = ProductSkuService.getSkuList(exportReqVO);
95 // 导出 Excel 95 // 导出 Excel
96 - List<SkuExcelVO> datas = SkuConvert.INSTANCE.convertList02(list);  
97 - ExcelUtils.write(response, "商品sku.xls", "数据", SkuExcelVO.class, datas); 96 + List<ProductSkuExcelVO> datas = ProductSkuConvert.INSTANCE.convertList02(list);
  97 + ExcelUtils.write(response, "商品sku.xls", "数据", ProductSkuExcelVO.class, datas);
98 } 98 }
99 99
100 } 100 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuBaseVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuBaseVO.java
@@ -10,7 +10,7 @@ import javax.validation.constraints.*; @@ -10,7 +10,7 @@ import javax.validation.constraints.*;
10 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 10 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
11 */ 11 */
12 @Data 12 @Data
13 -public class SkuBaseVO { 13 +public class ProductSkuBaseVO {
14 14
15 @ApiModelProperty(value = "spu编号", required = true) 15 @ApiModelProperty(value = "spu编号", required = true)
16 @NotNull(message = "spu编号不能为空") 16 @NotNull(message = "spu编号不能为空")
@@ -18,7 +18,7 @@ public class SkuBaseVO { @@ -18,7 +18,7 @@ public class SkuBaseVO {
18 18
19 @ApiModelProperty(value = "规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]", required = true) 19 @ApiModelProperty(value = "规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]", required = true)
20 @NotNull(message = "规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]不能为空") 20 @NotNull(message = "规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]不能为空")
21 - private String properties; 21 + private List<Property> properties;
22 22
23 @ApiModelProperty(value = "销售价格,单位:分", required = true) 23 @ApiModelProperty(value = "销售价格,单位:分", required = true)
24 @NotNull(message = "销售价格,单位:分不能为空") 24 @NotNull(message = "销售价格,单位:分不能为空")
@@ -43,4 +43,10 @@ public class SkuBaseVO { @@ -43,4 +43,10 @@ public class SkuBaseVO {
43 @ApiModelProperty(value = "状态: 0-正常 1-禁用") 43 @ApiModelProperty(value = "状态: 0-正常 1-禁用")
44 private Integer status; 44 private Integer status;
45 45
  46 + @Data
  47 + public static class Property {
  48 + private Integer propertyId;
  49 + private Integer valueId;
  50 + }
  51 +
46 } 52 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuCreateReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuCreateReqVO.java
@@ -9,6 +9,6 @@ import javax.validation.constraints.*; @@ -9,6 +9,6 @@ import javax.validation.constraints.*;
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
12 -public class SkuCreateReqVO extends SkuBaseVO { 12 +public class ProductSkuCreateReqVO extends ProductSkuBaseVO {
13 13
14 } 14 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuExcelVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuExcelVO.java
@@ -12,7 +12,7 @@ import com.alibaba.excel.annotation.ExcelProperty; @@ -12,7 +12,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
12 * @author 芋道源码 12 * @author 芋道源码
13 */ 13 */
14 @Data 14 @Data
15 -public class SkuExcelVO { 15 +public class ProductSkuExcelVO {
16 16
17 @ExcelProperty("主键") 17 @ExcelProperty("主键")
18 private Integer id; 18 private Integer id;
@@ -21,7 +21,7 @@ public class SkuExcelVO { @@ -21,7 +21,7 @@ public class SkuExcelVO {
21 private Long spuId; 21 private Long spuId;
22 22
23 @ExcelProperty("规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]") 23 @ExcelProperty("规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]")
24 - private String properties; 24 + private List<Property> properties;
25 25
26 @ExcelProperty("销售价格,单位:分") 26 @ExcelProperty("销售价格,单位:分")
27 private Integer price; 27 private Integer price;
@@ -44,4 +44,9 @@ public class SkuExcelVO { @@ -44,4 +44,9 @@ public class SkuExcelVO {
44 @ExcelProperty("创建时间") 44 @ExcelProperty("创建时间")
45 private Date createTime; 45 private Date createTime;
46 46
  47 + @Data
  48 + public static class Property {
  49 + private Integer propertyId;
  50 + private Integer valueId;
  51 + }
47 } 52 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuExportReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuExportReqVO.java
@@ -10,7 +10,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -10,7 +10,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
10 10
11 @ApiModel(value = "管理后台 - 商品sku Excel 导出 Request VO", description = "参数和 SkuPageReqVO 是一致的") 11 @ApiModel(value = "管理后台 - 商品sku Excel 导出 Request VO", description = "参数和 SkuPageReqVO 是一致的")
12 @Data 12 @Data
13 -public class SkuExportReqVO { 13 +public class ProductSkuExportReqVO {
14 14
15 @ApiModelProperty(value = "spu编号") 15 @ApiModelProperty(value = "spu编号")
16 private Long spuId; 16 private Long spuId;
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuPageReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuPageReqVO.java
@@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
12 @Data 12 @Data
13 @EqualsAndHashCode(callSuper = true) 13 @EqualsAndHashCode(callSuper = true)
14 @ToString(callSuper = true) 14 @ToString(callSuper = true)
15 -public class SkuPageReqVO extends PageParam { 15 +public class ProductSkuPageReqVO extends PageParam {
16 16
17 @ApiModelProperty(value = "spu编号") 17 @ApiModelProperty(value = "spu编号")
18 private Long spuId; 18 private Long spuId;
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuRespVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuRespVO.java
@@ -8,7 +8,7 @@ import io.swagger.annotations.*; @@ -8,7 +8,7 @@ import io.swagger.annotations.*;
8 @Data 8 @Data
9 @EqualsAndHashCode(callSuper = true) 9 @EqualsAndHashCode(callSuper = true)
10 @ToString(callSuper = true) 10 @ToString(callSuper = true)
11 -public class SkuRespVO extends SkuBaseVO { 11 +public class ProductSkuRespVO extends ProductSkuBaseVO {
12 12
13 @ApiModelProperty(value = "主键", required = true) 13 @ApiModelProperty(value = "主键", required = true)
14 private Integer id; 14 private Integer id;
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/SkuUpdateReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuUpdateReqVO.java
@@ -9,7 +9,7 @@ import javax.validation.constraints.*; @@ -9,7 +9,7 @@ import javax.validation.constraints.*;
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
12 -public class SkuUpdateReqVO extends SkuBaseVO { 12 +public class ProductSkuUpdateReqVO extends ProductSkuBaseVO {
13 13
14 @ApiModelProperty(value = "主键", required = true) 14 @ApiModelProperty(value = "主键", required = true)
15 @NotNull(message = "主键不能为空") 15 @NotNull(message = "主键不能为空")
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/SpuController.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java
@@ -22,23 +22,23 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; @@ -22,23 +22,23 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
22 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; 22 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
23 23
24 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; 24 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
25 -import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO;  
26 -import cn.iocoder.yudao.module.product.convert.spu.SpuConvert;  
27 -import cn.iocoder.yudao.module.product.service.spu.SpuService; 25 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
  26 +import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert;
  27 +import cn.iocoder.yudao.module.product.service.spu.ProductSpuService;
28 28
29 @Api(tags = "管理后台 - 商品spu") 29 @Api(tags = "管理后台 - 商品spu")
30 @RestController 30 @RestController
31 @RequestMapping("/product/spu") 31 @RequestMapping("/product/spu")
32 @Validated 32 @Validated
33 -public class SpuController { 33 +public class ProductSpuController {
34 34
35 @Resource 35 @Resource
36 - private SpuService spuService; 36 + private ProductSpuService spuService;
37 37
38 @PostMapping("/create") 38 @PostMapping("/create")
39 @ApiOperation("创建商品spu") 39 @ApiOperation("创建商品spu")
40 @PreAuthorize("@ss.hasPermission('product:spu:create')") 40 @PreAuthorize("@ss.hasPermission('product:spu:create')")
41 - public CommonResult<Integer> createSpu(@Valid @RequestBody SpuCreateReqVO createReqVO) { 41 + public CommonResult<Integer> createSpu(@Valid @RequestBody ProductSpuCreateReqVO createReqVO) {
42 return success(spuService.createSpu(createReqVO)); 42 return success(spuService.createSpu(createReqVO));
43 } 43 }
44 44
@@ -64,8 +64,8 @@ public class SpuController { @@ -64,8 +64,8 @@ public class SpuController {
64 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Integer.class) 64 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Integer.class)
65 @PreAuthorize("@ss.hasPermission('product:spu:query')") 65 @PreAuthorize("@ss.hasPermission('product:spu:query')")
66 public CommonResult<SpuRespVO> getSpu(@RequestParam("id") Integer id) { 66 public CommonResult<SpuRespVO> getSpu(@RequestParam("id") Integer id) {
67 - SpuDO spu = spuService.getSpu(id);  
68 - return success(SpuConvert.INSTANCE.convert(spu)); 67 + ProductSpuDO spu = spuService.getSpu(id);
  68 + return success(ProductSpuConvert.INSTANCE.convert(spu));
69 } 69 }
70 70
71 @GetMapping("/list") 71 @GetMapping("/list")
@@ -73,16 +73,16 @@ public class SpuController { @@ -73,16 +73,16 @@ public class SpuController {
73 @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) 73 @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
74 @PreAuthorize("@ss.hasPermission('product:spu:query')") 74 @PreAuthorize("@ss.hasPermission('product:spu:query')")
75 public CommonResult<List<SpuRespVO>> getSpuList(@RequestParam("ids") Collection<Integer> ids) { 75 public CommonResult<List<SpuRespVO>> getSpuList(@RequestParam("ids") Collection<Integer> ids) {
76 - List<SpuDO> list = spuService.getSpuList(ids);  
77 - return success(SpuConvert.INSTANCE.convertList(list)); 76 + List<ProductSpuDO> list = spuService.getSpuList(ids);
  77 + return success(ProductSpuConvert.INSTANCE.convertList(list));
78 } 78 }
79 79
80 @GetMapping("/page") 80 @GetMapping("/page")
81 @ApiOperation("获得商品spu分页") 81 @ApiOperation("获得商品spu分页")
82 @PreAuthorize("@ss.hasPermission('product:spu:query')") 82 @PreAuthorize("@ss.hasPermission('product:spu:query')")
83 public CommonResult<PageResult<SpuRespVO>> getSpuPage(@Valid SpuPageReqVO pageVO) { 83 public CommonResult<PageResult<SpuRespVO>> getSpuPage(@Valid SpuPageReqVO pageVO) {
84 - PageResult<SpuDO> pageResult = spuService.getSpuPage(pageVO);  
85 - return success(SpuConvert.INSTANCE.convertPage(pageResult)); 84 + PageResult<ProductSpuDO> pageResult = spuService.getSpuPage(pageVO);
  85 + return success(ProductSpuConvert.INSTANCE.convertPage(pageResult));
86 } 86 }
87 87
88 @GetMapping("/export-excel") 88 @GetMapping("/export-excel")
@@ -91,9 +91,9 @@ public class SpuController { @@ -91,9 +91,9 @@ public class SpuController {
91 @OperateLog(type = EXPORT) 91 @OperateLog(type = EXPORT)
92 public void exportSpuExcel(@Valid SpuExportReqVO exportReqVO, 92 public void exportSpuExcel(@Valid SpuExportReqVO exportReqVO,
93 HttpServletResponse response) throws IOException { 93 HttpServletResponse response) throws IOException {
94 - List<SpuDO> list = spuService.getSpuList(exportReqVO); 94 + List<ProductSpuDO> list = spuService.getSpuList(exportReqVO);
95 // 导出 Excel 95 // 导出 Excel
96 - List<SpuExcelVO> datas = SpuConvert.INSTANCE.convertList02(list); 96 + List<SpuExcelVO> datas = ProductSpuConvert.INSTANCE.convertList02(list);
97 ExcelUtils.write(response, "商品spu.xls", "数据", SpuExcelVO.class, datas); 97 ExcelUtils.write(response, "商品spu.xls", "数据", SpuExcelVO.class, datas);
98 } 98 }
99 99
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuBaseVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuBaseVO.java
@@ -10,7 +10,7 @@ import javax.validation.constraints.*; @@ -10,7 +10,7 @@ import javax.validation.constraints.*;
10 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 10 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
11 */ 11 */
12 @Data 12 @Data
13 -public class SpuBaseVO { 13 +public class ProductSpuBaseVO {
14 14
15 @ApiModelProperty(value = "商品名称") 15 @ApiModelProperty(value = "商品名称")
16 private String name; 16 private String name;
@@ -29,7 +29,7 @@ public class SpuBaseVO { @@ -29,7 +29,7 @@ public class SpuBaseVO {
29 29
30 @ApiModelProperty(value = "商品主图地址,* 数组,以逗号分隔,最多上传15张", required = true) 30 @ApiModelProperty(value = "商品主图地址,* 数组,以逗号分隔,最多上传15张", required = true)
31 @NotNull(message = "商品主图地址,* 数组,以逗号分隔,最多上传15张不能为空") 31 @NotNull(message = "商品主图地址,* 数组,以逗号分隔,最多上传15张不能为空")
32 - private String picUrls; 32 + private List<String> picUrls;
33 33
34 @ApiModelProperty(value = "排序字段", required = true) 34 @ApiModelProperty(value = "排序字段", required = true)
35 @NotNull(message = "排序字段不能为空") 35 @NotNull(message = "排序字段不能为空")
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuCreateReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuCreateReqVO.java
@@ -9,6 +9,6 @@ import javax.validation.constraints.*; @@ -9,6 +9,6 @@ import javax.validation.constraints.*;
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
12 -public class SpuCreateReqVO extends SpuBaseVO { 12 +public class ProductSpuCreateReqVO extends ProductSpuBaseVO {
13 13
14 } 14 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuExcelVO.java
@@ -30,7 +30,7 @@ public class SpuExcelVO { @@ -30,7 +30,7 @@ public class SpuExcelVO {
30 private Long categoryId; 30 private Long categoryId;
31 31
32 @ExcelProperty("商品主图地址,* 数组,以逗号分隔,最多上传15张") 32 @ExcelProperty("商品主图地址,* 数组,以逗号分隔,最多上传15张")
33 - private String picUrls; 33 + private List<String> picUrls;
34 34
35 @ExcelProperty("排序字段") 35 @ExcelProperty("排序字段")
36 private Integer sort; 36 private Integer sort;
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuExportReqVO.java
@@ -25,7 +25,7 @@ public class SpuExportReqVO { @@ -25,7 +25,7 @@ public class SpuExportReqVO {
25 private Long categoryId; 25 private Long categoryId;
26 26
27 @ApiModelProperty(value = "商品主图地址,* 数组,以逗号分隔,最多上传15张") 27 @ApiModelProperty(value = "商品主图地址,* 数组,以逗号分隔,最多上传15张")
28 - private String picUrls; 28 + private List<String> picUrls;
29 29
30 @ApiModelProperty(value = "排序字段") 30 @ApiModelProperty(value = "排序字段")
31 private Integer sort; 31 private Integer sort;
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuRespVO.java
@@ -8,7 +8,7 @@ import io.swagger.annotations.*; @@ -8,7 +8,7 @@ import io.swagger.annotations.*;
8 @Data 8 @Data
9 @EqualsAndHashCode(callSuper = true) 9 @EqualsAndHashCode(callSuper = true)
10 @ToString(callSuper = true) 10 @ToString(callSuper = true)
11 -public class SpuRespVO extends SpuBaseVO { 11 +public class SpuRespVO extends ProductSpuBaseVO {
12 12
13 @ApiModelProperty(value = "主键", required = true) 13 @ApiModelProperty(value = "主键", required = true)
14 private Integer id; 14 private Integer id;
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuUpdateReqVO.java
@@ -9,7 +9,7 @@ import javax.validation.constraints.*; @@ -9,7 +9,7 @@ import javax.validation.constraints.*;
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
12 -public class SpuUpdateReqVO extends SpuBaseVO { 12 +public class SpuUpdateReqVO extends ProductSpuBaseVO {
13 13
14 @ApiModelProperty(value = "主键", required = true) 14 @ApiModelProperty(value = "主键", required = true)
15 @NotNull(message = "主键不能为空") 15 @NotNull(message = "主键不能为空")
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/sku/SkuConvert.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/sku/ProductSkuConvert.java
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
8 import org.mapstruct.factory.Mappers; 8 import org.mapstruct.factory.Mappers;
9 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*; 9 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
10 -import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO; 10 +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
11 11
12 /** 12 /**
13 * 商品sku Convert 13 * 商品sku Convert
@@ -15,20 +15,20 @@ import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO; @@ -15,20 +15,20 @@ import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO;
15 * @author 芋道源码 15 * @author 芋道源码
16 */ 16 */
17 @Mapper 17 @Mapper
18 -public interface SkuConvert { 18 +public interface ProductSkuConvert {
19 19
20 - SkuConvert INSTANCE = Mappers.getMapper(SkuConvert.class); 20 + ProductSkuConvert INSTANCE = Mappers.getMapper(ProductSkuConvert.class);
21 21
22 - SkuDO convert(SkuCreateReqVO bean); 22 + ProductSkuDO convert(ProductSkuCreateReqVO bean);
23 23
24 - SkuDO convert(SkuUpdateReqVO bean); 24 + ProductSkuDO convert(ProductSkuUpdateReqVO bean);
25 25
26 - SkuRespVO convert(SkuDO bean); 26 + ProductSkuRespVO convert(ProductSkuDO bean);
27 27
28 - List<SkuRespVO> convertList(List<SkuDO> list); 28 + List<ProductSkuRespVO> convertList(List<ProductSkuDO> list);
29 29
30 - PageResult<SkuRespVO> convertPage(PageResult<SkuDO> page); 30 + PageResult<ProductSkuRespVO> convertPage(PageResult<ProductSkuDO> page);
31 31
32 - List<SkuExcelVO> convertList02(List<SkuDO> list); 32 + List<ProductSkuExcelVO> convertList02(List<ProductSkuDO> list);
33 33
34 } 34 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/spu/SpuConvert.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/spu/ProductSpuConvert.java
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
8 import org.mapstruct.factory.Mappers; 8 import org.mapstruct.factory.Mappers;
9 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; 9 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
10 -import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO; 10 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
11 11
12 /** 12 /**
13 * 商品spu Convert 13 * 商品spu Convert
@@ -15,20 +15,20 @@ import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO; @@ -15,20 +15,20 @@ import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO;
15 * @author 芋道源码 15 * @author 芋道源码
16 */ 16 */
17 @Mapper 17 @Mapper
18 -public interface SpuConvert { 18 +public interface ProductSpuConvert {
19 19
20 - SpuConvert INSTANCE = Mappers.getMapper(SpuConvert.class); 20 + ProductSpuConvert INSTANCE = Mappers.getMapper(ProductSpuConvert.class);
21 21
22 - SpuDO convert(SpuCreateReqVO bean); 22 + ProductSpuDO convert(ProductSpuCreateReqVO bean);
23 23
24 - SpuDO convert(SpuUpdateReqVO bean); 24 + ProductSpuDO convert(SpuUpdateReqVO bean);
25 25
26 - SpuRespVO convert(SpuDO bean); 26 + SpuRespVO convert(ProductSpuDO bean);
27 27
28 - List<SpuRespVO> convertList(List<SpuDO> list); 28 + List<SpuRespVO> convertList(List<ProductSpuDO> list);
29 29
30 - PageResult<SpuRespVO> convertPage(PageResult<SpuDO> page); 30 + PageResult<SpuRespVO> convertPage(PageResult<ProductSpuDO> page);
31 31
32 - List<SpuExcelVO> convertList02(List<SpuDO> list); 32 + List<SpuExcelVO> convertList02(List<ProductSpuDO> list);
33 33
34 } 34 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/sku/SkuDO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/sku/ProductSkuDO.java
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 6 import com.baomidou.mybatisplus.annotation.TableName;
7 import lombok.*; 7 import lombok.*;
8 8
  9 +import java.util.List;
  10 +
9 /** 11 /**
10 * 商品sku DO 12 * 商品sku DO
11 * 13 *
@@ -19,7 +21,7 @@ import lombok.*; @@ -19,7 +21,7 @@ import lombok.*;
19 @Builder 21 @Builder
20 @NoArgsConstructor 22 @NoArgsConstructor
21 @AllArgsConstructor 23 @AllArgsConstructor
22 -public class SkuDO extends BaseDO { 24 +public class ProductSkuDO extends BaseDO {
23 25
24 /** 26 /**
25 * 主键 27 * 主键
@@ -34,7 +36,7 @@ public class SkuDO extends BaseDO { @@ -34,7 +36,7 @@ public class SkuDO extends BaseDO {
34 * 规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }] 36 * 规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]
35 */ 37 */
36 // TODO franky:可以定义一个内部的 Property 类,然后 List<Property> 38 // TODO franky:可以定义一个内部的 Property 类,然后 List<Property>
37 - private String properties; 39 + private List<Property> properties;
38 /** 40 /**
39 * 销售价格,单位:分 41 * 销售价格,单位:分
40 */ 42 */
@@ -60,4 +62,11 @@ public class SkuDO extends BaseDO { @@ -60,4 +62,11 @@ public class SkuDO extends BaseDO {
60 */ 62 */
61 private Integer status; 63 private Integer status;
62 64
  65 + @Data
  66 + public static class Property {
  67 + private Integer propertyId;
  68 + private Integer valueId;
  69 + }
  70 +
63 } 71 }
  72 +
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/SpuDO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/ProductSpuDO.java
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 6 import com.baomidou.mybatisplus.annotation.TableName;
7 import lombok.*; 7 import lombok.*;
8 8
  9 +import java.util.List;
  10 +
9 /** 11 /**
10 * 商品spu DO 12 * 商品spu DO
11 * 13 *
@@ -19,7 +21,7 @@ import lombok.*; @@ -19,7 +21,7 @@ import lombok.*;
19 @Builder 21 @Builder
20 @NoArgsConstructor 22 @NoArgsConstructor
21 @AllArgsConstructor 23 @AllArgsConstructor
22 -public class SpuDO extends BaseDO { 24 +public class ProductSpuDO extends BaseDO {
23 25
24 /** 26 /**
25 * 主键 27 * 主键
@@ -46,7 +48,7 @@ public class SpuDO extends BaseDO { @@ -46,7 +48,7 @@ public class SpuDO extends BaseDO {
46 * 商品主图地址,* 数组,以逗号分隔,最多上传15张 48 * 商品主图地址,* 数组,以逗号分隔,最多上传15张
47 */ 49 */
48 // TODO franky:List<String> 50 // TODO franky:List<String>
49 - private String picUrls; 51 + private List<String> picUrls;
50 /** 52 /**
51 * 排序字段 53 * 排序字段
52 */ 54 */
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/sku/ProductSkuMapper.java 0 → 100755
  1 +package cn.iocoder.yudao.module.product.dal.mysql.sku;
  2 +
  3 +import java.util.*;
  4 +
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  7 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  8 +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
  9 +import org.apache.ibatis.annotations.Mapper;
  10 +import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
  11 +
  12 +/**
  13 + * 商品sku Mapper
  14 + *
  15 + * @author 芋道源码
  16 + */
  17 +@Mapper
  18 +public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> {
  19 +
  20 + default PageResult<ProductSkuDO> selectPage(ProductSkuPageReqVO reqVO) {
  21 + return selectPage(reqVO, new LambdaQueryWrapperX<ProductSkuDO>()
  22 + .eqIfPresent(ProductSkuDO::getSpuId, reqVO.getSpuId())
  23 + .eqIfPresent(ProductSkuDO::getProperties, reqVO.getProperties())
  24 + .eqIfPresent(ProductSkuDO::getPrice, reqVO.getPrice())
  25 + .eqIfPresent(ProductSkuDO::getOriginalPrice, reqVO.getOriginalPrice())
  26 + .eqIfPresent(ProductSkuDO::getCostPrice, reqVO.getCostPrice())
  27 + .eqIfPresent(ProductSkuDO::getBarCode, reqVO.getBarCode())
  28 + .eqIfPresent(ProductSkuDO::getPicUrl, reqVO.getPicUrl())
  29 + .eqIfPresent(ProductSkuDO::getStatus, reqVO.getStatus())
  30 + .betweenIfPresent(ProductSkuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  31 + .orderByDesc(ProductSkuDO::getId));
  32 + }
  33 +
  34 + default List<ProductSkuDO> selectList(ProductSkuExportReqVO reqVO) {
  35 + return selectList(new LambdaQueryWrapperX<ProductSkuDO>()
  36 + .eqIfPresent(ProductSkuDO::getSpuId, reqVO.getSpuId())
  37 + .eqIfPresent(ProductSkuDO::getProperties, reqVO.getProperties())
  38 + .eqIfPresent(ProductSkuDO::getPrice, reqVO.getPrice())
  39 + .eqIfPresent(ProductSkuDO::getOriginalPrice, reqVO.getOriginalPrice())
  40 + .eqIfPresent(ProductSkuDO::getCostPrice, reqVO.getCostPrice())
  41 + .eqIfPresent(ProductSkuDO::getBarCode, reqVO.getBarCode())
  42 + .eqIfPresent(ProductSkuDO::getPicUrl, reqVO.getPicUrl())
  43 + .eqIfPresent(ProductSkuDO::getStatus, reqVO.getStatus())
  44 + .betweenIfPresent(ProductSkuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  45 + .orderByDesc(ProductSkuDO::getId));
  46 + }
  47 +
  48 +}
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/sku/SkuMapper.java deleted
1 -package cn.iocoder.yudao.module.product.dal.mysql.sku;  
2 -  
3 -import java.util.*;  
4 -  
5 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
6 -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;  
7 -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;  
8 -import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO;  
9 -import org.apache.ibatis.annotations.Mapper;  
10 -import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;  
11 -  
12 -/**  
13 - * 商品sku Mapper  
14 - *  
15 - * @author 芋道源码  
16 - */  
17 -@Mapper  
18 -public interface SkuMapper extends BaseMapperX<SkuDO> {  
19 -  
20 - default PageResult<SkuDO> selectPage(SkuPageReqVO reqVO) {  
21 - return selectPage(reqVO, new LambdaQueryWrapperX<SkuDO>()  
22 - .eqIfPresent(SkuDO::getSpuId, reqVO.getSpuId())  
23 - .eqIfPresent(SkuDO::getProperties, reqVO.getProperties())  
24 - .eqIfPresent(SkuDO::getPrice, reqVO.getPrice())  
25 - .eqIfPresent(SkuDO::getOriginalPrice, reqVO.getOriginalPrice())  
26 - .eqIfPresent(SkuDO::getCostPrice, reqVO.getCostPrice())  
27 - .eqIfPresent(SkuDO::getBarCode, reqVO.getBarCode())  
28 - .eqIfPresent(SkuDO::getPicUrl, reqVO.getPicUrl())  
29 - .eqIfPresent(SkuDO::getStatus, reqVO.getStatus())  
30 - .betweenIfPresent(SkuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())  
31 - .orderByDesc(SkuDO::getId));  
32 - }  
33 -  
34 - default List<SkuDO> selectList(SkuExportReqVO reqVO) {  
35 - return selectList(new LambdaQueryWrapperX<SkuDO>()  
36 - .eqIfPresent(SkuDO::getSpuId, reqVO.getSpuId())  
37 - .eqIfPresent(SkuDO::getProperties, reqVO.getProperties())  
38 - .eqIfPresent(SkuDO::getPrice, reqVO.getPrice())  
39 - .eqIfPresent(SkuDO::getOriginalPrice, reqVO.getOriginalPrice())  
40 - .eqIfPresent(SkuDO::getCostPrice, reqVO.getCostPrice())  
41 - .eqIfPresent(SkuDO::getBarCode, reqVO.getBarCode())  
42 - .eqIfPresent(SkuDO::getPicUrl, reqVO.getPicUrl())  
43 - .eqIfPresent(SkuDO::getStatus, reqVO.getStatus())  
44 - .betweenIfPresent(SkuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())  
45 - .orderByDesc(SkuDO::getId));  
46 - }  
47 -  
48 -}  
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java 0 → 100755
  1 +package cn.iocoder.yudao.module.product.dal.mysql.spu;
  2 +
  3 +import java.util.*;
  4 +
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  7 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  8 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
  9 +import org.apache.ibatis.annotations.Mapper;
  10 +import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
  11 +
  12 +/**
  13 + * 商品spu Mapper
  14 + *
  15 + * @author 芋道源码
  16 + */
  17 +@Mapper
  18 +public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> {
  19 +
  20 + default PageResult<ProductSpuDO> selectPage(SpuPageReqVO reqVO) {
  21 + return selectPage(reqVO, new LambdaQueryWrapperX<ProductSpuDO>()
  22 + .likeIfPresent(ProductSpuDO::getName, reqVO.getName())
  23 + .eqIfPresent(ProductSpuDO::getSellPoint, reqVO.getSellPoint())
  24 + .eqIfPresent(ProductSpuDO::getDescription, reqVO.getDescription())
  25 + .eqIfPresent(ProductSpuDO::getCategoryId, reqVO.getCategoryId())
  26 + .eqIfPresent(ProductSpuDO::getPicUrls, reqVO.getPicUrls())
  27 + .eqIfPresent(ProductSpuDO::getSort, reqVO.getSort())
  28 + .eqIfPresent(ProductSpuDO::getLikeCount, reqVO.getLikeCount())
  29 + .eqIfPresent(ProductSpuDO::getPrice, reqVO.getPrice())
  30 + .eqIfPresent(ProductSpuDO::getQuantity, reqVO.getQuantity())
  31 + .eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus())
  32 + .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  33 + .orderByDesc(ProductSpuDO::getId));
  34 + }
  35 +
  36 + default List<ProductSpuDO> selectList(SpuExportReqVO reqVO) {
  37 + return selectList(new LambdaQueryWrapperX<ProductSpuDO>()
  38 + .likeIfPresent(ProductSpuDO::getName, reqVO.getName())
  39 + .eqIfPresent(ProductSpuDO::getSellPoint, reqVO.getSellPoint())
  40 + .eqIfPresent(ProductSpuDO::getDescription, reqVO.getDescription())
  41 + .eqIfPresent(ProductSpuDO::getCategoryId, reqVO.getCategoryId())
  42 + .eqIfPresent(ProductSpuDO::getPicUrls, reqVO.getPicUrls())
  43 + .eqIfPresent(ProductSpuDO::getSort, reqVO.getSort())
  44 + .eqIfPresent(ProductSpuDO::getLikeCount, reqVO.getLikeCount())
  45 + .eqIfPresent(ProductSpuDO::getPrice, reqVO.getPrice())
  46 + .eqIfPresent(ProductSpuDO::getQuantity, reqVO.getQuantity())
  47 + .eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus())
  48 + .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  49 + .orderByDesc(ProductSpuDO::getId));
  50 + }
  51 +
  52 +}
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/SpuMapper.java deleted
1 -package cn.iocoder.yudao.module.product.dal.mysql.spu;  
2 -  
3 -import java.util.*;  
4 -  
5 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
6 -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;  
7 -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;  
8 -import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO;  
9 -import org.apache.ibatis.annotations.Mapper;  
10 -import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;  
11 -  
12 -/**  
13 - * 商品spu Mapper  
14 - *  
15 - * @author 芋道源码  
16 - */  
17 -@Mapper  
18 -public interface SpuMapper extends BaseMapperX<SpuDO> {  
19 -  
20 - default PageResult<SpuDO> selectPage(SpuPageReqVO reqVO) {  
21 - return selectPage(reqVO, new LambdaQueryWrapperX<SpuDO>()  
22 - .likeIfPresent(SpuDO::getName, reqVO.getName())  
23 - .eqIfPresent(SpuDO::getSellPoint, reqVO.getSellPoint())  
24 - .eqIfPresent(SpuDO::getDescription, reqVO.getDescription())  
25 - .eqIfPresent(SpuDO::getCategoryId, reqVO.getCategoryId())  
26 - .eqIfPresent(SpuDO::getPicUrls, reqVO.getPicUrls())  
27 - .eqIfPresent(SpuDO::getSort, reqVO.getSort())  
28 - .eqIfPresent(SpuDO::getLikeCount, reqVO.getLikeCount())  
29 - .eqIfPresent(SpuDO::getPrice, reqVO.getPrice())  
30 - .eqIfPresent(SpuDO::getQuantity, reqVO.getQuantity())  
31 - .eqIfPresent(SpuDO::getStatus, reqVO.getStatus())  
32 - .betweenIfPresent(SpuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())  
33 - .orderByDesc(SpuDO::getId));  
34 - }  
35 -  
36 - default List<SpuDO> selectList(SpuExportReqVO reqVO) {  
37 - return selectList(new LambdaQueryWrapperX<SpuDO>()  
38 - .likeIfPresent(SpuDO::getName, reqVO.getName())  
39 - .eqIfPresent(SpuDO::getSellPoint, reqVO.getSellPoint())  
40 - .eqIfPresent(SpuDO::getDescription, reqVO.getDescription())  
41 - .eqIfPresent(SpuDO::getCategoryId, reqVO.getCategoryId())  
42 - .eqIfPresent(SpuDO::getPicUrls, reqVO.getPicUrls())  
43 - .eqIfPresent(SpuDO::getSort, reqVO.getSort())  
44 - .eqIfPresent(SpuDO::getLikeCount, reqVO.getLikeCount())  
45 - .eqIfPresent(SpuDO::getPrice, reqVO.getPrice())  
46 - .eqIfPresent(SpuDO::getQuantity, reqVO.getQuantity())  
47 - .eqIfPresent(SpuDO::getStatus, reqVO.getStatus())  
48 - .betweenIfPresent(SpuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())  
49 - .orderByDesc(SpuDO::getId));  
50 - }  
51 -  
52 -}  
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/SkuService.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuService.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.product.service.sku; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.product.service.sku;
3 import java.util.*; 3 import java.util.*;
4 import javax.validation.*; 4 import javax.validation.*;
5 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*; 5 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
6 -import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO; 6 +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 8
9 /** 9 /**
@@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 * 11 *
12 * @author 芋道源码 12 * @author 芋道源码
13 */ 13 */
14 -public interface SkuService { 14 +public interface ProductSkuService {
15 15
16 /** 16 /**
17 * 创建商品sku 17 * 创建商品sku
@@ -19,14 +19,14 @@ public interface SkuService { @@ -19,14 +19,14 @@ public interface SkuService {
19 * @param createReqVO 创建信息 19 * @param createReqVO 创建信息
20 * @return 编号 20 * @return 编号
21 */ 21 */
22 - Integer createSku(@Valid SkuCreateReqVO createReqVO); 22 + Integer createSku(@Valid ProductSkuCreateReqVO createReqVO);
23 23
24 /** 24 /**
25 * 更新商品sku 25 * 更新商品sku
26 * 26 *
27 * @param updateReqVO 更新信息 27 * @param updateReqVO 更新信息
28 */ 28 */
29 - void updateSku(@Valid SkuUpdateReqVO updateReqVO); 29 + void updateSku(@Valid ProductSkuUpdateReqVO updateReqVO);
30 30
31 /** 31 /**
32 * 删除商品sku 32 * 删除商品sku
@@ -41,7 +41,7 @@ public interface SkuService { @@ -41,7 +41,7 @@ public interface SkuService {
41 * @param id 编号 41 * @param id 编号
42 * @return 商品sku 42 * @return 商品sku
43 */ 43 */
44 - SkuDO getSku(Integer id); 44 + ProductSkuDO getSku(Integer id);
45 45
46 /** 46 /**
47 * 获得商品sku列表 47 * 获得商品sku列表
@@ -49,7 +49,7 @@ public interface SkuService { @@ -49,7 +49,7 @@ public interface SkuService {
49 * @param ids 编号 49 * @param ids 编号
50 * @return 商品sku列表 50 * @return 商品sku列表
51 */ 51 */
52 - List<SkuDO> getSkuList(Collection<Integer> ids); 52 + List<ProductSkuDO> getSkuList(Collection<Integer> ids);
53 53
54 /** 54 /**
55 * 获得商品sku分页 55 * 获得商品sku分页
@@ -57,7 +57,7 @@ public interface SkuService { @@ -57,7 +57,7 @@ public interface SkuService {
57 * @param pageReqVO 分页查询 57 * @param pageReqVO 分页查询
58 * @return 商品sku分页 58 * @return 商品sku分页
59 */ 59 */
60 - PageResult<SkuDO> getSkuPage(SkuPageReqVO pageReqVO); 60 + PageResult<ProductSkuDO> getSkuPage(ProductSkuPageReqVO pageReqVO);
61 61
62 /** 62 /**
63 * 获得商品sku列表, 用于 Excel 导出 63 * 获得商品sku列表, 用于 Excel 导出
@@ -65,6 +65,6 @@ public interface SkuService { @@ -65,6 +65,6 @@ public interface SkuService {
65 * @param exportReqVO 查询条件 65 * @param exportReqVO 查询条件
66 * @return 商品sku列表 66 * @return 商品sku列表
67 */ 67 */
68 - List<SkuDO> getSkuList(SkuExportReqVO exportReqVO); 68 + List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO);
69 69
70 } 70 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/SkuServiceImpl.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java
@@ -6,11 +6,11 @@ import org.springframework.validation.annotation.Validated; @@ -6,11 +6,11 @@ import org.springframework.validation.annotation.Validated;
6 6
7 import java.util.*; 7 import java.util.*;
8 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*; 8 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
9 -import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO; 9 +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 10 import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 11
12 -import cn.iocoder.yudao.module.product.convert.sku.SkuConvert;  
13 -import cn.iocoder.yudao.module.product.dal.mysql.sku.SkuMapper; 12 +import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
  13 +import cn.iocoder.yudao.module.product.dal.mysql.sku.ProductSkuMapper;
14 14
15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
16 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; 16 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
@@ -22,27 +22,27 @@ import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; @@ -22,27 +22,27 @@ import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
22 */ 22 */
23 @Service 23 @Service
24 @Validated 24 @Validated
25 -public class SkuServiceImpl implements SkuService { 25 +public class ProductSkuServiceImpl implements ProductSkuService {
26 26
27 @Resource 27 @Resource
28 - private SkuMapper skuMapper; 28 + private ProductSkuMapper ProductSkuMapper;
29 29
30 @Override 30 @Override
31 - public Integer createSku(SkuCreateReqVO createReqVO) { 31 + public Integer createSku(ProductSkuCreateReqVO createReqVO) {
32 // 插入 32 // 插入
33 - SkuDO sku = SkuConvert.INSTANCE.convert(createReqVO);  
34 - skuMapper.insert(sku); 33 + ProductSkuDO sku = ProductSkuConvert.INSTANCE.convert(createReqVO);
  34 + ProductSkuMapper.insert(sku);
35 // 返回 35 // 返回
36 return sku.getId(); 36 return sku.getId();
37 } 37 }
38 38
39 @Override 39 @Override
40 - public void updateSku(SkuUpdateReqVO updateReqVO) { 40 + public void updateSku(ProductSkuUpdateReqVO updateReqVO) {
41 // 校验存在 41 // 校验存在
42 this.validateSkuExists(updateReqVO.getId()); 42 this.validateSkuExists(updateReqVO.getId());
43 // 更新 43 // 更新
44 - SkuDO updateObj = SkuConvert.INSTANCE.convert(updateReqVO);  
45 - skuMapper.updateById(updateObj); 44 + ProductSkuDO updateObj = ProductSkuConvert.INSTANCE.convert(updateReqVO);
  45 + ProductSkuMapper.updateById(updateObj);
46 } 46 }
47 47
48 @Override 48 @Override
@@ -50,33 +50,33 @@ public class SkuServiceImpl implements SkuService { @@ -50,33 +50,33 @@ public class SkuServiceImpl implements SkuService {
50 // 校验存在 50 // 校验存在
51 this.validateSkuExists(id); 51 this.validateSkuExists(id);
52 // 删除 52 // 删除
53 - skuMapper.deleteById(id); 53 + ProductSkuMapper.deleteById(id);
54 } 54 }
55 55
56 private void validateSkuExists(Integer id) { 56 private void validateSkuExists(Integer id) {
57 - if (skuMapper.selectById(id) == null) { 57 + if (ProductSkuMapper.selectById(id) == null) {
58 throw exception(SKU_NOT_EXISTS); 58 throw exception(SKU_NOT_EXISTS);
59 } 59 }
60 } 60 }
61 61
62 @Override 62 @Override
63 - public SkuDO getSku(Integer id) {  
64 - return skuMapper.selectById(id); 63 + public ProductSkuDO getSku(Integer id) {
  64 + return ProductSkuMapper.selectById(id);
65 } 65 }
66 66
67 @Override 67 @Override
68 - public List<SkuDO> getSkuList(Collection<Integer> ids) {  
69 - return skuMapper.selectBatchIds(ids); 68 + public List<ProductSkuDO> getSkuList(Collection<Integer> ids) {
  69 + return ProductSkuMapper.selectBatchIds(ids);
70 } 70 }
71 71
72 @Override 72 @Override
73 - public PageResult<SkuDO> getSkuPage(SkuPageReqVO pageReqVO) {  
74 - return skuMapper.selectPage(pageReqVO); 73 + public PageResult<ProductSkuDO> getSkuPage(ProductSkuPageReqVO pageReqVO) {
  74 + return ProductSkuMapper.selectPage(pageReqVO);
75 } 75 }
76 76
77 @Override 77 @Override
78 - public List<SkuDO> getSkuList(SkuExportReqVO exportReqVO) {  
79 - return skuMapper.selectList(exportReqVO); 78 + public List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO) {
  79 + return ProductSkuMapper.selectList(exportReqVO);
80 } 80 }
81 81
82 } 82 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/SpuService.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.product.service.spu; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.product.service.spu;
3 import java.util.*; 3 import java.util.*;
4 import javax.validation.*; 4 import javax.validation.*;
5 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; 5 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
6 -import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO; 6 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 8
9 /** 9 /**
@@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 * 11 *
12 * @author 芋道源码 12 * @author 芋道源码
13 */ 13 */
14 -public interface SpuService { 14 +public interface ProductSpuService {
15 15
16 /** 16 /**
17 * 创建商品spu 17 * 创建商品spu
@@ -19,7 +19,7 @@ public interface SpuService { @@ -19,7 +19,7 @@ public interface SpuService {
19 * @param createReqVO 创建信息 19 * @param createReqVO 创建信息
20 * @return 编号 20 * @return 编号
21 */ 21 */
22 - Integer createSpu(@Valid SpuCreateReqVO createReqVO); 22 + Integer createSpu(@Valid ProductSpuCreateReqVO createReqVO);
23 23
24 /** 24 /**
25 * 更新商品spu 25 * 更新商品spu
@@ -41,7 +41,7 @@ public interface SpuService { @@ -41,7 +41,7 @@ public interface SpuService {
41 * @param id 编号 41 * @param id 编号
42 * @return 商品spu 42 * @return 商品spu
43 */ 43 */
44 - SpuDO getSpu(Integer id); 44 + ProductSpuDO getSpu(Integer id);
45 45
46 /** 46 /**
47 * 获得商品spu列表 47 * 获得商品spu列表
@@ -49,7 +49,7 @@ public interface SpuService { @@ -49,7 +49,7 @@ public interface SpuService {
49 * @param ids 编号 49 * @param ids 编号
50 * @return 商品spu列表 50 * @return 商品spu列表
51 */ 51 */
52 - List<SpuDO> getSpuList(Collection<Integer> ids); 52 + List<ProductSpuDO> getSpuList(Collection<Integer> ids);
53 53
54 /** 54 /**
55 * 获得商品spu分页 55 * 获得商品spu分页
@@ -57,7 +57,7 @@ public interface SpuService { @@ -57,7 +57,7 @@ public interface SpuService {
57 * @param pageReqVO 分页查询 57 * @param pageReqVO 分页查询
58 * @return 商品spu分页 58 * @return 商品spu分页
59 */ 59 */
60 - PageResult<SpuDO> getSpuPage(SpuPageReqVO pageReqVO); 60 + PageResult<ProductSpuDO> getSpuPage(SpuPageReqVO pageReqVO);
61 61
62 /** 62 /**
63 * 获得商品spu列表, 用于 Excel 导出 63 * 获得商品spu列表, 用于 Excel 导出
@@ -65,6 +65,6 @@ public interface SpuService { @@ -65,6 +65,6 @@ public interface SpuService {
65 * @param exportReqVO 查询条件 65 * @param exportReqVO 查询条件
66 * @return 商品spu列表 66 * @return 商品spu列表
67 */ 67 */
68 - List<SpuDO> getSpuList(SpuExportReqVO exportReqVO); 68 + List<ProductSpuDO> getSpuList(SpuExportReqVO exportReqVO);
69 69
70 } 70 }
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/SpuServiceImpl.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java
@@ -6,11 +6,11 @@ import org.springframework.validation.annotation.Validated; @@ -6,11 +6,11 @@ import org.springframework.validation.annotation.Validated;
6 6
7 import java.util.*; 7 import java.util.*;
8 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; 8 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
9 -import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO; 9 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 10 import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 11
12 -import cn.iocoder.yudao.module.product.convert.spu.SpuConvert;  
13 -import cn.iocoder.yudao.module.product.dal.mysql.spu.SpuMapper; 12 +import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert;
  13 +import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper;
14 14
15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
16 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; 16 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
@@ -22,16 +22,16 @@ import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; @@ -22,16 +22,16 @@ import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
22 */ 22 */
23 @Service 23 @Service
24 @Validated 24 @Validated
25 -public class SpuServiceImpl implements SpuService { 25 +public class ProductSpuServiceImpl implements ProductSpuService {
26 26
27 @Resource 27 @Resource
28 - private SpuMapper spuMapper; 28 + private ProductSpuMapper ProductSpuMapper;
29 29
30 @Override 30 @Override
31 - public Integer createSpu(SpuCreateReqVO createReqVO) { 31 + public Integer createSpu(ProductSpuCreateReqVO createReqVO) {
32 // 插入 32 // 插入
33 - SpuDO spu = SpuConvert.INSTANCE.convert(createReqVO);  
34 - spuMapper.insert(spu); 33 + ProductSpuDO spu = ProductSpuConvert.INSTANCE.convert(createReqVO);
  34 + ProductSpuMapper.insert(spu);
35 // 返回 35 // 返回
36 return spu.getId(); 36 return spu.getId();
37 } 37 }
@@ -41,8 +41,8 @@ public class SpuServiceImpl implements SpuService { @@ -41,8 +41,8 @@ public class SpuServiceImpl implements SpuService {
41 // 校验存在 41 // 校验存在
42 this.validateSpuExists(updateReqVO.getId()); 42 this.validateSpuExists(updateReqVO.getId());
43 // 更新 43 // 更新
44 - SpuDO updateObj = SpuConvert.INSTANCE.convert(updateReqVO);  
45 - spuMapper.updateById(updateObj); 44 + ProductSpuDO updateObj = ProductSpuConvert.INSTANCE.convert(updateReqVO);
  45 + ProductSpuMapper.updateById(updateObj);
46 } 46 }
47 47
48 @Override 48 @Override
@@ -50,33 +50,33 @@ public class SpuServiceImpl implements SpuService { @@ -50,33 +50,33 @@ public class SpuServiceImpl implements SpuService {
50 // 校验存在 50 // 校验存在
51 this.validateSpuExists(id); 51 this.validateSpuExists(id);
52 // 删除 52 // 删除
53 - spuMapper.deleteById(id); 53 + ProductSpuMapper.deleteById(id);
54 } 54 }
55 55
56 private void validateSpuExists(Integer id) { 56 private void validateSpuExists(Integer id) {
57 - if (spuMapper.selectById(id) == null) { 57 + if (ProductSpuMapper.selectById(id) == null) {
58 throw exception(SPU_NOT_EXISTS); 58 throw exception(SPU_NOT_EXISTS);
59 } 59 }
60 } 60 }
61 61
62 @Override 62 @Override
63 - public SpuDO getSpu(Integer id) {  
64 - return spuMapper.selectById(id); 63 + public ProductSpuDO getSpu(Integer id) {
  64 + return ProductSpuMapper.selectById(id);
65 } 65 }
66 66
67 @Override 67 @Override
68 - public List<SpuDO> getSpuList(Collection<Integer> ids) {  
69 - return spuMapper.selectBatchIds(ids); 68 + public List<ProductSpuDO> getSpuList(Collection<Integer> ids) {
  69 + return ProductSpuMapper.selectBatchIds(ids);
70 } 70 }
71 71
72 @Override 72 @Override
73 - public PageResult<SpuDO> getSpuPage(SpuPageReqVO pageReqVO) {  
74 - return spuMapper.selectPage(pageReqVO); 73 + public PageResult<ProductSpuDO> getSpuPage(SpuPageReqVO pageReqVO) {
  74 + return ProductSpuMapper.selectPage(pageReqVO);
75 } 75 }
76 76
77 @Override 77 @Override
78 - public List<SpuDO> getSpuList(SpuExportReqVO exportReqVO) {  
79 - return spuMapper.selectList(exportReqVO); 78 + public List<ProductSpuDO> getSpuList(SpuExportReqVO exportReqVO) {
  79 + return ProductSpuMapper.selectList(exportReqVO);
80 } 80 }
81 81
82 } 82 }
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/sku/SkuServiceImplTest.java
@@ -9,8 +9,8 @@ import javax.annotation.Resource; @@ -9,8 +9,8 @@ import javax.annotation.Resource;
9 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 9 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
10 10
11 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*; 11 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
12 -import cn.iocoder.yudao.module.product.dal.dataobject.sku.SkuDO;  
13 -import cn.iocoder.yudao.module.product.dal.mysql.sku.SkuMapper; 12 +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
  13 +import cn.iocoder.yudao.module.product.dal.mysql.sku.ProductSkuMapper;
14 import cn.iocoder.yudao.framework.common.pojo.PageResult; 14 import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 15
16 import javax.annotation.Resource; 16 import javax.annotation.Resource;
@@ -27,71 +27,71 @@ import static org.junit.jupiter.api.Assertions.*; @@ -27,71 +27,71 @@ import static org.junit.jupiter.api.Assertions.*;
27 import static org.mockito.Mockito.*; 27 import static org.mockito.Mockito.*;
28 28
29 /** 29 /**
30 -* {@link SkuServiceImpl} 的单元测试类 30 +* {@link ProductSkuServiceImpl} 的单元测试类
31 * 31 *
32 * @author 芋道源码 32 * @author 芋道源码
33 */ 33 */
34 -@Import(SkuServiceImpl.class) 34 +@Import(ProductSkuServiceImpl.class)
35 public class SkuServiceImplTest extends BaseDbUnitTest { 35 public class SkuServiceImplTest extends BaseDbUnitTest {
36 36
37 @Resource 37 @Resource
38 - private SkuServiceImpl skuService; 38 + private ProductSkuServiceImpl ProductSkuService;
39 39
40 @Resource 40 @Resource
41 - private SkuMapper skuMapper; 41 + private ProductSkuMapper ProductSkuMapper;
42 42
43 @Test 43 @Test
44 public void testCreateSku_success() { 44 public void testCreateSku_success() {
45 // 准备参数 45 // 准备参数
46 - SkuCreateReqVO reqVO = randomPojo(SkuCreateReqVO.class); 46 + ProductSkuCreateReqVO reqVO = randomPojo(ProductSkuCreateReqVO.class);
47 47
48 // 调用 48 // 调用
49 - Integer skuId = skuService.createSku(reqVO); 49 + Integer skuId = ProductSkuService.createSku(reqVO);
50 // 断言 50 // 断言
51 assertNotNull(skuId); 51 assertNotNull(skuId);
52 // 校验记录的属性是否正确 52 // 校验记录的属性是否正确
53 - SkuDO sku = skuMapper.selectById(skuId); 53 + ProductSkuDO sku = ProductSkuMapper.selectById(skuId);
54 assertPojoEquals(reqVO, sku); 54 assertPojoEquals(reqVO, sku);
55 } 55 }
56 56
57 @Test 57 @Test
58 public void testUpdateSku_success() { 58 public void testUpdateSku_success() {
59 // mock 数据 59 // mock 数据
60 - SkuDO dbSku = randomPojo(SkuDO.class);  
61 - skuMapper.insert(dbSku);// @Sql: 先插入出一条存在的数据 60 + ProductSkuDO dbSku = randomPojo(ProductSkuDO.class);
  61 + ProductSkuMapper.insert(dbSku);// @Sql: 先插入出一条存在的数据
62 // 准备参数 62 // 准备参数
63 - SkuUpdateReqVO reqVO = randomPojo(SkuUpdateReqVO.class, o -> { 63 + ProductSkuUpdateReqVO reqVO = randomPojo(ProductSkuUpdateReqVO.class, o -> {
64 o.setId(dbSku.getId()); // 设置更新的 ID 64 o.setId(dbSku.getId()); // 设置更新的 ID
65 }); 65 });
66 66
67 // 调用 67 // 调用
68 - skuService.updateSku(reqVO); 68 + ProductSkuService.updateSku(reqVO);
69 // 校验是否更新正确 69 // 校验是否更新正确
70 - SkuDO sku = skuMapper.selectById(reqVO.getId()); // 获取最新的 70 + ProductSkuDO sku = ProductSkuMapper.selectById(reqVO.getId()); // 获取最新的
71 assertPojoEquals(reqVO, sku); 71 assertPojoEquals(reqVO, sku);
72 } 72 }
73 73
74 @Test 74 @Test
75 public void testUpdateSku_notExists() { 75 public void testUpdateSku_notExists() {
76 // 准备参数 76 // 准备参数
77 - SkuUpdateReqVO reqVO = randomPojo(SkuUpdateReqVO.class); 77 + ProductSkuUpdateReqVO reqVO = randomPojo(ProductSkuUpdateReqVO.class);
78 78
79 // 调用, 并断言异常 79 // 调用, 并断言异常
80 - assertServiceException(() -> skuService.updateSku(reqVO), SKU_NOT_EXISTS); 80 + assertServiceException(() -> ProductSkuService.updateSku(reqVO), SKU_NOT_EXISTS);
81 } 81 }
82 82
83 @Test 83 @Test
84 public void testDeleteSku_success() { 84 public void testDeleteSku_success() {
85 // mock 数据 85 // mock 数据
86 - SkuDO dbSku = randomPojo(SkuDO.class);  
87 - skuMapper.insert(dbSku);// @Sql: 先插入出一条存在的数据 86 + ProductSkuDO dbSku = randomPojo(ProductSkuDO.class);
  87 + ProductSkuMapper.insert(dbSku);// @Sql: 先插入出一条存在的数据
88 // 准备参数 88 // 准备参数
89 Integer id = dbSku.getId(); 89 Integer id = dbSku.getId();
90 90
91 // 调用 91 // 调用
92 - skuService.deleteSku(id); 92 + ProductSkuService.deleteSku(id);
93 // 校验数据不存在了 93 // 校验数据不存在了
94 - assertNull(skuMapper.selectById(id)); 94 + assertNull(ProductSkuMapper.selectById(id));
95 } 95 }
96 96
97 @Test 97 @Test
@@ -100,14 +100,14 @@ public class SkuServiceImplTest extends BaseDbUnitTest { @@ -100,14 +100,14 @@ public class SkuServiceImplTest extends BaseDbUnitTest {
100 Integer id = 1; 100 Integer id = 1;
101 101
102 // 调用, 并断言异常 102 // 调用, 并断言异常
103 - assertServiceException(() -> skuService.deleteSku(id), SKU_NOT_EXISTS); 103 + assertServiceException(() -> ProductSkuService.deleteSku(id), SKU_NOT_EXISTS);
104 } 104 }
105 105
106 @Test 106 @Test
107 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 107 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
108 public void testGetSkuPage() { 108 public void testGetSkuPage() {
109 // mock 数据 109 // mock 数据
110 - SkuDO dbSku = randomPojo(SkuDO.class, o -> { // 等会查询到 110 + ProductSkuDO dbSku = randomPojo(ProductSkuDO.class, o -> { // 等会查询到
111 o.setSpuId(null); 111 o.setSpuId(null);
112 o.setProperties(null); 112 o.setProperties(null);
113 o.setPrice(null); 113 o.setPrice(null);
@@ -118,27 +118,27 @@ public class SkuServiceImplTest extends BaseDbUnitTest { @@ -118,27 +118,27 @@ public class SkuServiceImplTest extends BaseDbUnitTest {
118 o.setStatus(null); 118 o.setStatus(null);
119 o.setCreateTime(null); 119 o.setCreateTime(null);
120 }); 120 });
121 - skuMapper.insert(dbSku); 121 + ProductSkuMapper.insert(dbSku);
122 // 测试 spuId 不匹配 122 // 测试 spuId 不匹配
123 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setSpuId(null))); 123 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setSpuId(null)));
124 // 测试 properties 不匹配 124 // 测试 properties 不匹配
125 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setProperties(null))); 125 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setProperties(null)));
126 // 测试 price 不匹配 126 // 测试 price 不匹配
127 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPrice(null))); 127 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPrice(null)));
128 // 测试 originalPrice 不匹配 128 // 测试 originalPrice 不匹配
129 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setOriginalPrice(null))); 129 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setOriginalPrice(null)));
130 // 测试 costPrice 不匹配 130 // 测试 costPrice 不匹配
131 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCostPrice(null))); 131 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCostPrice(null)));
132 // 测试 barCode 不匹配 132 // 测试 barCode 不匹配
133 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setBarCode(null))); 133 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setBarCode(null)));
134 // 测试 picUrl 不匹配 134 // 测试 picUrl 不匹配
135 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPicUrl(null))); 135 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPicUrl(null)));
136 // 测试 status 不匹配 136 // 测试 status 不匹配
137 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setStatus(null))); 137 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setStatus(null)));
138 // 测试 createTime 不匹配 138 // 测试 createTime 不匹配
139 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCreateTime(null))); 139 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCreateTime(null)));
140 // 准备参数 140 // 准备参数
141 - SkuPageReqVO reqVO = new SkuPageReqVO(); 141 + ProductSkuPageReqVO reqVO = new ProductSkuPageReqVO();
142 reqVO.setSpuId(null); 142 reqVO.setSpuId(null);
143 reqVO.setProperties(null); 143 reqVO.setProperties(null);
144 reqVO.setPrice(null); 144 reqVO.setPrice(null);
@@ -151,7 +151,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { @@ -151,7 +151,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest {
151 reqVO.setEndCreateTime(null); 151 reqVO.setEndCreateTime(null);
152 152
153 // 调用 153 // 调用
154 - PageResult<SkuDO> pageResult = skuService.getSkuPage(reqVO); 154 + PageResult<ProductSkuDO> pageResult = ProductSkuService.getSkuPage(reqVO);
155 // 断言 155 // 断言
156 assertEquals(1, pageResult.getTotal()); 156 assertEquals(1, pageResult.getTotal());
157 assertEquals(1, pageResult.getList().size()); 157 assertEquals(1, pageResult.getList().size());
@@ -162,7 +162,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { @@ -162,7 +162,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest {
162 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 162 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
163 public void testGetSkuList() { 163 public void testGetSkuList() {
164 // mock 数据 164 // mock 数据
165 - SkuDO dbSku = randomPojo(SkuDO.class, o -> { // 等会查询到 165 + ProductSkuDO dbSku = randomPojo(ProductSkuDO.class, o -> { // 等会查询到
166 o.setSpuId(null); 166 o.setSpuId(null);
167 o.setProperties(null); 167 o.setProperties(null);
168 o.setPrice(null); 168 o.setPrice(null);
@@ -173,27 +173,27 @@ public class SkuServiceImplTest extends BaseDbUnitTest { @@ -173,27 +173,27 @@ public class SkuServiceImplTest extends BaseDbUnitTest {
173 o.setStatus(null); 173 o.setStatus(null);
174 o.setCreateTime(null); 174 o.setCreateTime(null);
175 }); 175 });
176 - skuMapper.insert(dbSku); 176 + ProductSkuMapper.insert(dbSku);
177 // 测试 spuId 不匹配 177 // 测试 spuId 不匹配
178 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setSpuId(null))); 178 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setSpuId(null)));
179 // 测试 properties 不匹配 179 // 测试 properties 不匹配
180 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setProperties(null))); 180 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setProperties(null)));
181 // 测试 price 不匹配 181 // 测试 price 不匹配
182 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPrice(null))); 182 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPrice(null)));
183 // 测试 originalPrice 不匹配 183 // 测试 originalPrice 不匹配
184 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setOriginalPrice(null))); 184 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setOriginalPrice(null)));
185 // 测试 costPrice 不匹配 185 // 测试 costPrice 不匹配
186 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCostPrice(null))); 186 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCostPrice(null)));
187 // 测试 barCode 不匹配 187 // 测试 barCode 不匹配
188 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setBarCode(null))); 188 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setBarCode(null)));
189 // 测试 picUrl 不匹配 189 // 测试 picUrl 不匹配
190 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPicUrl(null))); 190 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setPicUrl(null)));
191 // 测试 status 不匹配 191 // 测试 status 不匹配
192 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setStatus(null))); 192 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setStatus(null)));
193 // 测试 createTime 不匹配 193 // 测试 createTime 不匹配
194 - skuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCreateTime(null))); 194 + ProductSkuMapper.insert(cloneIgnoreId(dbSku, o -> o.setCreateTime(null)));
195 // 准备参数 195 // 准备参数
196 - SkuExportReqVO reqVO = new SkuExportReqVO(); 196 + ProductSkuExportReqVO reqVO = new ProductSkuExportReqVO();
197 reqVO.setSpuId(null); 197 reqVO.setSpuId(null);
198 reqVO.setProperties(null); 198 reqVO.setProperties(null);
199 reqVO.setPrice(null); 199 reqVO.setPrice(null);
@@ -206,7 +206,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { @@ -206,7 +206,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest {
206 reqVO.setEndCreateTime(null); 206 reqVO.setEndCreateTime(null);
207 207
208 // 调用 208 // 调用
209 - List<SkuDO> list = skuService.getSkuList(reqVO); 209 + List<ProductSkuDO> list = ProductSkuService.getSkuList(reqVO);
210 // 断言 210 // 断言
211 assertEquals(1, list.size()); 211 assertEquals(1, list.size());
212 assertPojoEquals(dbSku, list.get(0)); 212 assertPojoEquals(dbSku, list.get(0));
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/SpuServiceImplTest.java renamed to yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java
@@ -9,8 +9,8 @@ import javax.annotation.Resource; @@ -9,8 +9,8 @@ import javax.annotation.Resource;
9 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 9 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
10 10
11 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; 11 import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
12 -import cn.iocoder.yudao.module.product.dal.dataobject.spu.SpuDO;  
13 -import cn.iocoder.yudao.module.product.dal.mysql.spu.SpuMapper; 12 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
  13 +import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper;
14 import cn.iocoder.yudao.framework.common.pojo.PageResult; 14 import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 15
16 import javax.annotation.Resource; 16 import javax.annotation.Resource;
@@ -27,38 +27,38 @@ import static org.junit.jupiter.api.Assertions.*; @@ -27,38 +27,38 @@ import static org.junit.jupiter.api.Assertions.*;
27 import static org.mockito.Mockito.*; 27 import static org.mockito.Mockito.*;
28 28
29 /** 29 /**
30 -* {@link SpuServiceImpl} 的单元测试类 30 +* {@link ProductSpuServiceImpl} 的单元测试类
31 * 31 *
32 * @author 芋道源码 32 * @author 芋道源码
33 */ 33 */
34 -@Import(SpuServiceImpl.class)  
35 -public class SpuServiceImplTest extends BaseDbUnitTest { 34 +@Import(ProductSpuServiceImpl.class)
  35 +public class ProductSpuServiceImplTest extends BaseDbUnitTest {
36 36
37 @Resource 37 @Resource
38 - private SpuServiceImpl spuService; 38 + private ProductSpuServiceImpl spuService;
39 39
40 @Resource 40 @Resource
41 - private SpuMapper spuMapper; 41 + private ProductSpuMapper ProductSpuMapper;
42 42
43 @Test 43 @Test
44 public void testCreateSpu_success() { 44 public void testCreateSpu_success() {
45 // 准备参数 45 // 准备参数
46 - SpuCreateReqVO reqVO = randomPojo(SpuCreateReqVO.class); 46 + ProductSpuCreateReqVO reqVO = randomPojo(ProductSpuCreateReqVO.class);
47 47
48 // 调用 48 // 调用
49 Integer spuId = spuService.createSpu(reqVO); 49 Integer spuId = spuService.createSpu(reqVO);
50 // 断言 50 // 断言
51 assertNotNull(spuId); 51 assertNotNull(spuId);
52 // 校验记录的属性是否正确 52 // 校验记录的属性是否正确
53 - SpuDO spu = spuMapper.selectById(spuId); 53 + ProductSpuDO spu = ProductSpuMapper.selectById(spuId);
54 assertPojoEquals(reqVO, spu); 54 assertPojoEquals(reqVO, spu);
55 } 55 }
56 56
57 @Test 57 @Test
58 public void testUpdateSpu_success() { 58 public void testUpdateSpu_success() {
59 // mock 数据 59 // mock 数据
60 - SpuDO dbSpu = randomPojo(SpuDO.class);  
61 - spuMapper.insert(dbSpu);// @Sql: 先插入出一条存在的数据 60 + ProductSpuDO dbSpu = randomPojo(ProductSpuDO.class);
  61 + ProductSpuMapper.insert(dbSpu);// @Sql: 先插入出一条存在的数据
62 // 准备参数 62 // 准备参数
63 SpuUpdateReqVO reqVO = randomPojo(SpuUpdateReqVO.class, o -> { 63 SpuUpdateReqVO reqVO = randomPojo(SpuUpdateReqVO.class, o -> {
64 o.setId(dbSpu.getId()); // 设置更新的 ID 64 o.setId(dbSpu.getId()); // 设置更新的 ID
@@ -67,7 +67,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -67,7 +67,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
67 // 调用 67 // 调用
68 spuService.updateSpu(reqVO); 68 spuService.updateSpu(reqVO);
69 // 校验是否更新正确 69 // 校验是否更新正确
70 - SpuDO spu = spuMapper.selectById(reqVO.getId()); // 获取最新的 70 + ProductSpuDO spu = ProductSpuMapper.selectById(reqVO.getId()); // 获取最新的
71 assertPojoEquals(reqVO, spu); 71 assertPojoEquals(reqVO, spu);
72 } 72 }
73 73
@@ -83,15 +83,15 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -83,15 +83,15 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
83 @Test 83 @Test
84 public void testDeleteSpu_success() { 84 public void testDeleteSpu_success() {
85 // mock 数据 85 // mock 数据
86 - SpuDO dbSpu = randomPojo(SpuDO.class);  
87 - spuMapper.insert(dbSpu);// @Sql: 先插入出一条存在的数据 86 + ProductSpuDO dbSpu = randomPojo(ProductSpuDO.class);
  87 + ProductSpuMapper.insert(dbSpu);// @Sql: 先插入出一条存在的数据
88 // 准备参数 88 // 准备参数
89 Integer id = dbSpu.getId(); 89 Integer id = dbSpu.getId();
90 90
91 // 调用 91 // 调用
92 spuService.deleteSpu(id); 92 spuService.deleteSpu(id);
93 // 校验数据不存在了 93 // 校验数据不存在了
94 - assertNull(spuMapper.selectById(id)); 94 + assertNull(ProductSpuMapper.selectById(id));
95 } 95 }
96 96
97 @Test 97 @Test
@@ -107,7 +107,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -107,7 +107,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
107 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 107 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
108 public void testGetSpuPage() { 108 public void testGetSpuPage() {
109 // mock 数据 109 // mock 数据
110 - SpuDO dbSpu = randomPojo(SpuDO.class, o -> { // 等会查询到 110 + ProductSpuDO dbSpu = randomPojo(ProductSpuDO.class, o -> { // 等会查询到
111 o.setName(null); 111 o.setName(null);
112 o.setSellPoint(null); 112 o.setSellPoint(null);
113 o.setDescription(null); 113 o.setDescription(null);
@@ -120,29 +120,29 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -120,29 +120,29 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
120 o.setStatus(null); 120 o.setStatus(null);
121 o.setCreateTime(null); 121 o.setCreateTime(null);
122 }); 122 });
123 - spuMapper.insert(dbSpu); 123 + ProductSpuMapper.insert(dbSpu);
124 // 测试 name 不匹配 124 // 测试 name 不匹配
125 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setName(null))); 125 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setName(null)));
126 // 测试 sellPoint 不匹配 126 // 测试 sellPoint 不匹配
127 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSellPoint(null))); 127 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSellPoint(null)));
128 // 测试 description 不匹配 128 // 测试 description 不匹配
129 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setDescription(null))); 129 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setDescription(null)));
130 // 测试 categoryId 不匹配 130 // 测试 categoryId 不匹配
131 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCategoryId(null))); 131 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCategoryId(null)));
132 // 测试 picUrls 不匹配 132 // 测试 picUrls 不匹配
133 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPicUrls(null))); 133 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPicUrls(null)));
134 // 测试 sort 不匹配 134 // 测试 sort 不匹配
135 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSort(null))); 135 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSort(null)));
136 // 测试 likeCount 不匹配 136 // 测试 likeCount 不匹配
137 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setLikeCount(null))); 137 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setLikeCount(null)));
138 // 测试 price 不匹配 138 // 测试 price 不匹配
139 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPrice(null))); 139 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPrice(null)));
140 // 测试 quantity 不匹配 140 // 测试 quantity 不匹配
141 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setQuantity(null))); 141 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setQuantity(null)));
142 // 测试 status 不匹配 142 // 测试 status 不匹配
143 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setStatus(null))); 143 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setStatus(null)));
144 // 测试 createTime 不匹配 144 // 测试 createTime 不匹配
145 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCreateTime(null))); 145 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCreateTime(null)));
146 // 准备参数 146 // 准备参数
147 SpuPageReqVO reqVO = new SpuPageReqVO(); 147 SpuPageReqVO reqVO = new SpuPageReqVO();
148 reqVO.setName(null); 148 reqVO.setName(null);
@@ -159,7 +159,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -159,7 +159,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
159 reqVO.setEndCreateTime(null); 159 reqVO.setEndCreateTime(null);
160 160
161 // 调用 161 // 调用
162 - PageResult<SpuDO> pageResult = spuService.getSpuPage(reqVO); 162 + PageResult<ProductSpuDO> pageResult = spuService.getSpuPage(reqVO);
163 // 断言 163 // 断言
164 assertEquals(1, pageResult.getTotal()); 164 assertEquals(1, pageResult.getTotal());
165 assertEquals(1, pageResult.getList().size()); 165 assertEquals(1, pageResult.getList().size());
@@ -170,7 +170,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -170,7 +170,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
170 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 170 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
171 public void testGetSpuList() { 171 public void testGetSpuList() {
172 // mock 数据 172 // mock 数据
173 - SpuDO dbSpu = randomPojo(SpuDO.class, o -> { // 等会查询到 173 + ProductSpuDO dbSpu = randomPojo(ProductSpuDO.class, o -> { // 等会查询到
174 o.setName(null); 174 o.setName(null);
175 o.setSellPoint(null); 175 o.setSellPoint(null);
176 o.setDescription(null); 176 o.setDescription(null);
@@ -183,29 +183,29 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -183,29 +183,29 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
183 o.setStatus(null); 183 o.setStatus(null);
184 o.setCreateTime(null); 184 o.setCreateTime(null);
185 }); 185 });
186 - spuMapper.insert(dbSpu); 186 + ProductSpuMapper.insert(dbSpu);
187 // 测试 name 不匹配 187 // 测试 name 不匹配
188 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setName(null))); 188 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setName(null)));
189 // 测试 sellPoint 不匹配 189 // 测试 sellPoint 不匹配
190 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSellPoint(null))); 190 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSellPoint(null)));
191 // 测试 description 不匹配 191 // 测试 description 不匹配
192 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setDescription(null))); 192 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setDescription(null)));
193 // 测试 categoryId 不匹配 193 // 测试 categoryId 不匹配
194 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCategoryId(null))); 194 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCategoryId(null)));
195 // 测试 picUrls 不匹配 195 // 测试 picUrls 不匹配
196 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPicUrls(null))); 196 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPicUrls(null)));
197 // 测试 sort 不匹配 197 // 测试 sort 不匹配
198 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSort(null))); 198 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setSort(null)));
199 // 测试 likeCount 不匹配 199 // 测试 likeCount 不匹配
200 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setLikeCount(null))); 200 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setLikeCount(null)));
201 // 测试 price 不匹配 201 // 测试 price 不匹配
202 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPrice(null))); 202 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setPrice(null)));
203 // 测试 quantity 不匹配 203 // 测试 quantity 不匹配
204 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setQuantity(null))); 204 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setQuantity(null)));
205 // 测试 status 不匹配 205 // 测试 status 不匹配
206 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setStatus(null))); 206 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setStatus(null)));
207 // 测试 createTime 不匹配 207 // 测试 createTime 不匹配
208 - spuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCreateTime(null))); 208 + ProductSpuMapper.insert(cloneIgnoreId(dbSpu, o -> o.setCreateTime(null)));
209 // 准备参数 209 // 准备参数
210 SpuExportReqVO reqVO = new SpuExportReqVO(); 210 SpuExportReqVO reqVO = new SpuExportReqVO();
211 reqVO.setName(null); 211 reqVO.setName(null);
@@ -222,7 +222,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest { @@ -222,7 +222,7 @@ public class SpuServiceImplTest extends BaseDbUnitTest {
222 reqVO.setEndCreateTime(null); 222 reqVO.setEndCreateTime(null);
223 223
224 // 调用 224 // 调用
225 - List<SpuDO> list = spuService.getSpuList(reqVO); 225 + List<ProductSpuDO> list = spuService.getSpuList(reqVO);
226 // 断言 226 // 断言
227 assertEquals(1, list.size()); 227 assertEquals(1, list.size());
228 assertPojoEquals(dbSpu, list.get(0)); 228 assertPojoEquals(dbSpu, list.get(0));
yudao-ui-admin/src/api/mall/market/banner.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 创建Banner
  4 +export function createBanner(data) {
  5 + return request({
  6 + url: '/market/banner/create',
  7 + method: 'post',
  8 + data: data
  9 + })
  10 +}
  11 +
  12 +// 更新Banner
  13 +export function updateBanner(data) {
  14 + return request({
  15 + url: '/market/banner/update',
  16 + method: 'put',
  17 + data: data
  18 + })
  19 +}
  20 +
  21 +// 删除Banner
  22 +export function deleteBanner(id) {
  23 + return request({
  24 + url: '/market/banner/delete?id=' + id,
  25 + method: 'delete'
  26 + })
  27 +}
  28 +
  29 +// 获得Banner
  30 +export function getBanner(id) {
  31 + return request({
  32 + url: '/market/banner/get?id=' + id,
  33 + method: 'get'
  34 + })
  35 +}
  36 +
  37 +// 获得Banner分页
  38 +export function getBannerPage(query) {
  39 + return request({
  40 + url: '/market/banner/page',
  41 + method: 'get',
  42 + params: query
  43 + })
  44 +}
  45 +
  46 +// 导出Banner Excel
  47 +export function exportBannerExcel(query) {
  48 + return request({
  49 + url: '/market/banner/export-excel',
  50 + method: 'get',
  51 + params: query,
  52 + responseType: 'blob'
  53 + })
  54 +}
yudao-ui-admin/src/views/mall/market/banner/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 搜索工作栏 -->
  5 + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  6 + <el-form-item label="标题" prop="title">
  7 + <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery"/>
  8 + </el-form-item>
  9 + <el-form-item label="状态" prop="status">
  10 + <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
  11 + <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
  12 + :key="dict.value" :label="dict.label" :value="dict.value"/>
  13 + </el-select>
  14 + </el-form-item>
  15 + <el-form-item label="创建时间">
  16 + <el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
  17 + type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"/>
  18 + </el-form-item>
  19 + <el-form-item>
  20 + <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
  21 + <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
  22 + </el-form-item>
  23 + </el-form>
  24 +
  25 + <!-- 操作工具栏 -->
  26 + <el-row :gutter="10" class="mb8">
  27 + <el-col :span="1.5">
  28 + <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
  29 + v-hasPermi="['market:banner:create']">新增
  30 + </el-button>
  31 + </el-col>
  32 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  33 + </el-row>
  34 +
  35 + <!-- 列表 -->
  36 + <el-table v-loading="loading" :data="list">
  37 + <el-table-column label="标题" align="center" prop="title"/>
  38 +
  39 + <el-table-column label="缩略图" align="center" prop="picUrl">
  40 + <template slot-scope="scope">
  41 + <img v-if="scope.row.picUrl" :src="scope.row.picUrl" alt="缩略图片" class="img-height"/>
  42 + </template>
  43 + </el-table-column>
  44 + <el-table-column label="跳转链接" align="center" prop="url"/>
  45 + <el-table-column label="排序" align="center" prop="sort"/>
  46 + <el-table-column label="描述" align="center" prop="memo"/>
  47 + <el-table-column label="状态" align="center" prop="status">
  48 + <template slot-scope="scope">
  49 + <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
  50 + </template>
  51 + </el-table-column>
  52 + <el-table-column label="创建时间" align="center" prop="createTime" width="180">
  53 + <template slot-scope="scope">
  54 + <span>{{ parseTime(scope.row.createTime) }}</span>
  55 + </template>
  56 + </el-table-column>
  57 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  58 + <template slot-scope="scope">
  59 + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
  60 + v-hasPermi="['market:banner:update']">修改
  61 + </el-button>
  62 + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
  63 + v-hasPermi="['market:banner:delete']">删除
  64 + </el-button>
  65 + </template>
  66 + </el-table-column>
  67 + </el-table>
  68 + <!-- 分页组件 -->
  69 + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
  70 + @pagination="getList"/>
  71 +
  72 + <!-- 对话框(添加 / 修改) -->
  73 + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  74 + <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  75 + <el-form-item label="标题" prop="title">
  76 + <el-input v-model="form.title" placeholder="请输入标题"/>
  77 + </el-form-item>
  78 + <el-form-item label="缩略图" prop="picUrl">
  79 + <imageUpload v-model="form.picUrl" :limit="1"/>
  80 + </el-form-item>
  81 + <el-form-item label="跳转链接" prop="url">
  82 + <el-input v-model="form.url" placeholder="请输入跳转链接"/>
  83 + </el-form-item>
  84 + <el-form-item label="排序" prop="sort">
  85 + <el-input v-model="form.sort" placeholder="请输入排序"/>
  86 + </el-form-item>
  87 + <el-form-item label="描述" prop="memo">
  88 + <el-input v-model="form.memo" type="textarea" placeholder="请输入描述"/>
  89 + </el-form-item>
  90 + <el-form-item label="状态" prop="status">
  91 + <el-radio-group v-model="form.status">
  92 + <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
  93 + :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }}
  94 + </el-radio>
  95 + </el-radio-group>
  96 + </el-form-item>
  97 + </el-form>
  98 + <div slot="footer" class="dialog-footer">
  99 + <el-button type="primary" @click="submitForm">确 定</el-button>
  100 + <el-button @click="cancel">取 消</el-button>
  101 + </div>
  102 + </el-dialog>
  103 + </div>
  104 +</template>
  105 +
  106 +<script>
  107 +import {
  108 + createBanner,
  109 + deleteBanner,
  110 + exportBannerExcel,
  111 + getBanner,
  112 + getBannerPage,
  113 + updateBanner
  114 +} from "@/api/mall/market/banner";
  115 +import ImageUpload from '@/components/ImageUpload';
  116 +
  117 +export default {
  118 + name: "Banner",
  119 + components: {
  120 + ImageUpload
  121 + },
  122 + data() {
  123 + return {
  124 + // 遮罩层
  125 + loading: true,
  126 + // 导出遮罩层
  127 + exportLoading: false,
  128 + // 显示搜索条件
  129 + showSearch: true,
  130 + // 总条数
  131 + total: 0,
  132 + // 品牌列表
  133 + list: [],
  134 + // 弹出层标题
  135 + title: "",
  136 + // 是否显示弹出层
  137 + open: false,
  138 + dateRangeCreateTime: [],
  139 + // 查询参数
  140 + queryParams: {
  141 + pageNo: 1,
  142 + pageSize: 10,
  143 + title: null,
  144 + status: null,
  145 + },
  146 + // 商品分类树选项
  147 + categoryOptions: [],
  148 + // 表单参数
  149 + form: {},
  150 + // 表单校验
  151 + rules: {
  152 + title: [{required: true, message: "标题不能不空", trigger: "blur"}],
  153 + picUrl: [{required: true, message: "图片地址不能为空", trigger: "blur"}],
  154 + url: [{required: true, message: "跳转地址不能为空", trigger: "blur"}],
  155 + sort: [{required: true, message: "排序不能为空", trigger: "blur"}],
  156 + status: [{required: true, message: "状态不能为空", trigger: "change"}],
  157 + }
  158 + };
  159 + },
  160 + created() {
  161 + this.getList();
  162 + },
  163 + methods: {
  164 + /** 查询列表 */
  165 + getList() {
  166 + this.loading = true;
  167 + // 处理查询参数
  168 + let params = {...this.queryParams};
  169 + this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
  170 + // 执行查询
  171 + getBannerPage(params).then(response => {
  172 + this.list = response.data.list;
  173 + this.total = response.data.total;
  174 + this.loading = false;
  175 + });
  176 + },
  177 + /** 取消按钮 */
  178 + cancel() {
  179 + this.open = false;
  180 + this.reset();
  181 + },
  182 + /** 表单重置 */
  183 + reset() {
  184 + this.form = {
  185 + id: undefined,
  186 + title: undefined,
  187 + link: undefined,
  188 + imgUrl: undefined,
  189 + sort: undefined,
  190 + memo: undefined,
  191 + status: undefined,
  192 + };
  193 + this.resetForm("form");
  194 + },
  195 + /** 搜索按钮操作 */
  196 + handleQuery() {
  197 + this.queryParams.pageNo = 1;
  198 + this.getList();
  199 + },
  200 + /** 重置按钮操作 */
  201 + resetQuery() {
  202 + this.dateRangeCreateTime = [];
  203 + this.resetForm("queryForm");
  204 + this.handleQuery();
  205 + },
  206 + /** 新增按钮操作 */
  207 + handleAdd() {
  208 + this.reset();
  209 + this.open = true;
  210 + this.title = "添加Banner";
  211 + },
  212 + /** 修改按钮操作 */
  213 + handleUpdate(row) {
  214 + this.reset();
  215 + const id = row.id;
  216 + getBanner(id).then(response => {
  217 + this.form = response.data;
  218 + this.open = true;
  219 + this.title = "修改Banner";
  220 + });
  221 + },
  222 + /** 提交按钮 */
  223 + submitForm() {
  224 + this.$refs["form"].validate(valid => {
  225 + if (!valid) {
  226 + return;
  227 + }
  228 + // 修改的提交
  229 + if (this.form.id != null) {
  230 + updateBanner(this.form).then(response => {
  231 + this.$modal.msgSuccess("修改成功");
  232 + this.open = false;
  233 + this.getList();
  234 + });
  235 + return;
  236 + }
  237 + // 添加的提交
  238 + createBanner(this.form).then(response => {
  239 + this.$modal.msgSuccess("新增成功");
  240 + this.open = false;
  241 + this.getList();
  242 + });
  243 + });
  244 + },
  245 + /** 删除按钮操作 */
  246 + handleDelete(row) {
  247 + const id = row.id;
  248 + this.$modal.confirm('是否确认删除Banner编号为"' + id + '"的数据项?').then(function () {
  249 + return deleteBanner(id);
  250 + }).then(() => {
  251 + this.getList();
  252 + this.$modal.msgSuccess("删除成功");
  253 + }).catch(() => {
  254 + });
  255 + }
  256 + }
  257 +};
  258 +</script>
  259 +
  260 +<style scoped lang="scss">
  261 +//
  262 +.img-height {
  263 + height: 150px;
  264 +}
  265 +</style>
yudao-ui-admin/src/views/mall/product/spu/index.vue
@@ -12,24 +12,17 @@ @@ -12,24 +12,17 @@
12 <el-form-item label="分类id" prop="categoryId"> 12 <el-form-item label="分类id" prop="categoryId">
13 <el-input v-model="queryParams.categoryId" placeholder="请输入分类id" clearable @keyup.enter.native="handleQuery"/> 13 <el-input v-model="queryParams.categoryId" placeholder="请输入分类id" clearable @keyup.enter.native="handleQuery"/>
14 </el-form-item> 14 </el-form-item>
15 - <el-form-item label="商品主图地址" prop="picUrls">  
16 - <el-input v-model="queryParams.picUrls" placeholder="请输入商品主图地址" clearable @keyup.enter.native="handleQuery"/>  
17 - </el-form-item>  
18 - <el-form-item label="排序字段" prop="sort">  
19 - <el-input v-model="queryParams.sort" placeholder="请输入排序字段" clearable @keyup.enter.native="handleQuery"/>  
20 - </el-form-item>  
21 - <el-form-item label="点赞初始人数" prop="likeCount">  
22 - <el-input v-model="queryParams.likeCount" placeholder="请输入点赞初始人数" clearable @keyup.enter.native="handleQuery"/>  
23 - </el-form-item>  
24 - <el-form-item label="价格 单位使用:分" prop="price"> 15 + <el-form-item label="价格(分)" prop="price">
25 <el-input v-model="queryParams.price" placeholder="请输入价格 单位使用:分" clearable @keyup.enter.native="handleQuery"/> 16 <el-input v-model="queryParams.price" placeholder="请输入价格 单位使用:分" clearable @keyup.enter.native="handleQuery"/>
26 </el-form-item> 17 </el-form-item>
27 <el-form-item label="库存数量" prop="quantity"> 18 <el-form-item label="库存数量" prop="quantity">
28 <el-input v-model="queryParams.quantity" placeholder="请输入库存数量" clearable @keyup.enter.native="handleQuery"/> 19 <el-input v-model="queryParams.quantity" placeholder="请输入库存数量" clearable @keyup.enter.native="handleQuery"/>
29 </el-form-item> 20 </el-form-item>
30 - <el-form-item label="上下架状态: 0 上架(开启) 1 下架(禁用)" prop="status">  
31 - <el-select v-model="queryParams.status" placeholder="请选择上下架状态: 0 上架(开启) 1 下架(禁用)" clearable size="small"> 21 + <el-form-item label="状态" prop="status">
  22 + <el-select v-model="queryParams.status" placeholder="请选择上下架状态" clearable size="small">
32 <el-option label="请选择字典生成" value="" /> 23 <el-option label="请选择字典生成" value="" />
  24 + <el-option label="上架" value="0" />
  25 + <el-option label="下架" value="1" />
33 </el-select> 26 </el-select>
34 </el-form-item> 27 </el-form-item>
35 <el-form-item label="创建时间"> 28 <el-form-item label="创建时间">
@@ -65,9 +58,9 @@ @@ -65,9 +58,9 @@
65 <el-table-column label="商品主图地址" align="center" prop="picUrls" /> 58 <el-table-column label="商品主图地址" align="center" prop="picUrls" />
66 <el-table-column label="排序字段" align="center" prop="sort" /> 59 <el-table-column label="排序字段" align="center" prop="sort" />
67 <el-table-column label="点赞初始人数" align="center" prop="likeCount" /> 60 <el-table-column label="点赞初始人数" align="center" prop="likeCount" />
68 - <el-table-column label="价格 单位使用:分" align="center" prop="price" /> 61 + <el-table-column label="价格 (分)" align="center" prop="price" />
69 <el-table-column label="库存数量" align="center" prop="quantity" /> 62 <el-table-column label="库存数量" align="center" prop="quantity" />
70 - <el-table-column label="上下架状态: 0 上架(开启) 1 下架(禁用)" align="center" prop="status" /> 63 + <el-table-column label="状态" align="center" prop="status" />
71 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 64 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
72 <template slot-scope="scope"> 65 <template slot-scope="scope">
73 <span>{{ parseTime(scope.row.createTime) }}</span> 66 <span>{{ parseTime(scope.row.createTime) }}</span>
@@ -87,7 +80,7 @@ @@ -87,7 +80,7 @@
87 @pagination="getList"/> 80 @pagination="getList"/>
88 81
89 <!-- 对话框(添加 / 修改) --> 82 <!-- 对话框(添加 / 修改) -->
90 - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> 83 + <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
91 <el-form ref="form" :model="form" :rules="rules" label-width="80px"> 84 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
92 <el-form-item label="商品名称" prop="name"> 85 <el-form-item label="商品名称" prop="name">
93 <el-input v-model="form.name" placeholder="请输入商品名称" /> 86 <el-input v-model="form.name" placeholder="请输入商品名称" />
@@ -116,9 +109,10 @@ @@ -116,9 +109,10 @@
116 <el-form-item label="库存数量" prop="quantity"> 109 <el-form-item label="库存数量" prop="quantity">
117 <el-input v-model="form.quantity" placeholder="请输入库存数量" /> 110 <el-input v-model="form.quantity" placeholder="请输入库存数量" />
118 </el-form-item> 111 </el-form-item>
119 - <el-form-item label="上下架状态: 0 上架(开启) 1 下架(禁用)" prop="status"> 112 + <el-form-item label="上下架状态" prop="status">
120 <el-radio-group v-model="form.status"> 113 <el-radio-group v-model="form.status">
121 - <el-radio label="1">请选择字典生成</el-radio> 114 + <el-radio label="0">上架</el-radio>
  115 + <el-radio label="1">下架</el-radio>
122 </el-radio-group> 116 </el-radio-group>
123 </el-form-item> 117 </el-form-item>
124 </el-form> 118 </el-form>