From 59844096014058689e95799045aac24aa03e8306 Mon Sep 17 00:00:00 2001 From: DB <2502523450@qq.com> Date: Thu, 2 Nov 2023 18:31:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E4=B8=8B=E5=8D=95=E9=94=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98;=E8=B0=83=E6=95=B4=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=92=E5=BA=8F=E4=B8=BA=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mini/MiniProductController.java | 25 ++++++++++++++++--- .../service/impl/OrderServiceImpl.java | 19 ++++++++------ .../service/impl/ProductServiceImpl.java | 8 +++--- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/mini/MiniProductController.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/mini/MiniProductController.java index fa7eaf7..11c99af 100644 --- a/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/mini/MiniProductController.java +++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/mini/MiniProductController.java @@ -1,22 +1,24 @@ package com.cpop.mall.business.controller.mini; +import com.cpop.common.utils.bean.BeanUtils; import com.cpop.core.base.R; +import com.cpop.core.utils.SpringUtils; import com.cpop.mall.business.bo.ProductPageBo; import com.cpop.mall.business.service.ProductService; import com.cpop.mall.business.vo.MiniProductPageVo; import com.cpop.mall.business.vo.ProductEvaluateVo; import com.cpop.mall.business.vo.ProductPageVo; import com.cpop.mall.business.vo.StoreListVo; +import com.cpop.system.business.entity.Store; +import com.cpop.system.business.service.StoreService; import com.mybatisflex.core.paginate.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.util.Arrays; import java.util.List; /** @@ -74,4 +76,19 @@ public class MiniProductController { return R.ok(page); } + /** + * @descriptions 根据校区ids获取校区信息 + * @author DB + * @date 2023/11/02 17:11 + * @param storeIds 校区id列表 + * @return: com.cpop.core.base.R> + */ + @PostMapping("/getStoreByIds") + @ApiOperation("根据校区ids获取校区信息") + public R> getMiniProductPage(@RequestParam("storeIds") String storeIds) { + List stores = SpringUtils.getBean(StoreService.class).listByIds(Arrays.asList(storeIds.split(","))); + List list = BeanUtils.mapToList(stores, StoreListVo.class); + return R.ok(list); + } + } diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderServiceImpl.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderServiceImpl.java index 1f518e9..f317c52 100644 --- a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderServiceImpl.java +++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderServiceImpl.java @@ -144,8 +144,9 @@ public class OrderServiceImpl extends ServiceImpl implements Lock userIdLock = redisService.distributedLock(MallRedisConstant.IDEMPOTENT_LOCK_USER_PAY + loginUserInfo.getString("userId")); if (userIdLock.tryLock()) { //检查库存 - Map recordNumIsEnough = recordNumIsEnough(bo.getPlaceOrderDetailList()); + Map recordNumIsEnough = null; try { + recordNumIsEnough= recordNumIsEnough(bo.getPlaceOrderDetailList()); Order order = BeanUtils.mapToClass(bo, Order.class); List orderDetails = BeanUtils.mapToList(bo.getPlaceOrderDetailList(), OrderDetail.class); //规格记录ids @@ -202,17 +203,19 @@ public class OrderServiceImpl extends ServiceImpl implements } } catch (Exception e) { //回滚库存 - recordNumIsEnough.forEach((key, value) -> { - redisService.longIncrement(MallRedisConstant.STOCK_RECORD_NUM + key, value.longValue()); - }); + if (recordNumIsEnough != null){ + recordNumIsEnough.forEach((key, value) -> { + redisService.longIncrement(MallRedisConstant.STOCK_RECORD_NUM + key, value.longValue()); + }); + } throw new ServiceException(e.getMessage()); - }finally { + } finally { //释放锁 userIdLock.unlock(); } }else { //获取锁失败,直接返回空 - return null; + throw new ServiceException("请勿重复下单"); } } @@ -232,7 +235,7 @@ public class OrderServiceImpl extends ServiceImpl implements productRecordService.updateBatch(productRecords); //TODO: 通知到云? //修改订单状态 - return this.updateChain().set(ORDER.ORDER_STATUS, 3).where(ORDER.ID.eq(orderId)).update(); + return this.updateChain().set(ORDER.ORDER_STATUS, 1).where(ORDER.ID.eq(orderId)).update(); } @@ -243,7 +246,7 @@ public class OrderServiceImpl extends ServiceImpl implements * @param list 订单详情 * @return: Map 预库存记录 */ - private Map recordNumIsEnough(List list) { + private Map recordNumIsEnough(List list) throws ServiceException { RedisService redisService = SpringUtils.getBean(RedisService.class); Map stockNumMap = new HashMap<>(); //遍历库存 diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/ProductServiceImpl.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/ProductServiceImpl.java index b95f360..5fd05bb 100644 --- a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/ProductServiceImpl.java +++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/ProductServiceImpl.java @@ -92,9 +92,7 @@ public class ProductServiceImpl extends ServiceImpl impl .and(PRODUCT.IS_UP.eq(bo.getIsUp())) .and(PRODUCT.STORE_IDS.like(bo.getAuthorizedStoreId())) //置顶 - .orderBy(PRODUCT.IS_TOP.desc()) - .orderBy(PRODUCT.CREATE_TIME.desc()) - .orderBy(pageDomain.getOrderByColumn()), + .orderBy(PRODUCT.IS_TOP.desc(),PRODUCT.UPDATE_TIME.desc()), ProductPageVo.class, //子查询 item -> item.field(ProductPageVo::getTradeInfo) @@ -133,7 +131,7 @@ public class ProductServiceImpl extends ServiceImpl impl //价格排序 if (null != bo.getPriceOrder()){ if (bo.getPriceOrder()) { - queryWrapper.orderBy(PRODUCT.MAX_PRICE.desc()); + queryWrapper.orderBy(PRODUCT.MIN_PRICE.desc()); } else { queryWrapper.orderBy(PRODUCT.MIN_PRICE.asc()); } @@ -149,7 +147,7 @@ public class ProductServiceImpl extends ServiceImpl impl .and(PRODUCT.PRODUCT_NAME.like(bo.getProductName())) .and(PRODUCT.BUY_RESTRICT.eq(bo.getBuyRestrict())) .and(PRODUCT.PAY_TYPE.eq(bo.getPayType())) - .orderBy(pageDomain.getOrderByColumn()), + .orderBy(PRODUCT.IS_TOP.desc(), PRODUCT.UPDATE_TIME.desc()), MiniProductPageVo.class); }