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); }