更新了优惠券模块
This commit is contained in:
parent
40af05caf9
commit
6b95ba86ff
|
@ -25,20 +25,14 @@ import com.cultural.heritage.model.dto.good.service.ServiceGoodQueryRequest;
|
||||||
import com.cultural.heritage.model.dto.good.service.ServiceGoodSingleUpdateRequest;
|
import com.cultural.heritage.model.dto.good.service.ServiceGoodSingleUpdateRequest;
|
||||||
import com.cultural.heritage.model.dto.good.service.ServiceGoodUpdateRequest;
|
import com.cultural.heritage.model.dto.good.service.ServiceGoodUpdateRequest;
|
||||||
import com.cultural.heritage.model.dto.timeperiod.TimePeriodAddRequest;
|
import com.cultural.heritage.model.dto.timeperiod.TimePeriodAddRequest;
|
||||||
import com.cultural.heritage.model.entity.AppointmentDate;
|
import com.cultural.heritage.model.entity.*;
|
||||||
import com.cultural.heritage.model.entity.CartRecord;
|
|
||||||
import com.cultural.heritage.model.entity.Good;
|
|
||||||
import com.cultural.heritage.model.entity.TimePeriod;
|
|
||||||
import com.cultural.heritage.model.vo.appointment.AppointmentDateTimePeriodVO;
|
import com.cultural.heritage.model.vo.appointment.AppointmentDateTimePeriodVO;
|
||||||
import com.cultural.heritage.model.vo.appointment.AppointmentDateVO;
|
import com.cultural.heritage.model.vo.appointment.AppointmentDateVO;
|
||||||
import com.cultural.heritage.model.vo.good.GoodPageVO;
|
import com.cultural.heritage.model.vo.good.GoodPageVO;
|
||||||
import com.cultural.heritage.model.vo.good.ServiceGoodCardVO;
|
import com.cultural.heritage.model.vo.good.ServiceGoodCardVO;
|
||||||
import com.cultural.heritage.model.vo.good.ServiceGoodVO;
|
import com.cultural.heritage.model.vo.good.ServiceGoodVO;
|
||||||
import com.cultural.heritage.model.vo.timeperiod.TimePeriodVO;
|
import com.cultural.heritage.model.vo.timeperiod.TimePeriodVO;
|
||||||
import com.cultural.heritage.service.good.AppointmentDateService;
|
import com.cultural.heritage.service.good.*;
|
||||||
import com.cultural.heritage.service.good.CartRecordService;
|
|
||||||
import com.cultural.heritage.service.good.GoodService;
|
|
||||||
import com.cultural.heritage.service.good.TimePeriodService;
|
|
||||||
import com.cultural.heritage.service.user.UserService;
|
import com.cultural.heritage.service.user.UserService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
@ -83,6 +77,10 @@ public class GoodController {
|
||||||
private CartRecordService cartRecordService;
|
private CartRecordService cartRecordService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CartExperienceService cartExperienceService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -704,6 +702,11 @@ public class GoodController {
|
||||||
if (serviceGoodSingleUpdateRequest == null || serviceGoodSingleUpdateRequest.getId() <= 0) {
|
if (serviceGoodSingleUpdateRequest == null || serviceGoodSingleUpdateRequest.getId() <= 0) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
||||||
}
|
}
|
||||||
|
// 获取原来的商品价格
|
||||||
|
Long sourceId = serviceGoodSingleUpdateRequest.getId();
|
||||||
|
Good resourceGood = goodService.getById(sourceId);
|
||||||
|
BigDecimal resourcePrice = resourceGood.getPrice();
|
||||||
|
|
||||||
// 更新服务类商品的基本信息
|
// 更新服务类商品的基本信息
|
||||||
Good good = new Good();
|
Good good = new Good();
|
||||||
BeanUtils.copyProperties(serviceGoodSingleUpdateRequest, good);
|
BeanUtils.copyProperties(serviceGoodSingleUpdateRequest, good);
|
||||||
|
@ -716,6 +719,16 @@ public class GoodController {
|
||||||
boolean result = goodService.updateById(good);
|
boolean result = goodService.updateById(good);
|
||||||
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "服务类商品信息更新失败");
|
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "服务类商品信息更新失败");
|
||||||
|
|
||||||
|
// 如果更新了商品的价格,就需要更新购物车中的小计
|
||||||
|
Long id = good.getId();
|
||||||
|
BigDecimal targetPrice = good.getPrice();
|
||||||
|
|
||||||
|
if (resourcePrice.compareTo(targetPrice) != 0) {
|
||||||
|
// 更新购物车中的小计
|
||||||
|
List<CartExperience> cartExperienceList = goodService.updateCartExperienceGoodPrice(id, targetPrice);
|
||||||
|
boolean update = cartExperienceService.updateBatchById(cartExperienceList);
|
||||||
|
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "购物车商品价格更新失败");
|
||||||
|
}
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@ import com.cultural.heritage.exception.ThrowUtils;
|
||||||
import com.cultural.heritage.model.dto.CommonRequest;
|
import com.cultural.heritage.model.dto.CommonRequest;
|
||||||
import com.cultural.heritage.model.dto.cart.CartOrderAddRequest;
|
import com.cultural.heritage.model.dto.cart.CartOrderAddRequest;
|
||||||
import com.cultural.heritage.model.dto.cart.CartOrderItemAddRequest;
|
import com.cultural.heritage.model.dto.cart.CartOrderItemAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderQueryRequest;
|
import com.cultural.heritage.model.dto.order.OrderQueryRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderUpdateRequest;
|
import com.cultural.heritage.model.dto.order.OrderUpdateRequest;
|
||||||
import com.cultural.heritage.model.dto.order.capital.GeneralGoodSingleBuyAddRequest;
|
import com.cultural.heritage.model.dto.order.capital.GeneralGoodSingleBuyAddRequest;
|
||||||
|
@ -24,6 +26,7 @@ import com.cultural.heritage.model.entity.Order;
|
||||||
import com.cultural.heritage.model.entity.OrderItems;
|
import com.cultural.heritage.model.entity.OrderItems;
|
||||||
import com.cultural.heritage.model.entity.User;
|
import com.cultural.heritage.model.entity.User;
|
||||||
import com.cultural.heritage.model.vo.order.OrderVO;
|
import com.cultural.heritage.model.vo.order.OrderVO;
|
||||||
|
import com.cultural.heritage.service.good.CartExperienceService;
|
||||||
import com.cultural.heritage.service.good.CartRecordService;
|
import com.cultural.heritage.service.good.CartRecordService;
|
||||||
import com.cultural.heritage.service.good.GoodService;
|
import com.cultural.heritage.service.good.GoodService;
|
||||||
import com.cultural.heritage.service.order.OrderItemService;
|
import com.cultural.heritage.service.order.OrderItemService;
|
||||||
|
@ -73,6 +76,10 @@ public class OrderController {
|
||||||
private CartRecordService cartRecordService;
|
private CartRecordService cartRecordService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CartExperienceService cartExperienceService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private GoodService goodService;
|
private GoodService goodService;
|
||||||
|
@ -88,7 +95,7 @@ public class OrderController {
|
||||||
*/
|
*/
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Operation(summary = "小程序端用户创建常规类商品订单", description = "参数:订单创建请求体,权限:所有人,方法名:addOrder")
|
@Operation(summary = "小程序端用户创建常规类(服务类)商品订单", description = "参数:订单创建请求体,权限:所有人,方法名:addOrder")
|
||||||
public BaseResponse<Long> addOrder(@RequestBody GeneralGoodSingleBuyAddRequest generalGoodSingleBuyAddRequest, HttpServletRequest request) {
|
public BaseResponse<Long> addOrder(@RequestBody GeneralGoodSingleBuyAddRequest generalGoodSingleBuyAddRequest, HttpServletRequest request) {
|
||||||
if (generalGoodSingleBuyAddRequest == null) {
|
if (generalGoodSingleBuyAddRequest == null) {
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
||||||
|
@ -158,6 +165,40 @@ public class OrderController {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序端用户创建服务类商品购物车订单
|
||||||
|
*/
|
||||||
|
@PostMapping("/add/experience/cart")
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@Operation(summary = "小程序端用户创建服务类商品购物车订单", description = "参数:购物车订单创建请求体,权限:所有人,方法名:addCartOrder")
|
||||||
|
public BaseResponse<Long> addCartExperienceOrder(@RequestBody CartExperienceOrderAddRequest cartExperienceOrderAddRequest, HttpServletRequest request) {
|
||||||
|
if (cartExperienceOrderAddRequest == null) {
|
||||||
|
throw new BusinessException(ErrorCode.PARAMS_ERROR);
|
||||||
|
}
|
||||||
|
// 校验用户当前是否处于登录态
|
||||||
|
User loginUser = userService.getLoginUser(request);
|
||||||
|
Long userId = loginUser.getId();
|
||||||
|
|
||||||
|
// 校验购物车数据是否准确
|
||||||
|
List<CartExperienceOrderItemAddRequest> cartExperienceOrderItemAddRequestList = cartExperienceOrderAddRequest.getCartOrderItemAddRequestList();
|
||||||
|
boolean isAccurate = cartExperienceService.validIsConsistent(cartExperienceOrderItemAddRequestList);
|
||||||
|
ThrowUtils.throwIf(!isAccurate, ErrorCode.OPERATION_ERROR, "当前购物车中的某些商品已下架或者不存在,无法生成订单");
|
||||||
|
|
||||||
|
// 封装成订单主要信息请求体
|
||||||
|
OrderMainInfoAddRequest orderMainInfoAddRequest = orderService.packagedOrderMainInfoAddRequest(cartExperienceOrderAddRequest);
|
||||||
|
|
||||||
|
// 创建通用订单(常规类和服务类商品)
|
||||||
|
List<Long> cartIds = cartExperienceOrderItemAddRequestList.stream().map(CartExperienceOrderItemAddRequest::getCartExperienceId).toList();
|
||||||
|
Long orderId = orderService.createCommonOrder(orderMainInfoAddRequest, userId, true, cartIds, false);
|
||||||
|
|
||||||
|
// 向消息队列中发送订单创建的消息
|
||||||
|
orderService.sendCreateOrderMessage(orderId);
|
||||||
|
|
||||||
|
return ResultUtils.success(orderId);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Web端管理员分页查询订单
|
* Web端管理员分页查询订单
|
||||||
|
@ -247,7 +288,6 @@ public class OrderController {
|
||||||
map.put(orderId, orderItemsArrayList);
|
map.put(orderId, orderItemsArrayList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<OrderVO> orderVOS = orders.stream().map(order -> {
|
List<OrderVO> orderVOS = orders.stream().map(order -> {
|
||||||
Long orderId = order.getId();
|
Long orderId = order.getId();
|
||||||
QueryWrapper<OrderItems> orderItemsQueryWrapper = new QueryWrapper<>();
|
QueryWrapper<OrderItems> orderItemsQueryWrapper = new QueryWrapper<>();
|
||||||
|
|
|
@ -30,8 +30,8 @@ public class CartExperienceOrderAddRequest implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 地址id
|
* 地址id
|
||||||
*/
|
*/
|
||||||
@Schema(description = "地址id(id > 0)", example = "12")
|
@Schema(description = "联系人(id > 0)", example = "12")
|
||||||
private Long addressId;
|
private Long contactsId;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,7 +41,6 @@ public class CartExperienceOrderAddRequest implements Serializable {
|
||||||
private Long couponId;
|
private Long couponId;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单备注
|
* 订单备注
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -16,7 +16,7 @@ public class CartExperienceOrderItemAddRequest implements Serializable {
|
||||||
* 购物车id
|
* 购物车id
|
||||||
*/
|
*/
|
||||||
@Schema(description = "购物车id(id > 0)", example = "20")
|
@Schema(description = "购物车id(id > 0)", example = "20")
|
||||||
private Long cartRecordId;
|
private Long cartExperienceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数量
|
* 数量
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.cultural.heritage.service.good;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
||||||
import com.cultural.heritage.model.entity.CartExperience;
|
import com.cultural.heritage.model.entity.CartExperience;
|
||||||
import com.cultural.heritage.model.vo.cartService.CartExperienceVO;
|
import com.cultural.heritage.model.vo.cartService.CartExperienceVO;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
@ -30,10 +31,10 @@ public interface CartExperienceService extends IService<CartExperience> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 在提交订单页校验购物车商品项的准确性
|
* 在提交订单页校验购物车商品项的准确性
|
||||||
// */
|
*/
|
||||||
// boolean validIsConsistent(List<CartOrderItemAddRequest> cartOrderItemAddRequestList);
|
boolean validIsConsistent(List<CartExperienceOrderItemAddRequest> cartExperienceOrderItemAddRequestList);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.cultural.heritage.service.good;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.cultural.heritage.model.dto.good.GoodQueryRequest;
|
import com.cultural.heritage.model.dto.good.GoodQueryRequest;
|
||||||
|
import com.cultural.heritage.model.entity.CartExperience;
|
||||||
import com.cultural.heritage.model.entity.CartRecord;
|
import com.cultural.heritage.model.entity.CartRecord;
|
||||||
import com.cultural.heritage.model.entity.Good;
|
import com.cultural.heritage.model.entity.Good;
|
||||||
|
|
||||||
|
@ -30,9 +31,15 @@ public interface GoodService extends IService<Good> {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新购物车中的小计
|
* 更新常规类购物车中的小计
|
||||||
*/
|
*/
|
||||||
List<CartRecord> updateCartGoodPrice(Long goodId, BigDecimal targetPrice);
|
List<CartRecord> updateCartGoodPrice(Long goodId, BigDecimal targetPrice);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新服务类购物车中的小计
|
||||||
|
*/
|
||||||
|
List<CartExperience> updateCartExperienceGoodPrice(Long goodId, BigDecimal targetPrice);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import com.cultural.heritage.exception.BusinessException;
|
||||||
import com.cultural.heritage.exception.ThrowUtils;
|
import com.cultural.heritage.exception.ThrowUtils;
|
||||||
import com.cultural.heritage.mapper.CartExperienceMapper;
|
import com.cultural.heritage.mapper.CartExperienceMapper;
|
||||||
import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
||||||
import com.cultural.heritage.model.entity.CartExperience;
|
import com.cultural.heritage.model.entity.CartExperience;
|
||||||
import com.cultural.heritage.model.entity.Good;
|
import com.cultural.heritage.model.entity.Good;
|
||||||
import com.cultural.heritage.model.entity.User;
|
import com.cultural.heritage.model.entity.User;
|
||||||
|
@ -193,34 +194,34 @@ public class CartExperienceServiceImpl extends ServiceImpl<CartExperienceMapper,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 在提交订单页校验购物车商品项的准确性
|
* 在提交订单页校验购物车商品项的准确性
|
||||||
// */
|
*/
|
||||||
// @Override
|
@Override
|
||||||
// public boolean validIsConsistent(List<CartOrderItemAddRequest> cartOrderItemAddRequestList) {
|
public boolean validIsConsistent(List<CartExperienceOrderItemAddRequest> cartExperienceOrderItemAddRequestList) {
|
||||||
// if (cartOrderItemAddRequestList.size() == 0) {
|
if (cartExperienceOrderItemAddRequestList.size() == 0) {
|
||||||
// throw new BusinessException(ErrorCode.PARAMS_ERROR, "购物车中没有商品");
|
throw new BusinessException(ErrorCode.PARAMS_ERROR, "购物车中没有商品");
|
||||||
// }
|
}
|
||||||
// // 封装map集合(键:购物车id, 值:购买数量)
|
// 封装map集合(键:购物车id, 值:购买数量)
|
||||||
// Map<Long, Integer> map = new HashMap<>();
|
Map<Long, Integer> map = new HashMap<>();
|
||||||
// for (CartOrderItemAddRequest cartOrderItemAddRequest : cartOrderItemAddRequestList) {
|
for (CartExperienceOrderItemAddRequest cartExperienceOrderItemAddRequest : cartExperienceOrderItemAddRequestList) {
|
||||||
// Long cartRecordId = cartOrderItemAddRequest.getCartRecordId();
|
Long cartExperienceId = cartExperienceOrderItemAddRequest.getCartExperienceId();
|
||||||
// Integer quantity = cartOrderItemAddRequest.getQuantity();
|
Integer quantity = cartExperienceOrderItemAddRequest.getQuantity();
|
||||||
// map.put(cartRecordId, quantity);
|
map.put(cartExperienceId, quantity);
|
||||||
// }
|
}
|
||||||
// // 修改购物车商品项的购买数量
|
// 修改购物车商品项的购买数量
|
||||||
// List<Long> cartRecordIds = cartOrderItemAddRequestList.stream().map(CartOrderItemAddRequest::getCartRecordId).toList();
|
List<Long> cartExperienceIds = cartExperienceOrderItemAddRequestList.stream().map(CartExperienceOrderItemAddRequest::getCartExperienceId).toList();
|
||||||
// QueryWrapper<CartRecord> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<CartExperience> queryWrapper = new QueryWrapper<>();
|
||||||
// queryWrapper.in("id", cartRecordIds);
|
queryWrapper.in("id", cartExperienceIds);
|
||||||
// List<CartRecord> cartRecordList = this.list(queryWrapper);
|
List<CartExperience> cartExperiences = this.list(queryWrapper);
|
||||||
// for (CartRecord cartRecord : cartRecordList) {
|
for (CartExperience cartExperience : cartExperiences) {
|
||||||
// Long id = cartRecord.getId();
|
Long id = cartExperience.getId();
|
||||||
// Integer quantity = map.get(id);
|
Integer quantity = map.get(id);
|
||||||
// cartRecord.setQuantity(quantity);
|
cartExperience.setQuantity(quantity);
|
||||||
// }
|
}
|
||||||
// List<Long> cartIds = getInvalidCartIds(cartRecordList);
|
List<Long> cartIds = getInvalidCartIds(cartExperiences);
|
||||||
// return cartIds.isEmpty();
|
return cartIds.isEmpty();
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,9 +5,11 @@ 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;
|
||||||
import com.cultural.heritage.exception.BusinessException;
|
import com.cultural.heritage.exception.BusinessException;
|
||||||
|
import com.cultural.heritage.mapper.CartExperienceMapper;
|
||||||
import com.cultural.heritage.mapper.CartRecordMapper;
|
import com.cultural.heritage.mapper.CartRecordMapper;
|
||||||
import com.cultural.heritage.mapper.GoodMapper;
|
import com.cultural.heritage.mapper.GoodMapper;
|
||||||
import com.cultural.heritage.model.dto.good.GoodQueryRequest;
|
import com.cultural.heritage.model.dto.good.GoodQueryRequest;
|
||||||
|
import com.cultural.heritage.model.entity.CartExperience;
|
||||||
import com.cultural.heritage.model.entity.CartRecord;
|
import com.cultural.heritage.model.entity.CartRecord;
|
||||||
import com.cultural.heritage.model.entity.Good;
|
import com.cultural.heritage.model.entity.Good;
|
||||||
import com.cultural.heritage.service.good.GoodService;
|
import com.cultural.heritage.service.good.GoodService;
|
||||||
|
@ -30,6 +32,10 @@ public class GoodServiceImpl extends ServiceImpl<GoodMapper, Good> implements Go
|
||||||
private CartRecordMapper cartRecordMapper;
|
private CartRecordMapper cartRecordMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CartExperienceMapper cartExperienceMapper;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品查询条件
|
* 商品查询条件
|
||||||
*/
|
*/
|
||||||
|
@ -116,7 +122,7 @@ public class GoodServiceImpl extends ServiceImpl<GoodMapper, Good> implements Go
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新购物车中的小计
|
* 更新常规类购物车中的小计
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<CartRecord> updateCartGoodPrice(Long goodId, BigDecimal targetPrice) {
|
public List<CartRecord> updateCartGoodPrice(Long goodId, BigDecimal targetPrice) {
|
||||||
|
@ -132,4 +138,22 @@ public class GoodServiceImpl extends ServiceImpl<GoodMapper, Good> implements Go
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新服务类购物车中的小计
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<CartExperience> updateCartExperienceGoodPrice(Long goodId, BigDecimal targetPrice) {
|
||||||
|
QueryWrapper<CartExperience> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("goodId", goodId);
|
||||||
|
List<CartExperience> cartExperienceList = cartExperienceMapper.selectList(queryWrapper);
|
||||||
|
// 更新购物车中的小计
|
||||||
|
for (CartExperience cartExperience : cartExperienceList) {
|
||||||
|
Integer quantity = cartExperience.getQuantity();
|
||||||
|
cartExperience.setSubtotal(targetPrice.multiply(BigDecimal.valueOf(quantity)));
|
||||||
|
}
|
||||||
|
return cartExperienceList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.cultural.heritage.service.order;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.cultural.heritage.model.dto.cart.CartOrderAddRequest;
|
import com.cultural.heritage.model.dto.cart.CartOrderAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderAddRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderAddRequest;
|
import com.cultural.heritage.model.dto.order.OrderAddRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderQueryRequest;
|
import com.cultural.heritage.model.dto.order.OrderQueryRequest;
|
||||||
import com.cultural.heritage.model.dto.order.capital.GeneralGoodSingleBuyAddRequest;
|
import com.cultural.heritage.model.dto.order.capital.GeneralGoodSingleBuyAddRequest;
|
||||||
|
@ -66,8 +67,14 @@ public interface OrderService extends IService<Order> {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 购物车封装订单主要信息请求体
|
* 常规类商品购物车封装订单主要信息请求体
|
||||||
*/
|
*/
|
||||||
OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartOrderAddRequest cartOrderAddRequest);
|
OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartOrderAddRequest cartOrderAddRequest);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务类商品购物车封装订单主要信息请求体
|
||||||
|
*/
|
||||||
|
OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartExperienceOrderAddRequest cartExperienceOrderAddRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@ import com.cultural.heritage.exception.ThrowUtils;
|
||||||
import com.cultural.heritage.mapper.*;
|
import com.cultural.heritage.mapper.*;
|
||||||
import com.cultural.heritage.model.dto.cart.CartOrderAddRequest;
|
import com.cultural.heritage.model.dto.cart.CartOrderAddRequest;
|
||||||
import com.cultural.heritage.model.dto.cart.CartOrderItemAddRequest;
|
import com.cultural.heritage.model.dto.cart.CartOrderItemAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderAddRequest;
|
import com.cultural.heritage.model.dto.order.OrderAddRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderItemAddRequest;
|
import com.cultural.heritage.model.dto.order.OrderItemAddRequest;
|
||||||
import com.cultural.heritage.model.dto.order.OrderQueryRequest;
|
import com.cultural.heritage.model.dto.order.OrderQueryRequest;
|
||||||
|
@ -26,10 +28,7 @@ import com.cultural.heritage.model.dto.snapshot.GoodSnapshot;
|
||||||
import com.cultural.heritage.model.entity.*;
|
import com.cultural.heritage.model.entity.*;
|
||||||
import com.cultural.heritage.model.enums.GoodTypeEnum;
|
import com.cultural.heritage.model.enums.GoodTypeEnum;
|
||||||
import com.cultural.heritage.model.vo.coupon.CouponVO;
|
import com.cultural.heritage.model.vo.coupon.CouponVO;
|
||||||
import com.cultural.heritage.service.good.CartRecordService;
|
import com.cultural.heritage.service.good.*;
|
||||||
import com.cultural.heritage.service.good.CouponService;
|
|
||||||
import com.cultural.heritage.service.good.GoodService;
|
|
||||||
import com.cultural.heritage.service.good.UserCouponService;
|
|
||||||
import com.cultural.heritage.service.order.OrderItemService;
|
import com.cultural.heritage.service.order.OrderItemService;
|
||||||
import com.cultural.heritage.service.order.OrderService;
|
import com.cultural.heritage.service.order.OrderService;
|
||||||
import com.cultural.heritage.utils.MultiDelayMessage;
|
import com.cultural.heritage.utils.MultiDelayMessage;
|
||||||
|
@ -77,6 +76,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
private CartRecordService cartRecordService;
|
private CartRecordService cartRecordService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CartExperienceService cartExperienceService;
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RabbitTemplate rabbitTemplate;
|
private RabbitTemplate rabbitTemplate;
|
||||||
|
|
||||||
|
@ -254,7 +257,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
return orderItems;
|
return orderItems;
|
||||||
}).toList();
|
}).toList();
|
||||||
boolean save = orderItemService.saveBatch(newOrderItemsList);
|
boolean save = orderItemService.saveBatch(newOrderItemsList);
|
||||||
ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR);
|
ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "订单明细生成失败");
|
||||||
|
|
||||||
if (isGeneral) {
|
if (isGeneral) {
|
||||||
// 扣减商品库存
|
// 扣减商品库存
|
||||||
|
@ -388,7 +391,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 购物车封装订单主要信息请求体
|
* 常规类商品购物车封装订单主要信息请求体
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartOrderAddRequest cartOrderAddRequest) {
|
public OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartOrderAddRequest cartOrderAddRequest) {
|
||||||
|
@ -455,6 +458,78 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务类商品购物车封装订单主要信息请求体
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartExperienceOrderAddRequest cartExperienceOrderAddRequest) {
|
||||||
|
// 封装成订单主要信息请求体
|
||||||
|
OrderMainInfoAddRequest orderMainInfoAddRequest = new OrderMainInfoAddRequest();
|
||||||
|
BeanUtils.copyProperties(cartExperienceOrderAddRequest, orderMainInfoAddRequest);
|
||||||
|
// 获取购物车id列表
|
||||||
|
List<CartExperienceOrderItemAddRequest> cartExperienceOrderItemAddRequestList = cartExperienceOrderAddRequest.getCartOrderItemAddRequestList();
|
||||||
|
List<Long> cartIds = cartExperienceOrderItemAddRequestList.stream().map(CartExperienceOrderItemAddRequest::getCartExperienceId).toList();
|
||||||
|
// 根据id列表获取购物车商品信息
|
||||||
|
QueryWrapper<CartExperience> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.in("id", cartIds);
|
||||||
|
List<CartExperience> cartExperienceList = cartExperienceService.list(queryWrapper);
|
||||||
|
|
||||||
|
List<Long> goodIds = cartExperienceList.stream().map(CartExperience::getGoodId).toList();
|
||||||
|
QueryWrapper<Good> goodQueryWrapper = new QueryWrapper<>();
|
||||||
|
goodQueryWrapper.in("id", goodIds);
|
||||||
|
List<Good> goodList = goodService.list(goodQueryWrapper);
|
||||||
|
// 封装map集合(键:商品id, 值:商品信息)
|
||||||
|
Map<Long, Good> goodMap = new HashMap<>();
|
||||||
|
for (Good good : goodList) {
|
||||||
|
goodMap.put(good.getId(), good);
|
||||||
|
}
|
||||||
|
// 封装成一个map集合(键:购物车id, 值:购物车商品数量)
|
||||||
|
Map<Long, Integer> map = new HashMap<>();
|
||||||
|
for (CartExperienceOrderItemAddRequest cartExperienceOrderItemAddRequest : cartExperienceOrderItemAddRequestList) {
|
||||||
|
Long cartExperienceId = cartExperienceOrderItemAddRequest.getCartExperienceId();
|
||||||
|
Integer quantity = cartExperienceOrderItemAddRequest.getQuantity();
|
||||||
|
map.put(cartExperienceId, quantity);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算订单总金额
|
||||||
|
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||||
|
for (CartExperience cartExperience : cartExperienceList) {
|
||||||
|
Long goodId = cartExperience.getGoodId();
|
||||||
|
Good good = goodMap.get(goodId);
|
||||||
|
Long cartExperienceId = cartExperience.getId();
|
||||||
|
Integer quantity = map.get(cartExperienceId);
|
||||||
|
totalAmount = totalAmount.add(good.getPrice().multiply(BigDecimal.valueOf(quantity)));
|
||||||
|
}
|
||||||
|
// 处理优惠券满减金额
|
||||||
|
Long couponId = orderMainInfoAddRequest.getCouponId();
|
||||||
|
if (couponId != null) {
|
||||||
|
UserCoupon userCoupon = userCouponService.getById(couponId);
|
||||||
|
ThrowUtils.throwIf(userCoupon == null || userCoupon.getCouponVO().getStatus().equals("已过期"), ErrorCode.OPERATION_ERROR, "用户优惠券不存在或已过期");
|
||||||
|
BigDecimal conditionAmount = userCoupon.getCouponVO().getConditionAmount();
|
||||||
|
totalAmount = totalAmount.subtract(conditionAmount);
|
||||||
|
}
|
||||||
|
// 填充订单主要信息请求体金额
|
||||||
|
orderMainInfoAddRequest.setTotalAmount(totalAmount);
|
||||||
|
// 封装成订单明细主要信息请求体列表
|
||||||
|
List<OrderItemMainInfoAddRequest> orderItemMainInfoAddRequestList = new ArrayList<>();
|
||||||
|
OrderItemMainInfoAddRequest orderItemMainInfoAddRequest;
|
||||||
|
for (CartExperience cartExperience : cartExperienceList) {
|
||||||
|
Long goodId = cartExperience.getGoodId();
|
||||||
|
Long cartExperienceId = cartExperience.getId();
|
||||||
|
Integer quantity = map.get(cartExperienceId);
|
||||||
|
String reservationDate = cartExperience.getReservationDate();
|
||||||
|
String timeSlot = cartExperience.getTimeSlot();
|
||||||
|
orderItemMainInfoAddRequest = new OrderItemMainInfoAddRequest(goodId, quantity, reservationDate, timeSlot);
|
||||||
|
orderItemMainInfoAddRequestList.add(orderItemMainInfoAddRequest);
|
||||||
|
}
|
||||||
|
// 填充到订单主要信息请求体
|
||||||
|
orderMainInfoAddRequest.setOrderItemMainInfoAddRequestList(orderItemMainInfoAddRequestList);
|
||||||
|
return orderMainInfoAddRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id获取订单(地址,联系人,商品)信息
|
* 根据id获取订单(地址,联系人,商品)信息
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user