From 9b37d2126a03a266bf7a7cebb19a708042e9fa73 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Mon, 23 Oct 2023 15:26:10 +0800 Subject: [PATCH 01/16] bug fix --- .../book/controller/BookClockForumController.java | 15 +++++++++------ .../book/controller/BuyOrderController.java | 2 +- .../modules/book/service/BuyOrderService.java | 2 +- .../book/service/impl/BuyOrderServiceImpl.java | 9 ++++++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/controller/BookClockForumController.java b/src/main/java/com/peanut/modules/book/controller/BookClockForumController.java index bf54e428..e28ef1cf 100644 --- a/src/main/java/com/peanut/modules/book/controller/BookClockForumController.java +++ b/src/main/java/com/peanut/modules/book/controller/BookClockForumController.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.R; import com.peanut.modules.book.entity.BookClockEntryEntity; @@ -69,6 +70,7 @@ public class BookClockForumController { @RequestParam(value = "userId", required = false) Integer userId, @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize, @RequestParam(value = "currentPage", defaultValue = "1") Integer currentPage) { + Page chatPage = new Page<>(currentPage, pageSize); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("entry_id", entryId); queryWrapper.eq("fid", 0); @@ -77,7 +79,8 @@ public class BookClockForumController { } queryWrapper.orderByAsc("fid", "create_time"); List resultList = new ArrayList<>(); - List chatEntityList = bookClockEntryChatService.list(queryWrapper); + Page page = bookClockEntryChatService.page(chatPage, queryWrapper); + List chatEntityList = page.getRecords(); for (BookClockEntryChat entity : chatEntityList) { List imageList = JSON.parseObject(entity.getImages(), new TypeReference>() { }); @@ -89,8 +92,7 @@ public class BookClockForumController { vo.setAvatar(user.getAvatar()); resultList.add(vo); } - PageUtils page = new PageUtils(resultList, resultList.size(), pageSize, currentPage); - return R.ok().put("result", page); + return R.ok().put("result", resultList); } /** @@ -105,9 +107,11 @@ public class BookClockForumController { public R getSubChatList(@RequestParam("fid") Integer fid, @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize, @RequestParam(value = "currentPage", defaultValue = "1") Integer currentPage) { + Page bookClockEntryChatPage = new Page<>(currentPage, pageSize); QueryWrapper subQueryWrapper = new QueryWrapper<>(); subQueryWrapper.eq("fid", fid); - List subClockInChatList = bookClockEntryChatService.list(subQueryWrapper); + Page page = bookClockEntryChatService.page(bookClockEntryChatPage, subQueryWrapper); + List subClockInChatList = page.getRecords(); List subCommentList = new ArrayList<>(); for (BookClockEntryChat subChat : subClockInChatList) { ClockInCommentVo subVo = new ClockInCommentVo(); @@ -120,8 +124,7 @@ public class BookClockForumController { subVo.setNickName(subChatUser.getNickname()); subCommentList.add(subVo); } - PageUtils subChatPage = new PageUtils(subCommentList, subCommentList.size(), pageSize, currentPage); - return R.ok().put("result", subChatPage); + return R.ok().put("result", subCommentList); } /** 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 18e8f768..3d443d5e 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -103,7 +103,7 @@ public class BuyOrderController { */ @RequestMapping(path = "/orderList", method = RequestMethod.POST) public R orderList(@RequestBody BuyOrderListRequestVo requestVo) { - PageUtils page = buyOrderService.orderList(requestVo); + List page = buyOrderService.orderList(requestVo); return R.ok().put("result", page); } diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index 03b4d497..c97260b1 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -40,7 +40,7 @@ public interface BuyOrderService extends IService { * @param requestVo * @return */ - PageUtils orderList(BuyOrderListRequestVo requestVo); + List orderList(BuyOrderListRequestVo requestVo); /** * 订单拆分发货 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 f17fb000..c9329d37 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.peanut.common.utils.ExcludeEmptyQueryWrapper; @@ -304,19 +305,21 @@ public class BuyOrderServiceImpl extends ServiceImpl impl } @Override - public PageUtils orderList(BuyOrderListRequestVo requestVo) { + public List orderList(BuyOrderListRequestVo requestVo) { + Page buyOrderPage = new Page<>(requestVo.getPageIndex(), requestVo.getPageSize()); List result = new ArrayList<>(); QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); buyOrderQueryWrapper.like(StringUtils.isNotBlank(requestVo.getSearchKeyWord()), "order_sn", requestVo.getSearchKeyWord()); buyOrderQueryWrapper.eq(StringUtils.isNotBlank(requestVo.getOrderStatus()), "order_status", requestVo.getOrderStatus()); buyOrderQueryWrapper.gt(requestVo.getStartTime() != null, "create_time", requestVo.getStartTime()); buyOrderQueryWrapper.lt(requestVo.getEndTime() != null, "create_time", requestVo.getStartTime()); - List buyOrderList = list(buyOrderQueryWrapper); + Page page = page(buyOrderPage, buyOrderQueryWrapper); + List buyOrderList = page.getRecords(); for (BuyOrder buyOrder : buyOrderList) { BuyOrderResponseVo responseVo = setBuyOrderInfo(buyOrder); result.add(responseVo); } - return new PageUtils(result, buyOrderList.size(), requestVo.getPageSize(), requestVo.getPageIndex()); + return result; } From 3a59fdb860bea7ac46544017a8cf33aca4d71555 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Mon, 23 Oct 2023 16:41:00 +0800 Subject: [PATCH 02/16] bug fix --- .../book/controller/BuyOrderController.java | 159 +++++++++++++++++- .../peanut/modules/book/entity/BuyOrder.java | 4 + .../modules/book/service/BuyOrderService.java | 2 +- .../service/impl/BuyOrderServiceImpl.java | 34 +++- .../book/vo/response/BuyOrderResponseVo.java | 12 ++ 5 files changed, 200 insertions(+), 11 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 3d443d5e..43da57a5 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -80,6 +80,8 @@ public class BuyOrderController { private ExpressFeeService expressFeeService; @Autowired private SysConfigService sysConfigService; + @Autowired + private BuyOrderProductService buyOrderProductService; @RequestMapping(value = "/decomposeShipment", method = RequestMethod.GET) public R decomposeShipment(@RequestParam("userId") Integer userId) { @@ -103,8 +105,8 @@ public class BuyOrderController { */ @RequestMapping(path = "/orderList", method = RequestMethod.POST) public R orderList(@RequestBody BuyOrderListRequestVo requestVo) { - List page = buyOrderService.orderList(requestVo); - return R.ok().put("result", page); + Map result = buyOrderService.orderList(requestVo); + return R.ok().put("result", result); } /** @@ -121,6 +123,7 @@ public class BuyOrderController { /** * 下单 + * TODO 原下单接口,新版本上线后废弃 * * @param buyOrder 订单 * @return R @@ -210,6 +213,103 @@ public class BuyOrderController { return R.ok(result); } + /** + * 下单 + * + * @param buyOrder + * @return + * @throws IOException + */ + @RequestMapping(value = "placeOrder", method = RequestMethod.POST) + public R placeOrder(@RequestBody BuyOrder buyOrder) throws IOException { + List buyOrderProductList = buyOrder.getProductInfoList(); + // 订单总金额 + BigDecimal totalPrice = new BigDecimal(0); + // 遍历商品总价计算 + for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + Integer productId = buyOrderProduct.getProductId(); + int quantity = buyOrderProduct.getQuantity(); + ShopProduct product = shopProductService.getById(productId); + BigDecimal price = getRealPrice(product); + if (!handleStock(buyOrderProduct, product)) { + 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; + //buyOrderProduct.setWeight(BigDecimal.valueOf(originWeightIntValue).add(BigDecimal.valueOf(originWeightDecimalValue).divide(new BigDecimal(100), + //MathContext.DECIMAL64))); +// buyOrderDetail.setProductUrl(product.getProductImages()); +// buyOrderDetail.setOrderStatus(Constants.ORDER_STATUS_TO_BE_PAID); + } + + totalPrice = totalPrice.subtract(useCouponAmount(buyOrder)); + totalPrice = totalPrice.add(getShoppingAmount(buyOrder)); + String orderSn = IdWorker.getTimeId().substring(0, 32); + buyOrder.setOrderSn(orderSn); + buyOrder.setPaymentDate(new Date()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("id", buyOrder.getAddressId()); + UserAddress userAddress = userAddressService.getOne(queryWrapper); + UserAddressVo vo = new UserAddressVo(); + vo = userAddressService.getAddressName(vo, userAddress.getRegionCode()); + buyOrder.setProvince(vo.getProvince()); + buyOrder.setCity(vo.getCity()); + buyOrder.setDistrict(vo.getCounty()); + buyOrder.setAddress(vo.getDetailAddress()); + buyOrderService.save(buyOrder); + + for (BuyOrderProduct buyOrderDetail : buyOrderProductList) { + buyOrderDetail.setOrderId(buyOrder.getOrderId()); + //buyOrderDetail.setUserId(buyOrder.getUserId()); + if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { + handleBuyCart(buyOrder, buyOrderDetail); + } + } +// buyOrderDetailService.saveBatch(buyOrderDetails); + buyOrderProductService.saveBatch(buyOrderProductList); + // 1. 虚拟币支付 + if (Constants.PAYMENT_METHOD_VIRTUAL.equals(buyOrder.getPaymentMethod())) { + buyOrder.setOrderStatus(Constants.ORDER_STATUS_TO_BE_SHIPPED); + MyUserEntity user = this.myUserService.getById(buyOrder.getUserId()); + if (usePeanutCoin(user, totalPrice)) { + // 更新订单状态 + buyOrderService.updateOrderStatus(user.getId(), buyOrder.getOrderSn(), "0"); + recordTransaction(buyOrder, user, totalPrice); + addEbookToUser(buyOrderProductList, buyOrder, 0); + } else { + return R.error(500, "花生币余额不足!"); + } + } + // 2. 微信支付 + if (Constants.PAYMENT_METHOD_WECHAT_PAY.equals(buyOrder.getPaymentMethod())) { + rabbitTemplate.convertAndSend( + DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE, + DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY, + buyOrder.getOrderId(), + messagePostProcessor() + ); + WechatPaymentInfo paymentInfo = new WechatPaymentInfo(); + paymentInfo.setOrderSn(orderSn); + paymentInfo.setBuyOrderId(buyOrder.getOrderId()); + paymentInfo.setTotalAmount(totalPrice); + wxpayService.prepay(paymentInfo); + } + Map result = new HashMap<>(); + result.put("orderSn", buyOrder.getOrderSn()); + result.put("money", totalPrice); + return R.ok(result); + } + + /** + * 计算运费 + * + * @param vo + * @return + */ @RequestMapping(path = "/calculateTransportPrice", method = RequestMethod.POST) public R getTransportPrice(@RequestBody ProductTransportVo vo) { String regionCode = vo.getRegionCode(); @@ -443,6 +543,7 @@ public class BuyOrderController { /** * 处理商品库存 + * TODO 新版本上线后删除此方法 * * @param buyOrderDetail * @param product @@ -459,6 +560,24 @@ public class BuyOrderController { return true; } + /** + * 处理商品库存 + * + * @param buyOrderProduct 订单商品信息 + * @param product 商品 + * @return boolean + */ + private boolean handleStock(BuyOrderProduct buyOrderProduct, ShopProduct product) { + int quantity = buyOrderProduct.getQuantity(); + if (product.getProductStock() - quantity < 0) { + return false; + } + product.setProductStock(product.getProductStock() - quantity); + product.setSumSales(product.getSumSales() + quantity); + shopProductService.updateById(product); + return true; + } + /** * 使用优惠券 * @@ -543,8 +662,9 @@ public class BuyOrderController { /** * 给用户添加电子书 + * TODO 新版本上线删除此接口 + * @param products * - * @param products * @param buyOrder */ private void addEbookToUser(List products, BuyOrder buyOrder) { @@ -557,8 +677,26 @@ public class BuyOrderController { } } + /** + * 给用户添加电子书 + * TODO 这里的参数 0 没用 新版本上线后删除 + * + * @param products + * @param buyOrder + */ + private void addEbookToUser(List products, BuyOrder buyOrder, Integer x) { + List productIds = products.stream().map(BuyOrderProduct::getProductId).collect(Collectors.toList()); + for (Integer productId : productIds) { + List collect = shopProductBookService.getBaseMapper().selectList(new LambdaQueryWrapper() + .eq(ShopProductBookEntity::getProductId, productId) + .eq(ShopProductBookEntity::getDelFlag, 0)).stream().map(ShopProductBookEntity::getBookId).collect(Collectors.toList()); + userEbookBuyService.addBookForUser(buyOrder.getUserId(), collect); + } + } + /** * 购物车 + * TODO 新版本上线后删除此方法 * * @param buyOrder * @param buyOrderDetail @@ -572,6 +710,21 @@ public class BuyOrderController { } } + /** + * 购物车 + * + * @param buyOrder 订单 + * @param buyOrderProduct + */ + private void handleBuyCart(BuyOrder buyOrder, BuyOrderProduct buyOrderProduct) { + List orderCartList = orderCartService.getBaseMapper().selectList(new QueryWrapper() + .eq("user_id", buyOrder.getUserId()).eq("product_id", buyOrderProduct.getProductId())); + if (orderCartList.size() > 0) { + List collect = orderCartList.stream().map(OrderCartEntity::getCartId).collect(Collectors.toList()); + orderCartService.removeByIds(collect); + } + } + private MessagePostProcessor messagePostProcessor() { return message -> { //设置有效期30分钟 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 19bd1ef3..1be14447 100644 --- a/src/main/java/com/peanut/modules/book/entity/BuyOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/BuyOrder.java @@ -125,9 +125,13 @@ public class BuyOrder implements Serializable { @TableLogic private Integer delFlag; + // TODO 新版本上线后删除该属性 @TableField(exist = false) private List products; + @TableField(exist = false) + private List productInfoList; + @TableField(exist = false) private String buyType; diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index c97260b1..53050113 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -40,7 +40,7 @@ public interface BuyOrderService extends IService { * @param requestVo * @return */ - List orderList(BuyOrderListRequestVo requestVo); + Map orderList(BuyOrderListRequestVo requestVo); /** * 订单拆分发货 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 c9329d37..5212c551 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 @@ -305,20 +305,29 @@ public class BuyOrderServiceImpl extends ServiceImpl impl } @Override - public List orderList(BuyOrderListRequestVo requestVo) { + public Map orderList(BuyOrderListRequestVo requestVo) { Page buyOrderPage = new Page<>(requestVo.getPageIndex(), requestVo.getPageSize()); - List result = new ArrayList<>(); + List data = new ArrayList<>(); QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); buyOrderQueryWrapper.like(StringUtils.isNotBlank(requestVo.getSearchKeyWord()), "order_sn", requestVo.getSearchKeyWord()); buyOrderQueryWrapper.eq(StringUtils.isNotBlank(requestVo.getOrderStatus()), "order_status", requestVo.getOrderStatus()); buyOrderQueryWrapper.gt(requestVo.getStartTime() != null, "create_time", requestVo.getStartTime()); buyOrderQueryWrapper.lt(requestVo.getEndTime() != null, "create_time", requestVo.getStartTime()); + + Integer totalSize = list(buyOrderQueryWrapper).size(); + Integer totalPage = totalSize / requestVo.getPageSize() + 1; Page page = page(buyOrderPage, buyOrderQueryWrapper); List buyOrderList = page.getRecords(); for (BuyOrder buyOrder : buyOrderList) { BuyOrderResponseVo responseVo = setBuyOrderInfo(buyOrder); - result.add(responseVo); + data.add(responseVo); } + Map result = new HashMap<>(); + result.put("totalDataSize", totalSize); + result.put("totalPage", totalPage); + result.put("data", data); + result.put("currentPage", requestVo.getPageIndex()); + result.put("pageSize", requestVo.getPageSize()); return result; } @@ -382,17 +391,28 @@ public class BuyOrderServiceImpl extends ServiceImpl impl return setBuyOrderInfo(buyOrder); } + /** + * 设置订单信息 + * + * @param buyOrder + * @return + */ private BuyOrderResponseVo setBuyOrderInfo(BuyOrder buyOrder) { BuyOrderResponseVo responseVo = new BuyOrderResponseVo(); Integer userId = buyOrder.getUserId(); QueryWrapper userEntityQueryWrapper = new QueryWrapper<>(); userEntityQueryWrapper.eq("id", userId); MyUserEntity user = myUserService.getOne(userEntityQueryWrapper); - UserResponseVo userResponseVo = new UserResponseVo(); - userResponseVo.setUserPhone(user.getTel()); - userResponseVo.setUserName(user.getName()); - responseVo.setUserInfo(userResponseVo); + if (user != null) { + UserResponseVo userResponseVo = new UserResponseVo(); + userResponseVo.setUserPhone(user.getTel()); + if (user.getName() != null) { + userResponseVo.setUserName(user.getName()); + } + responseVo.setUserInfo(userResponseVo); + } responseVo.setOrderPrice(buyOrder.getOrderMoney()); + responseVo.setOrderType(buyOrder.getOrderType()); BeanUtil.copyProperties(buyOrder, responseVo); ConsigneeVo consigneeVo = new ConsigneeVo(); consigneeVo.setConsigneeName(buyOrder.getShippingUser()); diff --git a/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java b/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java index afdb8bd1..56abb11b 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java @@ -65,4 +65,16 @@ public class BuyOrderResponseVo { * 用户信息 */ private UserResponseVo userInfo; + /** + * 订单类型 + */ + private String orderType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 发货时间 + */ + private Date shippingTime; } From 167d2de1bd7b10ee05e5c35eab22f268477f37d2 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Mon, 23 Oct 2023 17:41:38 +0800 Subject: [PATCH 03/16] bug fix --- .../book/controller/BuyOrderController.java | 39 +++++++++++++++- .../book/controller/ExpressController.java | 45 +++++++++++-------- .../service/impl/BuyOrderServiceImpl.java | 1 + .../book/vo/response/PrintTemplateVo.java | 20 +++++++++ .../book/vo/response/UserResponseVo.java | 1 + 5 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java 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 43da57a5..928327d1 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -351,8 +351,10 @@ public class BuyOrderController { * 删除 */ @RequestMapping("/delete") - public R delete(@RequestBody Integer[] orderIds) { - buyOrderService.removeByIds(Arrays.asList(orderIds)); + public R delete(@RequestBody List orderSnList) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("order_sn", orderSnList); + buyOrderService.remove(queryWrapper); return R.ok(); } @@ -389,6 +391,39 @@ public class BuyOrderController { return R.ok(); } + /** + * app 端 取消订单 + */ +// @RequestMapping("/cancelOrder") +// @Transactional +// public R appDelete(@RequestParam("orderSn") String orderSn) { +// QueryWrapper qu +// +// //1. 判断订单状态 +// BuyOrder byId = buyOrderService.getById(orderId); +// if (byId != null) { +// //2. 判断当前订单是否存在优惠券 进行 回显 +// Integer couponId = byId.getCouponId(); +// if (couponId != null) { +// +// CouponHistoryEntity byId1 = couponHistoryService.getById(couponId); +// byId1.setUseStatus(0); +// couponHistoryService.updateById(byId1); +// } +// // 库存回滚 +// List buyOrderDetailEntities = buyOrderDetailService.getBaseMapper().selectList(new QueryWrapper() +// .eq("order_id", byId.getOrderId())); +// for (BuyOrderDetail buyOrderDetailEntity : buyOrderDetailEntities) { +// Integer productId = buyOrderDetailEntity.getProductId(); +// ShopProduct product = shopProductService.getById(productId); +// product.setProductStock(product.getProductStock() + buyOrderDetailEntity.getQuantity()); +// shopProductService.updateById(product); +// } +// buyOrderService.removeById(orderId); +// } +// return R.ok(); +// } + /** * 充值专用订单生成接口 diff --git a/src/main/java/com/peanut/modules/book/controller/ExpressController.java b/src/main/java/com/peanut/modules/book/controller/ExpressController.java index 13620d8a..18ac4ac0 100644 --- a/src/main/java/com/peanut/modules/book/controller/ExpressController.java +++ b/src/main/java/com/peanut/modules/book/controller/ExpressController.java @@ -2,6 +2,7 @@ package com.peanut.modules.book.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.R; import com.peanut.modules.book.entity.BuyOrder; import com.peanut.modules.book.entity.BuyOrderProduct; @@ -11,14 +12,14 @@ import com.peanut.modules.book.service.BuyOrderService; import com.peanut.modules.book.service.ExpressCompanyService; import com.peanut.modules.book.service.ExpressOrderService; import com.peanut.modules.book.vo.ExpressCompanyVo; +import com.peanut.modules.book.vo.response.PrintTemplateVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * @Description: 快递 Controller @@ -56,25 +57,31 @@ public class ExpressController { * @return */ @RequestMapping(path = "/getPrintTemplateList", method = RequestMethod.GET) - public R getPrintTemplate(String orderSn) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_sn", orderSn); - BuyOrder buyOrder = buyOrderService.getOne(queryWrapper); - QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); - buyOrderProductQueryWrapper.eq("order_id", buyOrder.getOrderId()); - List buyOrderProductList = buyOrderProductService.list(buyOrderProductQueryWrapper); - List expressOrderIdList = new ArrayList<>(); - for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { - expressOrderIdList.add(buyOrderProduct.getExpressOrderId()); - } + public R getPrintTemplate(@RequestParam(value = "expressOrderSn", required = false) String expressOrderSn, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, + @RequestParam(value = "currentPage", defaultValue = "1") Integer currentPage) { + Page expressOrderPage = new Page<>(currentPage, pageSize); QueryWrapper expressOrderQueryWrapper = new QueryWrapper<>(); - expressOrderQueryWrapper.in("id", expressOrderIdList); - expressOrderQueryWrapper.select("print_template"); - List expressOrderList = expressOrderService.list(expressOrderQueryWrapper); - List result = new ArrayList<>(); - for (ExpressOrder expressOrder : expressOrderList) { - result.add(expressOrder.getPrintTemplate()); + if (expressOrderSn != null) { + expressOrderQueryWrapper.eq("express_order_sn", expressOrderSn); } + int totalDataSize = expressOrderService.count(expressOrderQueryWrapper); + int totalPage = totalDataSize / pageSize + 1; + Page page = expressOrderService.page(expressOrderPage, expressOrderQueryWrapper); + List expressOrderList = page.getRecords(); + List data = new ArrayList<>(); + for (ExpressOrder expressOrder : expressOrderList) { + PrintTemplateVo vo = new PrintTemplateVo(); + vo.setPrintTemplate(expressOrder.getPrintTemplate()); + vo.setExpressOrderSn(expressOrder.getExpressOrderSn()); + data.add(vo); + } + Map result = new HashMap<>(); + result.put("data", data); + result.put("currentPage", currentPage); + result.put("pageSize", pageSize); + result.put("totalDataSize", totalDataSize); + result.put("totalPage", totalPage); return R.ok().put("result", result); } 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 5212c551..3e4a9614 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 @@ -405,6 +405,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl MyUserEntity user = myUserService.getOne(userEntityQueryWrapper); if (user != null) { UserResponseVo userResponseVo = new UserResponseVo(); + userResponseVo.setUserId(user.getId()); userResponseVo.setUserPhone(user.getTel()); if (user.getName() != null) { userResponseVo.setUserName(user.getName()); diff --git a/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java b/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java new file mode 100644 index 00000000..3ed8c897 --- /dev/null +++ b/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java @@ -0,0 +1,20 @@ +package com.peanut.modules.book.vo.response; + +import lombok.Data; + +/** + * @Description: 面单响应 value object + * @Author: Cauchy + * @CreateTime: 2023/10/23 + */ +@Data +public class PrintTemplateVo { + /** + * 快递单号 + */ + private String expressOrderSn; + /** + * 面单 + */ + private String printTemplate; +} diff --git a/src/main/java/com/peanut/modules/book/vo/response/UserResponseVo.java b/src/main/java/com/peanut/modules/book/vo/response/UserResponseVo.java index 6454c8c3..581a4422 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/UserResponseVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/UserResponseVo.java @@ -9,6 +9,7 @@ import lombok.Data; */ @Data public class UserResponseVo { + private Integer userId; /** * 用户姓名 */ From 7c9540f3ae9434c5689c931ef93725d477b0c2ee Mon Sep 17 00:00:00 2001 From: Cauchy Date: Tue, 24 Oct 2023 10:17:40 +0800 Subject: [PATCH 04/16] bug fix --- .../book/controller/BuyOrderController.java | 157 ++++++++---- .../controller/BuyOrderDetailController.java | 226 +++++++++--------- .../book/controller/ExpressController.java | 15 +- .../controller/ShopProductController.java | 8 +- .../controller/UserFeedbackController.java | 1 - .../controller/UserFollowUpController.java | 109 ++++----- .../book/controller/UserRecordController.java | 77 +++--- .../modules/book/dao/BuyOrderDetailDao.java | 4 +- .../modules/book/dao/UserFollowUpDao.java | 1 - .../modules/book/dao/UserRecordDao.java | 5 +- .../modules/book/entity/BuyOrderProduct.java | 4 + ...{UserRecordEntity.java => UserRecord.java} | 2 +- .../book/service/BuyOrderDetailService.java | 1 + .../book/service/UserRecordService.java | 4 +- .../service/impl/BuyOrderServiceImpl.java | 3 +- .../service/impl/UserFollowUpServiceImpl.java | 1 - .../service/impl/UserRecordServiceImpl.java | 18 +- .../book/vo/ShippingAddressRequestVo.java | 6 +- .../vo/response/ExpressQueryResponseVo.java | 2 +- .../vo/response/OrderAddressResponseVo.java | 36 +++ .../resources/mapper/book/UserRecordDao.xml | 2 +- 21 files changed, 387 insertions(+), 295 deletions(-) rename src/main/java/com/peanut/modules/book/entity/{UserRecordEntity.java => UserRecord.java} (98%) create mode 100644 src/main/java/com/peanut/modules/book/vo/response/OrderAddressResponseVo.java 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 928327d1..d44c98f6 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -5,6 +5,7 @@ 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; @@ -18,11 +19,13 @@ 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; @@ -82,6 +85,12 @@ public class BuyOrderController { private SysConfigService sysConfigService; @Autowired private BuyOrderProductService buyOrderProductService; + @Autowired + private ProvinceService provinceService; + @Autowired + private CityService cityService; + @Autowired + private CountyService countyService; @RequestMapping(value = "/decomposeShipment", method = RequestMethod.GET) public R decomposeShipment(@RequestParam("userId") Integer userId) { @@ -361,6 +370,7 @@ public class BuyOrderController { /** * app 端 取消订单 + * TODO 新版本上线后此方法删除 */ @RequestMapping("/appDelete") @Transactional @@ -392,37 +402,37 @@ public class BuyOrderController { } /** - * app 端 取消订单 + * @param orderSn 订单号 + * @return R */ -// @RequestMapping("/cancelOrder") -// @Transactional -// public R appDelete(@RequestParam("orderSn") String orderSn) { -// QueryWrapper qu -// -// //1. 判断订单状态 -// BuyOrder byId = buyOrderService.getById(orderId); -// if (byId != null) { -// //2. 判断当前订单是否存在优惠券 进行 回显 -// Integer couponId = byId.getCouponId(); -// if (couponId != null) { -// -// CouponHistoryEntity byId1 = couponHistoryService.getById(couponId); -// byId1.setUseStatus(0); -// couponHistoryService.updateById(byId1); -// } -// // 库存回滚 -// List buyOrderDetailEntities = buyOrderDetailService.getBaseMapper().selectList(new QueryWrapper() -// .eq("order_id", byId.getOrderId())); -// for (BuyOrderDetail buyOrderDetailEntity : buyOrderDetailEntities) { -// Integer productId = buyOrderDetailEntity.getProductId(); -// ShopProduct product = shopProductService.getById(productId); -// product.setProductStock(product.getProductStock() + buyOrderDetailEntity.getQuantity()); -// shopProductService.updateById(product); -// } -// buyOrderService.removeById(orderId); -// } -// return R.ok(); -// } + @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(); + } /** @@ -475,6 +485,7 @@ public class BuyOrderController { * * @param orderId 订单 ID * @return R + * TODO 新版本上线后 该方法删除 */ @RequestMapping(value = "/getOrderInfo", method = RequestMethod.GET) public R appGetOrderInfo(@RequestParam("orderId") Integer orderId) { @@ -492,34 +503,98 @@ public class BuyOrderController { return R.ok().put("result", buyOrder); } + /** + * 修改订单地址 + * + * @param addressRequestVo 地址请求 value object + * @return R + */ @RequestMapping(value = "/modifyOrderAddress", method = RequestMethod.POST) public R modifyOrderAddress(@RequestBody ShippingAddressRequestVo addressRequestVo) { BuyOrder buyOrder = buyOrderService.getById(addressRequestVo.getOrderId()); - buyOrder.setProvince(addressRequestVo.getProvince()); - buyOrder.setCity(addressRequestVo.getCity()); - buyOrder.setDistrict(addressRequestVo.getCounty()); + + String provinceCode = addressRequestVo.getProvinceCode(); + QueryWrapper provinceQueryWrapper = new QueryWrapper<>(); + provinceQueryWrapper.eq("region_code", provinceCode); + Province province = provinceService.getOne(provinceQueryWrapper); + buyOrder.setProvince(province.getProvName()); + String cityCode = addressRequestVo.getCityCode(); + QueryWrapper cityQueryWrapper = new QueryWrapper<>(); + cityQueryWrapper.eq("region_code", cityCode); + City city = cityService.getOne(cityQueryWrapper); + buyOrder.setCity(city.getCityName()); + String countyCode = addressRequestVo.getCountyCode(); + QueryWrapper countyQueryWrapper = new QueryWrapper<>(); + countyQueryWrapper.eq("region_code", countyCode); + County county = countyService.getOne(countyQueryWrapper); + buyOrder.setDistrict(county.getCountyName()); buyOrder.setShippingUser(addressRequestVo.getName()); buyOrder.setUserPhone(addressRequestVo.getMobile()); + buyOrder.setAddress(addressRequestVo.getAddress()); buyOrderService.updateById(buyOrder); return R.ok(); } + /** + * 获取订单地址 + * + * @param orderSn 订单号 + * @return R + */ + @RequestMapping(value = "/getOrderAddress", method = RequestMethod.GET) + public R getOrderAddress(@RequestParam("orderSn") String orderSn) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_sn", orderSn); + BuyOrder buyOrder = buyOrderService.getOne(queryWrapper); + OrderAddressResponseVo responseVo = new OrderAddressResponseVo(); + responseVo.setConsigneeMobile(buyOrder.getUserPhone()); + responseVo.setConsigneeName(buyOrder.getShippingUser()); + responseVo.setDetailAddress(buyOrder.getAddress()); + String provinceName = buyOrder.getProvince(); + String cityName = buyOrder.getCity(); + String countyName = buyOrder.getDistrict(); + + QueryWrapper provinceQueryWrapper = new QueryWrapper<>(); + provinceQueryWrapper.eq("prov_name", provinceName); + Province province = provinceService.getOne(provinceQueryWrapper); + responseVo.setProvinceCode(province.getRegionCode()); + + QueryWrapper cityQueryWrapper = new QueryWrapper<>(); + cityQueryWrapper.eq("city_name", cityName); + City city = cityService.getOne(cityQueryWrapper); + responseVo.setCityCode(city.getRegionCode()); + + QueryWrapper countyQueryWrapper = new QueryWrapper<>(); + countyQueryWrapper.eq("county_name", countyName); + County county = countyService.getOne(countyQueryWrapper); + responseVo.setCountyCode(county.getRegionCode()); + + return R.ok().put("result", responseVo); + } + + /** * 查询订单快递 * - * @param orderId 订单号 + * @param orderSn 订单号 * @return R */ @RequestMapping(value = "/queryExpress", method = RequestMethod.GET) - public R queryExpress(@RequestParam("orderId") Integer orderId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_id", orderId); - List buyOrderDetailList = buyOrderDetailService.list(queryWrapper); + public R queryExpress(@RequestParam("orderSn") Integer orderSn) { + QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); + buyOrderQueryWrapper.eq("order_sn", orderSn); + BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); + Integer orderId = buyOrder.getOrderId(); + + QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); + buyOrderProductQueryWrapper.eq("order_id", orderId); + List buyOrderProductList = buyOrderProductService.list(buyOrderProductQueryWrapper); List result = new ArrayList<>(); - for (BuyOrderDetail buyOrderDetail : buyOrderDetailList) { + for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + int expressOrderId = buyOrderProduct.getExpressOrderId(); + ExpressOrder expressOrder = expressOrderService.getById(expressOrderId); ExpressQueryResponseVo vo = new ExpressQueryResponseVo(); - vo.setOrderDetailId(buyOrderDetail.getId()); - ExpressQueryResponse expressQueryResponse = expressOrderService.queryExpressOrder(buyOrderDetail.getExpressCompanyCode(), buyOrderDetail.getExpressBillNo()); + ExpressQueryResponse expressQueryResponse = expressOrderService.queryExpressOrder(expressOrder.getExpressCompanyCode(), expressOrder.getExpressOrderSn()); vo.setLogisticCode(expressQueryResponse.getLogisticCode()); vo.setTraces(expressQueryResponse.getTraces()); result.add(vo); diff --git a/src/main/java/com/peanut/modules/book/controller/BuyOrderDetailController.java b/src/main/java/com/peanut/modules/book/controller/BuyOrderDetailController.java index ff983d11..4786b1aa 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderDetailController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderDetailController.java @@ -1,113 +1,113 @@ -package com.peanut.modules.book.controller; - -import com.peanut.common.utils.PageUtils; -import com.peanut.common.utils.R; -import com.peanut.modules.book.entity.BuyOrderDetail; -import com.peanut.modules.book.service.BuyOrderDetailService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.Arrays; -import java.util.Map; - -/** - * 商品订单详情表 - * - * @author yl - * @email yl328572838@163.com - * @date 2022-08-29 15:27:44 - */ -@RestController -@RequestMapping("book/buyorderdetail") -public class BuyOrderDetailController { - @Autowired - private BuyOrderDetailService buyOrderDetailService; - - /** - * 列表 - */ - @RequestMapping("/list") - public R list(@RequestParam Map params) { - PageUtils page = buyOrderDetailService.queryPage(params); - return R.ok().put("page", page); - } - - /** - * 查询已购买书籍 - * - * @param params - * @return - */ - @RequestMapping("/querybuy") - public R querybuy(@RequestParam Map params) { - PageUtils page = buyOrderDetailService.querybuy(params); - return R.ok().put("page", page); - } - - /** - * 去重查询可打印面单 - * - * @param params - * @return - */ - @RequestMapping("/querySheetPage") - public R querySheetPage(@RequestParam Map params) { - PageUtils page = buyOrderDetailService.querySheet(params); - return R.ok().put("page", page); - } - - /** - * 信息 - */ - @RequestMapping("/info/{allOrderId}") - public R info(@PathVariable("allOrderId") Long allOrderId) { - BuyOrderDetail buyOrderDetail = buyOrderDetailService.getById(allOrderId); - return R.ok().put("buyOrderDetail", buyOrderDetail); - } - - /** - * 保存 - */ - @RequestMapping("/save") - public R save(@RequestBody BuyOrderDetail buyOrderDetail) { - buyOrderDetailService.save(buyOrderDetail); - return R.ok(); - } - - /** - * 修改 - */ - @RequestMapping("/update") - public R update(@RequestBody BuyOrderDetail buyOrderDetail) { - buyOrderDetailService.updateById(buyOrderDetail); - return R.ok(); - } - - /** - * 删除 - */ - @RequestMapping("/delete") - public R delete(@RequestBody Long[] allOrderIds) { - buyOrderDetailService.removeByIds(Arrays.asList(allOrderIds)); - return R.ok(); - } - - @RequestMapping("/updateOrderStatus") - public R updateOrderStatus(@RequestBody BuyOrderDetail buyOrderDetail) { - buyOrderDetail.setOrderStatus("2"); - buyOrderDetailService.updateById(buyOrderDetail); - return R.ok(); - } - - - /** - * 根据运单号批量修改打印状态 - * - * @param shippingSnList - * @return - */ - @RequestMapping("/batchUpdateByShippingSns") - public R batchUpdateByShippingSns(@RequestBody String[] shippingSnList) { - return R.ok(); - } -} +//package com.peanut.modules.book.controller; +// +//import com.peanut.common.utils.PageUtils; +//import com.peanut.common.utils.R; +//import com.peanut.modules.book.entity.BuyOrderDetail; +//import com.peanut.modules.book.service.BuyOrderDetailService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Arrays; +//import java.util.Map; +// +///** +// * 商品订单详情表 +// * +// * @author yl +// * @email yl328572838@163.com +// * @date 2022-08-29 15:27:44 +// */ +//@RestController +//@RequestMapping("book/buyorderdetail") +//public class BuyOrderDetailController { +// @Autowired +// private BuyOrderDetailService buyOrderDetailService; +// +// /** +// * 列表 +// */ +// @RequestMapping("/list") +// public R list(@RequestParam Map params) { +// PageUtils page = buyOrderDetailService.queryPage(params); +// return R.ok().put("page", page); +// } +// +// /** +// * 查询已购买书籍 +// * +// * @param params +// * @return +// */ +// @RequestMapping("/querybuy") +// public R querybuy(@RequestParam Map params) { +// PageUtils page = buyOrderDetailService.querybuy(params); +// return R.ok().put("page", page); +// } +// +// /** +// * 去重查询可打印面单 +// * +// * @param params +// * @return +// */ +// @RequestMapping("/querySheetPage") +// public R querySheetPage(@RequestParam Map params) { +// PageUtils page = buyOrderDetailService.querySheet(params); +// return R.ok().put("page", page); +// } +// +// /** +// * 信息 +// */ +// @RequestMapping("/info/{allOrderId}") +// public R info(@PathVariable("allOrderId") Long allOrderId) { +// BuyOrderDetail buyOrderDetail = buyOrderDetailService.getById(allOrderId); +// return R.ok().put("buyOrderDetail", buyOrderDetail); +// } +// +// /** +// * 保存 +// */ +// @RequestMapping("/save") +// public R save(@RequestBody BuyOrderDetail buyOrderDetail) { +// buyOrderDetailService.save(buyOrderDetail); +// return R.ok(); +// } +// +// /** +// * 修改 +// */ +// @RequestMapping("/update") +// public R update(@RequestBody BuyOrderDetail buyOrderDetail) { +// buyOrderDetailService.updateById(buyOrderDetail); +// return R.ok(); +// } +// +// /** +// * 删除 +// */ +// @RequestMapping("/delete") +// public R delete(@RequestBody Long[] allOrderIds) { +// buyOrderDetailService.removeByIds(Arrays.asList(allOrderIds)); +// return R.ok(); +// } +// +// @RequestMapping("/updateOrderStatus") +// public R updateOrderStatus(@RequestBody BuyOrderDetail buyOrderDetail) { +// buyOrderDetail.setOrderStatus("2"); +// buyOrderDetailService.updateById(buyOrderDetail); +// return R.ok(); +// } +// +// +// /** +// * 根据运单号批量修改打印状态 +// * +// * @param shippingSnList +// * @return +// */ +// @RequestMapping("/batchUpdateByShippingSns") +// public R batchUpdateByShippingSns(@RequestBody String[] shippingSnList) { +// return R.ok(); +// } +//} diff --git a/src/main/java/com/peanut/modules/book/controller/ExpressController.java b/src/main/java/com/peanut/modules/book/controller/ExpressController.java index 18ac4ac0..cc2fb519 100644 --- a/src/main/java/com/peanut/modules/book/controller/ExpressController.java +++ b/src/main/java/com/peanut/modules/book/controller/ExpressController.java @@ -4,11 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.R; -import com.peanut.modules.book.entity.BuyOrder; -import com.peanut.modules.book.entity.BuyOrderProduct; import com.peanut.modules.book.entity.ExpressOrder; -import com.peanut.modules.book.service.BuyOrderProductService; -import com.peanut.modules.book.service.BuyOrderService; import com.peanut.modules.book.service.ExpressCompanyService; import com.peanut.modules.book.service.ExpressOrderService; import com.peanut.modules.book.vo.ExpressCompanyVo; @@ -19,7 +15,10 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @Description: 快递 Controller @@ -33,10 +32,6 @@ public class ExpressController { @Autowired private ExpressCompanyService expressCompanyService; @Autowired - private BuyOrderService buyOrderService; - @Autowired - private BuyOrderProductService buyOrderProductService; - @Autowired private ExpressOrderService expressOrderService; @@ -54,7 +49,7 @@ public class ExpressController { /** * 获取快递面单列表 * - * @return + * @return R */ @RequestMapping(path = "/getPrintTemplateList", method = RequestMethod.GET) public R getPrintTemplate(@RequestParam(value = "expressOrderSn", required = false) String expressOrderSn, diff --git a/src/main/java/com/peanut/modules/book/controller/ShopProductController.java b/src/main/java/com/peanut/modules/book/controller/ShopProductController.java index d5a8f897..e30f6236 100644 --- a/src/main/java/com/peanut/modules/book/controller/ShopProductController.java +++ b/src/main/java/com/peanut/modules/book/controller/ShopProductController.java @@ -32,7 +32,7 @@ public class ShopProductController { @Autowired private ShopCategoryService shopCategoryService; @Autowired - private BuyOrderDetailService buyOrderDetailService; + private BuyOrderProductService buyOrderProductService; @Autowired private BookService bookService; @Autowired @@ -94,17 +94,17 @@ public class ShopProductController { * @param userId 用户id * @return */ - @RequestMapping("/booklist") + @RequestMapping("/bookList") public R bookList(@RequestParam("userId") Integer userId ) { //查询已购买的书籍 - List buyOrderDetailEntities = buyOrderDetailService.getBaseMapper().selectList(new QueryWrapper() + List buyOrderProductList = buyOrderProductService.getBaseMapper().selectList(new QueryWrapper() .eq("user_id", userId)); //hashset不重复 且无序 Set purchasedProductIds = new HashSet<>(); ArrayList list = new ArrayList<>(); Map map = new HashMap<>(); - for (BuyOrderDetail buyOrderDetail : buyOrderDetailEntities) { + for (BuyOrderProduct buyOrderDetail : buyOrderProductList) { map.put("ProductId", String.valueOf(buyOrderDetail.getProductId())); list.add(map); //去重取出以后买书籍的id diff --git a/src/main/java/com/peanut/modules/book/controller/UserFeedbackController.java b/src/main/java/com/peanut/modules/book/controller/UserFeedbackController.java index c1ad8b3f..ba65c379 100644 --- a/src/main/java/com/peanut/modules/book/controller/UserFeedbackController.java +++ b/src/main/java/com/peanut/modules/book/controller/UserFeedbackController.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.peanut.common.utils.R; import com.peanut.modules.book.entity.MyUserEntity; import com.peanut.modules.book.entity.UserFeedbackEntity; -import com.peanut.modules.book.entity.UserRecordEntity; import com.peanut.modules.book.service.MyUserService; import com.peanut.modules.book.service.UserFeedbackSerivce; import org.springframework.beans.factory.annotation.Autowired; 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 37a80936..82a6733d 100644 --- a/src/main/java/com/peanut/modules/book/controller/UserFollowUpController.java +++ b/src/main/java/com/peanut/modules/book/controller/UserFollowUpController.java @@ -3,15 +3,19 @@ package com.peanut.modules.book.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.R; -import com.peanut.modules.book.entity.*; -import com.peanut.modules.book.service.*; +import com.peanut.modules.book.entity.BuyOrder; +import com.peanut.modules.book.entity.MyUserEntity; +import com.peanut.modules.book.entity.UserFollowUpEntity; +import com.peanut.modules.book.entity.UserRecord; +import com.peanut.modules.book.service.BuyOrderService; +import com.peanut.modules.book.service.MyUserService; +import com.peanut.modules.book.service.UserFollowUpService; +import com.peanut.modules.book.service.UserRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; -import static com.peanut.common.utils.R.error; - @RestController @RequestMapping("/user/followUp") public class UserFollowUpController { @@ -25,41 +29,34 @@ public class UserFollowUpController { private MyUserService myUserService; @Autowired private BuyOrderService buyOrderService; - @Autowired - private BuyOrderDetailService buyOrderDetailService; - /** * 列表 */ @RequestMapping("/list") - public R list(@RequestParam Map params ){ + public R list(@RequestParam Map params) { PageUtils page = userFollowUpService.queryPage(params); return R.ok().put("page", page); } - /** - * 我的评价 + * 我的评价 */ @RequestMapping("/Allevaluations") - public R Allevaluations(@RequestBody UserFollowUpEntity userFollowUpEntity){ + public R Allevaluations(@RequestBody UserFollowUpEntity userFollowUpEntity) { List userid = userFollowUpService.getBaseMapper().selectList(new QueryWrapper().eq("userid", userFollowUpEntity.getUserId())); - return R.ok().put("Allevaluations",userid); + return R.ok().put("Allevaluations", userid); } - - - /** - * 全部评价 + * 全部评价 */ @RequestMapping("/Alllevas") - public R Alllevas(@RequestBody UserFollowUpEntity users){ + public R Alllevas(@RequestBody UserFollowUpEntity users) { HashMap maps = new HashMap<>(); List list = new ArrayList<>(); List bookid = userFollowUpService.getBaseMapper().selectList(new QueryWrapper().eq("bookid", users.getBookid())); @@ -68,67 +65,62 @@ public class UserFollowUpController { Integer bookid1 = userRecord.getBookid(); Integer userid1 = userRecord.getUserId(); List id = myUserService.getBaseMapper().selectList(new QueryWrapper().eq("id", userid1)); - String usser=""; + String usser = ""; String name = ""; for (MyUserEntity user : id) { - usser = user.getAvatar(); - name =user.getNickname(); + usser = user.getAvatar(); + name = user.getNickname(); } - map.put("Avatar",usser); - map.put("name",name); + map.put("Avatar", usser); + map.put("name", name); map.put("userId", users.getUserId()); - map.put("bookid",bookid1); - map.put("userid",userid1); - map.put("content",users.getConTent()); - map.put("create_date",users.getCreateDate()); - map.put("oid",users.getOid()); - map.put("praIse",users.getPraIse()); + map.put("bookid", bookid1); + map.put("userid", userid1); + map.put("content", users.getConTent()); + map.put("create_date", users.getCreateDate()); + map.put("oid", users.getOid()); + map.put("praIse", users.getPraIse()); list.add(map); - - } - maps.put("list",list); + maps.put("list", list); - return R.ok().put("list",list); + return R.ok().put("list", list); } - /* * 追加评论(用户只可评论一次) * * */ @RequestMapping("/userFollowUp") - public Object UserFollowUp(@RequestBody UserFollowUpEntity userFollowUpEntity ) { + public Object UserFollowUp(@RequestBody UserFollowUpEntity userFollowUpEntity) { //根据传过来的userid和oid查询出来userRecordEntity中关联数据 - UserRecordEntity userRecord = userRecordService.getBaseMapper().selectOne(new QueryWrapper() + UserRecord userRecord = userRecordService.getBaseMapper().selectOne(new QueryWrapper() .eq("userid", userFollowUpEntity.getUserId()).last("LIMIT 1") .eq("bookid", userFollowUpEntity.getBookid()) - .eq("id",userFollowUpEntity.getOid()) + .eq("id", userFollowUpEntity.getOid()) ); - if (userRecord==null){ - return R.error("请先评论再追评"); - } + if (userRecord == null) { + return R.error("请先评论再追评"); + } String orderSn = userRecord.getOrderSn(); - BuyOrder buyOrder =buyOrderService.getBaseMapper().selectOne(new QueryWrapper() - .eq("order_sn",orderSn).last("LIMIT 1") + BuyOrder buyOrder = buyOrderService.getBaseMapper().selectOne(new QueryWrapper() + .eq("order_sn", orderSn).last("LIMIT 1") ); Integer orderId = buyOrder.getOrderId(); Integer bookid = userRecord.getBookid(); Integer userid = userRecord.getUserid(); Integer id1 = userRecord.getId(); - BuyOrderDetail detailEntity = buyOrderDetailService.getBaseMapper().selectOne(new QueryWrapper() - .eq("Order_id", orderId).eq("product_id",bookid)); - UserFollowUpEntity followUpEntity = userFollowUpService.getBaseMapper().selectOne(new QueryWrapper().eq("userid", userid).eq("oid",id1).last("LIMIT 1")); + UserFollowUpEntity followUpEntity = userFollowUpService.getBaseMapper().selectOne(new QueryWrapper().eq("userid", userid).eq("oid", id1).last("LIMIT 1")); // if (followUpEntity != null) { // return R.error("您已评价过"); @@ -136,11 +128,11 @@ public class UserFollowUpController { buyOrder.setRecordId(2); buyOrderService.saveOrUpdate(buyOrder); - if (userFollowUpEntity.getImages()!=null) { + if (userFollowUpEntity.getImages() != null) { - List> imageList = (ArrayList>)userFollowUpEntity.getImages(); + List> imageList = (ArrayList>) userFollowUpEntity.getImages(); String imageStr = ""; - for(Map m : imageList){ + for (Map m : imageList) { imageStr += m.get("url") + ","; } @@ -148,33 +140,30 @@ public class UserFollowUpController { } - userFollowUpEntity.setOid(id1); - userFollowUpEntity.setDelflag(0); - userFollowUpEntity.setCreateDate(new Date()); - userFollowUpService.saveOrUpdate(userFollowUpEntity); - return R.ok("成功").put("userFollowUpEntity",userFollowUpEntity); - } - - + userFollowUpEntity.setOid(id1); + userFollowUpEntity.setDelflag(0); + userFollowUpEntity.setCreateDate(new Date()); + userFollowUpService.saveOrUpdate(userFollowUpEntity); + return R.ok("成功").put("userFollowUpEntity", userFollowUpEntity); + } /** * 信息 */ @RequestMapping("/info/{id}") - public R info(@PathVariable("id") Integer id){ + public R info(@PathVariable("id") Integer id) { UserFollowUpEntity user = userFollowUpService.getById(id); return R.ok().put("UserFollowUpEntity", user); } - /** * 修改 */ @RequestMapping("/update") - public R update(@RequestBody UserRecordEntity user){ + public R update(@RequestBody UserRecord user) { userRecordService.updateById(user); return R.ok(); @@ -184,7 +173,7 @@ public class UserFollowUpController { * 删除 */ @RequestMapping("/delete") - public R delete(@RequestBody Integer[] ids){ + public R delete(@RequestBody Integer[] ids) { userRecordService.removeByIds(Arrays.asList(ids)); @@ -192,4 +181,4 @@ public class UserFollowUpController { } - } +} 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 c2deab88..cdfc95c7 100644 --- a/src/main/java/com/peanut/modules/book/controller/UserRecordController.java +++ b/src/main/java/com/peanut/modules/book/controller/UserRecordController.java @@ -23,7 +23,7 @@ public class UserRecordController { @Autowired private MyUserService myUserService; @Autowired - private BuyOrderDetailService buyOrderDetailService; + private BuyOrderProductService buyOrderProductService; @Autowired private UserFollowUpService userFollowUpService; @@ -43,8 +43,8 @@ public class UserRecordController { * 查看我的评价 */ @RequestMapping("/Allevaluations") - public R Allevaluations(@RequestBody UserRecordEntity userRecordEntity) { - List userid = userRecordService.getBaseMapper().selectList(new QueryWrapper().eq("userid", userRecordEntity.getUserid()).orderByDesc("create_date")); + public R Allevaluations(@RequestBody UserRecord userRecord) { + List userid = userRecordService.getBaseMapper().selectList(new QueryWrapper().eq("userid", userRecord.getUserid()).orderByDesc("create_date")); return R.ok().put("Allevaluations", userid); } @@ -52,16 +52,16 @@ public class UserRecordController { * 查看全部评价 */ @RequestMapping("/All") - public R All(@RequestBody UserRecordEntity userRecordEntity) { + public R All(@RequestBody UserRecord userRecordEntity) { List list = new ArrayList<>(); //此处bookid实际传的是商品id - List bookid = userRecordService.getBaseMapper().selectList(new QueryWrapper().eq("bookid", userRecordEntity.getBookid()).orderByDesc("create_date")); + List bookid = userRecordService.getBaseMapper().selectList(new QueryWrapper().eq("bookid", userRecordEntity.getBookid()).orderByDesc("create_date")); if (bookid != null) { - for (UserRecordEntity userRecord : bookid) { + for (UserRecord userRecord : bookid) { HashMap map = new HashMap<>(); Integer bookid1 = userRecord.getBookid(); @@ -114,16 +114,16 @@ public class UserRecordController { */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Integer id) { - UserRecordEntity userRecordEntity = userRecordService.getById(id); - return R.ok().put("bookChapterContent", userRecordEntity); + UserRecord userRecord = userRecordService.getById(id); + return R.ok().put("bookChapterContent", userRecord); } /** * 保存 */ @RequestMapping("/save") - public R save(@RequestBody UserRecordEntity userRecordEntity) { - userRecordService.save(userRecordEntity); + public R save(@RequestBody UserRecord userRecord) { + userRecordService.save(userRecord); return R.ok(); } @@ -131,8 +131,8 @@ public class UserRecordController { * 修改 */ @RequestMapping("/update") - public R update(@RequestBody UserRecordEntity userRecordEntity) { - userRecordService.updateById(userRecordEntity); + public R update(@RequestBody UserRecord userRecord) { + userRecordService.updateById(userRecord); return R.ok(); } @@ -169,23 +169,23 @@ public class UserRecordController { //状态3为已收货 // .eq("order_status","3") ); - UserRecordEntity userRecordEntity = new UserRecordEntity(); + UserRecord userRecord = new UserRecord(); if (!ToolObject.isNullOrEmpty(buyOrder)) { return error("您已评价过了,请勿重复评论"); // } else { - userRecordEntity.setId(buyOrder.getOrderId()); - userRecordEntity.setContent(comment); + userRecord.setId(buyOrder.getOrderId()); + userRecord.setContent(comment); //商品评价 - userRecordEntity.setBookid(bookid); - userRecordEntity.setUserid(userid); - userRecordEntity.setOrderSn(orderSn); - userRecordEntity.setDelflag(0); - userRecordEntity.setProductId(bookid); - userRecordService.saveOrUpdate(userRecordEntity); - return R.ok("成功").put("userRecordEntity", userRecordEntity); + userRecord.setBookid(bookid); + userRecord.setUserid(userid); + userRecord.setOrderSn(orderSn); + userRecord.setDelflag(0); + userRecord.setProductId(bookid); + userRecordService.saveOrUpdate(userRecord); + return R.ok("成功").put("userRecordEntity", userRecord); } @@ -196,19 +196,20 @@ public class UserRecordController { * @param recordEntity * @return 生成评论(上传图片,星级评价 */ - @RequestMapping("/UserRecordcomment") - public R commodity(@RequestBody UserRecordEntity recordEntity) { - //todo 已收货限制字段,只可评价一次 - BuyOrder buyOrder = buyOrderService.getBaseMapper().selectOne(new QueryWrapper() - .eq("order_sn", recordEntity.getOrderSn()) - ); - + @RequestMapping("/UserRecordComment") + public R commodity(@RequestBody UserRecord recordEntity) { + QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); + buyOrderQueryWrapper.eq("order_sn", recordEntity.getOrderSn()); + BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); Integer orderId = buyOrder.getOrderId(); - BuyOrderDetail detailEntity = buyOrderDetailService.getBaseMapper().selectOne(new QueryWrapper().eq("Order_id", orderId).eq("product_id", recordEntity.getBookid())); - Integer orderId1 = detailEntity.getOrderId(); - UserRecordEntity userRecordEntity = userRecordService.getBaseMapper().selectOne(new QueryWrapper().eq("orderSn", recordEntity.getOrderSn()).eq("userid", recordEntity.getUserid()).eq("orderdid", orderId1).last("LIMIT 1")); + QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); + buyOrderProductQueryWrapper.eq("order_id", orderId); + buyOrderProductQueryWrapper.eq("product_id", recordEntity.getProductId()); + BuyOrderProduct buyOrderProduct = buyOrderProductService.getOne(buyOrderProductQueryWrapper); + Integer orderId1 = buyOrderProduct.getOrderId(); + UserRecord userRecord = userRecordService.getBaseMapper().selectOne(new QueryWrapper().eq("orderSn", recordEntity.getOrderSn()).eq("userid", recordEntity.getUserid()).eq("orderdid", orderId1).last("LIMIT 1")); - if (userRecordEntity != null) { + if (userRecord != null) { return R.error("您已评价过"); } if (recordEntity.getImages() != null) { @@ -218,19 +219,13 @@ public class UserRecordController { imageStr += m.get("url") + ","; } - - recordEntity.setImages(imageStr); } recordEntity.setDelflag(0); recordEntity.setOrderdId(orderId1); userRecordService.saveOrUpdate(recordEntity); - - - detailEntity.setRecordId(1); - buyOrderDetailService.saveOrUpdate(detailEntity); - - + buyOrderProduct.setRecordId(1); + buyOrderProductService.saveOrUpdate(buyOrderProduct); return R.ok("成功").put("userRecordEntity", recordEntity); } } diff --git a/src/main/java/com/peanut/modules/book/dao/BuyOrderDetailDao.java b/src/main/java/com/peanut/modules/book/dao/BuyOrderDetailDao.java index 1908b123..4fe02159 100644 --- a/src/main/java/com/peanut/modules/book/dao/BuyOrderDetailDao.java +++ b/src/main/java/com/peanut/modules/book/dao/BuyOrderDetailDao.java @@ -8,7 +8,7 @@ import java.util.List; /** * 商品订单详情表 - * + * * @author yl * @email yl328572838@163.com * @date 2022-08-29 15:27:44 @@ -17,5 +17,5 @@ import java.util.List; public interface BuyOrderDetailDao extends BaseMapper { public List queryListByOrderIds(Integer[] ids); - + } diff --git a/src/main/java/com/peanut/modules/book/dao/UserFollowUpDao.java b/src/main/java/com/peanut/modules/book/dao/UserFollowUpDao.java index 665a0ce6..bc1a2254 100644 --- a/src/main/java/com/peanut/modules/book/dao/UserFollowUpDao.java +++ b/src/main/java/com/peanut/modules/book/dao/UserFollowUpDao.java @@ -2,7 +2,6 @@ package com.peanut.modules.book.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.peanut.modules.book.entity.UserFollowUpEntity; -import com.peanut.modules.book.entity.UserRecordEntity; import org.apache.ibatis.annotations.Mapper; @Mapper diff --git a/src/main/java/com/peanut/modules/book/dao/UserRecordDao.java b/src/main/java/com/peanut/modules/book/dao/UserRecordDao.java index d6e51da3..ad18a43c 100644 --- a/src/main/java/com/peanut/modules/book/dao/UserRecordDao.java +++ b/src/main/java/com/peanut/modules/book/dao/UserRecordDao.java @@ -1,13 +1,12 @@ package com.peanut.modules.book.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.peanut.modules.book.entity.UserEbookBuyEntity; -import com.peanut.modules.book.entity.UserRecordEntity; +import com.peanut.modules.book.entity.UserRecord; import org.apache.ibatis.annotations.Mapper; //书籍评价表 @Mapper -public interface UserRecordDao extends BaseMapper { +public interface UserRecordDao extends BaseMapper { } diff --git a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java index 129d8ce9..a586ea77 100644 --- a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java +++ b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java @@ -37,6 +37,10 @@ public class BuyOrderProduct { * 快递订单 ID */ private int expressOrderId; + /** + * 评价 ID + */ + private int recordId; /** * 删除标识 */ diff --git a/src/main/java/com/peanut/modules/book/entity/UserRecordEntity.java b/src/main/java/com/peanut/modules/book/entity/UserRecord.java similarity index 98% rename from src/main/java/com/peanut/modules/book/entity/UserRecordEntity.java rename to src/main/java/com/peanut/modules/book/entity/UserRecord.java index 484fba0b..20f3e23a 100644 --- a/src/main/java/com/peanut/modules/book/entity/UserRecordEntity.java +++ b/src/main/java/com/peanut/modules/book/entity/UserRecord.java @@ -12,7 +12,7 @@ import java.util.Date; @Data @TableName("user_record") -public class UserRecordEntity { +public class UserRecord { @TableId diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderDetailService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderDetailService.java index 900eded4..729eac3a 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderDetailService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderDetailService.java @@ -6,6 +6,7 @@ import com.peanut.modules.book.entity.BuyOrderDetail; import java.util.Map; + /** * 商品订单详情表 * diff --git a/src/main/java/com/peanut/modules/book/service/UserRecordService.java b/src/main/java/com/peanut/modules/book/service/UserRecordService.java index bfc0de97..b87e222e 100644 --- a/src/main/java/com/peanut/modules/book/service/UserRecordService.java +++ b/src/main/java/com/peanut/modules/book/service/UserRecordService.java @@ -2,12 +2,12 @@ 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.UserRecordEntity; +import com.peanut.modules.book.entity.UserRecord; import org.springframework.web.multipart.MultipartFile; import java.util.Map; -public interface UserRecordService extends IService { +public interface UserRecordService extends IService { //todo 传参参数 用户id 购买订单id 星级评价 内容 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 3e4a9614..1618c5a9 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.peanut.common.utils.ExcludeEmptyQueryWrapper; @@ -58,6 +57,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class); + // TODO 新版本上线后删除 @Override public PageUtils list(Map params) throws Exception { @@ -106,6 +106,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl } + // TODO 新版本上线后删除 @Override public PageUtils getMyOrderList(Map params) { diff --git a/src/main/java/com/peanut/modules/book/service/impl/UserFollowUpServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/UserFollowUpServiceImpl.java index 89dff967..34e7f749 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/UserFollowUpServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/UserFollowUpServiceImpl.java @@ -7,7 +7,6 @@ import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.Query; import com.peanut.modules.book.dao.UserFollowUpDao; import com.peanut.modules.book.entity.UserFollowUpEntity; -import com.peanut.modules.book.entity.UserRecordEntity; import com.peanut.modules.book.service.UserFollowUpService; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/peanut/modules/book/service/impl/UserRecordServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/UserRecordServiceImpl.java index fe3e4663..fb21b96a 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/UserRecordServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/UserRecordServiceImpl.java @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.peanut.common.utils.*; import com.peanut.modules.book.dao.UserRecordDao; import com.peanut.modules.book.entity.MyUserEntity; -import com.peanut.modules.book.entity.UserRecordEntity; +import com.peanut.modules.book.entity.UserRecord; import com.peanut.modules.book.service.MyUserService; import com.peanut.modules.book.service.UserRecordService; import org.joda.time.DateTime; @@ -21,7 +21,7 @@ import java.util.*; @Service("UserRecordServiceImpl") -public class UserRecordServiceImpl extends ServiceImpl implements UserRecordService { +public class UserRecordServiceImpl extends ServiceImpl implements UserRecordService { @Autowired private MyUserService myUserService; @@ -37,9 +37,9 @@ public class UserRecordServiceImpl extends ServiceImpl params) { String productId = (String) params.get("proudictId"); - IPage page = page( - new Query().getPage(params), - new QueryWrapper() + IPage page = page( + new Query().getPage(params), + new QueryWrapper() //订单号,开始时间 .eq("bookid", productId).orderByDesc("create_date") // .eq("") @@ -47,13 +47,13 @@ public class UserRecordServiceImpl extends ServiceImpl - + From b57b196dd58aa885912fac8e7171158c225e1e35 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Tue, 24 Oct 2023 13:08:01 +0800 Subject: [PATCH 05/16] 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 From 7b9c6424eaa75edee32d8f5fd3e3782aaaee265e Mon Sep 17 00:00:00 2001 From: Cauchy Date: Tue, 24 Oct 2023 14:33:16 +0800 Subject: [PATCH 06/16] bug fix:county name is not unique value --- .../book/controller/BuyOrderController.java | 14 ++------- .../book/controller/ExpressController.java | 2 ++ .../modules/book/entity/BuyOrderProduct.java | 2 +- .../service/impl/BuyOrderServiceImpl.java | 29 +++++++++++++++++++ .../modules/book/vo/response/ConsigneeVo.java | 12 ++++++++ .../book/vo/response/PrintTemplateVo.java | 8 +++++ 6 files changed, 55 insertions(+), 12 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 665cdd72..aa248c2c 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -227,6 +227,7 @@ public class BuyOrderController { * @throws IOException */ @RequestMapping(value = "/placeOrder", method = RequestMethod.POST) + @Transactional public R placeOrder(@RequestBody BuyOrder buyOrder) throws IOException { List buyOrderProductList = buyOrder.getProductList(); // 订单总金额 @@ -241,13 +242,6 @@ public class BuyOrderController { return R.error(500, "库存不足"); } totalPrice = totalPrice.add(price.multiply(BigDecimal.valueOf(quantity))); - int originWeight = product.getWeight(); - int originWeightIntValue = originWeight / 100; - int originWeightDecimalValue = originWeightIntValue % 100; - //buyOrderProduct.setWeight(BigDecimal.valueOf(originWeightIntValue).add(BigDecimal.valueOf(originWeightDecimalValue).divide(new BigDecimal(100), - //MathContext.DECIMAL64))); -// buyOrderDetail.setProductUrl(product.getProductImages()); -// buyOrderDetail.setOrderStatus(Constants.ORDER_STATUS_TO_BE_PAID); } totalPrice = totalPrice.subtract(useCouponAmount(buyOrder)); @@ -268,12 +262,10 @@ public class BuyOrderController { for (BuyOrderProduct buyOrderDetail : buyOrderProductList) { buyOrderDetail.setOrderId(buyOrder.getId()); - //buyOrderDetail.setUserId(buyOrder.getUserId()); if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { handleBuyCart(buyOrder, buyOrderDetail); } } -// buyOrderDetailService.saveBatch(buyOrderDetails); buyOrderProductService.saveBatch(buyOrderProductList); // 1. 虚拟币支付 if (Constants.PAYMENT_METHOD_VIRTUAL.equals(buyOrder.getPaymentMethod())) { @@ -364,7 +356,7 @@ public class BuyOrderController { } // 库存回滚 QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); - buyOrderProductQueryWrapper.eq("order_id",buyOrder.getId()); + buyOrderProductQueryWrapper.eq("order_id", buyOrder.getId()); List buyOrderProductList = buyOrderProductService.list(buyOrderProductQueryWrapper); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { Integer productId = buyOrderProduct.getProductId(); @@ -626,7 +618,7 @@ public class BuyOrderController { * 分包发货 * * @param expressCompanyCode 快递公司编码 - * @param buyOrderProductId 订单商品 + * @param buyOrderProductId 订单商品 * @return R */ @RequestMapping(value = "/delivery", method = RequestMethod.POST) diff --git a/src/main/java/com/peanut/modules/book/controller/ExpressController.java b/src/main/java/com/peanut/modules/book/controller/ExpressController.java index cc2fb519..952009f1 100644 --- a/src/main/java/com/peanut/modules/book/controller/ExpressController.java +++ b/src/main/java/com/peanut/modules/book/controller/ExpressController.java @@ -67,8 +67,10 @@ public class ExpressController { List data = new ArrayList<>(); for (ExpressOrder expressOrder : expressOrderList) { PrintTemplateVo vo = new PrintTemplateVo(); + vo.setExpressCompanyCode(expressOrder.getExpressCompanyCode()); vo.setPrintTemplate(expressOrder.getPrintTemplate()); vo.setExpressOrderSn(expressOrder.getExpressOrderSn()); + vo.setTemplatedPrinted(vo.getTemplatedPrinted()); data.add(vo); } Map result = new HashMap<>(); diff --git a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java index a586ea77..014471f3 100644 --- a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java +++ b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java @@ -32,7 +32,7 @@ public class BuyOrderProduct { /** * 商品价格 */ - private BigDecimal realPrice; +// private BigDecimal realPrice; /** * 快递订单 ID */ 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 1ec4539b..939041f1 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 @@ -54,6 +54,12 @@ public class BuyOrderServiceImpl extends ServiceImpl impl @Autowired private BuyOrderProductService buyOrderProductService; + @Autowired + private ProvinceService provinceService; + + @Autowired + private CityService cityService; + protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class); @@ -423,6 +429,29 @@ public class BuyOrderServiceImpl extends ServiceImpl impl consigneeVo.setCity(buyOrder.getCity()); consigneeVo.setCounty(buyOrder.getDistrict()); consigneeVo.setAddress(buyOrder.getAddress()); + QueryWrapper provinceQueryWrapper = new QueryWrapper<>(); + provinceQueryWrapper.eq("prov_name", buyOrder.getProvince()); + Province province = provinceService.getOne(provinceQueryWrapper); + if (province != null) { + consigneeVo.setProvinceCode(province.getRegionCode()); + } + QueryWrapper cityQueryWrapper = new QueryWrapper<>(); + cityQueryWrapper.eq("city_name", buyOrder.getCity()); + City city = cityService.getOne(cityQueryWrapper); + Long cityId = null; + if (city != null) { + consigneeVo.setCityCode(city.getRegionCode()); + cityId = city.getCityId(); + } + QueryWrapper countyQueryWrapper = new QueryWrapper<>(); + countyQueryWrapper.eq("county_name", buyOrder.getDistrict()); + if (countyService.count(countyQueryWrapper) > 1) { + countyQueryWrapper.eq("city_id", cityId); + } + County county = countyService.getOne(countyQueryWrapper); + if (county != null) { + consigneeVo.setCountyCode(county.getRegionCode()); + } responseVo.setConsignee(consigneeVo); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("order_id", buyOrder.getId()); diff --git a/src/main/java/com/peanut/modules/book/vo/response/ConsigneeVo.java b/src/main/java/com/peanut/modules/book/vo/response/ConsigneeVo.java index 11268b02..8593eb65 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/ConsigneeVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/ConsigneeVo.java @@ -33,5 +33,17 @@ public class ConsigneeVo { * 详细地址 */ private String address; + /** + * 省份代码 + */ + private String provinceCode; + /** + * 城市代码 + */ + private String cityCode; + /** + * 区县代码 + */ + private String countyCode; } diff --git a/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java b/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java index 3ed8c897..3cd21386 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/PrintTemplateVo.java @@ -17,4 +17,12 @@ public class PrintTemplateVo { * 面单 */ private String printTemplate; + /** + * 快递公司代码 + */ + private String expressCompanyCode; + /** + * 是否打印过 + */ + private int templatedPrinted; } From 36374dd454d6e40a483842650e92c7e6d5d61885 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Tue, 24 Oct 2023 17:25:44 +0800 Subject: [PATCH 07/16] bugs fix --- .../book/controller/BuyOrderController.java | 8 +++---- .../book/controller/ExpressController.java | 13 ++++++------ .../modules/book/entity/ExpressOrder.java | 4 ++++ .../service/impl/BuyOrderServiceImpl.java | 21 +++++++++++++++---- .../service/impl/ExpressFeeServiceImpl.java | 8 +++++-- .../service/impl/ExpressOrderServiceImpl.java | 2 +- .../service/impl/UserAddressServiceImpl.java | 1 + .../book/vo/response/BuyOrderResponseVo.java | 1 + .../book/vo/response/GoodsResponseVo.java | 1 + 9 files changed, 42 insertions(+), 17 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 aa248c2c..d15ca0c3 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -257,13 +257,13 @@ public class BuyOrderController { buyOrder.setProvince(vo.getProvince()); buyOrder.setCity(vo.getCity()); buyOrder.setDistrict(vo.getCounty()); - buyOrder.setAddress(vo.getDetailAddress()); + buyOrder.setAddress(userAddress.getDetailAddress()); buyOrderService.save(buyOrder); - for (BuyOrderProduct buyOrderDetail : buyOrderProductList) { - buyOrderDetail.setOrderId(buyOrder.getId()); + for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + buyOrderProduct.setOrderId(buyOrder.getId()); if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { - handleBuyCart(buyOrder, buyOrderDetail); + handleBuyCart(buyOrder, buyOrderProduct); } } buyOrderProductService.saveBatch(buyOrderProductList); diff --git a/src/main/java/com/peanut/modules/book/controller/ExpressController.java b/src/main/java/com/peanut/modules/book/controller/ExpressController.java index 952009f1..472ed012 100644 --- a/src/main/java/com/peanut/modules/book/controller/ExpressController.java +++ b/src/main/java/com/peanut/modules/book/controller/ExpressController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.R; +import com.peanut.modules.book.entity.ExpressCompany; import com.peanut.modules.book.entity.ExpressOrder; import com.peanut.modules.book.service.ExpressCompanyService; import com.peanut.modules.book.service.ExpressOrderService; @@ -52,14 +53,11 @@ public class ExpressController { * @return R */ @RequestMapping(path = "/getPrintTemplateList", method = RequestMethod.GET) - public R getPrintTemplate(@RequestParam(value = "expressOrderSn", required = false) String expressOrderSn, - @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, + public R getPrintTemplate(@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "currentPage", defaultValue = "1") Integer currentPage) { Page expressOrderPage = new Page<>(currentPage, pageSize); QueryWrapper expressOrderQueryWrapper = new QueryWrapper<>(); - if (expressOrderSn != null) { - expressOrderQueryWrapper.eq("express_order_sn", expressOrderSn); - } + int totalDataSize = expressOrderService.count(expressOrderQueryWrapper); int totalPage = totalDataSize / pageSize + 1; Page page = expressOrderService.page(expressOrderPage, expressOrderQueryWrapper); @@ -67,7 +65,10 @@ public class ExpressController { List data = new ArrayList<>(); for (ExpressOrder expressOrder : expressOrderList) { PrintTemplateVo vo = new PrintTemplateVo(); - vo.setExpressCompanyCode(expressOrder.getExpressCompanyCode()); + QueryWrapper expressCompanyQueryWrapper = new QueryWrapper<>(); + expressCompanyQueryWrapper.eq("code", expressOrder.getExpressCompanyCode()); + ExpressCompany expressCompany = expressCompanyService.getOne(expressCompanyQueryWrapper); + vo.setExpressCompanyCode(expressCompany.getName()); vo.setPrintTemplate(expressOrder.getPrintTemplate()); vo.setExpressOrderSn(expressOrder.getExpressOrderSn()); vo.setTemplatedPrinted(vo.getTemplatedPrinted()); diff --git a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java index afd915fd..51138439 100644 --- a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java @@ -20,6 +20,10 @@ public class ExpressOrder { * ID */ private int id; + /** + * 订单Sn + */ + private String orderSn; /** * 省份 */ 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 939041f1..25efca97 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 @@ -30,6 +30,8 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import static org.apache.poi.hemf.hemfplus.record.HemfPlusRecordType.save; + @Service("buyOrderService") public class BuyOrderServiceImpl extends ServiceImpl implements BuyOrderService { @@ -320,6 +322,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl buyOrderQueryWrapper.eq(StringUtils.isNotBlank(requestVo.getOrderStatus()), "order_status", requestVo.getOrderStatus()); buyOrderQueryWrapper.gt(requestVo.getStartTime() != null, "create_time", requestVo.getStartTime()); buyOrderQueryWrapper.lt(requestVo.getEndTime() != null, "create_time", requestVo.getStartTime()); + buyOrderQueryWrapper.orderByDesc("create_time"); Integer totalSize = list(buyOrderQueryWrapper).size(); Integer totalPage = totalSize / requestVo.getPageSize() + 1; @@ -374,6 +377,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl expressOrder.setCreateTime(new Date()); expressOrder.setTotalWeight(totalWeight); expressOrder.setCommodity(commodityList); + expressOrder.setOrderSn(buyOrder.getOrderSn()); expressOrder.setExpressCompanyCode(expressCompanyCode); expressOrder.setConsigneeName(buyOrder.getShippingUser()); expressOrder.setConsigneeMobile(buyOrder.getUserPhone()); @@ -387,7 +391,11 @@ public class BuyOrderServiceImpl extends ServiceImpl impl String printTemplate = response.getPrintTemplate(); expressOrder.setExpressOrderSn(expressOrderSn); expressOrder.setPrintTemplate(printTemplate); - expressOrderService.save(expressOrder); + int expressOrderId = expressOrderService.getBaseMapper().insert(expressOrder); + for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + buyOrderProduct.setExpressOrderId(expressOrderId); + } + buyOrderProductService.updateBatchById(buyOrderProductList); } @Override @@ -406,6 +414,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl */ private BuyOrderResponseVo setBuyOrderInfo(BuyOrder buyOrder) { BuyOrderResponseVo responseVo = new BuyOrderResponseVo(); + responseVo.setOrderId(buyOrder.getId()); Integer userId = buyOrder.getUserId(); QueryWrapper userEntityQueryWrapper = new QueryWrapper<>(); userEntityQueryWrapper.eq("id", userId); @@ -462,16 +471,20 @@ public class BuyOrderServiceImpl extends ServiceImpl impl QueryWrapper shopProductQueryWrapper = new QueryWrapper<>(); shopProductQueryWrapper.eq("product_id", buyOrderProduct.getProductId()); ShopProduct shopProduct = shopProductService.getOne(shopProductQueryWrapper); + goodsResponseVo.setBuyOrderProductId(buyOrderProduct.getId()); goodsResponseVo.setProductName(shopProduct.getProductName()); goodsResponseVo.setProductImage(shopProduct.getProductImages()); goodsResponseVo.setProductPrice(shopProduct.getPrice()); + goodsResponseVo.setQuantity(buyOrderProduct.getQuantity()); QueryWrapper expressOrderQueryWrapper = new QueryWrapper<>(); expressOrderQueryWrapper.eq("id", buyOrderProduct.getExpressOrderId()); ExpressOrder expressOrder = expressOrderService.getOne(expressOrderQueryWrapper); ExpressResponseVo expressResponseVo = new ExpressResponseVo(); - expressResponseVo.setExpressCompany(expressOrder.getExpressCompanyCode()); - expressResponseVo.setExpressOrderSn(expressOrder.getExpressOrderSn()); - expressResponseVo.setPrintTemplate(expressOrder.getPrintTemplate()); + if (expressOrder != null) { + expressResponseVo.setExpressCompany(expressOrder.getExpressCompanyCode()); + expressResponseVo.setExpressOrderSn(expressOrder.getExpressOrderSn()); + expressResponseVo.setPrintTemplate(expressOrder.getPrintTemplate()); + } goodsResponseVo.setExpressInfo(expressResponseVo); goodsResponseVoList.add(goodsResponseVo); } diff --git a/src/main/java/com/peanut/modules/book/service/impl/ExpressFeeServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressFeeServiceImpl.java index 0efbd645..b689622d 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ExpressFeeServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressFeeServiceImpl.java @@ -52,7 +52,7 @@ public class ExpressFeeServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - if(!regionCode.startsWith("11") && !regionCode.startsWith("12") && !regionCode.startsWith("31") && !regionCode.startsWith("50")){ + if (!regionCode.startsWith("11") && !regionCode.startsWith("12") && !regionCode.startsWith("31") && !regionCode.startsWith("50")) { regionCode = regionCode.substring(0, 4).concat("00"); } queryWrapper.eq("dest_code", regionCode); @@ -72,7 +72,11 @@ public class ExpressFeeServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("dest_code", regionCode); queryWrapper.eq("express_code", "YD"); diff --git a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java index 74e1ce29..be1103a4 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java @@ -43,7 +43,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl countyQueryWrapper = new QueryWrapper<>(); countyQueryWrapper.eq("region_code", regionCode); diff --git a/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java b/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java index 56abb11b..c8380467 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/BuyOrderResponseVo.java @@ -13,6 +13,7 @@ import java.util.List; */ @Data public class BuyOrderResponseVo { + private Integer orderId; /** * 订单号 */ diff --git a/src/main/java/com/peanut/modules/book/vo/response/GoodsResponseVo.java b/src/main/java/com/peanut/modules/book/vo/response/GoodsResponseVo.java index 9bf1aa05..c9c80f9e 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/GoodsResponseVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/GoodsResponseVo.java @@ -11,6 +11,7 @@ import java.math.BigDecimal; */ @Data public class GoodsResponseVo { + private Integer buyOrderProductId; /** * 商品名称 */ From 719711c6145eb2e8e06fbce44be3d745f0ce65da Mon Sep 17 00:00:00 2001 From: Cauchy Date: Wed, 25 Oct 2023 09:03:11 +0800 Subject: [PATCH 08/16] bug fix --- .../book/controller/BuyOrderController.java | 51 ++++++++----------- .../controller/ShopProductController.java | 46 ++++++++++++++++- .../controller/UserFollowUpController.java | 2 +- .../book/controller/UserRecordController.java | 49 ++++++++++++++++-- .../peanut/modules/book/entity/BuyOrder.java | 2 +- .../book/service/ExpressOrderService.java | 2 +- .../service/impl/BuyOrderServiceImpl.java | 16 +++--- .../service/impl/ExpressOrderServiceImpl.java | 3 +- .../book/vo/ExpressQueryRequestVo.java | 4 ++ 9 files changed, 126 insertions(+), 49 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 d15ca0c3..b623c9db 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -179,7 +179,7 @@ public class BuyOrderController { buyOrderService.save(buyOrder); for (BuyOrderDetail buyOrderDetail : buyOrderDetails) { - buyOrderDetail.setOrderId(buyOrder.getId()); + buyOrderDetail.setOrderId(buyOrder.getOrderId()); buyOrderDetail.setUserId(buyOrder.getUserId()); if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { handleBuyCart(buyOrder, buyOrderDetail); @@ -204,12 +204,12 @@ public class BuyOrderController { rabbitTemplate.convertAndSend( DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE, DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY, - buyOrder.getId(), + buyOrder.getOrderId(), messagePostProcessor() ); WechatPaymentInfo paymentInfo = new WechatPaymentInfo(); paymentInfo.setOrderSn(orderSn); - paymentInfo.setBuyOrderId(buyOrder.getId()); + paymentInfo.setBuyOrderId(buyOrder.getOrderId()); paymentInfo.setTotalAmount(totalPrice); wxpayService.prepay(paymentInfo); } @@ -261,7 +261,7 @@ public class BuyOrderController { buyOrderService.save(buyOrder); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { - buyOrderProduct.setOrderId(buyOrder.getId()); + buyOrderProduct.setOrderId(buyOrder.getOrderId()); if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { handleBuyCart(buyOrder, buyOrderProduct); } @@ -285,12 +285,12 @@ public class BuyOrderController { rabbitTemplate.convertAndSend( DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE, DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY, - buyOrder.getId(), + buyOrder.getOrderId(), messagePostProcessor() ); WechatPaymentInfo paymentInfo = new WechatPaymentInfo(); paymentInfo.setOrderSn(orderSn); - paymentInfo.setBuyOrderId(buyOrder.getId()); + paymentInfo.setBuyOrderId(buyOrder.getOrderId()); paymentInfo.setTotalAmount(totalPrice); wxpayService.prepay(paymentInfo); } @@ -356,7 +356,7 @@ public class BuyOrderController { } // 库存回滚 QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); - buyOrderProductQueryWrapper.eq("order_id", buyOrder.getId()); + buyOrderProductQueryWrapper.eq("order_id", buyOrder.getOrderId()); List buyOrderProductList = buyOrderProductService.list(buyOrderProductQueryWrapper); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { Integer productId = buyOrderProduct.getProductId(); @@ -364,7 +364,7 @@ public class BuyOrderController { product.setProductStock(product.getProductStock() + buyOrderProduct.getQuantity()); shopProductService.updateById(product); } - buyOrderService.removeById(buyOrder.getId()); + buyOrderService.removeById(buyOrder.getOrderId()); return R.ok(); } @@ -410,7 +410,7 @@ public class BuyOrderController { } // 库存回滚 List buyOrderDetailEntities = buyOrderDetailService.getBaseMapper().selectList(new QueryWrapper() - .eq("order_id", byId.getId())); + .eq("order_id", byId.getOrderId())); for (BuyOrderDetail buyOrderDetailEntity : buyOrderDetailEntities) { Integer productId = buyOrderDetailEntity.getProductId(); ShopProduct product = shopProductService.getById(productId); @@ -452,7 +452,7 @@ public class BuyOrderController { @RequestMapping("/getOrderDetail") public R getOrderDetail(@RequestParam Integer orderId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(BuyOrder::getId, orderId); + wrapper.eq(BuyOrder::getOrderId, orderId); BuyOrder one = buyOrderService.getOne(wrapper); if (one.equals(null)) { return R.error("order error:order is null"); @@ -565,30 +565,19 @@ public class BuyOrderController { /** * 查询订单快递 * - * @param orderSn 订单号 + * @param expressOrderSn 运单号 * @return R */ @RequestMapping(value = "/queryExpress", method = RequestMethod.GET) - public R queryExpress(@RequestParam("orderSn") Integer orderSn) { - QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); - buyOrderQueryWrapper.eq("order_sn", orderSn); - BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); - Integer orderId = buyOrder.getId(); + public R queryExpress(@RequestParam("expressOrderSn") String expressOrderSn, + @RequestParam("expressCompanyCode") String expressCompanyCode, + @RequestParam("customerName") String customerName) { - QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); - buyOrderProductQueryWrapper.eq("order_id", orderId); - List buyOrderProductList = buyOrderProductService.list(buyOrderProductQueryWrapper); - List result = new ArrayList<>(); - for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { - int expressOrderId = buyOrderProduct.getExpressOrderId(); - ExpressOrder expressOrder = expressOrderService.getById(expressOrderId); - ExpressQueryResponseVo vo = new ExpressQueryResponseVo(); - ExpressQueryResponse expressQueryResponse = expressOrderService.queryExpressOrder(expressOrder.getExpressCompanyCode(), expressOrder.getExpressOrderSn()); - vo.setLogisticCode(expressQueryResponse.getLogisticCode()); - vo.setTraces(expressQueryResponse.getTraces()); - result.add(vo); - } - return R.ok().put("result", result); + ExpressQueryResponseVo vo = new ExpressQueryResponseVo(); + ExpressQueryResponse expressQueryResponse = expressOrderService.queryExpressOrder(expressCompanyCode, expressOrderSn, customerName); + vo.setLogisticCode(expressQueryResponse.getLogisticCode()); + vo.setTraces(expressQueryResponse.getTraces()); + return R.ok().put("result", vo); } /** @@ -689,7 +678,7 @@ public class BuyOrderController { CouponHistoryEntity couponHistory = couponHistoryService.getById(couponId); couponHistory.setUseStatus(1); couponHistory.setUseTime(new Date()); - couponHistory.setOrderId(Long.valueOf(buyOrder.getId())); + couponHistory.setOrderId(Long.valueOf(buyOrder.getOrderId())); couponHistory.setOrderSn(buyOrder.getOrderSn()); CouponEntity coupon = couponService.getById(couponHistory.getCouponId()); diff --git a/src/main/java/com/peanut/modules/book/controller/ShopProductController.java b/src/main/java/com/peanut/modules/book/controller/ShopProductController.java index e30f6236..c033b45e 100644 --- a/src/main/java/com/peanut/modules/book/controller/ShopProductController.java +++ b/src/main/java/com/peanut/modules/book/controller/ShopProductController.java @@ -39,6 +39,8 @@ public class ShopProductController { private ShopProductBookService shopProductBookService; @Autowired private ShopProductToLabelService shopProductToLabelService; + @Autowired + private BuyOrderDetailService buyOrderDetailService; /** * 精选商品 列表 @@ -87,6 +89,48 @@ public class ShopProductController { return R.ok().put("page", page); } + /** + * 未购买书列表 + * + * @param userId 用户id + * @return + */ + @RequestMapping("/booklist") + public R booklist(@RequestParam("userId") Integer userId + ) { + //查询已购买的书籍 + List buyOrderDetailEntities = buyOrderDetailService.getBaseMapper().selectList(new QueryWrapper() + .eq("user_id", userId)); + //hashset不重复 且无序 + Set purchasedProductIds = new HashSet<>(); + ArrayList list = new ArrayList<>(); + Map map = new HashMap<>(); + for (BuyOrderDetail buyOrderDetail : buyOrderDetailEntities) { + map.put("ProductId", String.valueOf(buyOrderDetail.getProductId())); + list.add(map); + //去重取出以后买书籍的id + purchasedProductIds.add(String.valueOf(buyOrderDetail.getProductId())); + } + //查询商品表并过滤已购买商品id,根据时间倒叙展示 + List allProductEntities = shopProductService.getBaseMapper().selectList(new QueryWrapper() + .notIn("product_id", purchasedProductIds) + .orderByDesc("create_time") +// .notLike("book_ids",",") + .isNotNull("book_ids") + + ); + List lists = new ArrayList<>(); + + for (ShopProduct product : allProductEntities) { + Map productMap = new HashMap<>(); + productMap.put("product", product); + lists.add(productMap); + } + + + return R.ok().put("pages", lists); // 返回未购买的书籍分页 + } + /** * 未购买书列表 @@ -125,8 +169,6 @@ public class ShopProductController { productMap.put("product", product); lists.add(productMap); } - - return R.ok().put("pages", lists); // 返回未购买的书籍分页 } 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 1d669c4a..82a6733d 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.getId(); + Integer orderId = buyOrder.getOrderId(); 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 232249f2..651f47e0 100644 --- a/src/main/java/com/peanut/modules/book/controller/UserRecordController.java +++ b/src/main/java/com/peanut/modules/book/controller/UserRecordController.java @@ -26,6 +26,8 @@ public class UserRecordController { private BuyOrderProductService buyOrderProductService; @Autowired private UserFollowUpService userFollowUpService; + @Autowired + private BuyOrderDetailService buyOrderDetailService; /** @@ -176,7 +178,7 @@ public class UserRecordController { return error("您已评价过了,请勿重复评论"); // } else { - userRecord.setId(buyOrder.getId()); + userRecord.setId(buyOrder.getOrderId()); userRecord.setContent(comment); //商品评价 userRecord.setBookid(bookid); @@ -197,11 +199,11 @@ public class UserRecordController { * @return 生成评论(上传图片,星级评价 */ @RequestMapping("/UserRecordComment") - public R commodity(@RequestBody UserRecord recordEntity) { + public R comment(@RequestBody UserRecord recordEntity) { QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); buyOrderQueryWrapper.eq("order_sn", recordEntity.getOrderSn()); BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); - Integer orderId = buyOrder.getId(); + Integer orderId = buyOrder.getOrderId(); QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); buyOrderProductQueryWrapper.eq("order_id", orderId); buyOrderProductQueryWrapper.eq("product_id", recordEntity.getProductId()); @@ -228,4 +230,45 @@ public class UserRecordController { buyOrderProductService.saveOrUpdate(buyOrderProduct); return R.ok("成功").put("userRecordEntity", recordEntity); } + + /* + TODO 老版本接口,新版本上线后要删除 + */ + @RequestMapping("/UserRecordcomment") + public R commodity(@RequestBody UserRecord recordEntity) { + //todo 已收货限制字段,只可评价一次 + BuyOrder buyOrder = buyOrderService.getBaseMapper().selectOne(new QueryWrapper() + .eq("order_sn", recordEntity.getOrderSn()) + ); + + Integer orderId = buyOrder.getOrderId(); + BuyOrderDetail detailEntity = buyOrderDetailService.getBaseMapper().selectOne(new QueryWrapper().eq("Order_id", orderId).eq("product_id", recordEntity.getBookid())); + Integer orderId1 = detailEntity.getOrderId(); + UserRecord userRecordEntity = userRecordService.getBaseMapper().selectOne(new QueryWrapper().eq("orderSn", recordEntity.getOrderSn()).eq("userid", recordEntity.getUserid()).eq("orderdid", orderId1).last("LIMIT 1")); + + if (userRecordEntity != null) { + return R.error("您已评价过"); + } + if (recordEntity.getImages() != null) { + List> imageList = (ArrayList>) recordEntity.getImages(); + String imageStr = ""; + for (Map m : imageList) { + imageStr += m.get("url") + ","; + + } + + + recordEntity.setImages(imageStr); + } + recordEntity.setDelflag(0); + recordEntity.setOrderdId(orderId1); + userRecordService.saveOrUpdate(recordEntity); + + + detailEntity.setRecordId(1); + buyOrderDetailService.saveOrUpdate(detailEntity); + + + return R.ok("成功").put("userRecordEntity", recordEntity); + } } 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 9e341264..2dea7999 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 id; + private Integer orderId; /** * 订单编号 */ diff --git a/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java b/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java index 14e040ea..cdb01bb2 100644 --- a/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java @@ -16,5 +16,5 @@ public interface ExpressOrderService extends IService { */ ExpressOrderResponseVo placeExpressOrder(ExpressOrder expressOrder); - ExpressQueryResponse queryExpressOrder(String ShipperCode, String LogisticCode); + ExpressQueryResponse queryExpressOrder(String ShipperCode, String LogisticCode, String customerName); } 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 25efca97..067f066d 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 @@ -30,8 +30,6 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -import static org.apache.poi.hemf.hemfplus.record.HemfPlusRecordType.save; - @Service("buyOrderService") public class BuyOrderServiceImpl extends ServiceImpl implements BuyOrderService { @@ -105,7 +103,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.getId()))); + .eq("order_id", record.getOrderId()))); } } @@ -129,7 +127,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl page = this.page(page, queryWrapper); List records = page.getRecords(); for (BuyOrder buyOrder : records) { - Integer orderId = buyOrder.getId(); + Integer orderId = buyOrder.getOrderId(); QueryWrapper buyOrderDetailQueryWrapper = new QueryWrapper<>(); buyOrderDetailQueryWrapper.eq("order_id", orderId); List buyOrderDetailList = buyOrderDetailService.list(buyOrderDetailQueryWrapper); @@ -187,14 +185,14 @@ public class BuyOrderServiceImpl extends ServiceImpl impl ); for (BuyOrder order : buyOrderList) { order.setProducts(buyOrderDetailService.list(new QueryWrapper() - .eq("order_id", order.getId()))); + .eq("order_id", order.getOrderId()))); orderList.add(order); } // 清洗数据 (与前端传来的id对比后) List washOrderList = new ArrayList<>(); for (BuyOrder order : orderList) { for (int o : orderIds) { - if (o == order.getId()) { + if (o == order.getOrderId()) { washOrderList.add(order); } } @@ -276,7 +274,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl ); for (BuyOrder order : buyOrderList.getRecords()) { order.setProducts(buyOrderDetailService.list(new QueryWrapper() - .eq("order_id", order.getId()))); + .eq("order_id", order.getOrderId()))); orderList.add(order); } // 获取有订单的所有用户 @@ -414,7 +412,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl */ private BuyOrderResponseVo setBuyOrderInfo(BuyOrder buyOrder) { BuyOrderResponseVo responseVo = new BuyOrderResponseVo(); - responseVo.setOrderId(buyOrder.getId()); + responseVo.setOrderId(buyOrder.getOrderId()); Integer userId = buyOrder.getUserId(); QueryWrapper userEntityQueryWrapper = new QueryWrapper<>(); userEntityQueryWrapper.eq("id", userId); @@ -463,7 +461,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl } responseVo.setConsignee(consigneeVo); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_id", buyOrder.getId()); + queryWrapper.eq("order_id", buyOrder.getOrderId()); 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/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java index be1103a4..07810480 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java @@ -98,9 +98,10 @@ public class ExpressOrderServiceImpl extends ServiceImpl params = new HashMap<>(); diff --git a/src/main/java/com/peanut/modules/book/vo/ExpressQueryRequestVo.java b/src/main/java/com/peanut/modules/book/vo/ExpressQueryRequestVo.java index 284c5aa2..8312ba09 100644 --- a/src/main/java/com/peanut/modules/book/vo/ExpressQueryRequestVo.java +++ b/src/main/java/com/peanut/modules/book/vo/ExpressQueryRequestVo.java @@ -17,4 +17,8 @@ public class ExpressQueryRequestVo { * 快递单号 */ private String LogisticCode; + /** + * 手机尾号 + */ + private String CustomerName; } From 621ba4c1053f5a1be062d6955630f28f9bf2f324 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Wed, 25 Oct 2023 10:36:02 +0800 Subject: [PATCH 09/16] bug fix --- .../java/com/peanut/config/Constants.java | 4 ++++ .../service/impl/BuyOrderServiceImpl.java | 19 ++++++++++++++++++- .../service/impl/ExpressOrderServiceImpl.java | 3 +-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/peanut/config/Constants.java b/src/main/java/com/peanut/config/Constants.java index 66a5d521..b9b09bec 100644 --- a/src/main/java/com/peanut/config/Constants.java +++ b/src/main/java/com/peanut/config/Constants.java @@ -26,6 +26,10 @@ public class Constants { * 订单状态 - 交易失败 */ public static final String ORDER_STATUS_FAIL = "4"; + /** + * 订单状态 - 已部分发货 + */ + public static final String ORDER_STATUS_PART_SHIPPED = "5"; /** * 订单状态 - 全部 */ 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 067f066d..7498a226 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 @@ -60,7 +60,6 @@ public class BuyOrderServiceImpl extends ServiceImpl impl @Autowired private CityService cityService; - protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class); // TODO 新版本上线后删除 @@ -347,7 +346,9 @@ public class BuyOrderServiceImpl extends ServiceImpl impl List buyOrderProductList = buyOrderProductService.list(queryWrapper); BigDecimal totalWeight = new BigDecimal(0); List commodityList = new ArrayList<>(); + List buyOrderIdList = new ArrayList<>(); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { + buyOrderIdList.add(buyOrderProduct.getOrderId()); int productId = buyOrderProduct.getProductId(); ShopProduct product = shopProductService.getById(productId); ExpressCommodity commodity = new ExpressCommodity(); @@ -394,6 +395,22 @@ public class BuyOrderServiceImpl extends ServiceImpl impl buyOrderProduct.setExpressOrderId(expressOrderId); } buyOrderProductService.updateBatchById(buyOrderProductList); + QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); + buyOrderQueryWrapper.in("order_id", buyOrderIdList); + List buyOrderList = list(buyOrderQueryWrapper); + for (BuyOrder buyorder : buyOrderList) { + QueryWrapper buyOrderProductQueryWrapper = new QueryWrapper<>(); + buyOrderProductQueryWrapper.eq("order_id", buyorder.getOrderId()); + buyOrderProductQueryWrapper.eq("express_order_id", 0); + int count = buyOrderProductService.count(buyOrderProductQueryWrapper); + if (count == 0) { + buyorder.setOrderStatus(Constants.ORDER_STATUS_SHIPPED); + } else { + buyorder.setOrderStatus(Constants.ORDER_STATUS_PART_SHIPPED); + } + } + updateBatchById(buyOrderList); + } @Override diff --git a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java index 07810480..27e727a6 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java @@ -92,8 +92,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl Date: Wed, 25 Oct 2023 11:09:13 +0800 Subject: [PATCH 10/16] optimize --- .../java/com/peanut/modules/book/entity/BuyOrderProduct.java | 4 ++++ .../modules/book/service/impl/BuyOrderServiceImpl.java | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java index 014471f3..66e14265 100644 --- a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java +++ b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java @@ -45,4 +45,8 @@ public class BuyOrderProduct { * 删除标识 */ private int delFlag; + /** + * 发货标识 + */ + private int shipped; } 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 7498a226..c2e6ce19 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 @@ -315,7 +315,9 @@ public class BuyOrderServiceImpl extends ServiceImpl impl Page buyOrderPage = new Page<>(requestVo.getPageIndex(), requestVo.getPageSize()); List data = new ArrayList<>(); QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); - buyOrderQueryWrapper.like(StringUtils.isNotBlank(requestVo.getSearchKeyWord()), "order_sn", requestVo.getSearchKeyWord()); + buyOrderQueryWrapper.like(StringUtils.isNotBlank(requestVo.getSearchKeyWord()), "order_sn", requestVo.getSearchKeyWord()) + .or().like(StringUtils.isNotBlank(requestVo.getSearchKeyWord()), "shipping_user", requestVo.getSearchKeyWord()) + .or().like(StringUtils.isNotBlank(requestVo.getSearchKeyWord()), "user_phone", requestVo.getSearchKeyWord()); buyOrderQueryWrapper.eq(StringUtils.isNotBlank(requestVo.getOrderStatus()), "order_status", requestVo.getOrderStatus()); buyOrderQueryWrapper.gt(requestVo.getStartTime() != null, "create_time", requestVo.getStartTime()); buyOrderQueryWrapper.lt(requestVo.getEndTime() != null, "create_time", requestVo.getStartTime()); @@ -393,6 +395,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl int expressOrderId = expressOrderService.getBaseMapper().insert(expressOrder); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { buyOrderProduct.setExpressOrderId(expressOrderId); + buyOrderProduct.setShipped(1); } buyOrderProductService.updateBatchById(buyOrderProductList); QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); From 86027f543c0f4a5e12d9d9a30072363ef921d4fd Mon Sep 17 00:00:00 2001 From: Cauchy Date: Wed, 25 Oct 2023 12:14:38 +0800 Subject: [PATCH 11/16] bug fix --- .../peanut/modules/book/entity/ExpressOrder.java | 4 ++++ .../book/service/impl/BuyOrderServiceImpl.java | 16 +++++++++++++++- .../book/vo/response/CouponResponseVo.java | 10 ++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java index 51138439..aeaab793 100644 --- a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java @@ -1,6 +1,8 @@ package com.peanut.modules.book.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -19,6 +21,8 @@ public class ExpressOrder { /** * ID */ + @TableField(value = "id") + @TableId(type = IdType.AUTO) private int id; /** * 订单Sn 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 c2e6ce19..364e2c53 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 @@ -12,6 +12,7 @@ import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.Query; import com.peanut.config.Constants; import com.peanut.modules.book.dao.BuyOrderDao; +import com.peanut.modules.book.dao.ExpressOrderDao; import com.peanut.modules.book.entity.*; import com.peanut.modules.book.service.*; import com.peanut.modules.book.vo.ExpressOrderResponseVo; @@ -59,6 +60,8 @@ public class BuyOrderServiceImpl extends ServiceImpl impl @Autowired private CityService cityService; + @Autowired + private ExpressOrderDao expressOrderDao; protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class); @@ -236,6 +239,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl public Map> decomposeShipment(Integer userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("del_flag", 0); + queryWrapper.eq("order_status",1); queryWrapper.eq("userId", userId); queryWrapper.eq("address_modified", 0); List buyOrderList = list(queryWrapper); @@ -392,7 +396,8 @@ public class BuyOrderServiceImpl extends ServiceImpl impl String printTemplate = response.getPrintTemplate(); expressOrder.setExpressOrderSn(expressOrderSn); expressOrder.setPrintTemplate(printTemplate); - int expressOrderId = expressOrderService.getBaseMapper().insert(expressOrder); + expressOrderDao.insert(expressOrder); + int expressOrderId = expressOrder.getId(); for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { buyOrderProduct.setExpressOrderId(expressOrderId); buyOrderProduct.setShipped(1); @@ -446,7 +451,16 @@ public class BuyOrderServiceImpl extends ServiceImpl impl } responseVo.setUserInfo(userResponseVo); } + CouponResponseVo couponResponseVo = new CouponResponseVo(); + if (buyOrder.getCouponId() != null) { + couponResponseVo.setCouponName(buyOrder.getCouponName()); + couponResponseVo.setCouponId(buyOrder.getCouponId()); + } + responseVo.setCoupon(couponResponseVo); responseVo.setOrderPrice(buyOrder.getOrderMoney()); + responseVo.setRealPrice(buyOrder.getRealMoney()); + responseVo.setShippingPrice(buyOrder.getShippingMoney()); + responseVo.setDistrictPrice(buyOrder.getDistrictMoney()); responseVo.setOrderType(buyOrder.getOrderType()); BeanUtil.copyProperties(buyOrder, responseVo); ConsigneeVo consigneeVo = new ConsigneeVo(); diff --git a/src/main/java/com/peanut/modules/book/vo/response/CouponResponseVo.java b/src/main/java/com/peanut/modules/book/vo/response/CouponResponseVo.java index 3e2db3e4..60e28b50 100644 --- a/src/main/java/com/peanut/modules/book/vo/response/CouponResponseVo.java +++ b/src/main/java/com/peanut/modules/book/vo/response/CouponResponseVo.java @@ -2,6 +2,8 @@ package com.peanut.modules.book.vo.response; import lombok.Data; +import java.math.BigDecimal; + /** * @Description: 优惠券 Value Object * @Author: Cauchy @@ -9,4 +11,12 @@ import lombok.Data; */ @Data public class CouponResponseVo { + /** + * 优惠券名称 + */ + String couponName; + /** + * 优惠券金额 + */ + Integer couponId; } From 7792024b15f8f2e1ad1189037a40e61500c7751c Mon Sep 17 00:00:00 2001 From: Cauchy Date: Wed, 25 Oct 2023 13:47:06 +0800 Subject: [PATCH 12/16] before test --- .../java/com/peanut/config/Constants.java | 7 +--- .../book/controller/BuyOrderController.java | 6 +-- .../book/controller/ExpressController.java | 12 +++--- .../modules/book/service/BuyOrderService.java | 4 +- .../service/impl/BuyOrderServiceImpl.java | 38 +++++++++++-------- .../vo/request/BuyOrderListRequestVo.java | 4 ++ 6 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/peanut/config/Constants.java b/src/main/java/com/peanut/config/Constants.java index b9b09bec..6ebbf167 100644 --- a/src/main/java/com/peanut/config/Constants.java +++ b/src/main/java/com/peanut/config/Constants.java @@ -19,17 +19,14 @@ public class Constants { */ public static final String ORDER_STATUS_SHIPPED = "2"; /** - * 订单状态 - 已发货 + * 订单状态 - 已完成 */ public static final String ORDER_STATUS_FINISHED = "3"; /** * 订单状态 - 交易失败 */ public static final String ORDER_STATUS_FAIL = "4"; - /** - * 订单状态 - 已部分发货 - */ - public static final String ORDER_STATUS_PART_SHIPPED = "5"; + /** * 订单状态 - 全部 */ 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 b623c9db..f082a366 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -89,9 +89,9 @@ public class BuyOrderController { @Autowired private CountyService countyService; - @RequestMapping(value = "/decomposeShipment", method = RequestMethod.GET) - public R decomposeShipment(@RequestParam("userId") Integer userId) { - Map> result = buyOrderService.decomposeShipment(userId); + @RequestMapping(value = "/decomposeShipment", method = RequestMethod.POST) + public R decomposeShipment(@RequestBody BuyOrderListRequestVo requestVo) { + Map result = buyOrderService.decomposeShipment(requestVo); return R.ok().put("result", result); } diff --git a/src/main/java/com/peanut/modules/book/controller/ExpressController.java b/src/main/java/com/peanut/modules/book/controller/ExpressController.java index 472ed012..fd17b25b 100644 --- a/src/main/java/com/peanut/modules/book/controller/ExpressController.java +++ b/src/main/java/com/peanut/modules/book/controller/ExpressController.java @@ -10,11 +10,9 @@ import com.peanut.modules.book.service.ExpressCompanyService; import com.peanut.modules.book.service.ExpressOrderService; import com.peanut.modules.book.vo.ExpressCompanyVo; import com.peanut.modules.book.vo.response.PrintTemplateVo; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; @@ -83,11 +81,11 @@ public class ExpressController { return R.ok().put("result", result); } - @RequestMapping(value = "/printTemplate", method = RequestMethod.GET) - public R printTemplate(@RequestParam("expressOrderId") Integer expressOrderId) { + @RequestMapping(value = "/printTemplate", method = RequestMethod.POST) + public R printTemplate(@RequestBody List expressOrderIdList) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.set("template_printed", 1); - updateWrapper.eq("id", expressOrderId); + updateWrapper.in("id", expressOrderIdList); expressOrderService.update(updateWrapper); return R.ok(); } diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index 53050113..ddb4a0f9 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -40,7 +40,7 @@ public interface BuyOrderService extends IService { * @param requestVo * @return */ - Map orderList(BuyOrderListRequestVo requestVo); + Map orderList(BuyOrderListRequestVo requestVo); /** * 订单拆分发货 @@ -52,7 +52,7 @@ public interface BuyOrderService extends IService { BuyOrderResponseVo orderDetail(String orderSn); - Map> decomposeShipment(Integer userId); + Map decomposeShipment(BuyOrderListRequestVo requestVo); } \ No newline at end of file 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 364e2c53..6f6b24e5 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 @@ -236,24 +236,35 @@ public class BuyOrderServiceImpl extends ServiceImpl impl return userOrderVoList; } - public Map> decomposeShipment(Integer userId) { + @Override + public Map decomposeShipment(BuyOrderListRequestVo requestVo) { + Page buyOrderPage = new Page<>(); + List data = new ArrayList<>(); + BuyOrder requestBuyOrder = getById(requestVo.getOrderId()); + Integer addressId = requestBuyOrder.getAddressId(); + Integer userId = requestBuyOrder.getUserId(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("del_flag", 0); - queryWrapper.eq("order_status",1); - queryWrapper.eq("userId", userId); + queryWrapper.eq("order_status", Constants.ORDER_STATUS_TO_BE_SHIPPED); + queryWrapper.eq("user_id", userId); + queryWrapper.eq("address_id", addressId); queryWrapper.eq("address_modified", 0); - List buyOrderList = list(queryWrapper); - Map> result = new HashMap<>(); + Integer totalSize = count(queryWrapper); + Integer totalPage = totalSize / requestVo.getPageSize() + 1; + Page page = page(buyOrderPage, queryWrapper); + List buyOrderList = page.getRecords(); for (BuyOrder buyOrder : buyOrderList) { - if (result.containsKey(buyOrder.getAddressId())) { - List orderSnList = result.get(buyOrder.getAddressId()); - orderSnList.add(buyOrder.getOrderSn()); - } else { - List orderSnList = new ArrayList<>(); - result.put(buyOrder.getAddressId(), orderSnList); - } + BuyOrderResponseVo responseVo = setBuyOrderInfo(buyOrder); + data.add(responseVo); } + Map result = new HashMap<>(); + result.put("totalDataSize", totalSize); + result.put("totalPage", totalPage); + result.put("data", data); + result.put("currentPage", requestVo.getPageIndex()); + result.put("pageSize", requestVo.getPageSize()); return result; + } /** @@ -413,12 +424,9 @@ public class BuyOrderServiceImpl extends ServiceImpl impl int count = buyOrderProductService.count(buyOrderProductQueryWrapper); if (count == 0) { buyorder.setOrderStatus(Constants.ORDER_STATUS_SHIPPED); - } else { - buyorder.setOrderStatus(Constants.ORDER_STATUS_PART_SHIPPED); } } updateBatchById(buyOrderList); - } @Override diff --git a/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java b/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java index eecab5f1..a7a3ec4c 100644 --- a/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java +++ b/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java @@ -11,6 +11,10 @@ import java.util.Date; */ @Data public class BuyOrderListRequestVo { + /** + * id + */ + private Integer orderId; /** * 页号 */ From c5e6cfdc89327a4abb57bb32e9477b0b52d87a14 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Thu, 26 Oct 2023 17:52:54 +0800 Subject: [PATCH 13/16] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/controller/BuyOrderController.java | 17 ++++++++++++----- .../modules/book/entity/ExpressOrder.java | 2 +- .../peanut/modules/book/entity/ShopProduct.java | 2 +- .../book/service/impl/BuyOrderServiceImpl.java | 6 +++++- .../service/impl/ExpressOrderServiceImpl.java | 2 +- .../book/vo/response/BuyOrderResponseVo.java | 3 +++ .../book/vo/response/CouponResponseVo.java | 2 ++ src/main/resources/application-dev.yml | 2 +- src/main/resources/application.yml | 2 +- 9 files changed, 27 insertions(+), 11 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 f082a366..65845e4f 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -313,14 +313,21 @@ public class BuyOrderController { BigDecimal totalWeight = new BigDecimal(0); for (ProductRequestVo product : products) { ShopProduct shopProduct = shopProductService.getById(product.getProductId()); + if(shopProduct.getIsFreeMail()==0){ + continue; + } BigDecimal weight = BigDecimal.valueOf(Double.valueOf(shopProduct.getWeight()) / 1000.0); totalWeight = totalWeight.add(weight.multiply(new BigDecimal(product.getQuantity()))); } - totalWeight = totalWeight.setScale(0, RoundingMode.UP); - QueryWrapper configQueryWrapper = new QueryWrapper<>(); - configQueryWrapper.eq("param_key", "DEFAULT_EXPRESS"); - SysConfigEntity config = sysConfigService.getOne(configQueryWrapper); - BigDecimal expressFee = expressFeeService.calculateExpressFee(config.getParamValue(), totalWeight, regionCode); + BigDecimal expressFee = new BigDecimal(0); + if(totalWeight.compareTo(BigDecimal.ZERO)!=0){ + totalWeight = totalWeight.setScale(0, RoundingMode.UP); + QueryWrapper configQueryWrapper = new QueryWrapper<>(); + configQueryWrapper.eq("param_key", "DEFAULT_EXPRESS"); + SysConfigEntity config = sysConfigService.getOne(configQueryWrapper); + expressFee = expressFeeService.calculateExpressFee(config.getParamValue(), totalWeight, regionCode); + } + return R.ok().put("result", expressFee); } diff --git a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java index aeaab793..4f54c7da 100644 --- a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java @@ -27,7 +27,7 @@ public class ExpressOrder { /** * 订单Sn */ - private String orderSn; +// private String orderSn; /** * 省份 */ diff --git a/src/main/java/com/peanut/modules/book/entity/ShopProduct.java b/src/main/java/com/peanut/modules/book/entity/ShopProduct.java index f9633996..7bcf239c 100644 --- a/src/main/java/com/peanut/modules/book/entity/ShopProduct.java +++ b/src/main/java/com/peanut/modules/book/entity/ShopProduct.java @@ -138,7 +138,7 @@ public class ShopProduct implements Serializable { /** * 是否包邮 0:包邮 ,1:不包邮 */ - private Object isFreeMail; + private Integer isFreeMail; /** * 绑定电子书id, 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 6f6b24e5..2e4bf5f6 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 @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; +import java.security.Timestamp; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -336,6 +337,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl buyOrderQueryWrapper.eq(StringUtils.isNotBlank(requestVo.getOrderStatus()), "order_status", requestVo.getOrderStatus()); buyOrderQueryWrapper.gt(requestVo.getStartTime() != null, "create_time", requestVo.getStartTime()); buyOrderQueryWrapper.lt(requestVo.getEndTime() != null, "create_time", requestVo.getStartTime()); + buyOrderQueryWrapper.eq("order_type","order"); buyOrderQueryWrapper.orderByDesc("create_time"); Integer totalSize = list(buyOrderQueryWrapper).size(); @@ -393,7 +395,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl expressOrder.setCreateTime(new Date()); expressOrder.setTotalWeight(totalWeight); expressOrder.setCommodity(commodityList); - expressOrder.setOrderSn(buyOrder.getOrderSn()); +// expressOrder.setOrderSn(buyOrder.getOrderSn()); expressOrder.setExpressCompanyCode(expressCompanyCode); expressOrder.setConsigneeName(buyOrder.getShippingUser()); expressOrder.setConsigneeMobile(buyOrder.getUserPhone()); @@ -446,6 +448,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl private BuyOrderResponseVo setBuyOrderInfo(BuyOrder buyOrder) { BuyOrderResponseVo responseVo = new BuyOrderResponseVo(); responseVo.setOrderId(buyOrder.getOrderId()); + responseVo.setTimestamp(buyOrder.getCreateTime().getTime()); Integer userId = buyOrder.getUserId(); QueryWrapper userEntityQueryWrapper = new QueryWrapper<>(); userEntityQueryWrapper.eq("id", userId); @@ -463,6 +466,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl if (buyOrder.getCouponId() != null) { couponResponseVo.setCouponName(buyOrder.getCouponName()); couponResponseVo.setCouponId(buyOrder.getCouponId()); + couponResponseVo.setCouponAmount(new BigDecimal(0)); } responseVo.setCoupon(couponResponseVo); responseVo.setOrderPrice(buyOrder.getOrderMoney()); diff --git a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java index 27e727a6..cd771f3f 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java @@ -43,7 +43,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl Date: Thu, 26 Oct 2023 19:37:23 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/controller/BuyOrderController.java | 12 ++++++++++ .../modules/book/entity/BuyOrderProduct.java | 6 ++++- .../modules/book/service/BuyOrderService.java | 3 +++ .../service/impl/BuyOrderServiceImpl.java | 24 +++++++++++++++++++ .../peanut/modules/book/to/UserOrderDto.java | 14 +++++++++++ .../resources/mapper/book/ShopProductDao.xml | 2 +- 6 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/peanut/modules/book/to/UserOrderDto.java 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 65845e4f..1d554def 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -10,6 +10,7 @@ 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.to.UserOrderDto; import com.peanut.modules.book.vo.UserAddressVo; import com.peanut.modules.book.vo.request.BuyOrderListRequestVo; import com.peanut.modules.book.vo.request.ModifyOrderAddressRequestVo; @@ -115,6 +116,17 @@ public class BuyOrderController { return R.ok().put("result", result); } + /** + * 获取用户订单列表 + * @param userOrderDto + * @return + */ + @RequestMapping("/getUserOrderList") + public R getUserOrderList(@RequestBody UserOrderDto userOrderDto){ + Page userOrderList = buyOrderService.getUserOrderList(userOrderDto); + return R.ok().put("page",userOrderList); + } + /** * 订单详情 * diff --git a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java index 66e14265..777419ec 100644 --- a/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java +++ b/src/main/java/com/peanut/modules/book/entity/BuyOrderProduct.java @@ -1,5 +1,6 @@ package com.peanut.modules.book.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -32,7 +33,7 @@ public class BuyOrderProduct { /** * 商品价格 */ -// private BigDecimal realPrice; + private BigDecimal realPrice; /** * 快递订单 ID */ @@ -49,4 +50,7 @@ public class BuyOrderProduct { * 发货标识 */ private int shipped; + + @TableField(exist = false) + private ShopProduct product; } diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index ddb4a0f9..6c18ffb6 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.peanut.common.utils.PageUtils; import com.peanut.modules.book.entity.BuyOrder; +import com.peanut.modules.book.to.UserOrderDto; import com.peanut.modules.book.vo.UserOrderVo; import com.peanut.modules.book.vo.request.BuyOrderListRequestVo; import com.peanut.modules.book.vo.response.BuyOrderResponseVo; @@ -50,6 +51,8 @@ public interface BuyOrderService extends IService { */ void delivery(String expressCompanyCode, List buyOrderDetailId); + Page getUserOrderList(UserOrderDto userOrderDto); + BuyOrderResponseVo orderDetail(String orderSn); Map decomposeShipment(BuyOrderListRequestVo requestVo); 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 2e4bf5f6..3f7a0755 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 @@ -1,6 +1,7 @@ package com.peanut.modules.book.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; @@ -15,6 +16,7 @@ import com.peanut.modules.book.dao.BuyOrderDao; import com.peanut.modules.book.dao.ExpressOrderDao; import com.peanut.modules.book.entity.*; import com.peanut.modules.book.service.*; +import com.peanut.modules.book.to.UserOrderDto; import com.peanut.modules.book.vo.ExpressOrderResponseVo; import com.peanut.modules.book.vo.UserOrderVo; import com.peanut.modules.book.vo.request.BuyOrderListRequestVo; @@ -357,6 +359,26 @@ public class BuyOrderServiceImpl extends ServiceImpl impl return result; } + @Override + public Page getUserOrderList(UserOrderDto userOrderDto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BuyOrder::getUserId,userOrderDto.getUserId()); + wrapper.eq(userOrderDto.getOrderStatus()!=null,BuyOrder::getOrderStatus,userOrderDto.getOrderStatus()); + Page buyOrderPage = this.getBaseMapper().selectPage(new Page<>(userOrderDto.getPage(), userOrderDto.getLimit()), wrapper); + for(BuyOrder b : buyOrderPage.getRecords()){ + b.setUser(myUserService.getById(b.getUserId())); + //组装商品 + List buyOrderProducts = buyOrderProductService.getBaseMapper().selectList(new LambdaQueryWrapper() + .eq(BuyOrderProduct::getOrderId, b.getOrderId())); + for (BuyOrderProduct bb : buyOrderProducts){ + bb.setProduct(shopProductService.getById(bb.getProductId())); + } + b.setProductList(buyOrderProducts); + b.setTimestamp(b.getCreateTime().getTime()); + } + + return buyOrderPage; + } @Override public void delivery(String expressCompanyCode, List buyOrderProductId) { @@ -535,4 +557,6 @@ public class BuyOrderServiceImpl extends ServiceImpl impl responseVo.setGoodsList(goodsResponseVoList); return responseVo; } + + } \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/book/to/UserOrderDto.java b/src/main/java/com/peanut/modules/book/to/UserOrderDto.java new file mode 100644 index 00000000..a1c8aa28 --- /dev/null +++ b/src/main/java/com/peanut/modules/book/to/UserOrderDto.java @@ -0,0 +1,14 @@ +package com.peanut.modules.book.to; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserOrderDto implements Serializable { + + private Integer userId; + private Integer orderStatus; + private Integer limit; + private Integer page; +} diff --git a/src/main/resources/mapper/book/ShopProductDao.xml b/src/main/resources/mapper/book/ShopProductDao.xml index 41e5d277..ec5469bb 100644 --- a/src/main/resources/mapper/book/ShopProductDao.xml +++ b/src/main/resources/mapper/book/ShopProductDao.xml @@ -50,7 +50,7 @@ order by a.sort desc - select sum(weight) from shop_product where product_id in #{id} From 64d0c5bdf2df943b07c0a50ce7d013d67a0e7f12 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Fri, 27 Oct 2023 10:34:49 +0800 Subject: [PATCH 15/16] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/book/service/impl/BuyOrderServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 3f7a0755..51002111 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 @@ -364,6 +364,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(BuyOrder::getUserId,userOrderDto.getUserId()); wrapper.eq(userOrderDto.getOrderStatus()!=null,BuyOrder::getOrderStatus,userOrderDto.getOrderStatus()); + wrapper.orderByDesc(BuyOrder::getCreateTime); Page buyOrderPage = this.getBaseMapper().selectPage(new Page<>(userOrderDto.getPage(), userOrderDto.getLimit()), wrapper); for(BuyOrder b : buyOrderPage.getRecords()){ b.setUser(myUserService.getById(b.getUserId())); @@ -374,7 +375,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl bb.setProduct(shopProductService.getById(bb.getProductId())); } b.setProductList(buyOrderProducts); - b.setTimestamp(b.getCreateTime().getTime()); + b.setTimestamp(b.getCreateTime().getTime()/1000); } return buyOrderPage; @@ -399,7 +400,7 @@ public class BuyOrderServiceImpl extends ServiceImpl impl totalWeight = totalWeight.add( BigDecimal.valueOf(product.getWeight().doubleValue()).multiply(new BigDecimal(buyOrderProduct.getQuantity())) ); - totalWeight = totalWeight.setScale(0, RoundingMode.UP); + totalWeight = totalWeight.setScale(0, RoundingMode.UP);//对数值做增量舍 commodityList.add(commodity); } @@ -438,6 +439,8 @@ public class BuyOrderServiceImpl extends ServiceImpl impl buyOrderProduct.setShipped(1); } buyOrderProductService.updateBatchById(buyOrderProductList); + + //更改订单状态 QueryWrapper buyOrderQueryWrapper = new QueryWrapper<>(); buyOrderQueryWrapper.in("order_id", buyOrderIdList); List buyOrderList = list(buyOrderQueryWrapper); From 0a21f56c8b9dda0d8ff8388714d54d856505995a Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Fri, 27 Oct 2023 11:34:18 +0800 Subject: [PATCH 16/16] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peanut/modules/book/controller/ProvinceController.java | 2 -- src/main/resources/application-dev.yml | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/controller/ProvinceController.java b/src/main/java/com/peanut/modules/book/controller/ProvinceController.java index 6726ffed..98aa8ad9 100644 --- a/src/main/java/com/peanut/modules/book/controller/ProvinceController.java +++ b/src/main/java/com/peanut/modules/book/controller/ProvinceController.java @@ -37,8 +37,6 @@ public class ProvinceController { //获取地址 @RequestMapping("/getProvince") public R getProvince() { - - //优化查询速度 目录放入redis中 String s = redisTemplate.opsForValue().get("Province"); List> listData = new ArrayList<>(); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index d62f4a61..4fbab0f5 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -3,7 +3,7 @@ spring: redis: open: false # 是否开启redis缓存 true开启 false关闭 database: 0 - host: 39.106.36.183 + host: 59.110.212.44 port: 6379 password: Jgll2015 # 密码(默认为空) timeout: 6000000ms # 连接超时时长(毫秒) @@ -72,5 +72,5 @@ aliyun: server: port: 9200 -redisAddress: redis://39.106.36.183:6379 +redisAddress: redis://59.110.212.44:6379 redisPassword: Jgll2015 \ No newline at end of file