完善了小程序端用户创建订单接口
This commit is contained in:
parent
735db59666
commit
9d43600ac7
|
@ -1,6 +1,7 @@
|
||||||
package com.cultural.heritage.service.order.impl;
|
package com.cultural.heritage.service.order.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.cultural.heritage.common.ErrorCode;
|
import com.cultural.heritage.common.ErrorCode;
|
||||||
import com.cultural.heritage.constant.CommonConstant;
|
import com.cultural.heritage.constant.CommonConstant;
|
||||||
|
@ -48,6 +49,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
private GoodMapper goodMapper;
|
private GoodMapper goodMapper;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取查询条件
|
* 获取查询条件
|
||||||
*/
|
*/
|
||||||
|
@ -80,6 +82,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 封装订单详细信息请求体
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public OrderAddRequest initOrderMainInfo(OrderMainInfoAddRequest orderMainInfoAddRequest) {
|
public OrderAddRequest initOrderMainInfo(OrderMainInfoAddRequest orderMainInfoAddRequest) {
|
||||||
Long userId = orderMainInfoAddRequest.getUserId();
|
Long userId = orderMainInfoAddRequest.getUserId();
|
||||||
|
@ -90,67 +95,74 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
String orderNumber = orderMainInfoAddRequest.getOrderNumber();
|
String orderNumber = orderMainInfoAddRequest.getOrderNumber();
|
||||||
String orderStatus = orderMainInfoAddRequest.getOrderStatus();
|
String orderStatus = orderMainInfoAddRequest.getOrderStatus();
|
||||||
Double totalAmount = orderMainInfoAddRequest.getTotalAmount();
|
Double totalAmount = orderMainInfoAddRequest.getTotalAmount();
|
||||||
|
|
||||||
List<OrderItemMainInfoAddRequest> orderItemMainInfoAddRequestList = orderMainInfoAddRequest.getOrderItemMainInfoAddRequestList();
|
List<OrderItemMainInfoAddRequest> orderItemMainInfoAddRequestList = orderMainInfoAddRequest.getOrderItemMainInfoAddRequestList();
|
||||||
|
|
||||||
OrderAddRequest orderAddRequest = new OrderAddRequest();
|
// 获取订单地址信息
|
||||||
|
AddressSnapshot addressSnapshot = getSnapshot(addressId, addressMapper, AddressSnapshot.class);
|
||||||
|
|
||||||
|
// 获取订单联系人信息
|
||||||
|
ContactsSnapshot contactsSnapshot = getSnapshot(contactsId, contactsMapper, ContactsSnapshot.class);
|
||||||
|
|
||||||
|
// 获取订单优惠券信息
|
||||||
|
CouponSnapshot couponSnapshot = getSnapshot(couponId, couponMapper, CouponSnapshot.class);
|
||||||
|
|
||||||
|
// 封装订单明细信息
|
||||||
|
List<OrderItemAddRequest> orderItemAddRequestList = orderItemMainInfoAddRequestList.stream().map(orderItemMainInfoAddRequest -> {
|
||||||
|
Long goodId = orderItemMainInfoAddRequest.getGoodId();
|
||||||
|
Integer quantity = orderItemMainInfoAddRequest.getQuantity();
|
||||||
|
OrderItemAddRequest orderItemAddRequest = new OrderItemAddRequest();
|
||||||
|
// 获取订单商品信息
|
||||||
|
GoodSnapshot goodSnapshot = getSnapshot(goodId, goodMapper, GoodSnapshot.class);
|
||||||
|
|
||||||
|
orderItemAddRequest.setGoodSnapshot(goodSnapshot);
|
||||||
|
orderItemAddRequest.setPriceSnapshot(goodSnapshot.getPrice());
|
||||||
|
orderItemAddRequest.setQuantity(quantity);
|
||||||
|
orderItemAddRequest.setItemTotalAmount(goodSnapshot.getPrice() * quantity);
|
||||||
|
return orderItemAddRequest;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
// 创建订单详细信息请求体
|
||||||
|
OrderAddRequest orderAddRequest = new OrderAddRequest();
|
||||||
orderAddRequest.setUserId(userId);
|
orderAddRequest.setUserId(userId);
|
||||||
orderAddRequest.setUserName(userName);
|
orderAddRequest.setUserName(userName);
|
||||||
orderAddRequest.setOrderNumber(orderNumber);
|
orderAddRequest.setOrderNumber(orderNumber);
|
||||||
orderAddRequest.setOrderStatus(orderStatus);
|
orderAddRequest.setOrderStatus(orderStatus);
|
||||||
orderAddRequest.setTotalAmount(totalAmount);
|
orderAddRequest.setTotalAmount(totalAmount);
|
||||||
|
|
||||||
// 获取订单地址信息
|
|
||||||
QueryWrapper<Address> addressQueryWrapper = new QueryWrapper<>();
|
|
||||||
addressQueryWrapper.eq("id", addressId);
|
|
||||||
Address address = addressMapper.selectOne(addressQueryWrapper);
|
|
||||||
ThrowUtils.throwIf(address == null, ErrorCode.NOT_FOUND_ERROR);
|
|
||||||
AddressSnapshot addressSnapshot = new AddressSnapshot();
|
|
||||||
BeanUtils.copyProperties(address, addressSnapshot);
|
|
||||||
// 获取订单联系人信息
|
|
||||||
QueryWrapper<Contacts> contactsQueryWrapper = new QueryWrapper<>();
|
|
||||||
contactsQueryWrapper.eq("id", contactsId);
|
|
||||||
Contacts contacts = contactsMapper.selectOne(contactsQueryWrapper);
|
|
||||||
ThrowUtils.throwIf(contacts == null, ErrorCode.NOT_FOUND_ERROR);
|
|
||||||
ContactsSnapshot contactsSnapshot = new ContactsSnapshot();
|
|
||||||
BeanUtils.copyProperties(contacts, contactsSnapshot);
|
|
||||||
// 获取订单优惠券信息
|
|
||||||
QueryWrapper<Coupon> couponQueryWrapper = new QueryWrapper<>();
|
|
||||||
couponQueryWrapper.eq("id", couponId);
|
|
||||||
Coupon coupon = couponMapper.selectOne(couponQueryWrapper);
|
|
||||||
ThrowUtils.throwIf(coupon == null, ErrorCode.NOT_FOUND_ERROR);
|
|
||||||
CouponSnapshot couponSnapshot = new CouponSnapshot();
|
|
||||||
BeanUtils.copyProperties(coupon, couponSnapshot);
|
|
||||||
|
|
||||||
orderAddRequest.setAddressSnapshot(addressSnapshot);
|
orderAddRequest.setAddressSnapshot(addressSnapshot);
|
||||||
orderAddRequest.setContactsSnapshot(contactsSnapshot);
|
orderAddRequest.setContactsSnapshot(contactsSnapshot);
|
||||||
orderAddRequest.setCouponSnapshot(couponSnapshot);
|
orderAddRequest.setCouponSnapshot(couponSnapshot);
|
||||||
|
|
||||||
|
|
||||||
List<OrderItemAddRequest> orderItemAddRequestList = orderItemMainInfoAddRequestList.stream().map(orderItemMainInfoAddRequest -> {
|
|
||||||
Long goodId = orderItemMainInfoAddRequest.getGoodId();
|
|
||||||
Integer quantity = orderItemMainInfoAddRequest.getQuantity();
|
|
||||||
OrderItemAddRequest orderItemAddRequest = new OrderItemAddRequest();
|
|
||||||
QueryWrapper<Good> goodQueryWrapper = new QueryWrapper<>();
|
|
||||||
goodQueryWrapper.eq("id", goodId);
|
|
||||||
Good good = goodMapper.selectOne(goodQueryWrapper);
|
|
||||||
ThrowUtils.throwIf(good == null, ErrorCode.NOT_FOUND_ERROR);
|
|
||||||
GoodSnapshot goodSnapshot = new GoodSnapshot();
|
|
||||||
BeanUtils.copyProperties(good, goodSnapshot);
|
|
||||||
orderItemAddRequest.setGoodSnapshot(goodSnapshot);
|
|
||||||
orderItemAddRequest.setPriceSnapshot(good.getPrice());
|
|
||||||
orderItemAddRequest.setQuantity(quantity);
|
|
||||||
orderItemAddRequest.setItemTotalAmount(good.getPrice() * quantity);
|
|
||||||
return orderItemAddRequest;
|
|
||||||
}).toList();
|
|
||||||
|
|
||||||
orderAddRequest.setOrderItemList(orderItemAddRequestList);
|
orderAddRequest.setOrderItemList(orderItemAddRequestList);
|
||||||
|
|
||||||
return orderAddRequest;
|
return orderAddRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id获取订单(地址,联系人,优惠券,商品)信息
|
||||||
|
*/
|
||||||
|
private static <T, S> S getSnapshot(Long id, BaseMapper<T> mapper, Class<S> snapshotClass) {
|
||||||
|
// 创建查询条件
|
||||||
|
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("id", id);
|
||||||
|
|
||||||
|
// 查询实体对象
|
||||||
|
T entity = mapper.selectOne(queryWrapper);
|
||||||
|
|
||||||
|
// 判断实体对象是否存在,不存在则抛出异常
|
||||||
|
ThrowUtils.throwIf(entity == null, ErrorCode.NOT_FOUND_ERROR);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 创建快照对象实例
|
||||||
|
S snapshot = snapshotClass.getDeclaredConstructor().newInstance();
|
||||||
|
|
||||||
|
// 复制属性到快照对象
|
||||||
|
BeanUtils.copyProperties(entity, snapshot);
|
||||||
|
|
||||||
|
return snapshot;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user