From ccb35b497df342c6de15f3a6be4c065b0ca7f1f1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 24 Jun 2021 10:37:53 +0800 Subject: [PATCH] 20210624 商品分类 --- gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsCategoryController.java | 16 gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml | 37 ++ gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsSkuVo.java | 35 + gc-shop/src/main/java/com/xzx/gc/shop/vo/QueryGoodsListVo.java | 65 +++ gc-shop/src/main/resources/mapper/shop/ScoreGoodsImagesMapper.xml | 15 gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java | 215 +++++++++++ gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsSkuMapper.java | 15 gc-shop/src/main/java/com/xzx/gc/shop/dto/QueryGoodsListDto.java | 19 + gc-shop/src/main/resources/mapper/shop/ScoreGoodsSkuMapper.xml | 23 + gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsDto.java | 9 gc-shop/src/main/java/com/xzx/gc/shop/dto/SaleGoodsDto.java | 13 gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java | 10 gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsCategoryDto.java | 2 gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java | 71 +++ gc-core/src/main/java/com/xzx/gc/entity/ScoreGoods.java | 6 gc-shop/src/main/resources/mapper/shop/ScoreGoodsStyleMapper.xml | 21 + gc-shop/src/main/resources/sql | 6 gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsImages.java | 3 gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsController.java | 185 ++++++++++ gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsCategoryDto.java | 2 gc-shop/src/main/java/com/xzx/gc/shop/dto/SnapUpGoodsDto.java | 22 + gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsStyleMapper.java | 14 gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsStyle.java | 21 + gc-core/src/main/java/com/xzx/gc/common/entity/BaseEntity.java | 2 gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java | 64 +++ gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsStyleDto.java | 22 + gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsSkuDto.java | 33 + gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsSku.java | 3 gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsStyleVo.java | 23 + gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsImagesMapper.java | 12 gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java | 64 +++ 31 files changed, 1,018 insertions(+), 30 deletions(-) diff --git a/gc-core/src/main/java/com/xzx/gc/common/entity/BaseEntity.java b/gc-core/src/main/java/com/xzx/gc/common/entity/BaseEntity.java index c7fb9cc..b323cf5 100644 --- a/gc-core/src/main/java/com/xzx/gc/common/entity/BaseEntity.java +++ b/gc-core/src/main/java/com/xzx/gc/common/entity/BaseEntity.java @@ -19,7 +19,7 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createdTime; - private String delFlag; + private short delFlag; private Integer revision; diff --git a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoods.java b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoods.java index 88f9476..41dae17 100644 --- a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoods.java +++ b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoods.java @@ -14,7 +14,7 @@ private String goodsNo; - private String goodsName; + private String name; private String unit; @@ -30,12 +30,16 @@ * 是否抢购 1-是 2-否 */ private Integer isQg; + public static final Integer ISQG_YES = 1; + public static final Integer ISQG_NO = 2; private Date qgStartTime; private Date qgEndTime; private Integer isSale; + public static final Integer ISSALE_YES = 1; + public static final Integer ISSALE_NO = 2; private Integer carbonEmissions; } diff --git a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsImages.java b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsImages.java index 9bc83ac..2b6670e 100644 --- a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsImages.java +++ b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsImages.java @@ -11,7 +11,6 @@ private String imageUrl; - private Integer seq; - private Long goodsId; + } diff --git a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsSku.java b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsSku.java index 9926386..cc769c6 100644 --- a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsSku.java +++ b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsSku.java @@ -1,5 +1,6 @@ package com.xzx.gc.entity; +import com.xzx.gc.common.entity.BaseEntity; import lombok.Data; import javax.persistence.Table; @@ -7,7 +8,7 @@ @Data @Table(name = "xzx_score_goods_sku") -public class ScoreGoodsSku { +public class ScoreGoodsSku extends BaseEntity { private String name; diff --git a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsStyle.java b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsStyle.java index 63a62ff..6200316 100644 --- a/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsStyle.java +++ b/gc-core/src/main/java/com/xzx/gc/entity/ScoreGoodsStyle.java @@ -1,13 +1,32 @@ package com.xzx.gc.entity; +import com.fasterxml.jackson.annotation.JsonFormat; import com.xzx.gc.common.entity.BaseEntity; import lombok.Data; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.Table; +import java.util.Date; @Data @Table(name = "xzx_score_goods_style") -public class ScoreGoodsStyle extends BaseEntity { +public class ScoreGoodsStyle{ + + + private String createdBy; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; + + private short delFlag; + + private Integer revision; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; private String name; diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/controller/GoodsController.java b/gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsCategoryController.java similarity index 94% rename from gc-shop/src/main/java/com/xzx/gc/shop/controller/GoodsController.java rename to gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsCategoryController.java index 3ae1d0e..2b589bf 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/controller/GoodsController.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsCategoryController.java @@ -10,14 +10,10 @@ import com.xzx.gc.entity.ScoreGoodsCategory; import com.xzx.gc.model.JsonResult; import com.xzx.gc.model.admin.GoodsCategoryModel; -import com.xzx.gc.shop.dto.AddGoodsCategoryDto; -import com.xzx.gc.shop.dto.DeleteGoodsCategoryDto; -import com.xzx.gc.shop.dto.QueryGoodsCategoryListDto; -import com.xzx.gc.shop.dto.UpdateGoodsCategoryDto; +import com.xzx.gc.shop.dto.*; import com.xzx.gc.shop.mapper.ScoreGoodsCategoryMapper; import com.xzx.gc.shop.service.GoodsService; -import com.xzx.gc.shop.vo.QueryGoodsCategoryListVo; -import com.xzx.gc.shop.vo.ViewGoodsCategoryVo; +import com.xzx.gc.shop.vo.*; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -29,9 +25,9 @@ import java.util.Map; @RestController -@Api(tags = {"积分商城--商品管理"}) +@Api(tags = {"积分商城--商品分类管理"}) @Slf4j -public class GoodsController extends BaseController { +public class AdminGoodsCategoryController extends BaseController { @Resource private GoodsService goodsService; @@ -104,7 +100,7 @@ } goodsService.deleteGoodsCategory(id); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) - .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-删除添加商品分类-"+id).build(); + .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-删除商品分类-"+id).build(); mqUtil.sendApp(build); return new JsonResult().success("操作成功!"); } @@ -172,4 +168,6 @@ } + + } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsController.java b/gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsController.java new file mode 100644 index 0000000..c8cef2e --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/controller/AdminGoodsController.java @@ -0,0 +1,185 @@ +package com.xzx.gc.shop.controller; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.xzx.gc.common.constant.CommonEnum; +import com.xzx.gc.common.constant.Constants; +import com.xzx.gc.common.dto.log.OperationAppLog; +import com.xzx.gc.common.request.BaseController; +import com.xzx.gc.entity.ScoreGoods; +import com.xzx.gc.model.JsonResult; +import com.xzx.gc.shop.dto.*; +import com.xzx.gc.shop.mapper.ScoreGoodsMapper; +import com.xzx.gc.shop.service.GoodsService; +import com.xzx.gc.shop.vo.QueryGoodsListVo; +import com.xzx.gc.shop.vo.ViewGoodsVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.Map; + +@RestController +@Api(tags = {"积分商城--商品管理"}) +@Slf4j +public class AdminGoodsController extends BaseController { + + @Resource + private GoodsService goodsService; + + @Resource + private ScoreGoodsMapper scoreGoodsMapper; + /** + * 查询商品列表 + * xzx_score_goods 积分商品表 + */ + @PostMapping(Constants.ADMIN_VIEW_PREFIX+"/score/goods/queryGoodsList.json") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = QueryGoodsListVo.class)}) + @ApiOperation(value = "商品管理-商品列表", notes = "test: 仅0有正确返回") + public JsonResult<Map<String, Object>> queryGoodsList(@RequestBody QueryGoodsListDto model) { + Map<String, Object> result = goodsService.queryGoodsList(model); + return JsonResult.success(result); + } + + /** + * 添加商品 + */ + @PostMapping(Constants.ADMIN_VIEW_PREFIX+"/score/goods/addGoods.json") + @ApiOperation(value = "商品管理-添加商品", notes = "test: 仅0有正确返回") + public JsonResult<String> addGoods(@RequestBody AddGoodsDto model, HttpServletRequest request) { + + model.setCreatedBy(getAdminName(request)); + model.setCreatedTime(new Date()); + Long scoreGoodsId = goodsService.addGoods(model); + if(scoreGoodsId > 0){ + OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) + .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-添加商品-" + scoreGoodsId).build(); + mqUtil.sendApp(build); + return JsonResult.success("操作成功!"); + }else{ + return JsonResult.failMessage("操作失败!"); + } + } + + /** + * 删除商品 + */ + + @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/deleteGoods.json") + @ApiOperation(value="商品管理-删除商品", notes="test: 仅0有正确返回") + public JsonResult deleteGoods(@RequestBody DeleteGoodsDto model, HttpServletRequest request) { + long id = model.getId(); + ScoreGoods scoreGoods = scoreGoodsMapper.selectByPrimaryKey(id); + if(ObjectUtil.isEmpty(scoreGoods)){ + return JsonResult.failMessage("商品不存在!"); + } + //下架商品才能删除 + Integer isSale = scoreGoods.getIsSale(); + if(ScoreGoods.ISSALE_YES == isSale){ + return JsonResult.failMessage("只允许删除下架商品!"); + } + goodsService.deleteGoods(id); + OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) + .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-删除商品-"+id).build(); + mqUtil.sendApp(build); + return new JsonResult().success("操作成功!"); + } + + /** + * 查看商品详情 + */ + @GetMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/viewGoods/{id}") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = ViewGoodsVo.class)}) + @ApiOperation(value="商品管理-查看商品详情", notes="test: 仅0有正确返回") + public JsonResult<ViewGoodsVo> viewGoods(@PathVariable long id) { + ViewGoodsVo viewGoodsVo = goodsService.viewGoods(id); + return JsonResult.success(viewGoodsVo); + } + + /** + * 更新商品分类 + * @param model + * @return + */ + @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/updateGoods.json") + @ApiOperation(value="商品管理-更新商品", notes="test: 仅0有正确返回") + public JsonResult updateGoods(@RequestBody UpdateGoodsDto model, HttpServletRequest request) { + long id = model.getId(); + ScoreGoods scoreGoods = scoreGoodsMapper.selectByPrimaryKey(id); + if(ObjectUtil.isEmpty(scoreGoods)){ + return JsonResult.failMessage("商品不存在!"); + } + //下架商品才能更新 + Integer isSale = scoreGoods.getIsSale(); + if(ScoreGoods.ISSALE_YES == isSale){ + return JsonResult.failMessage("请先下架商品!"); + } + goodsService.updateGoods(model); + OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) + .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-更新商品-" + id).build(); + mqUtil.sendApp(build); + return JsonResult.success("操作成功!"); + } + + /** + * 商品上下架 + */ + @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/saleGoods.json") + @ApiOperation(value="商品管理-商品上下架", notes="test: 仅0有正确返回") + public JsonResult saleGoods(@RequestBody SaleGoodsDto model, HttpServletRequest request) { + long id = model.getId(); + ScoreGoods scoreGoods = scoreGoodsMapper.selectById(id); + if(ObjectUtil.isEmpty(scoreGoods)){ + return JsonResult.failMessage("商品不存在!"); + } + short delFlag = scoreGoods.getDelFlag(); + if(Convert.toShort(Constants.DEL_FLAG) == delFlag){ + return JsonResult.failMessage("当前商品已删除!"); + } + goodsService.saleGoods(id, model.getIsSale()); + String upDown = ""; + if(model.getIsSale() == ScoreGoods.ISSALE_YES){ + upDown = "上"; + }else{ + upDown = "下"; + } + OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) + .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-商品"+upDown+"架-"+id).build(); + mqUtil.sendApp(build); + return new JsonResult().success("操作成功!"); + } + + /** + * 商品开始抢购开关 + */ + @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/score/goods/snapUpGoods.json") + @ApiOperation(value="商品管理-商品开始抢购开关", notes="test: 仅0有正确返回") + public JsonResult snapUpGoods(@RequestBody SnapUpGoodsDto model, HttpServletRequest request) { + long id = model.getId(); + ScoreGoods scoreGoods = scoreGoodsMapper.selectById(id); + if(ObjectUtil.isEmpty(scoreGoods)){ + return JsonResult.failMessage("商品不存在!"); + } + short delFlag = scoreGoods.getDelFlag(); + if(Convert.toShort(Constants.DEL_FLAG) == delFlag){ + return JsonResult.failMessage("当前商品已删除!"); + } + goodsService.snapUpGoods(model); + String upDown = ""; + if(model.getIsQg() == ScoreGoods.ISQG_YES){ + upDown = "开始"; + }else{ + upDown = "结束"; + } + OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) + .methodName(Constants.SCORESHOP_MODUL_NAME).operateAction("商品管理-商品"+upDown+"抢购-"+id).build(); + mqUtil.sendApp(build); + return new JsonResult().success("操作成功!"); + } +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java new file mode 100644 index 0000000..244b68e --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/AddGoodsDto.java @@ -0,0 +1,64 @@ +package com.xzx.gc.shop.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +public class AddGoodsDto implements Serializable { + + @ApiModelProperty(value="商品编号",required=true) + private String goodsNo; + + @ApiModelProperty(value="商品名称",required=true) + private String name; + + @ApiModelProperty(value="单位",required=true) + private String unit; + + @ApiModelProperty(value="品牌",required=true) + private String brand; + + @ApiModelProperty(value="配送方式",required=true) + private String shipping; + + @ApiModelProperty(value="缩略图",required=true) + private String thumb; + + @ApiModelProperty(value="商品详情",required=true) + private String details; + + /** + * 是否抢购 1-是 2-否 + */ + @ApiModelProperty(value="是否抢购 1/是 2/否",required=true) + private Integer isQg; + + @ApiModelProperty(value="抢购开始时间") + private Date qgStartTime; + + @ApiModelProperty(value="抢购结束时间") + private Date qgEndTime; + + @ApiModelProperty(value="是否上架 1/是 2/否",required=true) + private Integer isSale; + + @ApiModelProperty(value="碳排放量",required=true) + private Integer carbonEmissions; + + @ApiModelProperty(value="积分商品轮播图") + private List<String> goodsImages; + + @ApiModelProperty(value="积分商品样式") + private List<ScoreGoodsStyleDto> scoreGoodsStyleDtos; + + @ApiModelProperty(value="创建人") + private String createdBy; + + @ApiModelProperty(value="创建时间") + private Date createdTime; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsCategoryDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsCategoryDto.java index 6f5b7dc..2bf4140 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsCategoryDto.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsCategoryDto.java @@ -4,5 +4,5 @@ @Data public class DeleteGoodsCategoryDto { - private long id; + private Long id; } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsDto.java new file mode 100644 index 0000000..bffb3a9 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/DeleteGoodsDto.java @@ -0,0 +1,9 @@ +package com.xzx.gc.shop.dto; + +import lombok.Data; + +@Data +public class DeleteGoodsDto { + + private Long id; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/QueryGoodsListDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/QueryGoodsListDto.java new file mode 100644 index 0000000..1a650eb --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/QueryGoodsListDto.java @@ -0,0 +1,19 @@ +package com.xzx.gc.shop.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class QueryGoodsListDto implements Serializable { + + @ApiModelProperty(value="名称",required=true) + private String name; + @ApiModelProperty(value="是否已删除 1:是 2:否",required=true) + private Integer delFlag; + @ApiModelProperty(value="第几页",required=true) + private int page; + @ApiModelProperty(value="每一页数量",required=true) + private int limit; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/SaleGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/SaleGoodsDto.java new file mode 100644 index 0000000..ca143f8 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/SaleGoodsDto.java @@ -0,0 +1,13 @@ +package com.xzx.gc.shop.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SaleGoodsDto { + + private Long id; + + @ApiModelProperty(value="商品上下架 1:上架 2:下架",required=true) + private int isSale; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsSkuDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsSkuDto.java new file mode 100644 index 0000000..c2317fa --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsSkuDto.java @@ -0,0 +1,33 @@ +package com.xzx.gc.shop.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ScoreGoodsSkuDto { + + private Long id; + + @ApiModelProperty(value="规格名称") + private String name; + + @ApiModelProperty(value="原价") + private BigDecimal originalPrice; + + @ApiModelProperty(value="现价") + private BigDecimal presentPrice; + + @ApiModelProperty(value="库存") + private Integer stock; + + @ApiModelProperty(value="销量") + private Integer quantity; + + @ApiModelProperty(value="样式ID") + private Long styleId; + + @ApiModelProperty(value="商品ID") + private Long goodsId; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsStyleDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsStyleDto.java new file mode 100644 index 0000000..2760479 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/ScoreGoodsStyleDto.java @@ -0,0 +1,22 @@ +package com.xzx.gc.shop.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class ScoreGoodsStyleDto { + + private Long id; + + @ApiModelProperty(value="样式名称") + private String name; + + @ApiModelProperty(value="商品ID") + private Long goodsId; + + @ApiModelProperty(value="积分商品规格") + private List<ScoreGoodsSkuDto> scoreGoodsSkuDtos; + +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/SnapUpGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/SnapUpGoodsDto.java new file mode 100644 index 0000000..80ae4fb --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/SnapUpGoodsDto.java @@ -0,0 +1,22 @@ +package com.xzx.gc.shop.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class SnapUpGoodsDto { + + private Long id; + + @ApiModelProperty(value="是否抢购 1/是 2/否") + private Integer isQg; + + @ApiModelProperty(value="抢购开始时间") + private Date qgStartTime; + + @ApiModelProperty(value="抢购结束时间") + private Date qgEndTime; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsCategoryDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsCategoryDto.java index c18d5c7..4b1f2a4 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsCategoryDto.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsCategoryDto.java @@ -6,7 +6,7 @@ @Data public class UpdateGoodsCategoryDto { - private long id; + private Long id; @ApiModelProperty(value="分类名称") private String name; @ApiModelProperty(value="类别标识") diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java new file mode 100644 index 0000000..bab8c84 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/UpdateGoodsDto.java @@ -0,0 +1,64 @@ +package com.xzx.gc.shop.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class UpdateGoodsDto { + + private Long id; + @ApiModelProperty(value="商品编号",required=true) + private String goodsNo; + + @ApiModelProperty(value="商品名称",required=true) + private String name; + + @ApiModelProperty(value="单位",required=true) + private String unit; + + @ApiModelProperty(value="品牌",required=true) + private String brand; + + @ApiModelProperty(value="配送方式",required=true) + private String shipping; + + @ApiModelProperty(value="缩略图",required=true) + private String thumb; + + @ApiModelProperty(value="商品详情",required=true) + private String details; + + /** + * 是否抢购 1-是 2-否 + */ + @ApiModelProperty(value="是否抢购 1/是 2/否",required=true) + private Integer isQg; + + @ApiModelProperty(value="抢购开始时间") + private Date qgStartTime; + + @ApiModelProperty(value="抢购结束时间") + private Date qgEndTime; + + @ApiModelProperty(value="是否上架 1/是 2/否",required=true) + private Integer isSale; + + @ApiModelProperty(value="碳排放量",required=true) + private Integer carbonEmissions; + + @ApiModelProperty(value="积分商品轮播图") + private List<String> goodsImages; + + @ApiModelProperty(value="积分商品样式") + private List<ScoreGoodsStyleDto> scoreGoodsStyleDtos; + + @ApiModelProperty(value="创建人") + private String createdBy; + + @ApiModelProperty(value="创建时间") + private Date createdTime; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsImagesMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsImagesMapper.java new file mode 100644 index 0000000..2fb7a12 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsImagesMapper.java @@ -0,0 +1,12 @@ +package com.xzx.gc.shop.mapper; + +import com.xzx.gc.entity.ScoreGoodsImages; +import com.xzx.gc.util.GcMapper; + +import java.util.List; + +public interface ScoreGoodsImagesMapper extends GcMapper<ScoreGoodsImages> { + + List<String> selectScoreGoodsImagesByGoodsId(long id); + +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java index 18bcde2..1b72bb5 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java @@ -1,7 +1,17 @@ package com.xzx.gc.shop.mapper; import com.xzx.gc.entity.ScoreGoods; +import com.xzx.gc.shop.vo.QueryGoodsListVo; import com.xzx.gc.util.GcMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface ScoreGoodsMapper extends GcMapper<ScoreGoods> { + + List<QueryGoodsListVo> queryGoodsList(ScoreGoods scoreGoods); + + void updateDelFlagById(@Param("id")long id, @Param("delFlag")Short toShort); + + ScoreGoods selectById(long id); } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsSkuMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsSkuMapper.java new file mode 100644 index 0000000..b49073e --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsSkuMapper.java @@ -0,0 +1,15 @@ +package com.xzx.gc.shop.mapper; + +import com.xzx.gc.entity.ScoreGoodsSku; +import com.xzx.gc.shop.vo.ScoreGoodsSkuVo; +import com.xzx.gc.util.GcMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ScoreGoodsSkuMapper extends GcMapper<ScoreGoodsSku> { + + List<ScoreGoodsSkuVo> selectScoreGoodsSkuByGoodsIdAndStyleId(@Param("id")long id, @Param("styleId")Long styleId); + + void updateDelFlagById(@Param("id")Long id, @Param("delFlag")Short toShort); +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsStyleMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsStyleMapper.java new file mode 100644 index 0000000..9ce5c91 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsStyleMapper.java @@ -0,0 +1,14 @@ +package com.xzx.gc.shop.mapper; + +import com.xzx.gc.entity.ScoreGoodsStyle; +import com.xzx.gc.util.GcMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ScoreGoodsStyleMapper extends GcMapper<ScoreGoodsStyle> { + + List<ScoreGoodsStyle> selectScoreGoodsStyleByGoodsId(long id); + + void updateDelFlagById(@Param("id")long id, @Param("delFlag")Short toShort); +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java index 59030c1..f6c181e 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java @@ -2,29 +2,26 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.ObjectUtil; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.constant.Constants; -import com.xzx.gc.common.dto.log.OperationAppLog; import com.xzx.gc.common.utils.MqUtil; -import com.xzx.gc.entity.CoreUser; -import com.xzx.gc.entity.ScoreGoodsCategory; -import com.xzx.gc.model.JsonResult; +import com.xzx.gc.entity.*; import com.xzx.gc.model.admin.GoodsCategoryModel; -import com.xzx.gc.shop.dto.QueryGoodsCategoryListDto; -import com.xzx.gc.shop.mapper.ScoreGoodsCategoryMapper; -import com.xzx.gc.shop.vo.QueryGoodsCategoryListVo; -import com.xzx.gc.shop.vo.ViewGoodsCategoryVo; -import com.xzx.gc.util.SessionUtil; +import com.xzx.gc.shop.dto.*; +import com.xzx.gc.shop.mapper.*; +import com.xzx.gc.shop.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import tk.mybatis.mapper.entity.Example; import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,6 +33,14 @@ @Resource ScoreGoodsCategoryMapper scoreGoodsCategoryMapper; + @Resource + ScoreGoodsMapper scoreGoodsMapper; + @Resource + ScoreGoodsSkuMapper scoreGoodsSkuMapper; + @Resource + ScoreGoodsImagesMapper scoreGoodsImagesMapper; + @Resource + ScoreGoodsStyleMapper scoreGoodsStyleMapper; @Autowired private MqUtil mqUtil; @@ -89,4 +94,190 @@ scoreGoodsCategory.setParentId(model.getParentId()); scoreGoodsCategoryMapper.updateByPrimaryKey(scoreGoodsCategory); } + + public Map<String, Object> queryGoodsList(QueryGoodsListDto model) { + String name = model.getName(); + int delFlag = model.getDelFlag(); + ScoreGoods scoreGoods = new ScoreGoods(); + scoreGoods.setName(name); + scoreGoods.setDelFlag(Convert.toShort(delFlag)); + PageHelper.startPage(model.getPage(), model.getLimit()); + + List<QueryGoodsListVo> maps = scoreGoodsMapper.queryGoodsList(scoreGoods); + PageInfo pageInfo = new PageInfo(maps); + int count = Convert.toInt(pageInfo.getTotal()); + Map<String, Object> map = new HashMap<>(); + map.put("data", maps); + map.put("count", count); + map.put("code", 0); + return map; + } + + public Long addGoods(AddGoodsDto model) { + //新增商品主信息 + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + ScoreGoods scoreGoods = objectMapper.convertValue(model, ScoreGoods.class); + scoreGoods.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG)); + scoreGoodsMapper.insert(scoreGoods); + //样式信息 + List<ScoreGoodsStyleDto> scoreGoodsStyleDtos = model.getScoreGoodsStyleDtos(); + if(CollUtil.isNotEmpty(scoreGoodsStyleDtos)){ + for(ScoreGoodsStyleDto scoreGoodsStyleDto : scoreGoodsStyleDtos){ + ScoreGoodsStyle scoreGoodsStyle = objectMapper.convertValue(scoreGoodsStyleDto, ScoreGoodsStyle.class); + scoreGoodsStyle.setGoodsId(scoreGoods.getId()); + scoreGoodsStyle.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG)); + scoreGoodsStyleMapper.insert(scoreGoodsStyle); + //规格信息 + List<ScoreGoodsSkuDto> scoreGoodsSkuDtos = scoreGoodsStyleDto.getScoreGoodsSkuDtos(); + if(CollUtil.isNotEmpty(scoreGoodsSkuDtos)){ + for(ScoreGoodsSkuDto scoreGoodsSkuDto : scoreGoodsSkuDtos){ + ScoreGoodsSku scoreGoodsSku = objectMapper.convertValue(scoreGoodsSkuDto, ScoreGoodsSku.class); + scoreGoodsSku.setGoodsId(scoreGoods.getId()); + scoreGoodsSku.setStyleId(scoreGoodsStyle.getId()); + scoreGoodsSku.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG)); + scoreGoodsSkuMapper.insert(scoreGoodsSku); + } + } + } + } + //轮播图信息 + List<String> goodsImages = model.getGoodsImages(); + if(CollUtil.isNotEmpty(goodsImages)){ + for(String goodImage : goodsImages){ + ScoreGoodsImages scoreGoodsImages = new ScoreGoodsImages(); + scoreGoodsImages.setImageUrl(goodImage); + scoreGoodsImages.setGoodsId(scoreGoods.getId()); + scoreGoodsImages.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG)); + scoreGoodsImagesMapper.insert(scoreGoodsImages); + } + } + return scoreGoods.getId(); + } + + public void deleteGoods(long id) { + + scoreGoodsMapper.updateDelFlagById(id,Convert.toShort(Constants.DEL_FLAG)); + + Example exampleStyle = new Example(ScoreGoodsStyle.class); + Example.Criteria criteriaStyle = exampleStyle.createCriteria(); + criteriaStyle.andEqualTo("goodsId",id); + List<ScoreGoodsStyle> goodsStyles = scoreGoodsStyleMapper.selectByExample(exampleStyle); + if(CollUtil.isNotEmpty(goodsStyles)){ + for(ScoreGoodsStyle scoreGoodsStyle : goodsStyles){ + scoreGoodsStyleMapper.updateDelFlagById(scoreGoodsStyle.getId(),Convert.toShort(Constants.DEL_FLAG)); + } + } + + Example exampleSku = new Example(ScoreGoodsStyle.class); + Example.Criteria criteriaSku = exampleSku.createCriteria(); + criteriaSku.andEqualTo("goodsId",id); + List<ScoreGoodsSku> goodsSkus = scoreGoodsSkuMapper.selectByExample(exampleSku); + if(CollUtil.isNotEmpty(goodsSkus)){ + for(ScoreGoodsSku scoreGoodsSku : goodsSkus){ + scoreGoodsSkuMapper.updateDelFlagById(scoreGoodsSku.getId(),Convert.toShort(Constants.DEL_FLAG)); + } + } + } + + public ViewGoodsVo viewGoods(long id) { + ViewGoodsVo viewGoodsVo = new ViewGoodsVo(); + ScoreGoods scoreGoods = scoreGoodsMapper.selectByPrimaryKey(id); + if(ObjectUtil.isNotEmpty(scoreGoods)){ + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + viewGoodsVo = objectMapper.convertValue(scoreGoods, ViewGoodsVo.class); + //轮播图 + List<String> goodsImages = scoreGoodsImagesMapper.selectScoreGoodsImagesByGoodsId(id); + viewGoodsVo.setGoodsImages(goodsImages); + //样式 + List<ScoreGoodsStyleVo> scoreGoodsStyleVos = new ArrayList<>(); + List<ScoreGoodsStyle> goodsStyles = scoreGoodsStyleMapper.selectScoreGoodsStyleByGoodsId(id); + if(CollUtil.isNotEmpty(goodsStyles)){ + for(ScoreGoodsStyle goodsStyle : goodsStyles){ + ScoreGoodsStyleVo scoreGoodsStyleVo = objectMapper.convertValue(goodsStyle, ScoreGoodsStyleVo.class); + //获取规格 + Long styleId = goodsStyle.getId(); + List<ScoreGoodsSkuVo> goodsSkus = scoreGoodsSkuMapper.selectScoreGoodsSkuByGoodsIdAndStyleId(id,styleId); + scoreGoodsStyleVo.setScoreGoodsSkuVos(goodsSkus); + scoreGoodsStyleVos.add(scoreGoodsStyleVo); + } + } + viewGoodsVo.setScoreGoodsStyleVos(scoreGoodsStyleVos); + } + return viewGoodsVo; + } + + public void updateGoods(UpdateGoodsDto model) { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + ScoreGoods scoreGoods = objectMapper.convertValue(model, ScoreGoods.class); + scoreGoodsMapper.updateByPrimaryKey(scoreGoods); + + //轮播图 + Example exampleImages = new Example(ScoreGoodsImages.class); + Example.Criteria criteriaImages = exampleImages.createCriteria(); + criteriaImages.andEqualTo("goodsId",scoreGoods.getId()); + scoreGoodsImagesMapper.deleteByExample(exampleImages); + List<String> goodsImages = model.getGoodsImages(); + if(CollUtil.isNotEmpty(goodsImages)){ + for(String goodImage : goodsImages){ + ScoreGoodsImages scoreGoodsImages = new ScoreGoodsImages(); + scoreGoodsImages.setImageUrl(goodImage); + scoreGoodsImages.setGoodsId(scoreGoods.getId()); + scoreGoodsImages.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG)); + scoreGoodsImagesMapper.insert(scoreGoodsImages); + } + } + + List<ScoreGoodsStyleDto> scoreGoodsStyleDtos = model.getScoreGoodsStyleDtos(); + if(CollUtil.isNotEmpty(scoreGoodsStyleDtos)){ + for(ScoreGoodsStyleDto scoreGoodsStyleDto : scoreGoodsStyleDtos){ + ScoreGoodsStyle scoreGoodsStyle = new ScoreGoodsStyle(); + scoreGoodsStyle.setId(scoreGoodsStyleDto.getId()); + scoreGoodsStyle.setName(scoreGoodsStyleDto.getName()); + scoreGoodsStyle.setGoodsId(scoreGoods.getId()); + scoreGoodsStyleMapper.updateByPrimaryKeySelective(scoreGoodsStyle); + //规格 + List<ScoreGoodsSkuDto> scoreGoodsSkuDtos = scoreGoodsStyleDto.getScoreGoodsSkuDtos(); + if(CollUtil.isNotEmpty(scoreGoodsSkuDtos)){ + for(ScoreGoodsSkuDto scoreGoodsSkuDto : scoreGoodsSkuDtos){ + ScoreGoodsSku scoreGoodsSku = objectMapper.convertValue(scoreGoodsSkuDto, ScoreGoodsSku.class); + scoreGoodsSkuMapper.updateByPrimaryKey(scoreGoodsSku); + } + } + } + } + } + + public void saleGoods(long id, Integer issale) { + ScoreGoods scoreGoods = new ScoreGoods(); + scoreGoods.setIsSale(issale); + Example exampleGoods = new Example(ScoreGoods.class); + Example.Criteria criteriaGoods = exampleGoods.createCriteria(); + criteriaGoods.andEqualTo("id",id); + scoreGoodsMapper.updateByExampleSelective(scoreGoods,exampleGoods); + } + + public void snapUpGoods(SnapUpGoodsDto model) { + long id = model.getId(); + Integer isQg = model.getIsQg(); + if(ScoreGoods.ISQG_YES == isQg){ + ScoreGoods scoreGoods = new ScoreGoods(); + scoreGoods.setIsQg(ScoreGoods.ISQG_YES); + scoreGoods.setQgStartTime(model.getQgStartTime()); + scoreGoods.setQgEndTime(model.getQgEndTime()); + Example exampleGoods = new Example(ScoreGoods.class); + Example.Criteria criteriaGoods = exampleGoods.createCriteria(); + criteriaGoods.andEqualTo("id",id); + scoreGoodsMapper.updateByExampleSelective(scoreGoods,exampleGoods); + }else{ + ScoreGoods scoreGoods = new ScoreGoods(); + scoreGoods.setIsQg(ScoreGoods.ISQG_NO); + Example exampleGoods = new Example(ScoreGoods.class); + Example.Criteria criteriaGoods = exampleGoods.createCriteria(); + criteriaGoods.andEqualTo("id",id); + scoreGoodsMapper.updateByExampleSelective(scoreGoods,exampleGoods); + } + } } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/QueryGoodsListVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/QueryGoodsListVo.java new file mode 100644 index 0000000..8642998 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/QueryGoodsListVo.java @@ -0,0 +1,65 @@ +package com.xzx.gc.shop.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel(value = "QueryGoodsListVo", description = "返回") +public class QueryGoodsListVo { + + private long id; + @ApiModelProperty(value="商品编号") + private String goodsNo; + + @ApiModelProperty(value="商品名称") + private String name; + + @ApiModelProperty(value="单位") + private String unit; + + @ApiModelProperty(value="品牌") + private String brand; + + @ApiModelProperty(value="配送方式") + private String shipping; + + @ApiModelProperty(value="缩略图") + private String thumb; + + @ApiModelProperty(value="商品详情") + private String details; + + /** + * 是否抢购 1-是 2-否 + */ + @ApiModelProperty(value="是否抢购 1/是 2/否") + private Integer isQg; + + @ApiModelProperty(value="抢购开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date qgStartTime; + + @ApiModelProperty(value="抢购结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date qgEndTime; + + @ApiModelProperty(value="是否上架 1/是 2/否") + private Integer isSale; + + @ApiModelProperty(value="碳排放量") + private Integer carbonEmissions; + + @ApiModelProperty(value="创建人") + private String createdBy; + + @ApiModelProperty(value="是否删除 1/是 0/否") + private short delFlag; + + @ApiModelProperty(value="创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsSkuVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsSkuVo.java new file mode 100644 index 0000000..ead71ff --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsSkuVo.java @@ -0,0 +1,35 @@ +package com.xzx.gc.shop.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "ScoreGoodsSkuVo", description = "规格") +public class ScoreGoodsSkuVo { + + private long id; + + @ApiModelProperty(value="规格名称") + private String name; + + @ApiModelProperty(value="原价") + private BigDecimal originalPrice; + + @ApiModelProperty(value="现价") + private BigDecimal presentPrice; + + @ApiModelProperty(value="库存") + private Integer stock; + + @ApiModelProperty(value="销量") + private Integer quantity; + + @ApiModelProperty(value="样式ID") + private Long styleId; + + @ApiModelProperty(value="商品ID") + private Long goodsId; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsStyleVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsStyleVo.java new file mode 100644 index 0000000..95929c1 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ScoreGoodsStyleVo.java @@ -0,0 +1,23 @@ +package com.xzx.gc.shop.vo; + +import com.xzx.gc.shop.dto.ScoreGoodsSkuDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +@Data +@ApiModel(value = "ScoreGoodsStyleVo", description = "样式") +public class ScoreGoodsStyleVo { + + private long id; + + @ApiModelProperty(value="样式名称") + private String name; + + @ApiModelProperty(value="商品ID") + private Long goodsId; + + @ApiModelProperty(value="积分商品规格") + private List<ScoreGoodsSkuVo> scoreGoodsSkuVos; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java new file mode 100644 index 0000000..d512883 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/ViewGoodsVo.java @@ -0,0 +1,71 @@ +package com.xzx.gc.shop.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xzx.gc.entity.ScoreGoodsStyle; +import com.xzx.gc.shop.dto.ScoreGoodsStyleDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "ViewGoodsVo", description = "商品") +public class ViewGoodsVo { + + private long id; + @ApiModelProperty(value="商品编号",required=true) + private String goodsNo; + + @ApiModelProperty(value="商品名称",required=true) + private String name; + + @ApiModelProperty(value="单位",required=true) + private String unit; + + @ApiModelProperty(value="品牌",required=true) + private String brand; + + @ApiModelProperty(value="配送方式",required=true) + private String shipping; + + @ApiModelProperty(value="缩略图",required=true) + private String thumb; + + @ApiModelProperty(value="商品详情",required=true) + private String details; + + /** + * 是否抢购 1-是 2-否 + */ + @ApiModelProperty(value="是否抢购 1/是 2/否",required=true) + private Integer isQg; + + @ApiModelProperty(value="抢购开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date qgStartTime; + + @ApiModelProperty(value="抢购结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date qgEndTime; + + @ApiModelProperty(value="是否上架 1/是 2/否",required=true) + private Integer isSale; + + @ApiModelProperty(value="碳排放量",required=true) + private Integer carbonEmissions; + + @ApiModelProperty(value="积分商品轮播图") + private List<String> goodsImages; + + @ApiModelProperty(value="积分商品样式") + private List<ScoreGoodsStyleVo> scoreGoodsStyleVos; + + @ApiModelProperty(value="创建人") + private String createdBy; + + @ApiModelProperty(value="创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; +} diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsImagesMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsImagesMapper.xml new file mode 100644 index 0000000..aaf8394 --- /dev/null +++ b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsImagesMapper.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.xzx.gc.shop.mapper.ScoreGoodsImagesMapper"> + + <select id="selectScoreGoodsImagesByGoodsId" resultType="java.lang.String"> + SELECT + a.image_url imageUrl + FROM + xzx_score_goods_images a + WHERE 1 = 1 + and a.goods_id = #{id} + and a.del_flag = 0 + </select> + +</mapper> diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml new file mode 100644 index 0000000..46c2412 --- /dev/null +++ b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.xzx.gc.shop.mapper.ScoreGoodsMapper"> + + <select id="queryGoodsList" resultType="com.xzx.gc.shop.vo.QueryGoodsListVo"> + SELECT + * + FROM + xzx_score_goods a + WHERE 1 = 1 + <if test="name != null and name != ''"> + and a.name like concat('%',#{name},'%') + </if> + <if test="delFlag != null and delFlag != ''"> + and a.del_flag = #{delFlag} + </if> + order by a.CREATED_TIME desc + </select> + + + + <select id="selectById" resultType="com.xzx.gc.entity.ScoreGoods"> + SELECT + * + FROM + xzx_score_goods a + WHERE 1 = 1 + and id = #{id} + </select> + + + <update id="updateDelFlagById"> + update xzx_score_goods set del_flag=#{delFlag} + where id=#{id} + </update> + +</mapper> diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsSkuMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsSkuMapper.xml new file mode 100644 index 0000000..1fb0ce5 --- /dev/null +++ b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsSkuMapper.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.xzx.gc.shop.mapper.ScoreGoodsSkuMapper"> + + + <select id="selectScoreGoodsSkuByGoodsIdAndStyleId" resultType="com.xzx.gc.shop.vo.ScoreGoodsSkuVo"> + SELECT + a.* + FROM + xzx_score_goods_sku a + WHERE 1 = 1 + and a.goods_id = #{id} + and a.style_id = #{styleId} + and a.del_flag != 1 + </select> + + + <update id="updateDelFlagById"> + update xzx_score_goods_sku set del_flag=#{delFlag} + where id=#{id} + </update> + +</mapper> diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsStyleMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsStyleMapper.xml new file mode 100644 index 0000000..6eee034 --- /dev/null +++ b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsStyleMapper.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.xzx.gc.shop.mapper.ScoreGoodsStyleMapper"> + + <select id="selectScoreGoodsStyleByGoodsId" resultType="com.xzx.gc.entity.ScoreGoodsStyle"> + SELECT + a.* + FROM + xzx_score_goods_style a + WHERE 1 = 1 + and a.goods_id = #{id} + and a.del_flag = 0 + </select> + + + <update id="updateDelFlagById"> + update xzx_score_goods_style set del_flag=#{delFlag} + where id=#{id} + </update> + +</mapper> diff --git a/gc-shop/src/main/resources/sql b/gc-shop/src/main/resources/sql index 56b7e26..a0f7ea1 100644 --- a/gc-shop/src/main/resources/sql +++ b/gc-shop/src/main/resources/sql @@ -23,4 +23,8 @@ MODIFY COLUMN `del_flag` smallint(2) NULL DEFAULT NULL COMMENT '删除标识0 正常 1已删除 ' AFTER `CREATED_TIME`; ALTER TABLE `xzx_score_order_details` -MODIFY COLUMN `del_flag` smallint(2) NULL DEFAULT NULL COMMENT '删除标识0 正常 1已删除 ' AFTER `CREATED_TIME`; \ No newline at end of file +MODIFY COLUMN `del_flag` smallint(2) NULL DEFAULT NULL COMMENT '删除标识0 正常 1已删除 ' AFTER `CREATED_TIME`; + +ALTER TABLE `xzx_score_goods` +CHANGE COLUMN `gq_end_time` `qg_end_time` datetime NULL DEFAULT NULL COMMENT '抢购结束时间' AFTER `qg_start_time`; + -- Gitblit v1.9.1