diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/controller/MyOrderController.java b/yami-shop-api/src/main/java/com/yami/shop/api/controller/MyOrderController.java index 711bfc1..8040756 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/controller/MyOrderController.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/controller/MyOrderController.java @@ -96,15 +96,17 @@ public class MyOrderController { orderShopDto.setCreateTime(order.getCreateTime()); orderShopDto.setRemarks(order.getRemarks()); orderShopDto.setStatus(order.getStatus()); - - double total = 0.0; + orderShopDto.setActualTotalScore(order.getActualTotalScore()); + /* double total = 0.0; Integer totalNum = 0; for (OrderItemDto orderItem : orderShopDto.getOrderItemDtos()) { - total = Arith.add(total, orderItem.getProductTotalAmount()); + if (orderItem.getProductType() != 2) { + total = Arith.add(total, orderItem.getProductTotalAmount()); + } totalNum += orderItem.getProdCount(); - } - orderShopDto.setTotal(total); - orderShopDto.setTotalNum(totalNum); + }*/ + orderShopDto.setTotal(order.getTotal()); + orderShopDto.setTotalNum(order.getProductNums()); return ServerResponseEntity.success(orderShopDto); } diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java b/yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java index bf20799..acb8dab 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java @@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import jakarta.validation.Valid; + import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -64,7 +65,7 @@ public class OrderController { * 生成订单 */ @PostMapping("/confirm") - @Operation(summary = "结算,生成订单信息" , description = "传入下单所需要的参数进行下单") + @Operation(summary = "结算,生成订单信息", description = "传入下单所需要的参数进行下单") public ServerResponseEntity confirm(@Valid @RequestBody OrderParam orderParam) { String userId = SecurityUtils.getUser().getUserId(); @@ -74,7 +75,7 @@ public class OrderController { // 组装获取用户提交的购物车商品项 - List shopCartItems = basketService.getShopCartItemsByOrderItems(orderParam.getBasketIds(),orderParam.getOrderItem(),userId); + List shopCartItems = basketService.getShopCartItemsByOrderItems(orderParam.getBasketIds(), orderParam.getOrderItem(), userId); if (CollectionUtil.isEmpty(shopCartItems)) { throw new YamiShopBindException("请选择您需要的商品加入购物车"); @@ -95,6 +96,7 @@ public class OrderController { double total = 0.0; int totalCount = 0; double orderReduce = 0.0; + int totalScore = 0; for (ShopCartDto shopCart : shopCarts) { // 每个店铺的订单信息 @@ -114,12 +116,13 @@ public class OrderController { shopCartOrder.setShopCartItemDiscounts(shopCartItemDiscounts); - applicationContext.publishEvent(new ConfirmOrderEvent(shopCartOrder,orderParam,shopAllShopCartItems)); + applicationContext.publishEvent(new ConfirmOrderEvent(shopCartOrder, orderParam, shopAllShopCartItems)); - actualTotal = Arith.add(actualTotal,shopCartOrder.getActualTotal()); - total = Arith.add(total,shopCartOrder.getTotal()); + actualTotal = Arith.add(actualTotal, shopCartOrder.getActualTotal()); + total = Arith.add(total, shopCartOrder.getTotal()); totalCount = totalCount + shopCartOrder.getTotalCount(); - orderReduce = Arith.add(orderReduce,shopCartOrder.getShopReduce()); + orderReduce = Arith.add(orderReduce, shopCartOrder.getShopReduce()); + totalScore += shopCartOrder.getActualTotalScore(); shopCartOrders.add(shopCartOrder); @@ -130,7 +133,7 @@ public class OrderController { shopCartOrderMergerDto.setTotalCount(totalCount); shopCartOrderMergerDto.setShopCartOrders(shopCartOrders); shopCartOrderMergerDto.setOrderReduce(orderReduce); - + shopCartOrderMergerDto.setActualTotalScore(totalScore); shopCartOrderMergerDto = orderService.putConfirmOrderCache(userId, shopCartOrderMergerDto); return ServerResponseEntity.success(shopCartOrderMergerDto); @@ -140,7 +143,7 @@ public class OrderController { * 购物车/立即购买 提交订单,根据店铺拆单 */ @PostMapping("/submit") - @Operation(summary = "提交订单,返回支付流水号" , description = "根据传入的参数判断是否为购物车提交订单,同时对购物车进行删除,用户开始进行支付") + @Operation(summary = "提交订单,返回支付流水号", description = "根据传入的参数判断是否为购物车提交订单,同时对购物车进行删除,用户开始进行支付") public ServerResponseEntity submitOrders(@Valid @RequestBody SubmitOrderParam submitOrderParam) { String userId = SecurityUtils.getUser().getUserId(); ShopCartOrderMergerDto mergerOrder = orderService.getConfirmOrderCache(userId); @@ -162,8 +165,7 @@ public class OrderController { } } - List orders = orderService.submit(userId,mergerOrder); - + List orders = orderService.submit(userId, mergerOrder); StringBuilder orderNumbers = new StringBuilder(); @@ -181,7 +183,7 @@ public class OrderController { if (basketId != null && basketId != 0) { isShopCartOrder = true; } - skuService.removeSkuCacheBySkuId(shopCartItem.getSkuId(),shopCartItem.getProdId()); + skuService.removeSkuCacheBySkuId(shopCartItem.getSkuId(), shopCartItem.getProdId()); productService.removeProductCacheByProdId(shopCartItem.getProdId()); } } diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdController.java b/yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdController.java index 6c61fc0..58f37b6 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdController.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdController.java @@ -10,6 +10,7 @@ package com.yami.shop.api.controller; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yami.shop.bean.app.dto.ProductDto; import com.yami.shop.bean.app.dto.TagProductDto; @@ -26,7 +27,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; -import cn.hutool.core.bean.BeanUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -56,19 +56,16 @@ public class ProdController { @GetMapping("/pageProd") - @Operation(summary = "通过分类id商品列表信息" , description = "根据分类ID获取该分类下所有的商品列表信息") - @Parameters({ - @Parameter(name = "categoryId", description = "分类ID" , required = true), - }) - public ServerResponseEntity> prodList( - @RequestParam(value = "categoryId") Long categoryId,PageParam page) { + @Operation(summary = "通过分类id商品列表信息", description = "根据分类ID获取该分类下所有的商品列表信息") + @Parameters({@Parameter(name = "categoryId", description = "分类ID", required = true),}) + public ServerResponseEntity> prodList(@RequestParam(value = "categoryId") Long categoryId, PageParam page) { IPage productPage = prodService.pageByCategoryId(page, categoryId); return ServerResponseEntity.success(productPage); } @GetMapping("/prodInfo") - @Operation(summary = "商品详情信息" , description = "根据商品ID(prodId)获取商品信息") - @Parameter(name = "prodId", description = "商品ID" , required = true) + @Operation(summary = "商品详情信息", description = "根据商品ID(prodId)获取商品信息") + @Parameter(name = "prodId", description = "商品ID", required = true) public ServerResponseEntity prodInfo(Long prodId) { Product product = prodService.getProductByProdId(prodId); @@ -86,7 +83,7 @@ public class ProdController { // 商品的配送方式 Product.DeliveryModeVO deliveryModeVO = Json.parseObject(product.getDeliveryMode(), Product.DeliveryModeVO.class); // 有店铺配送的方式, 且存在运费模板,才返回运费模板的信息,供前端查阅 - if (deliveryModeVO.getHasShopDelivery() && product.getDeliveryTemplateId() != null) { + if (deliveryModeVO.getHasShopDelivery() && product.getDeliveryTemplateId() != null) { Transport transportAndAllItems = transportService.getTransportAndAllItems(product.getDeliveryTemplateId()); productDto.setTransport(transportAndAllItems); } @@ -95,7 +92,7 @@ public class ProdController { } @GetMapping("/lastedProdPage") - @Operation(summary = "新品推荐" , description = "获取新品推荐商品列表") + @Operation(summary = "新品推荐", description = "获取新品推荐商品列表") @Parameters({ }) public ServerResponseEntity> lastedProdPage(PageParam page) { @@ -104,18 +101,18 @@ public class ProdController { } @GetMapping("/prodListByTagId") - @Operation(summary = "通过分组标签获取商品列表" , description = "通过分组标签id(tagId)获取商品列表") + @Operation(summary = "通过分组标签获取商品列表", description = "通过分组标签id(tagId)获取商品列表") @Parameters({ - @Parameter(name = "tagId", description = "当前页,默认为1" , required = true), + @Parameter(name = "tagId", description = "当前页,默认为1", required = true), }) public ServerResponseEntity> prodListByTagId( - @RequestParam(value = "tagId") Long tagId,PageParam page) { + @RequestParam(value = "tagId") Long tagId, PageParam page) { IPage productPage = prodService.pageByTagId(page, tagId); return ServerResponseEntity.success(productPage); } @GetMapping("/moreBuyProdList") - @Operation(summary = "每日疯抢" , description = "获取销量最多的商品列表") + @Operation(summary = "每日疯抢", description = "获取销量最多的商品列表") @Parameters({}) public ServerResponseEntity> moreBuyProdList(PageParam page) { IPage productPage = prodService.moreBuyProdList(page); @@ -123,9 +120,22 @@ public class ProdController { } @GetMapping("/tagProdList") - @Operation(summary = "首页所有标签商品接口" , description = "获取首页所有标签商品接口") + @Operation(summary = "首页所有标签商品接口", description = "获取首页所有标签商品接口") public ServerResponseEntity> getTagProdList() { List productDtoList = prodService.tagProdList(); return ServerResponseEntity.success(productDtoList); } + @GetMapping("/prodListByMember") + @Operation(summary = "获取会员专区商品", description = "获取会员专区商品") + public ServerResponseEntity> prodListByMember( PageParam page) { + IPage productPage = prodService.pageByMember(page); + return ServerResponseEntity.success(productPage); + } + @GetMapping("/prodListByScore") + @Operation(summary = "获取会员专区商品", description = "获取会员专区商品") + public ServerResponseEntity> prodListByScore( PageParam page) { + IPage productPage = prodService.pageByScore(page); + return ServerResponseEntity.success(productPage); + } + } diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/controller/ShopCartController.java b/yami-shop-api/src/main/java/com/yami/shop/api/controller/ShopCartController.java index 0c43c65..6a9aa12 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/controller/ShopCartController.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/controller/ShopCartController.java @@ -20,19 +20,19 @@ import com.yami.shop.bean.event.ShopCartEvent; import com.yami.shop.bean.model.Basket; import com.yami.shop.bean.model.Product; import com.yami.shop.bean.model.Sku; +import com.yami.shop.common.response.ServerResponseEntity; import com.yami.shop.common.util.Arith; import com.yami.shop.security.api.util.SecurityUtils; import com.yami.shop.service.BasketService; import com.yami.shop.service.ProductService; import com.yami.shop.service.SkuService; -import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springframework.context.ApplicationContext; -import com.yami.shop.common.response.ServerResponseEntity; import org.springframework.web.bind.annotation.*; -import jakarta.validation.Valid; import java.util.Collections; import java.util.List; import java.util.Map; @@ -63,7 +63,7 @@ public class ShopCartController { * @return */ @PostMapping("/info") - @Operation(summary = "获取用户购物车信息" , description = "获取用户购物车信息,参数为用户选中的活动项数组,以购物车id为key") + @Operation(summary = "获取用户购物车信息", description = "获取用户购物车信息,参数为用户选中的活动项数组,以购物车id为key") public ServerResponseEntity> info(@RequestBody Map basketIdShopCartParamMap) { String userId = SecurityUtils.getUser().getUserId(); @@ -79,7 +79,7 @@ public class ShopCartController { } @DeleteMapping("/deleteItem") - @Operation(summary = "删除用户购物车物品" , description = "通过购物车id删除用户购物车物品") + @Operation(summary = "删除用户购物车物品", description = "通过购物车id删除用户购物车物品") public ServerResponseEntity deleteItem(@RequestBody List basketIds) { String userId = SecurityUtils.getUser().getUserId(); basketService.deleteShopCartItemsByBasketIds(userId, basketIds); @@ -87,7 +87,7 @@ public class ShopCartController { } @DeleteMapping("/deleteAll") - @Operation(summary = "清空用户购物车所有物品" , description = "清空用户购物车所有物品") + @Operation(summary = "清空用户购物车所有物品", description = "清空用户购物车所有物品") public ServerResponseEntity deleteAll() { String userId = SecurityUtils.getUser().getUserId(); basketService.deleteAllShopCartItems(userId); @@ -143,12 +143,12 @@ public class ShopCartController { return ServerResponseEntity.showFailMsg("库存不足"); } // 所有都正常时 - basketService.addShopCartItem(param,userId); + basketService.addShopCartItem(param, userId); return ServerResponseEntity.success("添加成功"); } @GetMapping("/prodCount") - @Operation(summary = "获取购物车商品数量" , description = "获取所有购物车商品数量") + @Operation(summary = "获取购物车商品数量", description = "获取所有购物车商品数量") public ServerResponseEntity prodCount() { String userId = SecurityUtils.getUser().getUserId(); List shopCartItems = basketService.getShopCartItems(userId); @@ -160,7 +160,7 @@ public class ShopCartController { } @GetMapping("/expiryProdList") - @Operation(summary = "获取购物车失效商品信息" , description = "获取购物车失效商品列表") + @Operation(summary = "获取购物车失效商品信息", description = "获取购物车失效商品列表") public ServerResponseEntity> expiryProdList() { String userId = SecurityUtils.getUser().getUserId(); List shopCartItems = basketService.getShopCartExpiryItems(userId); @@ -186,7 +186,7 @@ public class ShopCartController { } @DeleteMapping("/cleanExpiryProdList") - @Operation(summary = "清空用户失效商品" , description = "清空用户失效商品") + @Operation(summary = "清空用户失效商品", description = "清空用户失效商品") public ServerResponseEntity cleanExpiryProdList() { String userId = SecurityUtils.getUser().getUserId(); basketService.cleanExpiryProdList(userId); @@ -194,30 +194,30 @@ public class ShopCartController { } @PostMapping("/totalPay") - @Operation(summary = "获取选中购物项总计、选中的商品数量" , description = "获取选中购物项总计、选中的商品数量,参数为购物车id数组") + @Operation(summary = "获取选中购物项总计、选中的商品数量", description = "获取选中购物项总计、选中的商品数量,参数为购物车id数组") public ServerResponseEntity getTotalPay(@RequestBody List basketIds) { // 拿到购物车的所有item List dbShopCartItems = basketService.getShopCartItems(SecurityUtils.getUser().getUserId()); List chooseShopCartItems = dbShopCartItems - .stream() - .filter(shopCartItemDto -> { - for (Long basketId : basketIds) { - if (Objects.equals(basketId,shopCartItemDto.getBasketId())) { - return true; - } - } - return false; - }) - .collect(Collectors.toList()); + .stream() + .filter(shopCartItemDto -> { + for (Long basketId : basketIds) { + if (Objects.equals(basketId, shopCartItemDto.getBasketId())) { + return true; + } + } + return false; + }) + .collect(Collectors.toList()); // 根据店铺ID划分item Map> shopCartMap = chooseShopCartItems.stream().collect(Collectors.groupingBy(ShopCartItemDto::getShopId)); - double total = 0.0; int count = 0; double reduce = 0.0; + int totalScore = 0; for (Long shopId : shopCartMap.keySet()) { //获取店铺的所有商品项 List shopCartItemDtoList = shopCartMap.get(shopId); @@ -234,7 +234,12 @@ public class ShopCartController { for (ShopCartItemDto shopCartItem : shopCartItems) { count = shopCartItem.getProdCount() + count; - total = Arith.add(shopCartItem.getProductTotalAmount(), total); + if (shopCartItem.getProductType() != 2) { + total = Arith.add(shopCartItem.getProductTotalAmount(), total); + } else { + totalScore += (shopCartItem.getPayScore() * shopCartItem.getProdCount()); + } + } } } @@ -242,6 +247,7 @@ public class ShopCartController { shopCartAmountDto.setCount(count); shopCartAmountDto.setTotalMoney(total); shopCartAmountDto.setSubtractMoney(reduce); + shopCartAmountDto.setTotalScore(totalScore); shopCartAmountDto.setFinalMoney(Arith.sub(shopCartAmountDto.getTotalMoney(), shopCartAmountDto.getSubtractMoney())); return ServerResponseEntity.success(shopCartAmountDto); diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/listener/ConfirmOrderListener.java b/yami-shop-api/src/main/java/com/yami/shop/api/listener/ConfirmOrderListener.java index c7f11c7..9cc63e6 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/listener/ConfirmOrderListener.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/listener/ConfirmOrderListener.java @@ -32,6 +32,7 @@ import org.springframework.stereotype.Component; /** * 确认订单信息时的默认操作 + * * @author LGH */ @Component("defaultConfirmOrderListener") @@ -68,7 +69,7 @@ public class ConfirmOrderListener { int totalCount = 0; double transfee = 0.0; - + int totalScore = 0; for (ShopCartItemDto shopCartItem : event.getShopCartItems()) { // 获取商品信息 Product product = productService.getProductByProdId(shopCartItem.getProdId()); @@ -81,19 +82,26 @@ public class ConfirmOrderListener { throw new YamiShopBindException("商品[" + sku.getProdName() + "]已下架"); } - totalCount = shopCartItem.getProdCount() + totalCount; - total = Arith.add(shopCartItem.getProductTotalAmount(), total); + // 用户地址如果为空,则表示该用户从未设置过任何地址相关信息 if (userAddr != null) { // 每个产品的运费相加 transfee = Arith.add(transfee, transportManagerService.calculateTransfee(shopCartItem, userAddr)); } - + totalCount = shopCartItem.getProdCount() + totalCount; shopCartItem.setActualTotal(shopCartItem.getProductTotalAmount()); + + if (shopCartItem.getProductType() != 2) { + total = Arith.add(shopCartItem.getProductTotalAmount(), total); + }else { + totalScore += shopCartItem.getPayScore() * shopCartItem.getProdCount(); + } + shopCartOrderDto.setActualTotalScore(totalScore); shopCartOrderDto.setActualTotal(Arith.add(total, transfee)); shopCartOrderDto.setTotal(total); shopCartOrderDto.setTotalCount(totalCount); shopCartOrderDto.setTransfee(transfee); + } } } diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java b/yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java index 2cb0f8d..7f7a5c2 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java @@ -46,7 +46,7 @@ import java.util.*; public class SubmitOrderListener { - + private final UserAddrOrderService userAddrOrderService; @@ -138,7 +138,6 @@ public class SubmitOrderListener { // 使用雪花算法生成的订单号 String orderNumber = String.valueOf(snowflake.nextId()); shopCartOrderDto.setOrderNumber(orderNumber); - Long shopId = shopCartOrderDto.getShopId(); // 订单商品名称 @@ -211,6 +210,7 @@ public class SubmitOrderListener { order.setRemarks(shopCartOrderDto.getRemarks()); order.setOrderItems(orderItems); + order.setActualTotalScore(shopCartOrderDto.getActualTotalScore()); return order; } @@ -233,6 +233,8 @@ public class SubmitOrderListener { orderProdName.append(orderItem.getProdName()).append(","); //推广员卡号 orderItem.setDistributionCardNo(shopCartItem.getDistributionCardNo()); + orderItem.setProductType(shopCartItem.getProductType()); + orderItem.setPayScore(shopCartItem.getPayScore()); return orderItem; } diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/OrderShopDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/OrderShopDto.java index 76e0c5a..c544b9c 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/OrderShopDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/OrderShopDto.java @@ -84,4 +84,10 @@ public class OrderShopDto implements Serializable { */ @Schema(description = "订单状态" , required = true) private Integer status; + /** + * 订单状态 + */ + @Schema(description = "支付积分" , required = true) + private Integer actualTotalScore; + } diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java index 0d45af3..5794b0a 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java @@ -26,83 +26,93 @@ public class ProductDto { /** * 店铺ID */ - @Schema(description = "店铺ID" , required = true) + @Schema(description = "店铺ID", required = true) private Long shopId; /** * 店铺名称 */ - @Schema(description = "店铺名称" , required = true) + @Schema(description = "店铺名称", required = true) private String shopName; /** * 商品ID */ - @Schema(description = "商品ID" , required = true) + @Schema(description = "商品ID", required = true) private Long prodId; /** * 商品名称 */ - @Schema(description = "商品名称" ) + @Schema(description = "商品名称") private String prodName; /** * 商品价格 */ - @Schema(description = "商品价格" , required = true) + @Schema(description = "商品价格", required = true) private Double price; /** * 商品详情 */ - @Schema(description = "详细描述" ) + @Schema(description = "详细描述") private String content; /** * 商品原价 */ - @Schema(description = "商品原价" , required = true) + @Schema(description = "商品原价", required = true) private Double oriPrice; /** * 库存量 */ - @Schema(description = "库存量" , required = true) + @Schema(description = "库存量", required = true) private Integer totalStocks; /** * 简要描述,卖点等 */ - @Schema(description = "简要描述,卖点等" , required = true) + @Schema(description = "简要描述,卖点等", required = true) private String brief; /** * 商品主图 */ @JsonSerialize(using = ImgJsonSerializer.class) - @Schema(description = "商品主图" , required = true) + @Schema(description = "商品主图", required = true) private String pic; @JsonSerialize(using = ImgJsonSerializer.class) - @Schema(description = "商品图片列表,以逗号分割" , required = true) + @Schema(description = "商品图片列表,以逗号分割", required = true) private String imgs; /** * 商品分类 */ - @Schema(description = "商品分类id" , required = true) + @Schema(description = "商品分类id", required = true) private Long categoryId; - @Schema(description = "sku列表" ) + @Schema(description = "sku列表") private List skuList; - @Schema(description = "运费信息" , required = true) + @Schema(description = "运费信息", required = true) private Transport transport; - public static interface WithNoContent{} + @Schema(description = "商品积分价值", required = false) + private Integer payScore; + @Schema(description = "购买商品赠送积分", required = false) + private Integer giveScore; - public static interface WithContent extends WithNoContent{} + @Schema(description = "商品类型", required = true) + private Integer productType; + + public static interface WithNoContent { + } + + public static interface WithContent extends WithNoContent { + } } diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java index f4e8f75..bf608d9 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java @@ -65,4 +65,11 @@ public class ProductItemDto implements Serializable { @Schema(description = "参与满减活动列表" ) private List discounts = new ArrayList<>(); + + @Schema(description = "商品类型" ) + private Integer productType; + @Schema(description = "支付需要多少积分" ) + private Integer payScore = 1000; + @Schema(description = "购买获得多少积分" ) + private Integer giveScore ; } diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartAmountDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartAmountDto.java index 1ef3bcb..9d04c7d 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartAmountDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartAmountDto.java @@ -31,4 +31,6 @@ public class ShopCartAmountDto { @Schema(description = "商品数量" ) private Integer count; + @Schema(description = "支付积分" ) + private Integer totalScore; } diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderDto.java index ce4c25a..ada61e9 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderDto.java @@ -31,7 +31,8 @@ public class ShopCartOrderDto implements Serializable{ @Schema(description = "实际总值" , required = true) private Double actualTotal; - + @Schema(description = "实际支付积分" , required = true) + private Integer actualTotalScore; @Schema(description = "商品总值" , required = true) private Double total; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderMergerDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderMergerDto.java index 30b6bc8..5f1f791 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderMergerDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderMergerDto.java @@ -26,7 +26,8 @@ public class ShopCartOrderMergerDto implements Serializable{ @Schema(description = "实际总值" , required = true) private Double actualTotal; - + @Schema(description = "实际总积分" , required = true) + private Integer actualTotalScore; @Schema(description = "商品总值" , required = true) private Double total; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java index 41d2957..63b72b0 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java @@ -62,6 +62,10 @@ public class Order implements Serializable { * 实际总值 */ private Double actualTotal; + /** + * 实际积分 + */ + private Integer actualTotalScore; /** * 支付方式 1 微信支付 2 支付宝 diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java index 0cdf2ba..6f81717 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java @@ -112,4 +112,12 @@ public class OrderItem implements Serializable { * 加入购物车的时间 */ private Date basketDate; + /** + * 支付积分 + */ + private Integer payScore; + /** + * 商品类型 + */ + private Integer productType; } diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java index ed42d17..e9cad8f 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java @@ -120,6 +120,19 @@ public class Product implements Serializable { */ private Date putawayTime; + /** + * 商品类型 0 普通商品 1 会员商品 3 积分商品 + */ + private Integer productType; + + /** + * 商品积分价值 + */ + private Integer payScore; + /** + * 商品积分价值 + */ + private Integer giveScore; /** * 版本 */ diff --git a/yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java b/yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java index 9a82e3f..4e3686e 100644 --- a/yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java +++ b/yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java @@ -127,4 +127,7 @@ public interface ProductMapper extends BaseMapper { */ IPage collectionProds(@Param("page") PageParam page, @Param("userId") String userId); + IPage pageByMember(Page page); + + IPage pageByScore(Page page); } diff --git a/yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java b/yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java index b3c9b30..d33aef0 100644 --- a/yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java +++ b/yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java @@ -27,6 +27,9 @@ import java.util.List; */ public interface ProductService extends IService { + + + /** * 保存商品 * @@ -90,6 +93,19 @@ public interface ProductService extends IService { * @return */ IPage pageByCategoryId(Page page, Long categoryId); + /** + * 获取会员专区商品 + * @param page + * + * @return + */ + IPage pageByMember(Page page); + /** + * 获取积分专区商品 + * @param page + * @return + */ + IPage pageByScore(Page page); /** * 根据商品名称 diff --git a/yami-shop-service/src/main/java/com/yami/shop/service/impl/BasketServiceImpl.java b/yami-shop-service/src/main/java/com/yami/shop/service/impl/BasketServiceImpl.java index fee6b8d..2182a39 100644 --- a/yami-shop-service/src/main/java/com/yami/shop/service/impl/BasketServiceImpl.java +++ b/yami-shop-service/src/main/java/com/yami/shop/service/impl/BasketServiceImpl.java @@ -98,6 +98,7 @@ public class BasketServiceImpl extends ServiceImpl impleme return shopCartItemDtoList; } shopCartItemDtoList = basketMapper.getShopCartItems(userId); + for (ShopCartItemDto shopCartItemDto : shopCartItemDtoList) { shopCartItemDto.setProductTotalAmount(Arith.mul(shopCartItemDto.getProdCount(), shopCartItemDto.getPrice())); } diff --git a/yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java b/yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java index a6365ae..c7687a2 100644 --- a/yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java +++ b/yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java @@ -175,6 +175,16 @@ public class ProductServiceImpl extends ServiceImpl impl return productMapper.pageByCategoryId(page, categoryId); } + @Override + public IPage pageByMember(Page page) { + return productMapper.pageByMember(page); + } + + @Override + public IPage pageByScore(Page page) { + return productMapper.pageByScore(page); + } + @Override public IPage getSearchProdDtoPageByProdName(Page page, String prodName, Integer sort, Integer orderBy) { IPage searchProdDtoPage = productMapper.getSearchProdDtoPageByProdName(page, prodName, sort, orderBy); diff --git a/yami-shop-service/src/main/resources/mapper/BasketMapper.xml b/yami-shop-service/src/main/resources/mapper/BasketMapper.xml index 5a2e1a6..b56928c 100644 --- a/yami-shop-service/src/main/resources/mapper/BasketMapper.xml +++ b/yami-shop-service/src/main/resources/mapper/BasketMapper.xml @@ -17,14 +17,28 @@ + diff --git a/yami-shop-service/src/main/resources/mapper/OrderItemMapper.xml b/yami-shop-service/src/main/resources/mapper/OrderItemMapper.xml index 9d2950a..2795a1b 100644 --- a/yami-shop-service/src/main/resources/mapper/OrderItemMapper.xml +++ b/yami-shop-service/src/main/resources/mapper/OrderItemMapper.xml @@ -24,11 +24,11 @@ INSERT INTO `tz_order_item` (shop_id,order_number,prod_id,sku_id,sku_name, prod_count,prod_name,pic,price,user_id,product_total_amount,rec_time,comm_sts, - distribution_card_no,basket_date) VALUES + distribution_card_no,basket_date,pay_score,product_type) VALUES (#{orderItem.shopId},#{orderItem.orderNumber},#{orderItem.prodId},#{orderItem.skuId},#{orderItem.skuName}, #{orderItem.prodCount},#{orderItem.prodName},#{orderItem.pic},#{orderItem.price},#{orderItem.userId},#{orderItem.productTotalAmount},#{orderItem.recTime},#{orderItem.commSts}, - #{orderItem.distributionCardNo},#{orderItem.basketDate}) + #{orderItem.distributionCardNo},#{orderItem.basketDate},#{orderItem.payScore},#{orderItem.productType}) diff --git a/yami-shop-service/src/main/resources/mapper/ProductMapper.xml b/yami-shop-service/src/main/resources/mapper/ProductMapper.xml index c3382cb..891f505 100644 --- a/yami-shop-service/src/main/resources/mapper/ProductMapper.xml +++ b/yami-shop-service/src/main/resources/mapper/ProductMapper.xml @@ -21,6 +21,9 @@ + + + @@ -45,7 +48,10 @@ - p.`prod_id`, + p + . + `prod_id` + , p.`shop_id`, p.`prod_name`, p.`pic`, @@ -58,7 +64,10 @@ - p.prod_id, + p + . + prod_id + , p.pic, p.prod_name, p.price, @@ -67,22 +76,29 @@ - update tz_prod set total_stocks = total_stocks - #{prod.totalStocks} ,version = version + 1 where prod_id = #{prod.prodId} and #{prod.totalStocks} <= total_stocks - + update tz_prod + set total_stocks = total_stocks - #{prod.totalStocks}, + version = version + 1 + where prod_id = #{prod.prodId} + and #{prod.totalStocks} <= total_stocks + + select * + from tz_prod + where prod_name = #{prodName} + and shop_id = #{shopId} + @@ -223,5 +239,20 @@ (SELECT uc.`prod_id` FROM tz_user_collection uc WHERE uc.user_id = #{userId}) + +