From 5835635d91ef50f0d475ebb0ff31485a877ae765 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 20 五月 2024 18:09:08 +0800 Subject: [PATCH] Merge branch 'dev-mitao' --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleDTO.java | 25 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleValueServiceImpl.java | 14 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsBrandController.java | 21 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsCategoryVO.java | 23 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsFlavorTypeVO.java | 24 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsSkuDTO.java | 102 ++++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsBrandVO.java | 23 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java | 16 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java | 30 - ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeckillController.java | 19 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSeriesVO.java | 23 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java | 31 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java | 19 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSku.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java | 167 ++++++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java | 26 - ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleValueDTO.java | 28 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleValueService.java | 8 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrandService.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java | 19 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java | 147 ++++++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java | 17 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsInfoTitleController.java | 78 +++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsInfoTitleVO.java | 24 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleService.java | 29 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsInfoTitleQuery.java | 22 /dev/null | 14 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsSkuQuery.java | 26 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java | 18 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 150 ------ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java | 19 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ListStatusDTO.java | 24 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java | 54 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsGroupPurchaseController.java | 19 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/pojo/AuctionSalesroom.java | 4 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSkuVO.java | 87 +++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java | 19 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BasePage.java | 8 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java | 5 41 files changed, 1,164 insertions(+), 238 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ListStatusDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ListStatusDTO.java new file mode 100644 index 0000000..55f31de --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ListStatusDTO.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.api.domain.dto; + +import com.ruoyi.common.core.enums.ListingStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品上下架状态对象", description = "商品上下架状态对象") +public class ListStatusDTO { + + @ApiModelProperty(value = "id") + @NotNull(message = "id不能为空") + private Long id; + + @ApiModelProperty(value = "上架状态 上架中 已下架", notes = "参数传文字") + @NotNull(message = "上架状态不能为空") + private ListingStatusEnum listingStatus; +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java index 83a7f0c..c662034 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java @@ -4,21 +4,14 @@ import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; -import com.ruoyi.system.api.model.*; +import java.util.List; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; - -import java.util.List; @Component public class SysUserFallbackFactory implements FallbackFactory<SysUserClient> { @Override public SysUserClient create(Throwable cause) { return new SysUserClient(){ - - @Override - public R<List<CompanyUserListVo>> getSysUserFromCompanyId(CompanySysUserReq companySysUserReq) { - return R.fail("公司获取关联已有账号失败:" + cause.getMessage()); - } @Override public R<SysUser> getSysUser(Long userId) { @@ -31,25 +24,9 @@ } @Override - public R<List<Integer>> companySaveSysUser(CompanyAddSysUserDto dto) { - return R.fail("添加用户失败:" + cause.getMessage()); - } - - @Override - public R<List<Integer>> addTRepairSysUser(TRepairShopAddDto dto) { - return R.fail("添加修理厂用户失败:" + cause.getMessage()); - } - - @Override public R<List<SysUser>> getUserList(List<Integer> userIds) { return R.fail("通过用户id集合查询用户失败:" + cause.getMessage()); } - - @Override - public R<List<CompanyUserListVo>> getSysUserFromCompanyIdOne(CompanySysUserReq companySysUserReq) { - return R.fail("公司获取账号失败:" + cause.getMessage()); - } - @Override public R<Integer> isAdmin(Long userId) { return R.fail("获取角色信息失败:" + cause.getMessage()); @@ -73,11 +50,6 @@ @Override public R<List<SysUser>> queryUserByPhoneList(List<String> phoneList) { return R.fail("通过手机号集合查询用户失败:" + cause.getMessage()); - } - - @Override - public R<Boolean> addUserRole(List<SysUserRoleDTO> dtoList) { - return R.fail("默认批量添加修理厂失败:" + cause.getMessage()); } @Override diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java index c8dcc52..7a4c2fe 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java @@ -5,21 +5,15 @@ import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.factory.SysUserFallbackFactory; -import com.ruoyi.system.api.model.*; +import java.util.List; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import javax.management.relation.Role; -import java.util.List; - @FeignClient(contextId = "sysUserClient", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = SysUserFallbackFactory.class) public interface SysUserClient { - - @PostMapping("/user/getSysUserFromCompanyId") - R<List<CompanyUserListVo>> getSysUserFromCompanyId(@RequestBody CompanySysUserReq companySysUserReq); @PostMapping("/user/getSysUser") R<SysUser> getSysUser(Long userId); @@ -27,18 +21,8 @@ @PostMapping("/user/updateSysUser") R<Boolean> updateSysUser(@RequestBody SysUser sysUser); - @PostMapping("/user/companySaveSysUser") - R<List<Integer>> companySaveSysUser(@RequestBody CompanyAddSysUserDto dto); - - @PostMapping("/user/addTRepairSysUser") - R<List<Integer>> addTRepairSysUser(@RequestBody TRepairShopAddDto dto); - @PostMapping("/user/getUserList") R<List<SysUser>> getUserList(@RequestBody List<Integer> userIds); - - - @PostMapping("/user/getSysUserFromCompanyIdOne") - R<List<CompanyUserListVo>> getSysUserFromCompanyIdOne(@RequestBody CompanySysUserReq companySysUserReq); @PostMapping("/user/isAdmin") R<Integer> isAdmin(Long userId); @@ -70,14 +54,6 @@ */ @PostMapping("/user/queryUserByPhoneList") R<List<SysUser>> queryUserByPhoneList(@RequestBody List<String> phoneList); - - /** - * 默认批量添加修理厂 - * @param dtoList - * @return - */ - @PostMapping("/user/addUserRole") - R<Boolean> addUserRole(@RequestBody List<SysUserRoleDTO> dtoList); /** * 通过手机号查询用户 diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanyAddSysUserDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanyAddSysUserDto.java deleted file mode 100644 index 4533120..0000000 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanyAddSysUserDto.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ruoyi.system.api.model; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.List; - -@Data -public class CompanyAddSysUserDto { - List<CompanyUserListVo> list; - @ApiModelProperty("公司id") - private Integer companyId; -} \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanySysUserReq.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanySysUserReq.java deleted file mode 100644 index 51ac831..0000000 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanySysUserReq.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ruoyi.system.api.model; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CompanySysUserReq { - private Integer companyId; - private String name; - private List<Integer> userIds; - -} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanyUserListVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanyUserListVo.java deleted file mode 100644 index 74809bb..0000000 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/CompanyUserListVo.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.system.api.model; - -import lombok.Data; - -@Data -public class CompanyUserListVo { - private Long id; - - private String userName; - - private String phoneNumber; - - private String password; - - private String nickName; -} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/SysUserRoleDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/SysUserRoleDTO.java deleted file mode 100644 index f226514..0000000 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/SysUserRoleDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ruoyi.system.api.model; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -@Data -@ApiModel(value = "自动关联修理厂角色DTO") -public class SysUserRoleDTO implements Serializable { - - @ApiModelProperty(value = "用户id") - private Long userId; - @ApiModelProperty(value = "角色id") - private Long roleId; - -} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TRepairShopAdd.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TRepairShopAdd.java deleted file mode 100644 index c416ba9..0000000 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TRepairShopAdd.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ruoyi.system.api.model; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; - -@Data -public class TRepairShopAdd { - @ApiModelProperty("账号") - @NotBlank(message = "账号不能为空") - private String phonenumber; - @ApiModelProperty("密码") - @NotBlank(message = "密码不能为空") - private String pwd; - -} \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TRepairShopAddDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TRepairShopAddDto.java deleted file mode 100644 index a0848d8..0000000 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TRepairShopAddDto.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.ruoyi.system.api.model; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.util.List; -@Data -public class TRepairShopAddDto { - private List<TRepairShopAdd> list; - @ApiModelProperty("修理场id") - @NotNull(message = "修理厂id不能为空") - private Integer repairId; -} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BasePage.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BasePage.java index 4689357..c076a8d 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BasePage.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BasePage.java @@ -2,6 +2,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import javax.validation.constraints.DecimalMin; /** * <p></p> @@ -10,16 +12,20 @@ * @date 2020/8/24 16:39 */ @ApiModel(value = "基础查询列表dto") -public class BasePage { +public class BasePage implements Serializable { + + private static final long serialVersionUID = -6677391205868835849L; /** * 分页参数,当前页码 */ @ApiModelProperty(value = "分页参数,当前页码") + @DecimalMin(value = "1", message = "当前页码最小为1") private Integer pageCurr = 1; /** * 分页参数,每页数量 */ @ApiModelProperty(value = "分页参数,每页数量,默认为10") + @DecimalMin(value = "1", message = "每页数量最低为1") private Integer pageSize = 10; public Integer getPageCurr() { diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/pojo/AuctionSalesroom.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/pojo/AuctionSalesroom.java index d737bee..e2f3298 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/pojo/AuctionSalesroom.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/pojo/AuctionSalesroom.java @@ -71,8 +71,8 @@ @ApiModelProperty(value = "拍卖状态 0=预展中 1=拍卖中 2=已结束") private AuctionStartStatusEnum status; - @ApiModelProperty(value = "拍卖场二维码") - private String auctionSalesroomQrcode; + @ApiModelProperty(value = "拍卖场编码") + private String auctionSalesroomNo; @ApiModelProperty(value = "创建者") @TableField(value = "create_by", fill = FieldFill.INSERT) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsBrandController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsBrandController.java new file mode 100644 index 0000000..652331e --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsBrandController.java @@ -0,0 +1,21 @@ +package com.ruoyi.goods.controller.mamagement; + + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 品牌表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@RestController +@RequestMapping("/mgt/goods-brand") +@RequiredArgsConstructor +public class MgtGoodsBrandController { + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java new file mode 100644 index 0000000..5e36ad0 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.controller.mamagement; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 商品分类表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@RestController +@RequestMapping("/mgt/goods-category") +public class MgtGoodsCategoryController { + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java new file mode 100644 index 0000000..9ee7067 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.controller.mamagement; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 香型表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@RestController +@RequestMapping("/mgt/goods-flavor-type") +public class MgtGoodsFlavorTypeController { + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsGroupPurchaseController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsGroupPurchaseController.java new file mode 100644 index 0000000..0ef3ddd --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsGroupPurchaseController.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.controller.mamagement; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 商品团购表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@RestController +@RequestMapping("/mgt/goods-group-purchase") +public class MgtGoodsGroupPurchaseController { + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsInfoTitleController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsInfoTitleController.java new file mode 100644 index 0000000..cec76e2 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsInfoTitleController.java @@ -0,0 +1,78 @@ +package com.ruoyi.goods.controller.mamagement; + + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.domain.dto.GoodsInfoTitleDTO; +import com.ruoyi.goods.domain.query.GoodsInfoTitleQuery; +import com.ruoyi.goods.domain.vo.GoodsInfoTitleVO; +import com.ruoyi.goods.service.IGoodsInfoTitleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 商品信息标题表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/mgt/goods-info-title") +@Api(value = "管理后台商品信息标题相关接口", tags = {"管理后台接口"}) +public class MgtGoodsInfoTitleController { + + private final IGoodsInfoTitleService goodsInfoTitleService; + + /** + * 获取商品信息标题列表的分页数据。 + * + * @param query 商品信息标题查询条件对象,通过验证后传入。 + * @return 返回一个包含商品信息标题分页数据的结果对象。 + */ + @ApiOperation("获取商品信息标题列表的分页数据") + @PostMapping("/page") + public R<PageDTO<GoodsInfoTitleVO>> getGoodsInfoTitlePage( + @Validated @RequestBody GoodsInfoTitleQuery query) { + return R.ok(goodsInfoTitleService.getGoodsInfoTitlePage(query)); + } + + /** + * 添加/编辑商品信息标题。 该接口用于接收商品信息标题的数据,并将其保存。 + * + * @param dto 商品信息标题数据传输对象,经过验证确保数据的合法性。 + * @return 返回操作结果,如果操作成功,返回一个成功的标识。 + */ + @ApiOperation("添加/编辑 商品信息标题") + @PostMapping("/save") + public R<Void> saveGoodsInfoTitle(@Validated @RequestBody GoodsInfoTitleDTO dto) { + goodsInfoTitleService.saveGoodsInfoTitle(dto); + return R.ok(); + } + + /** + * 删除商品信息标题 + * + * @param id 商品信息标题的ID,用于指定要删除的商品信息标题。 + * @return 返回一个表示操作结果的R<Void>对象,如果操作成功,R对象的status为200;否则根据具体情况进行相应处理。 + */ + @ApiOperation("删除商品信息标题") + @DeleteMapping("/{id}") + public R<Void> deleteGoodsInfoTitle(@PathVariable("id") Long id) { + goodsInfoTitleService.deleteGoodsInfoTitle(id); + return R.ok(); + } + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeckillController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeckillController.java new file mode 100644 index 0000000..3030e1f --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeckillController.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.controller.mamagement; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 商品秒杀表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@RestController +@RequestMapping("/mgt/goods-seckill") +public class MgtGoodsSeckillController { + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java new file mode 100644 index 0000000..48be190 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.controller.mamagement; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 系列表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@RestController +@RequestMapping("/mgt/goods-series") +public class MgtGoodsSeriesController { + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java new file mode 100644 index 0000000..7d53d25 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java @@ -0,0 +1,167 @@ +package com.ruoyi.goods.controller.mamagement; + + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.domain.dto.GoodsSkuDTO; +import com.ruoyi.goods.domain.query.GoodsInfoTitleQuery; +import com.ruoyi.goods.domain.query.GoodsSkuQuery; +import com.ruoyi.goods.domain.vo.GoodsBrandVO; +import com.ruoyi.goods.domain.vo.GoodsCategoryVO; +import com.ruoyi.goods.domain.vo.GoodsFlavorTypeVO; +import com.ruoyi.goods.domain.vo.GoodsInfoTitleVO; +import com.ruoyi.goods.domain.vo.GoodsSeriesVO; +import com.ruoyi.goods.domain.vo.GoodsSkuVO; +import com.ruoyi.goods.service.IGoodsBrandService; +import com.ruoyi.goods.service.IGoodsCategoryService; +import com.ruoyi.goods.service.IGoodsFlavorTypeService; +import com.ruoyi.goods.service.IGoodsInfoTitleService; +import com.ruoyi.goods.service.IGoodsInfoTitleValueService; +import com.ruoyi.goods.service.IGoodsSeriesService; +import com.ruoyi.goods.service.IGoodsSkuService; +import com.ruoyi.system.api.domain.dto.ListStatusDTO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import java.util.List; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 商品表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-16 + */ +@Slf4j +@RestController +@RequestMapping("/mgt/goods-sku") +@RequiredArgsConstructor +@Api(value = "管理后台商品相关接口", tags = {"管理后台接口"}) +public class MgtGoodsSkuController { + + private final IGoodsSkuService goodsSkuService; + private final IGoodsBrandService goodsBrandService; + private final IGoodsSeriesService goodsSeriesService; + private final IGoodsCategoryService goodsCategoryService; + private final IGoodsInfoTitleService goodsInfoTitleService; + private final IGoodsFlavorTypeService goodsFlavorTypeService; + private final IGoodsInfoTitleValueService goodsInfoTitleValueService; + + /** + * 获取商品分类列表的接口 该接口不需要接收任何参数,调用后返回商品分类的列表信息。 + * + * @return R<List < GoodsCategoryVO>> 返回类型为R的封装结果,其中包含商品分类的列表信息。 + * List<GoodsCategoryVO>是商品分类的实体列表,GoodsCategoryVO是商品分类的视图对象。 + */ + @ApiOperation(value = "获取商品分类列表", notes = "获取商品分类列表") + @GetMapping("/category/list") + public R<List<GoodsCategoryVO>> getGoodsCategoryList() { + return R.ok(goodsCategoryService.getGoodsCategoryList()); + } + + /** + * 获取商品系列列表的接口 + * 该接口不需要任何请求参数,调用后返回商品系列的列表信息。 + * + * @return R<List < GoodsSeriesVO>> 返回类型为R的封装结果,其中包含商品系列的列表信息。 + * List<GoodsSeriesVO>是商品系列的实体列表,GoodsSeriesVO是商品系列的视图对象。 + */ + @ApiOperation(value = "获取商品系列列表", notes = "获取商品系列列表") + @GetMapping("/series/list") + public R<List<GoodsSeriesVO>> getGoodsSeriesList() { + return R.ok(goodsSeriesService.getGoodsSeriesList()); + } + + /** + * 获取商品品牌列表的接口 该接口不需要接收任何参数,调用后返回商品品牌的列表信息。 + * + * @return R<List < GoodsBrandVO>> 返回类型为R包装的GoodsBrandVO对象列表,R是框架定义的结果包装类, 其中包含了操作状态码和操作结果信息。 + */ + @ApiOperation(value = "获取商品品牌列表", notes = "获取商品品牌列表") + @GetMapping("/brand/list") + public R<List<GoodsBrandVO>> getGoodsBrandList() { + return R.ok(goodsBrandService.getGoodsBrandList()); + } + + + /** + * 获取商品香型列表 + * <p> + * 该接口用于查询商品的香型列表信息。 不需要传入任何参数,返回商品香型的列表。 + * + * @return R<List < GoodsFlavorTypeVO>> 包含商品香型列表的响应对象。 + */ + @GetMapping("/flavor/list") + public R<List<GoodsFlavorTypeVO>> getGoodsFlavorTypeList() { + return R.ok(goodsFlavorTypeService.getGoodsFlavorTypeList()); + } + + + /** + * 获取商品信息标题列表的分页数据。 + * + * @param query 商品信息标题查询条件对象,通过验证后传入。 + * @return 返回商品信息标题列表的分页数据响应对象。 + */ + @ApiOperation(value = "获取商品信息标题列表的分页数据", notes = "获取商品信息标题列表的分页数据") + @PostMapping("/title/page") + public R<PageDTO<GoodsInfoTitleVO>> getGoodsInfoTitlePage( + @Validated @RequestBody GoodsInfoTitleQuery query) { + return R.ok(goodsInfoTitleService.getGoodsInfoTitlePage(query)); + } + + + /** + * 添加/编辑商品 + * + * @param dto 商品SKU数据传输对象,经过验证的请求体参数,用于传递商品信息。 + * @return R<Void> + */ + @ApiOperation(value = "添加/编辑商品", notes = "添加商品") + @PostMapping("/save") + public R<Void> saveGoods(@Validated @RequestBody GoodsSkuDTO dto) { + try { + goodsSkuService.saveGoods(dto); + } catch (JsonProcessingException e) { + log.error("JSON转换异常", e); + return R.fail(); + } + return R.ok(); + } + + /** + * 获取商品列表的分页数据 + * + * @param query 商品分页查询条件 + * @return 返回商品分页数据的响应对象 + */ + @ApiOperation(value = "获取商品列表的分页数据", notes = "获取商品列表的分页数据") + @PostMapping("/page") + public R<PageDTO<GoodsSkuVO>> getGoodsPage(@Validated @RequestBody GoodsSkuQuery query) { + return R.ok(goodsSkuService.getGoodsPage(query)); + } + + /** + * 更新商品状态,实现商品的下架或上架。 + * + * @param dto 包含需要更新状态的商品信息的数据传输对象,类型为 ListStatusDTO。 + * @return 返回一个表示操作结果的 R<Void> 对象,如果操作成功,则 R<Void>.ok() 方法返回一个成功标记。 + */ + @ApiOperation(value = "下架/上架 商品") + @PutMapping("/upd-status") + public R<Void> updStatus(@RequestBody ListStatusDTO dto) { + goodsSkuService.updStatus(dto); + return R.ok(); + } + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleDTO.java new file mode 100644 index 0000000..6c169e6 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleDTO.java @@ -0,0 +1,25 @@ +package com.ruoyi.goods.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品信息标题数据传输对象", description = "商品信息标题数据传输对象") +public class GoodsInfoTitleDTO { + + @ApiModelProperty(value = "商品信息标题id") + @NotNull(message = "商品信息标题id不能为空") + private Long id; + + @ApiModelProperty(value = "标题名称") + @NotBlank(message = "标题名称不能为空") + private String titleName; + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleValueDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleValueDTO.java new file mode 100644 index 0000000..3e8c8d7 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsInfoTitleValueDTO.java @@ -0,0 +1,28 @@ +package com.ruoyi.goods.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品信息数据传输对象", description = "商品信息数据传输对象") +public class GoodsInfoTitleValueDTO implements Serializable { + + private static final long serialVersionUID = -6419722448469655827L; + + @ApiModelProperty(value = "商品信息标题id") + @NotNull(message = "商品信息标题id不能为空") + private Long goodsInfoTitleId; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "排序") + private Integer sortNum; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsSkuDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsSkuDTO.java new file mode 100644 index 0000000..ca54b48 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/GoodsSkuDTO.java @@ -0,0 +1,102 @@ +package com.ruoyi.goods.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品sku数据传输对象", description = "商品sku数据传输对象") +public class GoodsSkuDTO implements Serializable { + + private static final long serialVersionUID = 1717246837055584271L; + + @ApiModelProperty(value = "商品id", notes = "更新必传") + private Long id; + + @ApiModelProperty(value = "商品名称") + @NotBlank(message = "商品名称不能为空") + private String skuName; + + @ApiModelProperty(value = "商品年份") + @NotBlank(message = "商品年份不能为空") + private String years; + + @ApiModelProperty(value = "商品分类id") + @NotNull(message = "商品分类id不能为空") + private Long categoryId; + + @ApiModelProperty(value = "商品系列id") + @NotNull(message = "商品系列id不能为空") + private Long seriesId; + + @ApiModelProperty(value = "商品品牌id") + @NotNull(message = "商品品牌id不能为空") + private Long brandId; + + @ApiModelProperty(value = "商品香型id") + @NotNull(message = "商品香型id不能为空") + private Long flavorTypeId; + + @ApiModelProperty(value = "商品价格") + @NotNull(message = "商品价格不能为空") + private BigDecimal price; + + @ApiModelProperty(value = "库存") + @NotNull(message = "库存不能为空") + private Integer stock; + + @ApiModelProperty(value = "单位") + @NotBlank(message = "单位不能为空") + private String unit; + + @ApiModelProperty(value = "规格") + private String spec; + + @ApiModelProperty(value = "规格单位") + private String specUnit; + + @ApiModelProperty(value = "封面图") + @NotBlank(message = "封面图不能为空") + private String coverPic; + + @ApiModelProperty(value = "详情图,不超过五张图片,多张照片使用英文逗号拼接") + @NotBlank(message = "详情图不能为空") + private String album; + + @ApiModelProperty(value = "分享标题") + @NotBlank(message = "分享标题不能为空") + private String shareTitle; + + @ApiModelProperty(value = "分享图片") + @NotBlank(message = "分享图片不能为空") + private String sharePic; + + @ApiModelProperty(value = "商品信息") + @NotEmpty(message = "商品信息不能为空") + @Valid + private List<GoodsInfoTitleValueDTO> goodsInfoTitleValueDTOList; + + @ApiModelProperty(value = "商品描述") + @NotBlank(message = "商品描述不能为空") + private String description; + + @ApiModelProperty(value = "商品说明") + @NotBlank(message = "商品说明不能为空") + private String detail; + + @ApiModelProperty(value = "排序") + private Integer sortNum; + + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSku.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSku.java index ba046c9..f640acb 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSku.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSku.java @@ -61,6 +61,9 @@ @ApiModelProperty(value = "库存") private Integer stock; + @ApiModelProperty(value = "已售数量") + private Integer soldQuantity; + @ApiModelProperty(value = "单位") private String unit; @@ -74,7 +77,7 @@ private String coverPic; @ApiModelProperty(value = "详情图,不超过五张图片") - private String alubm; + private String album; @ApiModelProperty(value = "分享标题") private String shareTitle; diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsInfoTitleQuery.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsInfoTitleQuery.java new file mode 100644 index 0000000..a294b0f --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsInfoTitleQuery.java @@ -0,0 +1,22 @@ +package com.ruoyi.goods.domain.query; + +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "商品信息标题查询对象", description = "商品信息标题查询对象") +public class GoodsInfoTitleQuery extends BasePage { + + private static final long serialVersionUID = -5680812329761912738L; + + @ApiModelProperty(value = "标题名称") + private String titleName; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsSkuQuery.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsSkuQuery.java new file mode 100644 index 0000000..2e9b783 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/query/GoodsSkuQuery.java @@ -0,0 +1,26 @@ +package com.ruoyi.goods.domain.query; + +import com.ruoyi.common.core.enums.ListingStatusEnum; +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "商品sku查询对象", description = "商品sku查询对象") +public class GoodsSkuQuery extends BasePage { + + private static final long serialVersionUID = 1936789008079678538L; + + @ApiModelProperty(value = "商品名称") + private String skuName; + + @ApiModelProperty(value = "上架状态 上架中 已下架", notes = "参数传文字") + private ListingStatusEnum listingStatus; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsBrandVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsBrandVO.java new file mode 100644 index 0000000..d4dcdb5 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsBrandVO.java @@ -0,0 +1,23 @@ +package com.ruoyi.goods.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品品牌视图对象", description = "商品品牌视图对象") +public class GoodsBrandVO implements Serializable { + + private static final long serialVersionUID = -3410809707312808498L; + + @ApiModelProperty(value = "品牌id") + private Long id; + + @ApiModelProperty(value = "品牌名称") + private String brandName; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsCategoryVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsCategoryVO.java new file mode 100644 index 0000000..4fec177 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsCategoryVO.java @@ -0,0 +1,23 @@ +package com.ruoyi.goods.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品分类视图对象", description = "商品分类视图对象") +public class GoodsCategoryVO implements Serializable { + + private static final long serialVersionUID = 5709489391987782043L; + + @ApiModelProperty(value = "商品分类id") + private Long id; + + @ApiModelProperty(value = "分类名称") + private String categoryName; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsFlavorTypeVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsFlavorTypeVO.java new file mode 100644 index 0000000..e9e2327 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsFlavorTypeVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.goods.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "香型视图对象", description = "香型视图对象") +public class GoodsFlavorTypeVO implements Serializable { + + private static final long serialVersionUID = -9190780555638450511L; + + @ApiModelProperty(value = "香型id") + private Long id; + + @ApiModelProperty(value = "香型名称") + private String flavorTypeName; + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsInfoTitleVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsInfoTitleVO.java new file mode 100644 index 0000000..eccc7fa --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsInfoTitleVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.goods.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品信息标题视图对象", description = "商品信息标题视图对象") +public class GoodsInfoTitleVO implements Serializable { + + private static final long serialVersionUID = 1305732550790329483L; + + @ApiModelProperty(value = "商品信息标题id") + private Long id; + + @ApiModelProperty(value = "标题名称") + private String titleName; + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSeriesVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSeriesVO.java new file mode 100644 index 0000000..c2ed2b5 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSeriesVO.java @@ -0,0 +1,23 @@ +package com.ruoyi.goods.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品系列视图对象", description = "商品系列视图对象") +public class GoodsSeriesVO implements Serializable { + + private static final long serialVersionUID = -4711563700322753898L; + + @ApiModelProperty(value = "系列id") + private Long id; + + @ApiModelProperty(value = "系列名称") + private String seriesName; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSkuVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSkuVO.java new file mode 100644 index 0000000..630be9a --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/GoodsSkuVO.java @@ -0,0 +1,87 @@ +package com.ruoyi.goods.domain.vo; + +import com.ruoyi.common.core.enums.ListingStatusEnum; +import com.ruoyi.goods.domain.dto.GoodsInfoTitleValueDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; +import lombok.Data; + +/** + * @author mitao + * @date 2024/5/20 + */ +@Data +@ApiModel(value = "商品sku视图对象", description = "商品sku视图对象") +public class GoodsSkuVO implements Serializable { + + private static final long serialVersionUID = 6605575092116471441L; + + @ApiModelProperty(value = "商品id", notes = "更新必传") + private Long id; + + @ApiModelProperty(value = "商品名称") + private String skuName; + + @ApiModelProperty(value = "商品年份") + private String years; + + @ApiModelProperty(value = "商品分类id") + private Long categoryId; + + @ApiModelProperty(value = "商品系列id") + private Long seriesId; + + @ApiModelProperty(value = "商品品牌id") + private Long brandId; + + @ApiModelProperty(value = "商品香型id") + private Long flavorTypeId; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "已售数量") + private Integer soldQuantity; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "规格") + private String spec; + + @ApiModelProperty(value = "规格单位") + private String specUnit; + + @ApiModelProperty(value = "封面图") + private String coverPic; + + @ApiModelProperty(value = "详情图,不超过五张图片,多张照片使用英文逗号拼接") + private String album; + + @ApiModelProperty(value = "分享标题") + private String shareTitle; + + @ApiModelProperty(value = "分享图片") + private String sharePic; + + @ApiModelProperty(value = "商品信息") + private List<GoodsInfoTitleValueDTO> goodsInfoTitleValueDTOList; + + @ApiModelProperty(value = "商品描述") + private String description; + + @ApiModelProperty(value = "商品说明") + private String detail; + + @ApiModelProperty(value = "排序") + private Integer sortNum; + + @ApiModelProperty(value = "上架状态 0=上架中 1= 已下架") + private ListingStatusEnum listingStatus; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrandService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrandService.java index f84a1d9..a25cb72 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrandService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrandService.java @@ -1,7 +1,9 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsBrand; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.goods.domain.pojo.GoodsBrand; +import com.ruoyi.goods.domain.vo.GoodsBrandVO; +import java.util.List; /** * <p> @@ -13,4 +15,5 @@ */ public interface IGoodsBrandService extends IService<GoodsBrand> { + List<GoodsBrandVO> getGoodsBrandList(); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java index 89e3d2e..4a1a631 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java @@ -1,7 +1,9 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsCategory; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.goods.domain.pojo.GoodsCategory; +import com.ruoyi.goods.domain.vo.GoodsCategoryVO; +import java.util.List; /** * <p> @@ -13,4 +15,5 @@ */ public interface IGoodsCategoryService extends IService<GoodsCategory> { + List<GoodsCategoryVO> getGoodsCategoryList(); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java index 6ef2d1c..4d36b4e 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java @@ -1,7 +1,9 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsFlavorType; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.goods.domain.pojo.GoodsFlavorType; +import com.ruoyi.goods.domain.vo.GoodsFlavorTypeVO; +import java.util.List; /** * <p> @@ -13,4 +15,5 @@ */ public interface IGoodsFlavorTypeService extends IService<GoodsFlavorType> { + List<GoodsFlavorTypeVO> getGoodsFlavorTypeList(); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleService.java index 9e8a6ef..70ffe1d 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleService.java @@ -1,7 +1,11 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsInfoTitle; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.domain.dto.GoodsInfoTitleDTO; +import com.ruoyi.goods.domain.pojo.GoodsInfoTitle; +import com.ruoyi.goods.domain.query.GoodsInfoTitleQuery; +import com.ruoyi.goods.domain.vo.GoodsInfoTitleVO; /** * <p> @@ -13,4 +17,27 @@ */ public interface IGoodsInfoTitleService extends IService<GoodsInfoTitle> { + /** + * 获取商品信息标题的分页数据。 + * + * @param query 查询条件,包含当前页、每页大小和标题名称等条件。 + * @return 返回商品信息标题的分页DTO,包含分页信息和转换后的VO对象列表。 + */ + PageDTO<GoodsInfoTitleVO> getGoodsInfoTitlePage(GoodsInfoTitleQuery query); + + /** + * 保存或更新商品信息标题。 + * + * @param dto 商品信息标题数据传输对象,包含商品标题的信息。 如果dto中的id为空,则认为是新纪录,执行保存操作; 如果id不为空,则认为是更新现有纪录。 + * @return 无返回值。 + */ + void saveGoodsInfoTitle(GoodsInfoTitleDTO dto); + + /** + * 删除商品信息标题 + * + * @param id 商品信息的唯一标识符 + * @return 无返回值 + */ + void deleteGoodsInfoTitle(Long id); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleValueService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleValueService.java index e24057b..5d15077 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleValueService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleValueService.java @@ -1,7 +1,7 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; /** * <p> @@ -13,4 +13,10 @@ */ public interface IGoodsInfoTitleValueService extends IService<GoodsInfoTitleValue> { + /** + * 根据商品SKU ID移除相关记录。 + * + * @param id 商品SKU的唯一标识符。 + */ + void removeByGoodsSkuId(Long id); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java index f03a1a5..ea58e38 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java @@ -1,7 +1,9 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsSeries; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.goods.domain.pojo.GoodsSeries; +import com.ruoyi.goods.domain.vo.GoodsSeriesVO; +import java.util.List; /** * <p> @@ -13,4 +15,5 @@ */ public interface IGoodsSeriesService extends IService<GoodsSeries> { + List<GoodsSeriesVO> getGoodsSeriesList(); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java index 9b8a23f..0368538 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java @@ -1,7 +1,13 @@ package com.ruoyi.goods.service; -import com.ruoyi.goods.domain.pojo.GoodsSku; import com.baomidou.mybatisplus.extension.service.IService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.domain.dto.GoodsSkuDTO; +import com.ruoyi.goods.domain.pojo.GoodsSku; +import com.ruoyi.goods.domain.query.GoodsSkuQuery; +import com.ruoyi.goods.domain.vo.GoodsSkuVO; +import com.ruoyi.system.api.domain.dto.ListStatusDTO; /** * <p> @@ -13,4 +19,27 @@ */ public interface IGoodsSkuService extends IService<GoodsSku> { + /** + * 保存商品SKU信息。 + * + * @param dto 商品SKU的DTO(数据传输对象),包含要保存或更新的商品SKU的详细信息。 + * @throws JsonProcessingException 当处理JSON数据时发生错误。 + */ + void saveGoods(GoodsSkuDTO dto) throws JsonProcessingException; + + /** + * 获取商品SKU分页数据 + * + * @param query 查询条件,包括SKU名称、上架状态、页码和页大小 + * @return 分页数据对象,包含商品SKU的信息 + */ + PageDTO<GoodsSkuVO> getGoodsPage(GoodsSkuQuery query); + + /** + * 更新商品SKU的状态。 + * + * @param dto 数据传输对象,包含需要更新的SKU的ID和新的上架状态。 其中,ID用于指定要更新的具体SKU,listingStatus用于指定新的上架状态。 + * @return 无返回值。 + */ + void updStatus(ListStatusDTO dto); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java index b9c86d5..d6c0e03 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java @@ -1,9 +1,12 @@ package com.ruoyi.goods.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.goods.domain.pojo.GoodsBrand; +import com.ruoyi.goods.domain.vo.GoodsBrandVO; import com.ruoyi.goods.mapper.GoodsBrandMapper; import com.ruoyi.goods.service.IGoodsBrandService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; import org.springframework.stereotype.Service; /** @@ -17,4 +20,17 @@ @Service public class GoodsBrandServiceImpl extends ServiceImpl<GoodsBrandMapper, GoodsBrand> implements IGoodsBrandService { + /** + * 获取商品品牌列表。 + * <p>此方法通过调用{@code list()}方法获取原始列表,并使用BeanUtils的{@code copyList}方法将其复制为{@code + * GoodsBrandVO}类型的列表后返回。</p> + * + * @return 返回一个{@code GoodsBrandVO}类型的列表,包含商品品牌信息。 + */ + @Override + public List<GoodsBrandVO> getGoodsBrandList() { + // 将原始列表转换为GoodsBrandVO类型的列表 + return BeanUtils.copyList(this.list(), GoodsBrandVO.class); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java index 0cbddd2..04e05ad 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java @@ -1,9 +1,12 @@ package com.ruoyi.goods.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.goods.domain.pojo.GoodsCategory; +import com.ruoyi.goods.domain.vo.GoodsCategoryVO; import com.ruoyi.goods.mapper.GoodsCategoryMapper; import com.ruoyi.goods.service.IGoodsCategoryService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; import org.springframework.stereotype.Service; /** @@ -17,4 +20,16 @@ @Service public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper, GoodsCategory> implements IGoodsCategoryService { + /** + * 获取商品类别列表的副本。 + * <p>此方法不接受任何参数,它会调用 {@code list()} 方法获取当前类别列表的副本,并将其转换为 {@code GoodsCategoryVO} 类型的列表后返回。</p> + * + * @return 返回一个 {@code List<GoodsCategoryVO>},包含当前商品类别的所有信息的副本。 + */ + @Override + public List<GoodsCategoryVO> getGoodsCategoryList() { + // 使用BeanUtils的copyList方法将当前列表转换为GoodsCategoryVO类型的列表并返回 + return BeanUtils.copyList(this.list(), GoodsCategoryVO.class); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java index c9eeba4..9b77717 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java @@ -1,9 +1,12 @@ package com.ruoyi.goods.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.goods.domain.pojo.GoodsFlavorType; +import com.ruoyi.goods.domain.vo.GoodsFlavorTypeVO; import com.ruoyi.goods.mapper.GoodsFlavorTypeMapper; import com.ruoyi.goods.service.IGoodsFlavorTypeService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; import org.springframework.stereotype.Service; /** @@ -17,4 +20,15 @@ @Service public class GoodsFlavorTypeServiceImpl extends ServiceImpl<GoodsFlavorTypeMapper, GoodsFlavorType> implements IGoodsFlavorTypeService { + /** + * 获取商品口味类型的列表。 + * <p>此方法通过调用 {@code list()} 方法获取原始列表,并使用 {@code BeanUtils.copyList} 方法将每个元素转换为 + * {@code GoodsFlavorTypeVO} 类型,最终返回转换后的列表。</p> + * + * @return 返回一个 {@code List<GoodsFlavorTypeVO>},包含转换后的商品口味类型信息。 + */ + @Override + public List<GoodsFlavorTypeVO> getGoodsFlavorTypeList() { + return BeanUtils.copyList(this.list(), GoodsFlavorTypeVO.class); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java index 8574538..b75231c 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java @@ -1,9 +1,16 @@ package com.ruoyi.goods.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.page.BeanUtils; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.domain.dto.GoodsInfoTitleDTO; import com.ruoyi.goods.domain.pojo.GoodsInfoTitle; +import com.ruoyi.goods.domain.query.GoodsInfoTitleQuery; +import com.ruoyi.goods.domain.vo.GoodsInfoTitleVO; import com.ruoyi.goods.mapper.GoodsInfoTitleMapper; import com.ruoyi.goods.service.IGoodsInfoTitleService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +24,49 @@ @Service public class GoodsInfoTitleServiceImpl extends ServiceImpl<GoodsInfoTitleMapper, GoodsInfoTitle> implements IGoodsInfoTitleService { + /** + * 获取商品信息标题的分页数据。 + * + * @param query 查询条件,包含当前页、每页大小和标题名称等条件。 + * @return 返回商品信息标题的分页DTO,包含分页信息和转换后的VO对象列表。 + */ + @Override + public PageDTO<GoodsInfoTitleVO> getGoodsInfoTitlePage(GoodsInfoTitleQuery query) { + // 根据查询条件进行查询,包括标题名称的模糊查询,并分页 + Page<GoodsInfoTitle> page = this.lambdaQuery() + .like(StringUtils.isNotEmpty(query.getTitleName()), GoodsInfoTitle::getTitleName, + query.getTitleName()) + .page(new Page<GoodsInfoTitle>(query.getPageCurr(), query.getPageSize())); + // 将查询结果转换为VO对象的分页DTO返回 + return PageDTO.of(page, GoodsInfoTitleVO.class); + } + + /** + * 保存或更新商品信息标题。 + * + * @param dto 商品信息标题数据传输对象,包含商品标题的信息。 如果dto中的id为空,则认为是新纪录,执行保存操作; 如果id不为空,则认为是更新现有纪录。 + * @return 无返回值。 + */ + @Override + public void saveGoodsInfoTitle(GoodsInfoTitleDTO dto) { + // 将DTO对象复制为GoodsInfoTitle实体对象 + GoodsInfoTitle goodsInfoTitle = BeanUtils.copyBean(dto, GoodsInfoTitle.class); + // 判断DTO中的ID是否为空,决定是进行保存还是更新操作 + if (StringUtils.isNull(dto.getId())) { + this.save(goodsInfoTitle); // 保存新纪录 + } else { + this.updateById(goodsInfoTitle); // 更新现有纪录 + } + } + + /** + * 删除商品信息标题 + * + * @param id 商品信息的唯一标识符 + * @return 无返回值 + */ + @Override + public void deleteGoodsInfoTitle(Long id) { + this.removeById(id); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleValueServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleValueServiceImpl.java index fa0b5c4..98d9d19 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleValueServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleValueServiceImpl.java @@ -1,9 +1,9 @@ package com.ruoyi.goods.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; import com.ruoyi.goods.mapper.GoodsInfoTitleValueMapper; import com.ruoyi.goods.service.IGoodsInfoTitleValueService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +17,16 @@ @Service public class GoodsInfoTitleValueServiceImpl extends ServiceImpl<GoodsInfoTitleValueMapper, GoodsInfoTitleValue> implements IGoodsInfoTitleValueService { + /** + * 根据商品SKU ID移除相应的商品信息标题值。 + * + * @param id 商品SKU的唯一标识符。 + * <p> + * 本方法通过使用Lambda更新表达式,设置条件为商品SKU ID与传入的ID相等,然后执行移除操作。 + */ + @Override + public void removeByGoodsSkuId(Long id) { + this.lambdaUpdate().eq(GoodsInfoTitleValue::getGoodsSkuId, id).remove(); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java index a516914..12b14a2 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java @@ -1,9 +1,12 @@ package com.ruoyi.goods.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.goods.domain.pojo.GoodsSeries; +import com.ruoyi.goods.domain.vo.GoodsSeriesVO; import com.ruoyi.goods.mapper.GoodsSeriesMapper; import com.ruoyi.goods.service.IGoodsSeriesService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; import org.springframework.stereotype.Service; /** @@ -17,4 +20,18 @@ @Service public class GoodsSeriesServiceImpl extends ServiceImpl<GoodsSeriesMapper, GoodsSeries> implements IGoodsSeriesService { + /** + * 获取商品系列列表的视图对象。 + * + * <p>此方法不接受任何参数,它会调用 {@code list()} 方法获取原始列表, + * 然后使用 {@code BeanUtils.copyList} 将这些实体转换为视图对象。</p> + * + * @return 返回一个 {@link List} 类型的商品系列视图对象列表。每个视图对象代表一个商品系列的简要信息。 + */ + @Override + public List<GoodsSeriesVO> getGoodsSeriesList() { + // 使用BeanUtils工具类将实体列表转换为视图对象列表 + return BeanUtils.copyList(this.list(), GoodsSeriesVO.class); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java index 565f595..5e5fca8 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java @@ -1,10 +1,31 @@ package com.ruoyi.goods.service.impl; -import com.ruoyi.goods.domain.pojo.GoodsSku; -import com.ruoyi.goods.mapper.GoodsSkuMapper; -import com.ruoyi.goods.service.IGoodsSkuService; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.page.BeanUtils; +import com.ruoyi.common.core.utils.page.Checker; +import com.ruoyi.common.core.utils.page.CollUtils; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.domain.dto.GoodsInfoTitleValueDTO; +import com.ruoyi.goods.domain.dto.GoodsSkuDTO; +import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; +import com.ruoyi.goods.domain.pojo.GoodsSku; +import com.ruoyi.goods.domain.query.GoodsSkuQuery; +import com.ruoyi.goods.domain.vo.GoodsSkuVO; +import com.ruoyi.goods.mapper.GoodsSkuMapper; +import com.ruoyi.goods.service.IGoodsInfoTitleValueService; +import com.ruoyi.goods.service.IGoodsSkuService; +import com.ruoyi.system.api.domain.dto.ListStatusDTO; +import java.util.List; +import java.util.Objects; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -15,6 +36,126 @@ * @since 2024-05-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> implements IGoodsSkuService { + private final IGoodsInfoTitleValueService goodsInfoTitleValueService; + private static final ObjectMapper objectMapper = new ObjectMapper(); + + /** + * 保存商品SKU信息。 + * + * @param dto 商品SKU的DTO(数据传输对象),包含要保存或更新的商品SKU的详细信息。 + * @throws JsonProcessingException 当处理JSON数据时发生错误。 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void saveGoods(GoodsSkuDTO dto) throws JsonProcessingException { + // 使用BeanUtils将DTO对象复制到GoodsSku实体对象 + GoodsSku goodsSku = BeanUtils.copyBean(dto, GoodsSku.class); + + // 分割并处理专辑图片字符串,将其转换为JSON格式 + String albumStr = processAlbumString(goodsSku.getAlbum()); + + goodsSku.setAlbum(albumStr); + + // 根据ID判断是进行新增还是更新操作 + if (Objects.isNull(dto.getId())) { + this.save(goodsSku); + } else { + this.updateById(goodsSku); + } + + // 处理商品额外信息,如规格、属性等 + processGoodsInfoTitleValue(dto, goodsSku); + } + + /** + * 处理相册字符串。 该方法将输入的相册字符串分割为字符串数组,并将其序列化为JSON字符串形式返回。 如果输入的相册字符串为空或仅包含空白字符,则返回空字符串。 + * + * @param album 输入的相册字符串,可能包含多个相册名称,各相册名称之间以逗号分隔。 + * @return 返回序列化后的相册名称数组的JSON字符串。如果输入为空,则返回空字符串。 + * @throws JsonProcessingException 如果在序列化过程中发生错误,则抛出此异常。 + */ + private String processAlbumString(String album) throws JsonProcessingException { + if (StringUtils.isEmpty(album)) { + return ""; // 返回空字符串,避免后续处理出现问题 + } + String[] albumArr = album.split(","); + return objectMapper.writeValueAsString(albumArr); + } + + /** + * 处理商品信息标题和值的逻辑。 将DTO列表复制到实体列表中,校验其完整性和正确性,然后关联SKU ID,并最后保存到数据库。 + * + * @param dto 包含商品信息标题和值的DTO对象 + * @param goodsSku 商品SKU实体,用于关联商品额外信息 + * @throws ServiceException 如果校验失败或数据处理出现异常,则抛出服务异常 + */ + private void processGoodsInfoTitleValue(GoodsSkuDTO dto, GoodsSku goodsSku) + throws ServiceException { + List<GoodsInfoTitleValueDTO> goodsInfoTitleValueDTOList = dto.getGoodsInfoTitleValueDTOList(); + + // 复制DTO列表到实体列表 + List<GoodsInfoTitleValue> goodsInfoTitleValues = BeanUtils.copyList( + goodsInfoTitleValueDTOList, GoodsInfoTitleValue.class); + + // 校验商品额外信息的完整性和正确性 + CollUtils.check(goodsInfoTitleValues, new Checker<GoodsInfoTitleValue>() { + @Override + public void check(GoodsInfoTitleValue data) { + if (StringUtils.isNull(data.getGoodsInfoTitleId())) { + throw new ServiceException("商品信息标题id不能为空"); + } + if (StringUtils.isEmpty(data.getContent())) { + throw new ServiceException("商品信息内容不能为空"); + } + } + }); + + // 给每个商品额外信息关联上SKU ID + for (GoodsInfoTitleValue goodsInfoTitleValue : goodsInfoTitleValues) { + goodsInfoTitleValue.setGoodsSkuId(goodsSku.getId()); + } + + // 先清除旧的商品信息,再批量保存新的商品信息 + goodsInfoTitleValueService.removeByGoodsSkuId(goodsSku.getId()); + goodsInfoTitleValueService.saveBatch(goodsInfoTitleValues); + } + + /** + * 获取商品SKU分页数据 + * + * @param query 查询条件,包括SKU名称、上架状态、页码和页大小 + * @return 分页数据对象,包含商品SKU的信息 + */ + @Override + public PageDTO<GoodsSkuVO> getGoodsPage(GoodsSkuQuery query) { + Page<GoodsSku> page = this.lambdaQuery() + .select(GoodsSku::getId, GoodsSku::getSkuName, GoodsSku::getPrice, + GoodsSku::getStock, GoodsSku::getSoldQuantity, GoodsSku::getSortNum, + GoodsSku::getListingStatus) + .like(StringUtils.isNotEmpty(query.getSkuName()), GoodsSku::getSkuName, + query.getSkuName()) + .eq(StringUtils.isNotNull(query.getListingStatus() + ), GoodsSku::getListingStatus, query.getListingStatus()) + .page(new Page<GoodsSku>(query.getPageCurr(), query.getPageSize())); + + return PageDTO.of(page, GoodsSkuVO.class); + } + + /** + * 更新商品SKU的状态。 + * + * @param dto 数据传输对象,包含需要更新的SKU的ID和新的上架状态。 其中,ID用于指定要更新的具体SKU,listingStatus用于指定新的上架状态。 + * @return 无返回值。 + */ + @Override + public void updStatus(ListStatusDTO dto) { + this.lambdaUpdate() + .eq(GoodsSku::getId, dto.getId()) + .set(GoodsSku::getListingStatus, dto.getListingStatus()) + .update(); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 3201b9f..91754e3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -16,13 +16,7 @@ import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.model.CompanyAddSysUserDto; -import com.ruoyi.system.api.model.CompanySysUserReq; -import com.ruoyi.system.api.model.CompanyUserListVo; import com.ruoyi.system.api.model.LoginUser; -import com.ruoyi.system.api.model.SysUserRoleDTO; -import com.ruoyi.system.api.model.TRepairShopAdd; -import com.ruoyi.system.api.model.TRepairShopAddDto; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysDeptService; @@ -34,7 +28,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.io.IOException; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @@ -228,53 +221,7 @@ return R.ok(list); } - @PostMapping("/getSysUserFromCompanyId") - public R<List<CompanyUserListVo>> getSysUserFromCompanyId(@RequestBody CompanySysUserReq companySysUserReq) { - LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); - if (companySysUserReq.getUserIds().size() == 0) { - List<Integer> userIds = companySysUserReq.getUserIds(); - userIds.add(-1); - companySysUserReq.setUserIds(userIds); - } - sysUserLambdaQueryWrapper.in(SysUser::getUserId, companySysUserReq.getUserIds()); - if (companySysUserReq.getName() != null && !"".equals(companySysUserReq.getName())) { - sysUserLambdaQueryWrapper.like(SysUser::getUserName, companySysUserReq.getName()).or().like(SysUser::getPhonenumber, companySysUserReq.getName()); - } - sysUserLambdaQueryWrapper.eq(SysUser::getRoleType,2); - List<SysUser> list = userService.list(sysUserLambdaQueryWrapper); - ArrayList<CompanyUserListVo> companyUserListVos = new ArrayList<>(); - for (SysUser sysUser : list) { - CompanyUserListVo companyUserListVo = new CompanyUserListVo(); - companyUserListVo.setId(sysUser.getUserId()); - companyUserListVo.setPassword(sysUser.getPassword()); - companyUserListVo.setPhoneNumber(sysUser.getPhonenumber()); - companyUserListVo.setUserName(sysUser.getUserName()); - companyUserListVo.setNickName(sysUser.getNickName()); - companyUserListVos.add(companyUserListVo); - } - return R.ok(companyUserListVos); - } - @PostMapping("/getSysUserFromCompanyIdOne") - public R<List<CompanyUserListVo>> getSysUserFromCompanyIdOne(@RequestBody CompanySysUserReq companySysUserReq) { - LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); - sysUserLambdaQueryWrapper.eq(SysUser::getRoleType, 2); - if (companySysUserReq.getName() != null && !"".equals(companySysUserReq.getName())) { - sysUserLambdaQueryWrapper.like(SysUser::getPhonenumber, companySysUserReq.getName()); - } - List<SysUser> list = userService.list(sysUserLambdaQueryWrapper); - ArrayList<CompanyUserListVo> companyUserListVos = new ArrayList<>(); - for (SysUser sysUser : list) { - CompanyUserListVo companyUserListVo = new CompanyUserListVo(); - companyUserListVo.setId(sysUser.getUserId()); - companyUserListVo.setPassword(sysUser.getPassword()); - companyUserListVo.setPhoneNumber(sysUser.getPhonenumber()); - companyUserListVo.setUserName(sysUser.getUserName()); - companyUserListVo.setNickName(sysUser.getNickName()); - companyUserListVos.add(companyUserListVo); - } - return R.ok(companyUserListVos); - } @PostMapping("/isAdmin") public R<Integer> isAdmin(@RequestBody Long userId){ SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId)); @@ -305,86 +252,6 @@ return R.ok(); } } - - - @PostMapping("/companySaveSysUser") - public R<List<Integer>> companySaveSysUser(@RequestBody CompanyAddSysUserDto dto) { - List<CompanyUserListVo> list = dto.getList(); - ArrayList<Integer> userIds = new ArrayList<>(); - try { - for (CompanyUserListVo companyUserListVo : list) { - List<Long> ids = userService.getSysUserFromPhone(companyUserListVo.getPhoneNumber()); - SysUser sysUser = new SysUser(); - if (ids.size() > 0) { - sysUser.setRoleType(2); - sysUser.setObjectId(dto.getCompanyId()); - if(companyUserListVo.getPassword()!=null){ - sysUser.setPassword(SecurityUtils.encryptPassword(companyUserListVo.getPassword())); - } - sysUser.setPhonenumber(companyUserListVo.getPhoneNumber()); - sysUser.setUserName(companyUserListVo.getPhoneNumber()); - sysUser.setNickName(companyUserListVo.getNickName()); - sysUser.setUserId(ids.get(0).longValue()); - userService.updateUser(sysUser); - userIds.add(ids.get(0).intValue()); - } else { - - sysUser.setRoleType(2); - sysUser.setObjectId(dto.getCompanyId()); - if(companyUserListVo.getPassword()!=null){ - sysUser.setPassword(SecurityUtils.encryptPassword(companyUserListVo.getPassword())); - } - sysUser.setPhonenumber(companyUserListVo.getPhoneNumber()); - sysUser.setUserName(companyUserListVo.getPhoneNumber()); - sysUser.setNickName(companyUserListVo.getNickName()); - sysUser.setCreateBy(SecurityUtils.getUsername()); - sysUser.setCreateTime(new Date()); - userService.insertUser(sysUser); - SysUserRole sysUserRole = new SysUserRole(); - sysUserRole.setRoleId(20l); - sysUserRole.setUserId(sysUser.getUserId()); - sysUserRoleService.insertSysUserRole(sysUserRole); - userIds.add(sysUser.getUserId().intValue()); - } - } - return R.ok(userIds); - } catch (Exception e) { - e.printStackTrace(); - return R.ok(new ArrayList<>()); - } - } - - - @PostMapping("/addTRepairSysUser") - public R<List<Integer>> addTRepairSysUser(@RequestBody TRepairShopAddDto dto) { - List<TRepairShopAdd> list = dto.getList(); - ArrayList<Integer> userIds = new ArrayList<>(); - try { - for (TRepairShopAdd add : list) { - List<Long> ids = userService.getSysUserFromPhone(add.getPhonenumber()); - if (ids.size() > 0) { - userIds.add(ids.get(0).intValue()); - } else { - SysUser sysUser = new SysUser(); - sysUser.setPhonenumber(add.getPhonenumber()); - sysUser.setCreateTime(new Date()); - sysUser.setCreateBy(SecurityUtils.getUsername()); - sysUser.setPassword(SecurityUtils.encryptPassword(add.getPwd())); - sysUser.setRoleType(4); - sysUser.setObjectId(dto.getRepairId()); - sysUser.setUserName(add.getPhonenumber()); - sysUser.setNickName(add.getPhonenumber()); - userService.insertUser(sysUser); - userIds.add(sysUser.getUserId().intValue()); - } - } - return R.ok(userIds); - } catch (Exception e) { - e.printStackTrace(); - return R.ok(new ArrayList<>()); - } - } - @Log(title = "用户管理", businessType = BusinessType.EXPORT) @RequiresPermissions("system:user:export") @@ -594,23 +461,6 @@ .in(SysUser::getPhonenumber, phoneList) .ne(SysUser::getDelFlag,2)); return R.ok(list); - } - - /** - * 默认批量添加修理厂 - * @param dtoList - * @return - */ - @PostMapping("/addUserRole") - public R<Boolean> addUserRole(@RequestBody List<SysUserRoleDTO> dtoList){ - List<SysUserRole> userRoles = new ArrayList<>(); - for (SysUserRoleDTO userRoleDTO : dtoList) { - SysUserRole userRole = new SysUserRole(); - userRole.setRoleId(userRoleDTO.getRoleId()); - userRole.setUserId(userRoleDTO.getUserId()); - userRoles.add(userRole); - } - return R.ok(sysUserRoleService.saveBatch(userRoles)); } /** -- Gitblit v1.7.1