返回售后申请退款金额
This commit is contained in:
@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -46,6 +47,13 @@ public class StoreAfterSalesController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private YxExpressService yxExpressService;
|
private YxExpressService yxExpressService;
|
||||||
|
|
||||||
|
@AuthCheck
|
||||||
|
@PostMapping("/getRefundAmount")
|
||||||
|
@ApiOperation(value = "获取退款价格", notes = "获取退款价格")
|
||||||
|
public ApiResult<BigDecimal> getRefundAmount(@RequestBody StoreAfterSalesParam storeAfterSalesParam) {
|
||||||
|
return ApiResult.ok(storeAfterSalesService.getRefundAmount(storeAfterSalesParam));
|
||||||
|
}
|
||||||
|
|
||||||
@AuthCheck
|
@AuthCheck
|
||||||
@PostMapping("/applyForAfterSales")
|
@PostMapping("/applyForAfterSales")
|
||||||
@ApiOperation(value = "申请售后", notes = "申请售后")
|
@ApiOperation(value = "申请售后", notes = "申请售后")
|
||||||
|
@ -11,6 +11,7 @@ import org.springframework.data.domain.Pageable;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -19,6 +20,8 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public interface StoreAfterSalesService extends BaseService<StoreAfterSales> {
|
public interface StoreAfterSalesService extends BaseService<StoreAfterSales> {
|
||||||
|
|
||||||
|
BigDecimal getRefundAmount(StoreAfterSalesParam storeAfterSalesParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建售后订单
|
* 创建售后订单
|
||||||
*
|
*
|
||||||
|
@ -68,6 +68,58 @@ public class StoreAfterSalesServiceImpl extends BaseServiceImpl<StoreAfterSalesM
|
|||||||
private final IGenerator generator;
|
private final IGenerator generator;
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BigDecimal getRefundAmount(StoreAfterSalesParam storeAfterSalesParam) {
|
||||||
|
|
||||||
|
YxStoreOrder yxStoreOrder = storeOrderMapper.selectOne(Wrappers.<YxStoreOrder>lambdaQuery().eq(YxStoreOrder::getOrderId, storeAfterSalesParam.getOrderCode()));
|
||||||
|
|
||||||
|
//商品除去优惠后的总价格
|
||||||
|
BigDecimal totalPrice = BigDecimal.ZERO;
|
||||||
|
//拿到所有的商品
|
||||||
|
List<YxStoreOrderCartInfo> yxStoreOrderCartInfos = storeOrderCartInfoMapper.selectList(Wrappers.<YxStoreOrderCartInfo>lambdaQuery().eq(YxStoreOrderCartInfo::getOid, yxStoreOrder.getId()));
|
||||||
|
for (YxStoreOrderCartInfo yxStoreOrderCartInfo : yxStoreOrderCartInfos) {
|
||||||
|
YxStoreCartQueryVo cartInfo = JSONObject.parseObject(yxStoreOrderCartInfo.getCartInfo(), YxStoreCartQueryVo.class);
|
||||||
|
ProsuctParam prosuctParam = storeAfterSalesParam.getProductParamList().stream().filter(item -> item.getProductId().equals(yxStoreOrderCartInfo.getProductId())).findFirst().orElse(new ProsuctParam());
|
||||||
|
if (prosuctParam.getProductId() != null) {
|
||||||
|
//商品优惠前总金额
|
||||||
|
BigDecimal totalAmountOfGoods = NumberUtil.mul(cartInfo.getTruePrice(), cartInfo.getCartNum());
|
||||||
|
//商品优惠总金额
|
||||||
|
// BigDecimal commodityDiscountAmount = NumberUtil.mul(NumberUtil.div(totalAmountOfGoods, NumberUtil.sub(yxStoreOrder.getTotalPrice(), yxStoreOrder.getPayPostage())), yxStoreOrder.getCouponPrice());
|
||||||
|
BigDecimal totalPriceMinusPostage = NumberUtil.sub(yxStoreOrder.getTotalPrice(), yxStoreOrder.getPayPostage());
|
||||||
|
BigDecimal commodityDiscountAmount;
|
||||||
|
|
||||||
|
if (totalPriceMinusPostage.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
|
commodityDiscountAmount = NumberUtil.mul(NumberUtil.div(totalAmountOfGoods, totalPriceMinusPostage), yxStoreOrder.getCouponPrice());
|
||||||
|
} else {
|
||||||
|
// 处理除数为零的情况,返回默认值
|
||||||
|
commodityDiscountAmount = BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
//商品优惠后总金额
|
||||||
|
totalPrice = NumberUtil.add(totalPrice, NumberUtil.sub(totalAmountOfGoods, commodityDiscountAmount));
|
||||||
|
// todo 根据自己的业务逻辑修改,是否退运费,默认退运费
|
||||||
|
totalPrice = NumberUtil.add(totalPrice, yxStoreOrder.getPayPostage());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//更新订单状态
|
||||||
|
// yxStoreOrder.setStatus(OrderInfoEnum.STATUS_NE1.getValue());
|
||||||
|
// yxStoreOrder.setRefundStatus(OrderInfoEnum.REFUND_STATUS_1.getValue());
|
||||||
|
// yxStoreOrder.setRefundReasonWap(storeAfterSalesParam.getReasonForApplication());
|
||||||
|
// yxStoreOrder.setRefundReasonWapExplain(storeAfterSalesParam.getApplicationInstructions());
|
||||||
|
// yxStoreOrder.setRefundReasonTime(new Date());
|
||||||
|
// storeOrderMapper.updateById(yxStoreOrder);
|
||||||
|
// //生成售后订单
|
||||||
|
// StoreAfterSales storeAfterSales = new StoreAfterSales();
|
||||||
|
// storeAfterSales.setOrderCode(storeAfterSalesParam.getOrderCode());
|
||||||
|
//此处需要对比原来订单的支付价格
|
||||||
|
if(totalPrice.compareTo(yxStoreOrder.getPayPrice()) > 0){
|
||||||
|
return yxStoreOrder.getPayPrice();
|
||||||
|
}else{
|
||||||
|
return totalPrice;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyForAfterSales(Long userId, String nickname, StoreAfterSalesParam storeAfterSalesParam) {
|
public void applyForAfterSales(Long userId, String nickname, StoreAfterSalesParam storeAfterSalesParam) {
|
||||||
|
|
||||||
@ -157,8 +209,9 @@ public class StoreAfterSalesServiceImpl extends BaseServiceImpl<StoreAfterSalesM
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<YxStoreOrderCartInfoVo> checkOrderDetails(String key) {
|
public List<YxStoreOrderCartInfoVo> checkOrderDetails(String key) {
|
||||||
List<YxStoreOrderCartInfo> yxStoreOrderCartInfos = storeOrderCartInfoMapper.selectList(Wrappers.<YxStoreOrderCartInfo>lambdaQuery().eq(YxStoreOrderCartInfo::getOid, key));
|
YxStoreOrder yxStoreOrder = storeOrderMapper.selectOne(Wrappers.<YxStoreOrder>lambdaQuery().eq(YxStoreOrder::getOrderId,key));
|
||||||
YxStoreOrder yxStoreOrder = storeOrderMapper.selectById(key);
|
List<YxStoreOrderCartInfo> yxStoreOrderCartInfos = storeOrderCartInfoMapper.selectList(Wrappers.<YxStoreOrderCartInfo>lambdaQuery().eq(YxStoreOrderCartInfo::getOid, yxStoreOrder.getId()));
|
||||||
|
// YxStoreOrder yxStoreOrder = storeOrderMapper.selectById(key);
|
||||||
//查询 售后信息
|
//查询 售后信息
|
||||||
StoreAfterSales storeAfterSales = baseMapper.selectOne(Wrappers.<StoreAfterSales>lambdaQuery().eq(StoreAfterSales::getOrderCode, yxStoreOrder.getOrderId()));
|
StoreAfterSales storeAfterSales = baseMapper.selectOne(Wrappers.<StoreAfterSales>lambdaQuery().eq(StoreAfterSales::getOrderCode, yxStoreOrder.getOrderId()));
|
||||||
List<YxStoreOrderCartInfoVo> yxStoreOrderCartInfoVos = new ArrayList<>();
|
List<YxStoreOrderCartInfoVo> yxStoreOrderCartInfoVos = new ArrayList<>();
|
||||||
@ -181,7 +234,7 @@ public class StoreAfterSalesServiceImpl extends BaseServiceImpl<StoreAfterSalesM
|
|||||||
|
|
||||||
yxStoreOrderCartInfoVo.setRefundablePrice(NumberUtil.sub(totalAmountOfGoods, commodityDiscountAmount));
|
yxStoreOrderCartInfoVo.setRefundablePrice(NumberUtil.sub(totalAmountOfGoods, commodityDiscountAmount));
|
||||||
|
|
||||||
yxStoreOrderCartInfoVo.setReasons(storeAfterSales.getReasons());
|
//yxStoreOrderCartInfoVo.setReasons(storeAfterSales.getReasons());
|
||||||
yxStoreOrderCartInfoVos.add(yxStoreOrderCartInfoVo);
|
yxStoreOrderCartInfoVos.add(yxStoreOrderCartInfoVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user