This commit is contained in:
wangjinlei
2023-11-01 16:50:56 +08:00
parent 5a15ba417c
commit eff309f8cb
12 changed files with 90 additions and 7 deletions

View File

@@ -260,7 +260,6 @@ public class BuyOrderController {
totalPrice = totalPrice.add(getShoppingAmount(buyOrder)); totalPrice = totalPrice.add(getShoppingAmount(buyOrder));
String orderSn = IdWorker.getTimeId().substring(0, 32); String orderSn = IdWorker.getTimeId().substring(0, 32);
buyOrder.setOrderSn(orderSn); buyOrder.setOrderSn(orderSn);
// buyOrder.setPaymentDate(new Date());//这个是支付时间
QueryWrapper<UserAddress> queryWrapper = new QueryWrapper<>(); QueryWrapper<UserAddress> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", buyOrder.getAddressId()); queryWrapper.eq("id", buyOrder.getAddressId());
UserAddress userAddress = userAddressService.getOne(queryWrapper); UserAddress userAddress = userAddressService.getOne(queryWrapper);
@@ -272,6 +271,7 @@ public class BuyOrderController {
buyOrder.setAddress(userAddress.getDetailAddress()); buyOrder.setAddress(userAddress.getDetailAddress());
buyOrderService.save(buyOrder); buyOrderService.save(buyOrder);
//解决购物车相关问题
for (BuyOrderProduct buyOrderProduct : buyOrderProductList) { for (BuyOrderProduct buyOrderProduct : buyOrderProductList) {
buyOrderProduct.setOrderId(buyOrder.getOrderId()); buyOrderProduct.setOrderId(buyOrder.getOrderId());
if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) { if (Constants.BUY_TYPE_CART.equals(buyOrder.getBuyType())) {
@@ -458,6 +458,12 @@ public class BuyOrderController {
paymentInfo.setBuyOrderId(Integer.valueOf(buyOrderEntity.getProductId())); paymentInfo.setBuyOrderId(Integer.valueOf(buyOrderEntity.getProductId()));
paymentInfo.setTotalAmount(buyOrderEntity.getRealMoney()); paymentInfo.setTotalAmount(buyOrderEntity.getRealMoney());
wxpayService.prepay(paymentInfo); wxpayService.prepay(paymentInfo);
rabbitTemplate.convertAndSend(
DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE,
DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY,
buyOrder.getOrderId(),
messagePostProcessor()
);
return R.ok().put("orderSn", timeId); return R.ok().put("orderSn", timeId);
} }

View File

@@ -1,9 +1,10 @@
package com.peanut.modules.book.dao; package com.peanut.modules.book.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.peanut.modules.book.entity.BuyOrderProduct; import com.peanut.modules.book.entity.BuyOrderProduct;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface BuyOrderProductDao extends BaseMapper<BuyOrderProduct> { public interface BuyOrderProductDao extends MPJBaseMapper<BuyOrderProduct> {
} }

View File

@@ -1,13 +1,14 @@
package com.peanut.modules.book.dao; package com.peanut.modules.book.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.peanut.modules.book.entity.ShopProductBookEntity; import com.peanut.modules.book.entity.ShopProductBookEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@Mapper @Mapper
public interface ShopProductBookDao extends BaseMapper<ShopProductBookEntity> { public interface ShopProductBookDao extends MPJBaseMapper<ShopProductBookEntity> {
List<Integer> getOrderBookId(String orderSn); List<Integer> getOrderBookId(String orderSn);
} }

View File

@@ -87,6 +87,11 @@ public class ExpressOrder {
*/ */
@TableField(exist = false) @TableField(exist = false)
private String printString; private String printString;
/**
* 商品列表
*/
@TableField(exist = false)
private List<ShopProduct> products;
/** /**
* 快递单号 * 快递单号
*/ */

View File

@@ -151,6 +151,11 @@ public class ShopProduct implements Serializable {
*/ */
@TableField(exist = false) @TableField(exist = false)
private ArrayList<String> bookids; private ArrayList<String> bookids;
/**
* 实体书list
*/
@TableField(exist = false)
private List<BookEntity> books;
/** /**
* 多个电子书Id ArrayList<Map<String,String>> * 多个电子书Id ArrayList<Map<String,String>>
@@ -167,4 +172,14 @@ public class ShopProduct implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<String> shoproudLabels; private List<String> shoproudLabels;
/**
* 数量
*/
@TableField(exist = false)
private Integer quantity;
/**
* 属于的订单,特殊情况下启用
*/
@TableField(exist = false)
private String orderSn;
} }

View File

@@ -2,6 +2,7 @@ package com.peanut.modules.book.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.PageUtils;
import com.peanut.modules.book.entity.BookEntity;
import com.peanut.modules.book.entity.ShopProductBookEntity; import com.peanut.modules.book.entity.ShopProductBookEntity;
import com.peanut.modules.book.vo.ProductBookQueryVO; import com.peanut.modules.book.vo.ProductBookQueryVO;
@@ -17,6 +18,8 @@ public interface ShopProductBookService extends IService<ShopProductBookEntity>
List<Integer> getBookIdsByProductId(Integer productId); List<Integer> getBookIdsByProductId(Integer productId);
List<BookEntity> getBookByProductId(Integer productId);
Integer getProductByBookId(Integer bookId); Integer getProductByBookId(Integer bookId);
List<Integer> getOrderBookId(String orderSn); List<Integer> getOrderBookId(String orderSn);

View File

@@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.ExcludeEmptyQueryWrapper; import com.peanut.common.utils.ExcludeEmptyQueryWrapper;
import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.PageUtils;
import com.peanut.common.utils.Query; import com.peanut.common.utils.Query;
import com.peanut.config.Constants; import com.peanut.config.Constants;
import com.peanut.modules.book.dao.BuyOrderDao; import com.peanut.modules.book.dao.BuyOrderDao;
import com.peanut.modules.book.dao.BuyOrderProductDao;
import com.peanut.modules.book.dao.ExpressOrderDao; import com.peanut.modules.book.dao.ExpressOrderDao;
import com.peanut.modules.book.dao.ShopProductBookDao;
import com.peanut.modules.book.entity.*; import com.peanut.modules.book.entity.*;
import com.peanut.modules.book.service.*; import com.peanut.modules.book.service.*;
import com.peanut.modules.book.to.UserOrderDto; import com.peanut.modules.book.to.UserOrderDto;
@@ -61,6 +64,9 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
@Autowired @Autowired
ShopProductService shopProductService; ShopProductService shopProductService;
@Autowired
private BookService bookService;
@Autowired @Autowired
private BuyOrderProductService buyOrderProductService; private BuyOrderProductService buyOrderProductService;
@@ -72,7 +78,13 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
@Autowired @Autowired
private ExpressOrderDao expressOrderDao; private ExpressOrderDao expressOrderDao;
@Autowired @Autowired
private BuyOrderProductDao buyOrderProductDao;
@Autowired
private ShopProductBookDao shopProductBookDao;
@Autowired
private OssService ossService; private OssService ossService;
@Autowired
private ShopProductBookService shopProductBookService;
protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class); protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class);
@@ -404,7 +416,7 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
ShopProduct product = shopProductService.getById(productId); ShopProduct product = shopProductService.getById(productId);
//定义快递商品 //定义快递商品
ExpressCommodity commodity = new ExpressCommodity(); ExpressCommodity commodity = new ExpressCommodity();
commodity.setGoodsName(product.getProductName()); commodity.setGoodsName(product.getProductName()+" ×"+buyOrderProduct.getQuantity());
commodity.setGoodsquantity(buyOrderProduct.getQuantity()); commodity.setGoodsquantity(buyOrderProduct.getQuantity());
commodity.setGoodsWeight((product.getWeight().doubleValue())/1000); commodity.setGoodsWeight((product.getWeight().doubleValue())/1000);
totalWeight = totalWeight.add( totalWeight = totalWeight.add(
@@ -607,6 +619,7 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
goodsResponseVo.setProductImage(shopProduct.getProductImages()); goodsResponseVo.setProductImage(shopProduct.getProductImages());
goodsResponseVo.setProductPrice(shopProduct.getPrice()); goodsResponseVo.setProductPrice(shopProduct.getPrice());
goodsResponseVo.setQuantity(buyOrderProduct.getQuantity()); goodsResponseVo.setQuantity(buyOrderProduct.getQuantity());
goodsResponseVo.setProductId(shopProduct.getProductId());
QueryWrapper<ExpressOrder> expressOrderQueryWrapper = new QueryWrapper<>(); QueryWrapper<ExpressOrder> expressOrderQueryWrapper = new QueryWrapper<>();
expressOrderQueryWrapper.eq("id", buyOrderProduct.getExpressOrderId()); expressOrderQueryWrapper.eq("id", buyOrderProduct.getExpressOrderId());
ExpressOrder expressOrder = expressOrderService.getOne(expressOrderQueryWrapper); ExpressOrder expressOrder = expressOrderService.getOne(expressOrderQueryWrapper);
@@ -617,6 +630,11 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
expressResponseVo.setPrintTemplate(expressOrder.getPrintTemplate()); expressResponseVo.setPrintTemplate(expressOrder.getPrintTemplate());
} }
goodsResponseVo.setExpressInfo(expressResponseVo); goodsResponseVo.setExpressInfo(expressResponseVo);
//设置商品对应的具体书
List<BookEntity> bookByProductId = shopProductBookService.getBookByProductId(buyOrderProduct.getProductId());
goodsResponseVo.setBooks(bookByProductId);
goodsResponseVoList.add(goodsResponseVo); goodsResponseVoList.add(goodsResponseVo);
} }
responseVo.setGoodsList(goodsResponseVoList); responseVo.setGoodsList(goodsResponseVoList);
@@ -628,6 +646,25 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
List<Integer> collect = buyOrderProductService.getBaseMapper().selectList(b_wrapper).stream().map(BuyOrderProduct::getExpressOrderId).collect(Collectors.toList()); List<Integer> collect = buyOrderProductService.getBaseMapper().selectList(b_wrapper).stream().map(BuyOrderProduct::getExpressOrderId).collect(Collectors.toList());
if(collect.size()>0){ if(collect.size()>0){
List<ExpressOrder> expressOrders = expressOrderService.getBaseMapper().selectList(new LambdaQueryWrapper<ExpressOrder>().in(ExpressOrder::getId, collect)); List<ExpressOrder> expressOrders = expressOrderService.getBaseMapper().selectList(new LambdaQueryWrapper<ExpressOrder>().in(ExpressOrder::getId, collect));
for (ExpressOrder e : expressOrders){
MPJLambdaWrapper<BuyOrderProduct> buyOrderProductMPJLambdaWrapper = new MPJLambdaWrapper<>();
buyOrderProductMPJLambdaWrapper.selectAll(ShopProduct.class);
buyOrderProductMPJLambdaWrapper.select(BuyOrderProduct::getQuantity);
buyOrderProductMPJLambdaWrapper.select(BuyOrder::getOrderSn);
buyOrderProductMPJLambdaWrapper.leftJoin(ShopProduct.class,ShopProduct::getProductId,BuyOrderProduct::getProductId);
buyOrderProductMPJLambdaWrapper.leftJoin(BuyOrder.class,BuyOrder::getOrderId,BuyOrderProduct::getOrderId);
buyOrderProductMPJLambdaWrapper.eq(BuyOrderProduct::getExpressOrderId,e.getId());
List<ShopProduct> shopProducts = buyOrderProductDao.selectJoinList(ShopProduct.class, buyOrderProductMPJLambdaWrapper);
for(ShopProduct s : shopProducts){
MPJLambdaWrapper<ShopProductBookEntity> shopProductBookEntityMPJLambdaWrapper = new MPJLambdaWrapper<>();
shopProductBookEntityMPJLambdaWrapper.selectAll(BookEntity.class);
shopProductBookEntityMPJLambdaWrapper.leftJoin(BookEntity.class,BookEntity::getId,ShopProductBookEntity::getBookId);
shopProductBookEntityMPJLambdaWrapper.eq(ShopProductBookEntity::getProductId,s.getProductId());
List<BookEntity> bookEntities = shopProductBookDao.selectJoinList(BookEntity.class, shopProductBookEntityMPJLambdaWrapper);
s.setBooks(bookEntities);
}
e.setProducts(shopProducts);
}
responseVo.setExpressOrders(expressOrders); responseVo.setExpressOrders(expressOrders);
} }

