From b57b196dd58aa885912fac8e7171158c225e1e35 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Tue, 24 Oct 2023 13:08:01 +0800 Subject: [PATCH] bug fix --- .../book/controller/BuyOrderController.java | 134 ++--- .../controller/ShopSeckillController.java | 182 +++---- .../controller/UserFollowUpController.java | 2 +- .../book/controller/UserRecordController.java | 4 +- .../peanut/modules/book/entity/BuyOrder.java | 4 +- .../book/service/ShopSeckillService.java | 62 +-- .../service/impl/BuyOrderServiceImpl.java | 48 +- .../service/impl/ShopSeckillServiceImpl.java | 510 +++++++++--------- .../book/task/SeckillProdScheduled.java | 66 +-- .../request/ModifyOrderAddressRequestVo.java | 6 +- .../resources/mapper/book/BuyOrderDao.xml | 2 +- .../mapper/book/ShopProductBookDao.xml | 2 +- 12 files changed, 502 insertions(+), 520 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java index d44c98f6..665cdd72 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -5,27 +5,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.PageUtils; -import com.peanut.common.utils.Query; import com.peanut.common.utils.R; import com.peanut.config.Constants; import com.peanut.config.DelayQueueConfig; import com.peanut.modules.book.entity.*; import com.peanut.modules.book.service.*; +import com.peanut.modules.book.vo.UserAddressVo; import com.peanut.modules.book.vo.request.BuyOrderListRequestVo; import com.peanut.modules.book.vo.request.ModifyOrderAddressRequestVo; import com.peanut.modules.book.vo.request.ProductRequestVo; import com.peanut.modules.book.vo.request.ProductTransportVo; import com.peanut.modules.book.vo.response.BuyOrderResponseVo; import com.peanut.modules.book.vo.response.ExpressQueryResponseVo; -import com.peanut.modules.book.vo.ShippingAddressRequestVo; -import com.peanut.modules.book.vo.UserAddressVo; import com.peanut.modules.book.vo.response.OrderAddressResponseVo; import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo; import com.peanut.modules.pay.weChatPay.service.WxpayService; import com.peanut.modules.sys.entity.SysConfigEntity; import com.peanut.modules.sys.service.SysConfigService; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.formula.functions.Count; import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -182,7 +179,7 @@ public class BuyOrderController { buyOrderService.save(buyOrder); for (BuyOrderDetail buyOrderDetail : buyOrderDetails) { - buyOrderDetail.setOrderId(buyOrder.getOrderId()); + buyOrderDetail.setOrderId(buyOrder.getId()); buyOrderDetail.setUserId(buyOrder.getUserId()); if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { handleBuyCart(buyOrder, buyOrderDetail); @@ -207,12 +204,12 @@ public class BuyOrderController { rabbitTemplate.convertAndSend( DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE, DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY, - buyOrder.getOrderId(), + buyOrder.getId(), messagePostProcessor() ); WechatPaymentInfo paymentInfo = new WechatPaymentInfo(); paymentInfo.setOrderSn(orderSn); - paymentInfo.setBuyOrderId(buyOrder.getOrderId()); + paymentInfo.setBuyOrderId(buyOrder.getId()); paymentInfo.setTotalAmount(totalPrice); wxpayService.prepay(paymentInfo); } @@ -229,9 +226,9 @@ public class BuyOrderController { * @return * @throws IOException */ - @RequestMapping(value = "placeOrder", method = RequestMethod.POST) + @RequestMapping(value = "/placeOrder", method = RequestMethod.POST) public R placeOrder(@RequestBody BuyOrder buyOrder) throws IOException { - List buyOrderProductList = buyOrder.getProductInfoList(); + List buyOrderProductList = buyOrder.getProductList(); // 订单总金额 BigDecimal totalPrice = new BigDecimal(0); // 遍历商品总价计算 @@ -244,8 +241,6 @@ public class BuyOrderController { return R.error(500, "库存不足"); } totalPrice = totalPrice.add(price.multiply(BigDecimal.valueOf(quantity))); - //buyOrderDetail.setProductName(product.getProductName()); - //buyOrderDetail.setProductPrice(product.getPrice()); int originWeight = product.getWeight(); int originWeightIntValue = originWeight / 100; int originWeightDecimalValue = originWeightIntValue % 100; @@ -272,7 +267,7 @@ public class BuyOrderController { buyOrderService.save(buyOrder); for (BuyOrderProduct buyOrderDetail : buyOrderProductList) { - buyOrderDetail.setOrderId(buyOrder.getOrderId()); + buyOrderDetail.setOrderId(buyOrder.getId()); //buyOrderDetail.setUserId(buyOrder.getUserId()); if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { handleBuyCart(buyOrder, buyOrderDetail); @@ -298,12 +293,12 @@ public class BuyOrderController { rabbitTemplate.convertAndSend( DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE, DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY, - buyOrder.getOrderId(), + buyOrder.getId(), messagePostProcessor() ); WechatPaymentInfo paymentInfo = new WechatPaymentInfo(); paymentInfo.setOrderSn(orderSn); - paymentInfo.setBuyOrderId(buyOrder.getOrderId()); + paymentInfo.setBuyOrderId(buyOrder.getId()); paymentInfo.setTotalAmount(totalPrice); wxpayService.prepay(paymentInfo); } @@ -347,6 +342,40 @@ public class BuyOrderController { } + /** + * @param orderSn 订单号 + * @return R + */ + @RequestMapping(value = "/cancelOrder", method = RequestMethod.GET) + @Transactional + public R appDelete(@RequestParam("orderSn") String orderSn) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_sn", orderSn); + BuyOrder buyOrder = buyOrderService.getOne(queryWrapper); + + if (buyOrder == null) { + return R.error("订单不存在"); + } + if (buyOrder.getCouponId() != null) { + Integer couponId = buyOrder.getCouponId(); + CouponHistoryEntity couponHistory = couponHistoryService.getById(couponId); + couponHistory.setUseStatus(0); + couponHistoryService.updateById(couponHistory); + } + // 库存回滚 + QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); + buyOrderProductQueryWrapper.eq("order_id",buyOrder.getId()); + List buyOrderProductList = buyOrderProductService.list(buyOrderProductQueryWrapper); + for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + Integer productId = buyOrderProduct.getProductId(); + ShopProduct product = shopProductService.getById(productId); + product.setProductStock(product.getProductStock() + buyOrderProduct.getQuantity()); + shopProductService.updateById(product); + } + buyOrderService.removeById(buyOrder.getId()); + return R.ok(); + } + /** * 修改 */ @@ -389,7 +418,7 @@ public class BuyOrderController { } // 库存回滚 List buyOrderDetailEntities = buyOrderDetailService.getBaseMapper().selectList(new QueryWrapper() - .eq("order_id", byId.getOrderId())); + .eq("order_id", byId.getId())); for (BuyOrderDetail buyOrderDetailEntity : buyOrderDetailEntities) { Integer productId = buyOrderDetailEntity.getProductId(); ShopProduct product = shopProductService.getById(productId); @@ -401,39 +430,6 @@ public class BuyOrderController { return R.ok(); } - /** - * @param orderSn 订单号 - * @return R - */ - @RequestMapping("/cancelOrder") - @Transactional - public R appDelete(@RequestParam("orderSn") String orderSn) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_sn", orderSn); - BuyOrder buyOrder = buyOrderService.getOne(queryWrapper); - - if (buyOrder == null) { - return R.error("订单不存在"); - } - if (buyOrder.getCouponId() != null) { - Integer couponId = buyOrder.getCouponId(); - CouponHistoryEntity couponHistory = couponHistoryService.getById(couponId); - couponHistory.setUseStatus(0); - couponHistoryService.updateById(couponHistory); - } - // 库存回滚 - List buyOrderProductList = buyOrderProductService.getBaseMapper().selectList(new QueryWrapper() - .eq("order_id", buyOrder.getOrderId())); - for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { - Integer productId = buyOrderProduct.getProductId(); - ShopProduct product = shopProductService.getById(productId); - product.setProductStock(product.getProductStock() + buyOrderProduct.getQuantity()); - shopProductService.updateById(product); - } - buyOrderService.removeById(buyOrder.getOrderId()); - return R.ok(); - } - /** * 充值专用订单生成接口 @@ -464,7 +460,7 @@ public class BuyOrderController { @RequestMapping("/getOrderDetail") public R getOrderDetail(@RequestParam Integer orderId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(BuyOrder::getOrderId, orderId); + wrapper.eq(BuyOrder::getId, orderId); BuyOrder one = buyOrderService.getOne(wrapper); if (one.equals(null)) { return R.error("order error:order is null"); @@ -509,10 +505,11 @@ public class BuyOrderController { * @param addressRequestVo 地址请求 value object * @return R */ - @RequestMapping(value = "/modifyOrderAddress", method = RequestMethod.POST) - public R modifyOrderAddress(@RequestBody ShippingAddressRequestVo addressRequestVo) { - BuyOrder buyOrder = buyOrderService.getById(addressRequestVo.getOrderId()); - + @RequestMapping(value = "/modifyConsigneeAddress", method = RequestMethod.POST) + public R modifyOrderAddress(@RequestBody ModifyOrderAddressRequestVo addressRequestVo) { + QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); + buyOrderQueryWrapper.eq("order_sn", addressRequestVo.getOrderSn()); + BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); String provinceCode = addressRequestVo.getProvinceCode(); QueryWrapper provinceQueryWrapper = new QueryWrapper<>(); provinceQueryWrapper.eq("region_code", provinceCode); @@ -528,8 +525,8 @@ public class BuyOrderController { countyQueryWrapper.eq("region_code", countyCode); County county = countyService.getOne(countyQueryWrapper); buyOrder.setDistrict(county.getCountyName()); - buyOrder.setShippingUser(addressRequestVo.getName()); - buyOrder.setUserPhone(addressRequestVo.getMobile()); + buyOrder.setShippingUser(addressRequestVo.getConsigneeName()); + buyOrder.setUserPhone(addressRequestVo.getConsigneeMobile()); buyOrder.setAddress(addressRequestVo.getAddress()); buyOrderService.updateById(buyOrder); return R.ok(); @@ -541,7 +538,7 @@ public class BuyOrderController { * @param orderSn 订单号 * @return R */ - @RequestMapping(value = "/getOrderAddress", method = RequestMethod.GET) + @RequestMapping(value = "/getConsigneeAddress", method = RequestMethod.GET) public R getOrderAddress(@RequestParam("orderSn") String orderSn) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("order_sn", orderSn); @@ -584,7 +581,7 @@ public class BuyOrderController { QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); buyOrderQueryWrapper.eq("order_sn", orderSn); BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); - Integer orderId = buyOrder.getOrderId(); + Integer orderId = buyOrder.getId(); QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); buyOrderProductQueryWrapper.eq("order_id", orderId); @@ -629,13 +626,13 @@ public class BuyOrderController { * 分包发货 * * @param expressCompanyCode 快递公司编码 - * @param buyOrderDetailId 订单详情列表 + * @param buyOrderProductId 订单商品 * @return R */ @RequestMapping(value = "/delivery", method = RequestMethod.POST) public R delivery(@RequestParam("expressCompanyCode") String expressCompanyCode, - @RequestBody List buyOrderDetailId) throws Exception { - buyOrderService.delivery(expressCompanyCode, buyOrderDetailId); + @RequestBody List buyOrderProductId) throws Exception { + buyOrderService.delivery(expressCompanyCode, buyOrderProductId); return R.ok(); } @@ -700,7 +697,7 @@ public class BuyOrderController { CouponHistoryEntity couponHistory = couponHistoryService.getById(couponId); couponHistory.setUseStatus(1); couponHistory.setUseTime(new Date()); - couponHistory.setOrderId(Long.valueOf(buyOrder.getOrderId())); + couponHistory.setOrderId(Long.valueOf(buyOrder.getId())); couponHistory.setOrderSn(buyOrder.getOrderSn()); CouponEntity coupon = couponService.getById(couponHistory.getCouponId()); @@ -709,21 +706,6 @@ public class BuyOrderController { return BigDecimal.ZERO; } - @RequestMapping("/modifyConsigneeAddress") - public R modifyConsigneeAddress(@RequestBody ModifyOrderAddressRequestVo requestVo) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_sn", requestVo.getOrderSn()); - BuyOrder buyOrder = buyOrderService.getOne(queryWrapper); - buyOrder.setShippingUser(requestVo.getConsigneeName()); - buyOrder.setUserPhone(requestVo.getConsigneeMobile()); - buyOrder.setProvince(requestVo.getProvince()); - buyOrder.setCity(requestVo.getCity()); - buyOrder.setDistrict(requestVo.getCounty()); - buyOrder.setAddress(requestVo.getAddress()); - buyOrder.setAddressModified(1); - buyOrderService.updateById(buyOrder); - return R.ok(); - } /** * 计算运费 diff --git a/src/main/java/com/peanut/modules/book/controller/ShopSeckillController.java b/src/main/java/com/peanut/modules/book/controller/ShopSeckillController.java index 2ac9c730..974970b6 100644 --- a/src/main/java/com/peanut/modules/book/controller/ShopSeckillController.java +++ b/src/main/java/com/peanut/modules/book/controller/ShopSeckillController.java @@ -1,91 +1,91 @@ -package com.peanut.modules.book.controller; - -import com.peanut.common.utils.PageUtils; -import com.peanut.common.utils.R; -import com.peanut.modules.book.entity.ShopSeckillEntity; -import com.peanut.modules.book.service.ShopSeckillService; -import com.peanut.modules.book.to.SeckillRedisTo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; - - -/** - * 秒杀库存表 - * - * @author yl - * @email yl328572838@163.com - * @date 2022-10-28 11:24:05 - */ -@RestController -@RequestMapping("book/shopseckill") -public class ShopSeckillController { - @Autowired - private ShopSeckillService shopSeckillService; - - /** - * 列表 - */ - @RequestMapping("/list") - public R list(@RequestParam Map params) { - PageUtils page = shopSeckillService.queryPage(params); - return R.ok().put("page", page); - } - - - /** - * 信息 - */ - @RequestMapping("/info/{seckillId}") - public R info(@PathVariable("seckillId") Long seckillId) { - ShopSeckillEntity shopSeckill = shopSeckillService.getById(seckillId); - return R.ok().put("shopSeckill", shopSeckill); - } - - /** - * 保存 - */ - @RequestMapping("/save") - public R save(@RequestBody ShopSeckillEntity shopSeckill) { - shopSeckillService.save(shopSeckill); - return R.ok(); - } - - /** - * 修改 - */ - @RequestMapping("/update") - public R update(@RequestBody ShopSeckillEntity shopSeckill) { - shopSeckillService.updateById(shopSeckill); - return R.ok(); - } - - /** - * 删除 - */ - @RequestMapping("/delete") - public R delete(@RequestBody Long[] seckillIds) { - shopSeckillService.removeByIds(Arrays.asList(seckillIds)); - return R.ok(); - } - - @GetMapping("/getSeckillProd") - public R getSeckillProd() { - List list = shopSeckillService.getCurrentSeckillProd(); - return R.ok().put("list", list); - } - - @GetMapping("/kill") - public R kill(@RequestParam("killId") String killId, - @RequestParam("key") String key, - @RequestParam("num") Integer num, - @RequestParam("userId") Integer userId) { - String orderId = shopSeckillService.kill(killId, key, num, userId); - return R.ok().put("orderId", orderId); - } - - -} +//package com.peanut.modules.book.controller; +// +//import com.peanut.common.utils.PageUtils; +//import com.peanut.common.utils.R; +//import com.peanut.modules.book.entity.ShopSeckillEntity; +//import com.peanut.modules.book.service.ShopSeckillService; +//import com.peanut.modules.book.to.SeckillRedisTo; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Arrays; +//import java.util.List; +//import java.util.Map; +// +// +///** +// * 秒杀库存表 +// * +// * @author yl +// * @email yl328572838@163.com +// * @date 2022-10-28 11:24:05 +// */ +//@RestController +//@RequestMapping("book/shopseckill") +//public class ShopSeckillController { +// @Autowired +// private ShopSeckillService shopSeckillService; +// +// /** +// * 列表 +// */ +// @RequestMapping("/list") +// public R list(@RequestParam Map params) { +// PageUtils page = shopSeckillService.queryPage(params); +// return R.ok().put("page", page); +// } +// +// +// /** +// * 信息 +// */ +// @RequestMapping("/info/{seckillId}") +// public R info(@PathVariable("seckillId") Long seckillId) { +// ShopSeckillEntity shopSeckill = shopSeckillService.getById(seckillId); +// return R.ok().put("shopSeckill", shopSeckill); +// } +// +// /** +// * 保存 +// */ +// @RequestMapping("/save") +// public R save(@RequestBody ShopSeckillEntity shopSeckill) { +// shopSeckillService.save(shopSeckill); +// return R.ok(); +// } +// +// /** +// * 修改 +// */ +// @RequestMapping("/update") +// public R update(@RequestBody ShopSeckillEntity shopSeckill) { +// shopSeckillService.updateById(shopSeckill); +// return R.ok(); +// } +// +// /** +// * 删除 +// */ +// @RequestMapping("/delete") +// public R delete(@RequestBody Long[] seckillIds) { +// shopSeckillService.removeByIds(Arrays.asList(seckillIds)); +// return R.ok(); +// } +// +// @GetMapping("/getSeckillProd") +// public R getSeckillProd() { +// List list = shopSeckillService.getCurrentSeckillProd(); +// return R.ok().put("list", list); +// } +// +// @GetMapping("/kill") +// public R kill(@RequestParam("killId") String killId, +// @RequestParam("key") String key, +// @RequestParam("num") Integer num, +// @RequestParam("userId") Integer userId) { +// String orderId = shopSeckillService.kill(killId, key, num, userId); +// return R.ok().put("orderId", orderId); +// } +// +// +//} diff --git a/src/main/java/com/peanut/modules/book/controller/UserFollowUpController.java b/src/main/java/com/peanut/modules/book/controller/UserFollowUpController.java index 82a6733d..1d669c4a 100644 --- a/src/main/java/com/peanut/modules/book/controller/UserFollowUpController.java +++ b/src/main/java/com/peanut/modules/book/controller/UserFollowUpController.java @@ -115,7 +115,7 @@ public class UserFollowUpController { .eq("order_sn", orderSn).last("LIMIT 1") ); - Integer orderId = buyOrder.getOrderId(); + Integer orderId = buyOrder.getId(); Integer bookid = userRecord.getBookid(); Integer userid = userRecord.getUserid(); Integer id1 = userRecord.getId(); diff --git a/src/main/java/com/peanut/modules/book/controller/UserRecordController.java b/src/main/java/com/peanut/modules/book/controller/UserRecordController.java index cdfc95c7..232249f2 100644 --- a/src/main/java/com/peanut/modules/book/controller/UserRecordController.java +++ b/src/main/java/com/peanut/modules/book/controller/UserRecordController.java @@ -176,7 +176,7 @@ public class UserRecordController { return error("您已评价过了,请勿重复评论"); // } else { - userRecord.setId(buyOrder.getOrderId()); + userRecord.setId(buyOrder.getId()); userRecord.setContent(comment); //商品评价 userRecord.setBookid(bookid); @@ -201,7 +201,7 @@ public class UserRecordController { QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); buyOrderQueryWrapper.eq("order_sn", recordEntity.getOrderSn()); BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); - Integer orderId = buyOrder.getOrderId(); + Integer orderId = buyOrder.getId(); QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); buyOrderProductQueryWrapper.eq("order_id", orderId); buyOrderProductQueryWrapper.eq("product_id", recordEntity.getProductId()); diff --git a/src/main/java/com/peanut/modules/book/entity/BuyOrder.java b/src/main/java/com/peanut/modules/book/entity/BuyOrder.java index 1be14447..9e341264 100644 --- a/src/main/java/com/peanut/modules/book/entity/BuyOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/BuyOrder.java @@ -22,7 +22,7 @@ public class BuyOrder implements Serializable { private static final long serialVersionUID = 1L; @TableId - private Integer orderId; + private Integer id; /** * 订单编号 */ @@ -130,7 +130,7 @@ public class BuyOrder implements Serializable { private List products; @TableField(exist = false) - private List productInfoList; + private List productList; @TableField(exist = false) private String buyType; diff --git a/src/main/java/com/peanut/modules/book/service/ShopSeckillService.java b/src/main/java/com/peanut/modules/book/service/ShopSeckillService.java index 9f8dee3e..5a02dd9d 100644 --- a/src/main/java/com/peanut/modules/book/service/ShopSeckillService.java +++ b/src/main/java/com/peanut/modules/book/service/ShopSeckillService.java @@ -1,31 +1,31 @@ -package com.peanut.modules.book.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.peanut.common.utils.PageUtils; -import com.peanut.modules.book.entity.ShopSeckillEntity; -import com.peanut.modules.book.to.SeckillRedisTo; -import com.peanut.modules.book.vo.SeckillProdVo; - -import java.util.List; -import java.util.Map; - -/** - * 秒杀库存表 - * - * @author yl - * @email yl328572838@163.com - * @date 2022-10-28 11:24:05 - */ -public interface ShopSeckillService extends IService { - - PageUtils queryPage(Map params); - - List getSeckilProd3Days(); - - void uploadSeckilProd3Days(); - - List getCurrentSeckillProd(); - - String kill(String killId,String key,Integer num,Integer userId); -} - +//package com.peanut.modules.book.service; +// +//import com.baomidou.mybatisplus.extension.service.IService; +//import com.peanut.common.utils.PageUtils; +//import com.peanut.modules.book.entity.ShopSeckillEntity; +//import com.peanut.modules.book.to.SeckillRedisTo; +//import com.peanut.modules.book.vo.SeckillProdVo; +// +//import java.util.List; +//import java.util.Map; +// +///** +// * 秒杀库存表 +// * +// * @author yl +// * @email yl328572838@163.com +// * @date 2022-10-28 11:24:05 +// */ +//public interface ShopSeckillService extends IService { +// +// PageUtils queryPage(Map params); +// +// List getSeckilProd3Days(); +// +// void uploadSeckilProd3Days(); +// +// List getCurrentSeckillProd(); +// +// String kill(String killId,String key,Integer num,Integer userId); +//} +// diff --git a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java index 1618c5a9..1ec4539b 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java @@ -97,7 +97,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl if (!ObjectUtils.isEmpty(myUserEntity)) { record.setUserName(myUserEntity.getName()); record.setProducts(buyOrderDetailService.list(new QueryWrapper() - .eq("order_id", record.getOrderId()))); + .eq("order_id", record.getId()))); } } @@ -121,7 +121,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl page = this.page(page, queryWrapper); List records = page.getRecords(); for (BuyOrder buyOrder : records) { - Integer orderId = buyOrder.getOrderId(); + Integer orderId = buyOrder.getId(); QueryWrapper buyOrderDetailQueryWrapper = new QueryWrapper<>(); buyOrderDetailQueryWrapper.eq("order_id", orderId); List buyOrderDetailList = buyOrderDetailService.list(buyOrderDetailQueryWrapper); @@ -179,14 +179,14 @@ public class BuyOrderServiceImpl extends ServiceImpl impl ); for (BuyOrder order : buyOrderList) { order.setProducts(buyOrderDetailService.list(new QueryWrapper() - .eq("order_id", order.getOrderId()))); + .eq("order_id", order.getId()))); orderList.add(order); } // 清洗数据 (与前端传来的id对比后) List washOrderList = new ArrayList<>(); for (BuyOrder order : orderList) { for (int o : orderIds) { - if (o == order.getOrderId()) { + if (o == order.getId()) { washOrderList.add(order); } } @@ -268,7 +268,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl ); for (BuyOrder order : buyOrderList.getRecords()) { order.setProducts(buyOrderDetailService.list(new QueryWrapper() - .eq("order_id", order.getOrderId()))); + .eq("order_id", order.getId()))); orderList.add(order); } // 获取有订单的所有用户 @@ -334,26 +334,29 @@ public class BuyOrderServiceImpl extends ServiceImpl impl @Override - public void delivery(String expressCompanyCode, List buyOrderDetailId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id", buyOrderDetailId); - List buyOrderDetailList = buyOrderDetailService.list(queryWrapper); + public void delivery(String expressCompanyCode, List buyOrderProductId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", buyOrderProductId); + List buyOrderProductList = buyOrderProductService.list(queryWrapper); BigDecimal totalWeight = new BigDecimal(0); List commodityList = new ArrayList<>(); - for (BuyOrderDetail buyOrderDetail : buyOrderDetailList) { + for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + int productId = buyOrderProduct.getProductId(); + ShopProduct product = shopProductService.getById(productId); ExpressCommodity commodity = new ExpressCommodity(); - commodity.setGoodsName(buyOrderDetail.getProductName()); - commodity.setGoodsquantity(buyOrderDetail.getQuantity()); - commodity.setGoodsWeight(buyOrderDetail.getWeight().doubleValue()); + commodity.setGoodsName(product.getProductName()); + commodity.setGoodsquantity(buyOrderProduct.getQuantity()); + commodity.setGoodsWeight(product.getWeight().doubleValue()); totalWeight = totalWeight.add( - BigDecimal.valueOf(buyOrderDetail.getWeight().doubleValue()).multiply(new BigDecimal(buyOrderDetail.getQuantity())) + BigDecimal.valueOf(product.getWeight().doubleValue()).multiply(new BigDecimal(buyOrderProduct.getQuantity())) ); totalWeight = totalWeight.setScale(0, RoundingMode.UP); commodityList.add(commodity); } // 获取用户地址 - Integer orderId = buyOrderDetailList.get(0).getOrderId(); + Integer orderId = buyOrderProductList.get(0).getOrderId(); + BuyOrder buyOrder = getById(orderId); QueryWrapper countyQueryWrapper = new QueryWrapper<>(); countyQueryWrapper.eq("county_name", buyOrder.getDistrict()); @@ -374,14 +377,11 @@ public class BuyOrderServiceImpl extends ServiceImpl impl expressOrder.setAddress(buyOrder.getAddress()); // 生成快递面单 ExpressOrderResponseVo response = expressOrderService.placeExpressOrder(expressOrder); - String expressBillNo = response.getOrder().getLogisticCode(); - String expressBillTemplate = response.getPrintTemplate(); - for (BuyOrderDetail buyOrderDetail : buyOrderDetailList) { - buyOrderDetail.setExpressBillNo(expressBillNo); - buyOrderDetail.setExpressBillTemplate(expressBillTemplate); - buyOrderDetail.setExpressCompanyCode(expressCompanyCode); - } - buyOrderDetailService.saveBatch(buyOrderDetailList); + String expressOrderSn = response.getOrder().getLogisticCode(); + String printTemplate = response.getPrintTemplate(); + expressOrder.setExpressOrderSn(expressOrderSn); + expressOrder.setPrintTemplate(printTemplate); + expressOrderService.save(expressOrder); } @Override @@ -425,7 +425,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl consigneeVo.setAddress(buyOrder.getAddress()); responseVo.setConsignee(consigneeVo); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_id", buyOrder.getOrderId()); + queryWrapper.eq("order_id", buyOrder.getId()); List buyOrderProductList = buyOrderProductService.list(queryWrapper); List goodsResponseVoList = new ArrayList<>(); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { diff --git a/src/main/java/com/peanut/modules/book/service/impl/ShopSeckillServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ShopSeckillServiceImpl.java index f084aab4..aa12e305 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ShopSeckillServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ShopSeckillServiceImpl.java @@ -1,255 +1,255 @@ -package com.peanut.modules.book.service.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.TypeReference; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.peanut.modules.book.entity.SeckillProdRelationEntity; -import com.peanut.modules.book.entity.ShopProduct; -import com.peanut.modules.book.service.SeckillProdRelationService; -import com.peanut.modules.book.service.ShopProductService; -import com.peanut.modules.book.to.SeckillRedisTo; -import com.peanut.modules.book.vo.ProdInfoVo; -import com.peanut.modules.book.vo.SeckillSessionWithProdVo; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; -import org.redisson.api.RSemaphore; -import org.redisson.api.RedissonClient; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.BoundHashOperations; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.peanut.common.utils.PageUtils; -import com.peanut.common.utils.Query; - -import com.peanut.modules.book.dao.ShopSeckillDao; -import com.peanut.modules.book.entity.ShopSeckillEntity; -import com.peanut.modules.book.service.ShopSeckillService; - -@Slf4j -@Service("shopSeckillService") -public class ShopSeckillServiceImpl extends ServiceImpl implements ShopSeckillService { - - @Autowired - private SeckillProdRelationService seckillProdRelationService; - @Autowired - StringRedisTemplate stringRedisTemplate; - @Autowired - private ShopProductService shopProductService; - @Autowired - RedissonClient redissonClient; - - private final String SESSIONS_CACHE_PREFIX = "seckill:sessions:"; - private final String PROKILL_CACHE_PREFIX = "prokill:pro"; - private final String PRO_STOCK_SEMAPHORE = "seckill:stock:"; - - @Override - public PageUtils queryPage(Map params) { - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper() - - ); - - return new PageUtils(page); - } - - @Override - public List getSeckilProd3Days() { - List list = this.baseMapper.selectList(new QueryWrapper().between("start_time", startTime(), endTime())); - if (list != null && list.size() > 0) { - list.stream().map(session -> { - Long seckillId = session.getSeckillId(); - List seckillList = seckillProdRelationService.list(new QueryWrapper().eq("promotion_seckill_id", seckillId)); - session.setRelationProd(seckillList); - return session; - }).collect(Collectors.toList()); - } - return list; - } - - @Override - public void uploadSeckilProd3Days() { - List seckilProd = this.getSeckilProd3Days(); - List seckilProdVo = JSON.parseObject(JSON.toJSONString(seckilProd), new TypeReference>() { - }); - saveSessionInfo(seckilProdVo); - saveSessionProdInfo(seckilProdVo); - - Set keys = stringRedisTemplate.keys(SESSIONS_CACHE_PREFIX + "*"); - long time = new Date().getTime(); - for(String key : keys){ - String replace = key.replace(SESSIONS_CACHE_PREFIX, ""); - String[] s = replace.split("_"); - long endTime = Long.parseLong(s[1]); - if(endTime <= time){ - stringRedisTemplate.delete(key); - } - } - - } - - @Override - public List getCurrentSeckillProd() { - long time = new Date().getTime(); - - Set keys = stringRedisTemplate.keys(SESSIONS_CACHE_PREFIX + "*"); - - for (String key : keys) { - String replace = key.replace(SESSIONS_CACHE_PREFIX, ""); - String[] s = replace.split("_"); - long startTime = Long.parseLong(s[0]); - long endTime = Long.parseLong(s[1]); - - - if (time >= startTime && time <= endTime ) { - - List list = stringRedisTemplate.opsForList().range(key, -100, 100); - BoundHashOperations operations = stringRedisTemplate.boundHashOps(PROKILL_CACHE_PREFIX); - List objects = operations.multiGet(list); - if (objects.size() > 0) { - List collect = objects.stream().map(item -> { - SeckillRedisTo seckillRedisTo = JSON.parseObject(item.toString(), SeckillRedisTo.class); -// seckillRedisTo.setRandomCode(null); - return seckillRedisTo; - }).collect(Collectors.toList()); - return collect; - } - - break; - } - } - - return null; - } - - @Override - public String kill(String killId, String key, Integer num , Integer userId) { - - - BoundHashOperations hashOps = stringRedisTemplate.boundHashOps(PROKILL_CACHE_PREFIX); - String o = hashOps.get(killId); - if (StringUtils.isEmpty(o)){ - return null; - }else { - SeckillRedisTo seckillRedisTo = JSON.parseObject(o, SeckillRedisTo.class); - Long startTime = seckillRedisTo.getStartTime(); - Long endTime = seckillRedisTo.getEndTime(); - - long time = new Date().getTime(); - - long ttl = endTime - time; - if ( time >= startTime && time <= endTime){ - String randomCode = seckillRedisTo.getRandomCode(); - String prodId = seckillRedisTo.getPromotionSeckillId() + "_" + seckillRedisTo.getProdId(); - if( randomCode.equals(key) && killId.equals(prodId)){ - if (num <= Integer.valueOf(seckillRedisTo.getSeckillLimit())) { - String redisKey = userId + "_" + prodId; - Boolean aBoolean = stringRedisTemplate.opsForValue().setIfAbsent(redisKey, num.toString(), ttl, TimeUnit.MILLISECONDS); - if (aBoolean) { - RSemaphore semaphore = redissonClient.getSemaphore(PRO_STOCK_SEMAPHORE + randomCode); - try { - boolean b = semaphore.tryAcquire(num, 100, TimeUnit.MILLISECONDS); - // 秒杀成功 - String timeId = IdWorker.getTimeId(); - return timeId; - - } catch (InterruptedException e) { - return null; - } - }else { - return null; - } - } - - }else { - return null; - } - }else { - return null; - } - } - - return null; - } - - - private void saveSessionInfo(List seckilProdVo) { - seckilProdVo.stream().forEach(session -> { - long startTime = session.getStartTime().getTime(); - long endTime = session.getEndTime().getTime(); - String key = SESSIONS_CACHE_PREFIX + startTime + "_" + endTime; - - Boolean aBoolean = stringRedisTemplate.hasKey(key); - if (!aBoolean) { - List collect = session.getRelationProd().stream().map(item -> item.getPromotionSeckillId() + "_" + item.getProdId().toString()).collect(Collectors.toList()); - stringRedisTemplate.opsForList().leftPushAll(key, collect); - } - }); - } - - private void saveSessionProdInfo(List seckilProdVos) { - - seckilProdVos.stream().forEach(seckilProdVo -> { - - BoundHashOperations ops = stringRedisTemplate.boundHashOps(PROKILL_CACHE_PREFIX); - - seckilProdVo.getRelationProd().stream().forEach(seckilProd -> { - String token = UUID.randomUUID().toString().replace("-", ""); - if (!ops.hasKey(seckilProd.getPromotionSeckillId().toString() + "_" + seckilProd.getProdId().toString())) { - SeckillRedisTo seckillRedisTo = new SeckillRedisTo(); - - ShopProduct productEntity = shopProductService.getById(seckilProd.getProdId()); - ProdInfoVo prodInfoVo = JSON.parseObject(JSON.toJSONString(productEntity), new TypeReference() { - }); - seckillRedisTo.setProdInfo(prodInfoVo); - BeanUtils.copyProperties(seckilProd, seckillRedisTo); - - seckillRedisTo.setStartTime(seckilProdVo.getStartTime().getTime()); - seckillRedisTo.setEndTime(seckilProdVo.getEndTime().getTime()); - - seckillRedisTo.setRandomCode(token); - - - String string = JSON.toJSONString(seckillRedisTo); - ops.put(seckilProd.getPromotionSeckillId().toString() + "_" + seckilProd.getProdId().toString(), string); - - RSemaphore semaphore = redissonClient.getSemaphore(PRO_STOCK_SEMAPHORE + token); - semaphore.trySetPermits(Integer.valueOf(seckilProd.getSeckillCount())); - } - - - }); - }); - - } - - - private String startTime() { - LocalDate now = LocalDate.now(); - LocalTime min = LocalTime.MIN; - LocalDateTime start = LocalDateTime.of(now, min); - String format = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - return format; - } - - private String endTime() { - LocalDate now = LocalDate.now(); - LocalDate localDate = now.plusDays(2); - LocalDateTime of = LocalDateTime.of(localDate, LocalTime.MAX); - String format = of.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - return format; - } -} \ No newline at end of file +//package com.peanut.modules.book.service.impl; +// +//import com.alibaba.fastjson.JSON; +//import com.alibaba.fastjson.TypeReference; +//import com.baomidou.mybatisplus.core.toolkit.IdWorker; +//import com.peanut.modules.book.entity.SeckillProdRelationEntity; +//import com.peanut.modules.book.entity.ShopProduct; +//import com.peanut.modules.book.service.SeckillProdRelationService; +//import com.peanut.modules.book.service.ShopProductService; +//import com.peanut.modules.book.to.SeckillRedisTo; +//import com.peanut.modules.book.vo.ProdInfoVo; +//import com.peanut.modules.book.vo.SeckillSessionWithProdVo; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.lang.StringUtils; +//import org.redisson.api.RSemaphore; +//import org.redisson.api.RedissonClient; +//import org.springframework.beans.BeanUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.data.redis.core.BoundHashOperations; +//import org.springframework.data.redis.core.StringRedisTemplate; +//import org.springframework.stereotype.Service; +// +//import java.time.LocalDate; +//import java.time.LocalDateTime; +//import java.time.LocalTime; +//import java.time.format.DateTimeFormatter; +//import java.util.*; +//import java.util.concurrent.TimeUnit; +//import java.util.stream.Collectors; +// +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.baomidou.mybatisplus.core.metadata.IPage; +//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +//import com.peanut.common.utils.PageUtils; +//import com.peanut.common.utils.Query; +// +//import com.peanut.modules.book.dao.ShopSeckillDao; +//import com.peanut.modules.book.entity.ShopSeckillEntity; +//import com.peanut.modules.book.service.ShopSeckillService; +// +//@Slf4j +//@Service("shopSeckillService") +//public class ShopSeckillServiceImpl extends ServiceImpl implements ShopSeckillService { +// +// @Autowired +// private SeckillProdRelationService seckillProdRelationService; +// @Autowired +// StringRedisTemplate stringRedisTemplate; +// @Autowired +// private ShopProductService shopProductService; +// @Autowired +// RedissonClient redissonClient; +// +// private final String SESSIONS_CACHE_PREFIX = "seckill:sessions:"; +// private final String PROKILL_CACHE_PREFIX = "prokill:pro"; +// private final String PRO_STOCK_SEMAPHORE = "seckill:stock:"; +// +// @Override +// public PageUtils queryPage(Map params) { +// IPage page = this.page( +// new Query().getPage(params), +// new QueryWrapper() +// +// ); +// +// return new PageUtils(page); +// } +// +// @Override +// public List getSeckilProd3Days() { +// List list = this.baseMapper.selectList(new QueryWrapper().between("start_time", startTime(), endTime())); +// if (list != null && list.size() > 0) { +// list.stream().map(session -> { +// Long seckillId = session.getSeckillId(); +// List seckillList = seckillProdRelationService.list(new QueryWrapper().eq("promotion_seckill_id", seckillId)); +// session.setRelationProd(seckillList); +// return session; +// }).collect(Collectors.toList()); +// } +// return list; +// } +// +// @Override +// public void uploadSeckilProd3Days() { +// List seckilProd = this.getSeckilProd3Days(); +// List seckilProdVo = JSON.parseObject(JSON.toJSONString(seckilProd), new TypeReference>() { +// }); +// saveSessionInfo(seckilProdVo); +// saveSessionProdInfo(seckilProdVo); +// +// Set keys = stringRedisTemplate.keys(SESSIONS_CACHE_PREFIX + "*"); +// long time = new Date().getTime(); +// for(String key : keys){ +// String replace = key.replace(SESSIONS_CACHE_PREFIX, ""); +// String[] s = replace.split("_"); +// long endTime = Long.parseLong(s[1]); +// if(endTime <= time){ +// stringRedisTemplate.delete(key); +// } +// } +// +// } +// +// @Override +// public List getCurrentSeckillProd() { +// long time = new Date().getTime(); +// +// Set keys = stringRedisTemplate.keys(SESSIONS_CACHE_PREFIX + "*"); +// +// for (String key : keys) { +// String replace = key.replace(SESSIONS_CACHE_PREFIX, ""); +// String[] s = replace.split("_"); +// long startTime = Long.parseLong(s[0]); +// long endTime = Long.parseLong(s[1]); +// +// +// if (time >= startTime && time <= endTime ) { +// +// List list = stringRedisTemplate.opsForList().range(key, -100, 100); +// BoundHashOperations operations = stringRedisTemplate.boundHashOps(PROKILL_CACHE_PREFIX); +// List objects = operations.multiGet(list); +// if (objects.size() > 0) { +// List collect = objects.stream().map(item -> { +// SeckillRedisTo seckillRedisTo = JSON.parseObject(item.toString(), SeckillRedisTo.class); +//// seckillRedisTo.setRandomCode(null); +// return seckillRedisTo; +// }).collect(Collectors.toList()); +// return collect; +// } +// +// break; +// } +// } +// +// return null; +// } +// +// @Override +// public String kill(String killId, String key, Integer num , Integer userId) { +// +// +// BoundHashOperations hashOps = stringRedisTemplate.boundHashOps(PROKILL_CACHE_PREFIX); +// String o = hashOps.get(killId); +// if (StringUtils.isEmpty(o)){ +// return null; +// }else { +// SeckillRedisTo seckillRedisTo = JSON.parseObject(o, SeckillRedisTo.class); +// Long startTime = seckillRedisTo.getStartTime(); +// Long endTime = seckillRedisTo.getEndTime(); +// +// long time = new Date().getTime(); +// +// long ttl = endTime - time; +// if ( time >= startTime && time <= endTime){ +// String randomCode = seckillRedisTo.getRandomCode(); +// String prodId = seckillRedisTo.getPromotionSeckillId() + "_" + seckillRedisTo.getProdId(); +// if( randomCode.equals(key) && killId.equals(prodId)){ +// if (num <= Integer.valueOf(seckillRedisTo.getSeckillLimit())) { +// String redisKey = userId + "_" + prodId; +// Boolean aBoolean = stringRedisTemplate.opsForValue().setIfAbsent(redisKey, num.toString(), ttl, TimeUnit.MILLISECONDS); +// if (aBoolean) { +// RSemaphore semaphore = redissonClient.getSemaphore(PRO_STOCK_SEMAPHORE + randomCode); +// try { +// boolean b = semaphore.tryAcquire(num, 100, TimeUnit.MILLISECONDS); +// // 秒杀成功 +// String timeId = IdWorker.getTimeId(); +// return timeId; +// +// } catch (InterruptedException e) { +// return null; +// } +// }else { +// return null; +// } +// } +// +// }else { +// return null; +// } +// }else { +// return null; +// } +// } +// +// return null; +// } +// +// +// private void saveSessionInfo(List seckilProdVo) { +// seckilProdVo.stream().forEach(session -> { +// long startTime = session.getStartTime().getTime(); +// long endTime = session.getEndTime().getTime(); +// String key = SESSIONS_CACHE_PREFIX + startTime + "_" + endTime; +// +// Boolean aBoolean = stringRedisTemplate.hasKey(key); +// if (!aBoolean) { +// List collect = session.getRelationProd().stream().map(item -> item.getPromotionSeckillId() + "_" + item.getProdId().toString()).collect(Collectors.toList()); +// stringRedisTemplate.opsForList().leftPushAll(key, collect); +// } +// }); +// } +// +// private void saveSessionProdInfo(List seckilProdVos) { +// +// seckilProdVos.stream().forEach(seckilProdVo -> { +// +// BoundHashOperations ops = stringRedisTemplate.boundHashOps(PROKILL_CACHE_PREFIX); +// +// seckilProdVo.getRelationProd().stream().forEach(seckilProd -> { +// String token = UUID.randomUUID().toString().replace("-", ""); +// if (!ops.hasKey(seckilProd.getPromotionSeckillId().toString() + "_" + seckilProd.getProdId().toString())) { +// SeckillRedisTo seckillRedisTo = new SeckillRedisTo(); +// +// ShopProduct productEntity = shopProductService.getById(seckilProd.getProdId()); +// ProdInfoVo prodInfoVo = JSON.parseObject(JSON.toJSONString(productEntity), new TypeReference() { +// }); +// seckillRedisTo.setProdInfo(prodInfoVo); +// BeanUtils.copyProperties(seckilProd, seckillRedisTo); +// +// seckillRedisTo.setStartTime(seckilProdVo.getStartTime().getTime()); +// seckillRedisTo.setEndTime(seckilProdVo.getEndTime().getTime()); +// +// seckillRedisTo.setRandomCode(token); +// +// +// String string = JSON.toJSONString(seckillRedisTo); +// ops.put(seckilProd.getPromotionSeckillId().toString() + "_" + seckilProd.getProdId().toString(), string); +// +// RSemaphore semaphore = redissonClient.getSemaphore(PRO_STOCK_SEMAPHORE + token); +// semaphore.trySetPermits(Integer.valueOf(seckilProd.getSeckillCount())); +// } +// +// +// }); +// }); +// +// } +// +// +// private String startTime() { +// LocalDate now = LocalDate.now(); +// LocalTime min = LocalTime.MIN; +// LocalDateTime start = LocalDateTime.of(now, min); +// String format = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); +// return format; +// } +// +// private String endTime() { +// LocalDate now = LocalDate.now(); +// LocalDate localDate = now.plusDays(2); +// LocalDateTime of = LocalDateTime.of(localDate, LocalTime.MAX); +// String format = of.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); +// return format; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/book/task/SeckillProdScheduled.java b/src/main/java/com/peanut/modules/book/task/SeckillProdScheduled.java index d2860628..1ae01777 100644 --- a/src/main/java/com/peanut/modules/book/task/SeckillProdScheduled.java +++ b/src/main/java/com/peanut/modules/book/task/SeckillProdScheduled.java @@ -1,33 +1,33 @@ -package com.peanut.modules.book.task; - -import com.peanut.modules.book.service.ShopSeckillService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -@Slf4j -@Service -public class SeckillProdScheduled { - @Autowired - ShopSeckillService shopSeckillService; - - @Scheduled(cron = "0 0/1 * * * ?") - public void uploadSeckilProd3Days() { - Lock l = new ReentrantLock(); - l.lock(); - try { - shopSeckillService.uploadSeckilProd3Days(); - }catch (Exception e){ - e.printStackTrace(); - }finally { - l.unlock(); - } - - - } - -} +//package com.peanut.modules.book.task; +// +//import com.peanut.modules.book.service.ShopSeckillService; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//import java.util.concurrent.locks.Lock; +//import java.util.concurrent.locks.ReentrantLock; +// +//@Slf4j +//@Service +//public class SeckillProdScheduled { +// @Autowired +// ShopSeckillService shopSeckillService; +// +// @Scheduled(cron = "0 0/1 * * * ?") +// public void uploadSeckilProd3Days() { +// Lock l = new ReentrantLock(); +// l.lock(); +// try { +// shopSeckillService.uploadSeckilProd3Days(); +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// l.unlock(); +// } +// +// +// } +// +//} diff --git a/src/main/java/com/peanut/modules/book/vo/request/ModifyOrderAddressRequestVo.java b/src/main/java/com/peanut/modules/book/vo/request/ModifyOrderAddressRequestVo.java index 4a63ce0c..80fcd151 100644 --- a/src/main/java/com/peanut/modules/book/vo/request/ModifyOrderAddressRequestVo.java +++ b/src/main/java/com/peanut/modules/book/vo/request/ModifyOrderAddressRequestVo.java @@ -16,15 +16,15 @@ public class ModifyOrderAddressRequestVo { /** * 省 */ - private String province; + private String provinceCode; /** * 市 */ - private String city; + private String cityCode; /** * 区县 */ - private String county; + private String countyCode; /** * 收货人姓名 */ diff --git a/src/main/resources/mapper/book/BuyOrderDao.xml b/src/main/resources/mapper/book/BuyOrderDao.xml index c85cd4b2..e87a1ec2 100644 --- a/src/main/resources/mapper/book/BuyOrderDao.xml +++ b/src/main/resources/mapper/book/BuyOrderDao.xml @@ -5,7 +5,7 @@ - + diff --git a/src/main/resources/mapper/book/ShopProductBookDao.xml b/src/main/resources/mapper/book/ShopProductBookDao.xml index b3ff6d29..8f010e8a 100644 --- a/src/main/resources/mapper/book/ShopProductBookDao.xml +++ b/src/main/resources/mapper/book/ShopProductBookDao.xml @@ -17,7 +17,7 @@ SELECT spb.book_id FROM shop_product_book spb LEFT JOIN buy_order_detail bod ON spb.product_id = bod.product_id - LEFT JOIN buy_order bo ON bo.order_id = bod.order_id + LEFT JOIN buy_order bo ON bo.id = bod.order_id WHERE bo.order_sn = #{orderSn} AND spb.del_flag != -1