fix: 切换会员修改

This commit is contained in:
张松 2024-11-21 14:17:40 +08:00
parent 4922d2d576
commit 2e5e7f2158
3 changed files with 51 additions and 15 deletions

View File

@ -7,6 +7,7 @@ import cn.ysk.cashier.pojo.order.TbFullOrderDetail;
import cn.ysk.cashier.pojo.order.TbOrderDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@ -63,5 +64,19 @@ public interface MpOrderDetailService extends IService<TbOrderDetail> {
* @param orderId 订单id
*/
boolean updateStatusByOrderId(TableConstant.OrderInfo.Status status, Integer orderId);
/**
* 根据购物车id修改detail价格
* @param cartId 购物车id
* @param totalAmount 总价格
*/
boolean updatePriceByCartId(Integer cartId, BigDecimal saleAmount, BigDecimal totalAmount);
/**
* 根据会员id修改detail信息
* @param orderId 订单id
* @param isMember 会员id
*/
boolean updateMemberByOrderId(Integer orderId, boolean isMember);
}

View File

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -72,5 +73,20 @@ public class MpOrderDetailServiceImpl extends ServiceImpl<TbOrderDetailMapper, T
.eq(TbOrderDetail::getOrderId, orderId)
.set(TbOrderDetail::getStatus, status.getValue()));
}
@Override
public boolean updatePriceByCartId(Integer cartId, BigDecimal saleAmount, BigDecimal totalAmount) {
return update(new LambdaUpdateWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getCartId, cartId)
.set(TbOrderDetail::getPrice, saleAmount)
.set(TbOrderDetail::getPriceAmount, totalAmount));
}
@Override
public boolean updateMemberByOrderId(Integer orderId, boolean isMember) {
return update(new LambdaUpdateWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, orderId)
.set(TbOrderDetail::getIsMember, isMember ? 1 : 0));
}
}

View File

@ -1210,9 +1210,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean byOrderId) {
createOrderDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(createOrderDTO.getUseType()) ? null : createOrderDTO.getTableId());
return Utils.runFunAndCheckKey(() -> {
TbShopInfo shopInfo = shopInfoRepository.findById(createOrderDTO.getShopId()).orElse(null);
if (shopInfo == null) throw new BadRequestException("店铺信息不存在");
TbShopUser shopUser = null;
if (createOrderDTO.getVipUserId() != null) {
shopUser = tbShopUserMapper.selectById(createOrderDTO.getVipUserId());
@ -1243,7 +1240,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// }
// 创建订单详情
OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo, createOrderDTO.getShopId(), true, shopEatTypeInfoDTO);
OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo,
createOrderDTO.getShopId(), true, shopEatTypeInfoDTO);
// 是否是第一次创建订单
orderInfo = createOrderWithAction(createOrderDTO, detailPriceDTO, shopEatTypeInfoDTO,
@ -2392,10 +2390,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Transactional
public Object updateVip(UpdateVipDTO updateVipDTO) {
Integer orderId = updateVipDTO.getOrderId();
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateVipDTO.getShopId(), updateVipDTO.getTableId());
if (orderId == null) {
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateVipDTO.getShopId(), updateVipDTO.getTableId());
List<TbCashierCart> tbCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, updateVipDTO.getMasterId());
for (TbCashierCart item : tbCashierCarts) {
item.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : updateVipDTO.getType() == 0 ? 1 : 0);
if (item.getOrderId() != null) {
orderId = item.getOrderId();
}
@ -2423,20 +2422,26 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("用户信息不存在");
}
orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, orderId)
.set(TbOrderInfo::getUserId, shopUser.getUserId())
.set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId()));
if (orderId != null) {
mpOrderDetailService.updateMemberByOrderId(orderId, shopEatTypeInfoDTO.isMemberPrice());
orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, orderId)
.set(TbOrderInfo::getUserId, shopUser.getUserId())
.set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId()));
}
} else {
mpCashierCartService.updateMemberAndAmountByOrderId(orderId, false);
orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, orderId)
.set(TbOrderInfo::getUserId, null)
.set(TbOrderInfo::getMemberId, null));
if (orderId != null) {
mpOrderDetailService.updateMemberByOrderId(orderId, false);
mpCashierCartService.updateMemberAndAmountByOrderId(orderId, false);
orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, orderId)
.set(TbOrderInfo::getUserId, null)
.set(TbOrderInfo::getMemberId, null));
}
}
if (dto != null) {
dto.setVipUserId(updateVipDTO.getVipUserId());
dto.setVipUserId(updateVipDTO.getType() == 0 ? updateVipDTO.getVipUserId() : null);
return createOrder(dto, true);
}
return "哈哈哈";