View File

@@ -54,7 +54,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
orderRequestVo.setCustomerName(Constants.EXPRESS_YD_CUSTOMER_NAME); orderRequestVo.setCustomerName(Constants.EXPRESS_YD_CUSTOMER_NAME);
orderRequestVo.setCustomerPwd(Constants.EXPRESS_YD_CUSTOMER_PWD); orderRequestVo.setCustomerPwd(Constants.EXPRESS_YD_CUSTOMER_PWD);
} }
orderRequestVo.setExpType(2);//1特快2标快 orderRequestVo.setExpType(231);//1特快2标快
orderRequestVo.setCost(expressOrder.getExpressFee().doubleValue()); orderRequestVo.setCost(expressOrder.getExpressFee().doubleValue());
// 发货人 // 发货人
ExpressUserInfoVo sender = new ExpressUserInfoVo(); ExpressUserInfoVo sender = new ExpressUserInfoVo();

View File

@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Service("shopProductBookService") @Service("shopProductBookService")
public class ShopProductBookServiceImpl extends ServiceImpl<ShopProductBookDao, ShopProductBookEntity> implements ShopProductBookService { public class ShopProductBookServiceImpl extends ServiceImpl<ShopProductBookDao, ShopProductBookEntity> implements ShopProductBookService {
@@ -87,6 +88,12 @@ public class ShopProductBookServiceImpl extends ServiceImpl<ShopProductBookDao,
return ids; return ids;
} }
@Override
public List<BookEntity> getBookByProductId(Integer productId) {
List<Integer> collect = getBaseMapper().selectList(new QueryWrapper<ShopProductBookEntity>().eq("product_id", productId)).stream().map(ShopProductBookEntity::getBookId).collect(Collectors.toList());
return collect.size()==0?null:bookService.list(new LambdaQueryWrapper<BookEntity>().in(BookEntity::getId, collect));
}
@Override @Override
public Integer getProductByBookId(Integer bookId) { public Integer getProductByBookId(Integer bookId) {
LambdaQueryWrapper<ShopProductBookEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ShopProductBookEntity> wrapper = new LambdaQueryWrapper<>();

View File

@@ -1,8 +1,10 @@
package com.peanut.modules.book.vo.response; package com.peanut.modules.book.vo.response;
import com.peanut.modules.book.entity.BookEntity;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* @Description: 商品信息 Value Object * @Description: 商品信息 Value Object
@@ -11,6 +13,8 @@ import java.math.BigDecimal;
*/ */
@Data @Data
public class GoodsResponseVo { public class GoodsResponseVo {
private Integer ProductId;
private Integer buyOrderProductId; private Integer buyOrderProductId;
/** /**
* 商品名称 * 商品名称
@@ -32,4 +36,8 @@ public class GoodsResponseVo {
* 快递 * 快递
*/ */
private ExpressResponseVo expressInfo; private ExpressResponseVo expressInfo;
/**
* 对应的书list
*/
private List<BookEntity> books;
} }

View File

@@ -11,7 +11,7 @@ connection-timeout: 6000000ms
spring: spring:
# 环境 dev|test|prod # 环境 dev|test|prod
profiles: profiles:
active: dev active: prod
# jackson时间格式化 # jackson时间格式化
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8

View File

@@ -5,7 +5,7 @@ wxpay.mchId:1612860909
# ?? URL # ?? URL
wxpay.payUrl:https://api.mch.weixin.qq.com/v3/pay/transactions/app wxpay.payUrl:https://api.mch.weixin.qq.com/v3/pay/transactions/app
# ???? # ????
wxpay.notifyUrl:https://testapi.nuttyreading.com/pay/payNotify wxpay.notifyUrl:https://api.nuttyreading.com/pay/payNotify
# ?? url # ?? url
wxpay.refundNotifyUrl:http://pjm6m9.natappfree.cc/pay/refundNotify wxpay.refundNotifyUrl:http://pjm6m9.natappfree.cc/pay/refundNotify
# key pem # key pem