优化
This commit is contained in:
@ -78,7 +78,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode DINING_PLATES_ALREADY_BIND = new ErrorCode(1_004_099_001, "餐盘已被绑定");
|
ErrorCode DINING_PLATES_ALREADY_BIND = new ErrorCode(1_004_099_001, "餐盘已被绑定");
|
||||||
ErrorCode CARD_NOT_BIND = new ErrorCode(1_004_099_002, "请先绑定餐卡");
|
ErrorCode CARD_NOT_BIND = new ErrorCode(1_004_099_002, "请先绑定餐卡");
|
||||||
ErrorCode DINING_PLATES_NOT_BIND = new ErrorCode(1_004_099_003, "餐盘未绑定");
|
ErrorCode DINING_PLATES_NOT_BIND = new ErrorCode(1_004_099_003, "餐盘未绑定");
|
||||||
ErrorCode ORDER_ALREADY_COMPLETE = new ErrorCode(1_004_099_004, "该餐盘订单已完成,请重新绑定餐盘");
|
ErrorCode ORDER_ALREADY_COMPLETE = new ErrorCode(1_004_099_004, "餐盘未绑定");
|
||||||
ErrorCode FACE_NOT_BIND_USER = new ErrorCode(1_004_099_005, "人脸未绑定");
|
ErrorCode FACE_NOT_BIND_USER = new ErrorCode(1_004_099_005, "人脸未绑定");
|
||||||
ErrorCode CARD_NOT_BIND_USER = new ErrorCode(1_004_099_006, "该卡未绑定用户");
|
ErrorCode CARD_NOT_BIND_USER = new ErrorCode(1_004_099_006, "该卡未绑定用户");
|
||||||
ErrorCode INSUFFICIENT_BALANCE = new ErrorCode(1_004_099_007, "余额不足15元,请充值");
|
ErrorCode INSUFFICIENT_BALANCE = new ErrorCode(1_004_099_007, "余额不足15元,请充值");
|
||||||
|
@ -24,6 +24,7 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
@ -125,4 +126,11 @@ public class OrderController {
|
|||||||
public CommonResult<OrderMoneyRespVO> getUserMeney(@RequestParam("userId")Long userId){
|
public CommonResult<OrderMoneyRespVO> getUserMeney(@RequestParam("userId")Long userId){
|
||||||
return CommonResult.success(orderService.getUserMeney(userId));
|
return CommonResult.success(orderService.getUserMeney(userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/reduction")
|
||||||
|
@Operation(summary = "根据会员编号,获得会员余额,充值金额,消费金额")
|
||||||
|
public CommonResult<Boolean> reduction(Long orderId, BigDecimal money){
|
||||||
|
orderService.reduction(orderId,money);
|
||||||
|
return CommonResult.success(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,11 @@ public class BalanceDeductionJob implements JobHandler {
|
|||||||
if (total.compareTo(BigDecimal.ZERO) > 0) {
|
if (total.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
reductionAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime());
|
reductionAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime());
|
||||||
}
|
}
|
||||||
|
if(dishOrderDO.getReductionAmount().compareTo(BigDecimal.ZERO) > 0){
|
||||||
|
dishOrderDO.setReductionAmount(reductionAmount.add(dishOrderDO.getReductionAmount()));
|
||||||
|
}else {
|
||||||
dishOrderDO.setReductionAmount(reductionAmount);
|
dishOrderDO.setReductionAmount(reductionAmount);
|
||||||
|
}
|
||||||
dishOrderDO.setReductionState(reductionAmount.compareTo(BigDecimal.ZERO) > 0 ? "1" : "0");
|
dishOrderDO.setReductionState(reductionAmount.compareTo(BigDecimal.ZERO) > 0 ? "1" : "0");
|
||||||
|
|
||||||
//计算减免后的总价
|
//计算减免后的总价
|
||||||
@ -116,6 +120,9 @@ public class BalanceDeductionJob implements JobHandler {
|
|||||||
dishOrderDO.setCashAmount(cashAmount);
|
dishOrderDO.setCashAmount(cashAmount);
|
||||||
dishOrderDO.setGiftAmount(giftAmount);
|
dishOrderDO.setGiftAmount(giftAmount);
|
||||||
} else {
|
} else {
|
||||||
|
cardDO.setWxAmount(wxAmount);
|
||||||
|
cardDO.setCashAmount(cashAmount);
|
||||||
|
cardDO.setGiftAmount(giftAmount);
|
||||||
dishOrderDO.setOrderStatus(DishOrderDO.COMPLETE);
|
dishOrderDO.setOrderStatus(DishOrderDO.COMPLETE);
|
||||||
//计算金额
|
//计算金额
|
||||||
if (total.compareTo(cashAmount) <= 0) {
|
if (total.compareTo(cashAmount) <= 0) {
|
||||||
|
@ -121,4 +121,6 @@ public interface OrderService {
|
|||||||
|
|
||||||
|
|
||||||
Map<String,Object> getMoneyAndPeople(Long storeId);
|
Map<String,Object> getMoneyAndPeople(Long storeId);
|
||||||
|
|
||||||
|
void reduction(Long orderId,BigDecimal money);
|
||||||
}
|
}
|
@ -37,6 +37,7 @@ import cn.iocoder.yudao.module.system.api.dish.DishesApi;
|
|||||||
import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto;
|
import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -401,4 +402,71 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
map.put("size", size);
|
map.put("size", size);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void reduction(Long orderId,BigDecimal money) {
|
||||||
|
DishOrderDO dishOrderDO = dishOrderMapper.selectById(orderId);
|
||||||
|
dishOrderDO.setReductionState("1");
|
||||||
|
if(dishOrderDO.getOrderStatus().equals("1")){
|
||||||
|
dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money));
|
||||||
|
//更改订单
|
||||||
|
BigDecimal wxAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal cashAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal giftAmount = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
dishOrderDO.setTotalMoney(dishOrderDO.getTotalMoney().subtract(money));
|
||||||
|
if(dishOrderDO.getWxAmount().compareTo(money)>=0){
|
||||||
|
dishOrderDO.setWxAmount(dishOrderDO.getWxAmount().subtract(money));
|
||||||
|
wxAmount = wxAmount.add(money);
|
||||||
|
}else {
|
||||||
|
BigDecimal leftMoney = money.subtract(dishOrderDO.getWxAmount());
|
||||||
|
wxAmount = wxAmount.add(dishOrderDO.getWxAmount());
|
||||||
|
dishOrderDO.setWxAmount(BigDecimal.ZERO);
|
||||||
|
if(dishOrderDO.getCashAmount().compareTo(leftMoney)>0){
|
||||||
|
dishOrderDO.setCashAmount(dishOrderDO.getCashAmount().subtract(leftMoney));
|
||||||
|
cashAmount = cashAmount.add(leftMoney);
|
||||||
|
}else {
|
||||||
|
BigDecimal leftMoney1 = leftMoney.subtract(dishOrderDO.getCashAmount());
|
||||||
|
cashAmount = cashAmount.add(dishOrderDO.getCashAmount());
|
||||||
|
dishOrderDO.setCashAmount(BigDecimal.ZERO);
|
||||||
|
|
||||||
|
dishOrderDO.setGiftAmount(dishOrderDO.getGiftAmount().subtract(leftMoney1));
|
||||||
|
giftAmount = giftAmount.add(leftMoney1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//退款
|
||||||
|
CardDO lastCardDO = cardMapper.selectOne(Wrappers.<CardDO>lambdaQuery()
|
||||||
|
.eq(CardDO::getUserId, dishOrderDO.getUserId())
|
||||||
|
.orderByDesc(CardDO::getCreateTime)
|
||||||
|
.orderByDesc(CardDO::getId)
|
||||||
|
.last(MemberConstants.LIMIT_ONE));
|
||||||
|
CardDO cardDO = new CardDO();
|
||||||
|
cardDO.setUserId(dishOrderDO.getUserId());
|
||||||
|
cardDO.setFlag(CardDO.ADD);
|
||||||
|
cardDO.setChangeMoney(money);
|
||||||
|
cardDO.setType(CostTypeEnum.REFUND.getCode());
|
||||||
|
|
||||||
|
BigDecimal oldMoney = BigDecimal.ZERO;
|
||||||
|
if (ObjectUtil.isNotEmpty(lastCardDO) && lastCardDO.getMoney() != null) {
|
||||||
|
oldMoney = lastCardDO.getMoney();
|
||||||
|
}
|
||||||
|
cardDO.setMoney(oldMoney.add(money).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||||
|
|
||||||
|
BigDecimal oldWxAmount = lastCardDO.getWxAmount();
|
||||||
|
BigDecimal oldCashAmount = lastCardDO.getCashAmount();
|
||||||
|
BigDecimal oldGiftAmount = lastCardDO.getGiftAmount();
|
||||||
|
|
||||||
|
cardDO.setGiftAmount(oldWxAmount.add(wxAmount));
|
||||||
|
cardDO.setWxAmount(oldCashAmount.add(cashAmount));
|
||||||
|
cardDO.setWxAmount(oldGiftAmount.add(giftAmount));
|
||||||
|
cardMapper.insert(cardDO);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money));
|
||||||
|
}
|
||||||
|
dishOrderMapper.updateById(dishOrderDO);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -759,6 +759,7 @@ public class DivideServiceImpl implements DivideService {
|
|||||||
cardDO.setMoney(oldMoney.subtract(changeMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
cardDO.setMoney(oldMoney.subtract(changeMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||||
cardDO.setWxAmount(wxOldMoney.subtract(changeMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
cardDO.setWxAmount(wxOldMoney.subtract(changeMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||||
cardDO.setGiftAmount(lastCardDO.getGiftAmount());
|
cardDO.setGiftAmount(lastCardDO.getGiftAmount());
|
||||||
|
cardDO.setCashAmount(lastCardDO.getCashAmount());
|
||||||
divideCardMapper.insert(cardDO);
|
divideCardMapper.insert(cardDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user