feat:修改总单和子单签收完成状态

This commit is contained in:
luluyuyu 2024-12-05 16:59:57 +08:00
parent 5b8da4931f
commit 2f6628b63f
7 changed files with 110 additions and 36 deletions

View file

@ -199,4 +199,19 @@ public class OrderController {
public void updateOrderToPayState(InputObject inputObject, OutputObject outputObject) {
orderService.updateOrderToPayState(inputObject, outputObject);
}
/**
* 修改订单签收状态
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@ApiOperation(id = "updateOrderItemState", value = "修改订单签收状态", method = "POST", allUse = "2")
@ApiImplicitParams({
@ApiImplicitParam(id = "id", name = "id", value = "主键id", required = "required"),
@ApiImplicitParam(id = "orderItemId", name = "orderItemId", value = "子单Id", required = "required")})
@RequestMapping("/post/OrderController/updateOrderItemState")
public void updateOrderItemState(InputObject inputObject, OutputObject outputObject) {
orderService.updateOrderItemState(inputObject, outputObject);
}
}

View file

@ -219,4 +219,8 @@ public class Order extends AreaInfo {
@TableField("extension_no")
@Property(value = "支付成功的外部订单号")
private String extensionNo;
@TableField("order_state")
@ApiModelProperty(value = "订单状态")
private Integer orderState;
}

View file

@ -124,4 +124,8 @@ public class OrderItem extends OperatorUserInfo {
@TableField("vip_price")
@ApiModelProperty(value = "VIP 减免金额,单位:分")
private String vipPrice;
@TableField("order_item_state")
@ApiModelProperty(value = "订单子单状态")
private Integer orderItemState;
}

View file

@ -30,4 +30,8 @@ public interface OrderItemService extends SkyeyeBusinessService<OrderItem> {
void setValueAndCreateEntity(Order order, String userId);
void updateCommentStateById(String id);
List<OrderItem> queryOrderItemByParentId(String orderId);
void UpdateOrderItemState(String orderItemId);
}

View file

@ -37,4 +37,6 @@ public interface OrderService extends SkyeyeBusinessService<Order> {
void updateOrderToPayState(InputObject inputObject, OutputObject outputObject);
void setOrderCancle(String orderId);
void updateOrderItemState(InputObject inputObject, OutputObject outputObject);
}

View file

@ -11,10 +11,12 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.skyeye.annotation.service.SkyeyeService;
import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl;
import com.skyeye.common.constans.CommonConstants;
import com.skyeye.common.constans.CommonNumConstants;
import com.skyeye.common.enumeration.WhetherEnum;
import com.skyeye.common.util.mybatisplus.MybatisPlusUtil;
import com.skyeye.erp.service.IMaterialNormsService;
import com.skyeye.erp.service.IMaterialService;
import com.skyeye.exception.CustomException;
import com.skyeye.order.dao.OrderItemDao;
import com.skyeye.order.entity.Order;
import com.skyeye.order.entity.OrderItem;
@ -122,4 +124,23 @@ public class OrderItemServiceImpl extends SkyeyeBusinessServiceImpl<OrderItemDao
.set(MybatisPlusUtil.toColumns(OrderItem::getCommentState), WhetherEnum.ENABLE_USING.getKey());
update(updateWrapper);
}
@Override
public List<OrderItem> queryOrderItemByParentId(String orderId) {
QueryWrapper<OrderItem> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(OrderItem::getParentId), orderId);
return list(queryWrapper);
}
@Override
public void UpdateOrderItemState(String orderItemId) {
OrderItem orderItem = selectById(orderItemId);
if (orderItem.getOrderItemState().equals(CommonNumConstants.NUM_TWO)){
throw new CustomException("该订单已收货");
}
UpdateWrapper<OrderItem> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(CommonConstants.ID, orderItemId);
updateWrapper.set(MybatisPlusUtil.toColumns(OrderItem::getOrderItemState), CommonNumConstants.NUM_TWO);
update(updateWrapper);
}
}

View file

@ -226,9 +226,8 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
if (Objects.equals(couponUse.getDiscountType(), PromotionDiscountType.PERCENT.getKey())) {// 百分比折扣
orderItem = orderItemList.stream().max(Comparator.comparing(OrderItem::getPrice)).orElse(null);// 获取优惠券使用商品列表中价格最高的商品
} else {// 满减 将优惠券使用到第一个商品
//卢雨佳
double usePrice = Integer.parseInt(couponUse.getUsePrice());//优惠券使用金额
if (totalPrice>= usePrice) {//商品价格大于等于优惠券使用金额
if (totalPrice >= usePrice) {//商品价格大于等于优惠券使用金额
Optional<OrderItem> maxPriceItem = orderItemList.stream()
.max(Comparator.comparing(OrderItem::getPrice));//获取优惠券使用商品列表中价格最高的商品
int index = maxPriceItem
@ -237,13 +236,13 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
orderItemList.get(index).setCouponUseId(couponUseId);
orderItemList.get(index).setCouponUseMation(JSONUtil.toBean(JSONUtil.toJsonStr(couponUse), null));// 设置mation方便后续计算价格
return;
}else {
} else {
throw new CustomException("商品价格不足以使用优惠券");
}
}
} else if (Objects.equals(couponUse.getProductScope(), PromotionMaterialScope.SPU.getKey())) {// 指定商品
List<String> couponUseMaterialIds = couponUseMaterialService.queryListByCouponIds(Collections.singletonList(couponUseId))
.stream().map(CouponUseMaterial::getMaterialId).collect(Collectors.toList());// 收集子单商品id
.stream().map(CouponUseMaterial::getMaterialId).collect(Collectors.toList());// 收集子单商品id
List<OrderItem> newOrderItemList = new ArrayList<>();
for (OrderItem item : orderItemList) {
if (couponUseMaterialIds.contains(item.getMaterialId())) {
@ -295,33 +294,33 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
break;
case "2": // 待收货
stateList = Arrays.asList(new Integer[]{
ShopOrderState.UNDELIVERED.getKey(),// 待发货
ShopOrderState.DELIVERED.getKey(), // 已发货
ShopOrderState.TRANSPORTING.getKey()});//运输中
ShopOrderState.UNDELIVERED.getKey(),// 待发货
ShopOrderState.DELIVERED.getKey(), // 已发货
ShopOrderState.TRANSPORTING.getKey()});//运输中
break;
case "3":// 已完成
stateList = Arrays.asList(new Integer[]{
ShopOrderState.SIGN.getKey(), // 已签收
ShopOrderState.COMPLETED.getKey(), // 已完成
ShopOrderState.UNEVALUATE.getKey(), // 待评价
ShopOrderState.EVALUATED.getKey()});// 已评价
ShopOrderState.SIGN.getKey(), // 已签收
ShopOrderState.COMPLETED.getKey(), // 已完成
ShopOrderState.UNEVALUATE.getKey(), // 待评价
ShopOrderState.EVALUATED.getKey()});// 已评价
break;
case "4":// 已取消
stateList = Arrays.asList(new Integer[]{ShopOrderState.CANCELED.getKey()});
break;
case "5":// 处理中
stateList = Arrays.asList(new Integer[]{
ShopOrderState.REFUNDING.getKey(), // 退款中
ShopOrderState.REFUNDING.getKey(), // 退款中
ShopOrderState.SALESRETURNING.getKey(),//退货中
ShopOrderState.SALESRETURNING.getKey(),//退货中
ShopOrderState.EXCHANGEING.getKey()});//换货中
ShopOrderState.EXCHANGEING.getKey()});//换货中
break;
case "6": // 申请记录
stateList = Arrays.asList(new Integer[]{
ShopOrderState.REFUND.getKey(), // 已退款
ShopOrderState.SALESRETURNED.getKey(),//已退货
ShopOrderState.EXCHANGED.getKey()});//已换货
ShopOrderState.REFUND.getKey(), // 已退款
ShopOrderState.SALESRETURNED.getKey(),//已退货
ShopOrderState.EXCHANGED.getKey()});//已换货
}
QueryWrapper<Order> wrapper = super.getQueryWrapper(commonPageInfo);
if (CollectionUtil.isNotEmpty(stateList)) { // 状态列表为空时则查询全部订单
@ -358,31 +357,31 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
break;
case "2": // 待收货
stateList = Arrays.asList(new Integer[]{
ShopOrderState.UNDELIVERED.getKey(),// 待发货
ShopOrderState.DELIVERED.getKey(), // 已发货
ShopOrderState.TRANSPORTING.getKey()});//运输中
ShopOrderState.UNDELIVERED.getKey(),// 待发货
ShopOrderState.DELIVERED.getKey(), // 已发货
ShopOrderState.TRANSPORTING.getKey()});//运输中
break;
case "3":// 已完成
stateList = Arrays.asList(new Integer[]{
ShopOrderState.SIGN.getKey(), // 已签收
ShopOrderState.COMPLETED.getKey(), // 已完成
ShopOrderState.UNEVALUATE.getKey(), // 待评价
ShopOrderState.EVALUATED.getKey()});// 已评价
ShopOrderState.SIGN.getKey(), // 已签收
ShopOrderState.COMPLETED.getKey(), // 已完成
ShopOrderState.UNEVALUATE.getKey(), // 待评价
ShopOrderState.EVALUATED.getKey()});// 已评价
break;
case "4":// 已取消
stateList = Arrays.asList(new Integer[]{ShopOrderState.CANCELED.getKey()});
break;
case "5":// 处理中
stateList = Arrays.asList(new Integer[]{
ShopOrderState.REFUNDING.getKey(), // 退款中
ShopOrderState.SALESRETURNING.getKey(),//退货中
ShopOrderState.EXCHANGEING.getKey()});//换货中
ShopOrderState.REFUNDING.getKey(), // 退款中
ShopOrderState.SALESRETURNING.getKey(),//退货中
ShopOrderState.EXCHANGEING.getKey()});//换货中
break;
case "6": // 申请记录
stateList = Arrays.asList(new Integer[]{
ShopOrderState.REFUND.getKey(), // 已退款
ShopOrderState.SALESRETURNED.getKey(),//已退货
ShopOrderState.EXCHANGED.getKey()});//已换货
ShopOrderState.REFUND.getKey(), // 已退款
ShopOrderState.SALESRETURNED.getKey(),//已退货
ShopOrderState.EXCHANGED.getKey()});//已换货
}
QueryWrapper<Order> wrapper = new QueryWrapper<>();
if (CollectionUtil.isNotEmpty(stateList)) { // 状态列表为空时则查询全部订单
@ -490,9 +489,9 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
}
// 可取消的订单状态未提交(0)已提交(1)待支付(2)待发货(5)
if (Objects.equals(one.getState(), ShopOrderState.UNSUBMIT.getKey()) ||
Objects.equals(one.getState(), ShopOrderState.SUBMIT.getKey()) ||
Objects.equals(one.getState(), ShopOrderState.UNPAID.getKey()) ||
Objects.equals(one.getState(), ShopOrderState.UNDELIVERED.getKey())) {
Objects.equals(one.getState(), ShopOrderState.SUBMIT.getKey()) ||
Objects.equals(one.getState(), ShopOrderState.UNPAID.getKey()) ||
Objects.equals(one.getState(), ShopOrderState.UNDELIVERED.getKey())) {
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getState), ShopOrderState.CANCELED.getKey());
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getCancelType), params.get("cancelType"));
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getCancelTime), DateUtil.getTimeAndToString());
@ -547,7 +546,7 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getPayTime), payOrderRespDTO.get("successTime").toString());
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getChannelFeeRate), payChannel.get("feeRate").toString());
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getChannelFeePrice), CalculationUtil.multiply(
one.getPayPrice(), payChannel.get("feeRate").toString()));
one.getPayPrice(), payChannel.get("feeRate").toString()));
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getExtensionId), payOrderRespDTO.get("id").toString());
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getExtensionNo), payOrderRespDTO.get("no").toString());
update(updateWrapper);
@ -604,9 +603,34 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(CommonConstants.ID, orderId);
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getState), ShopOrderState.CANCELED.getKey())
.set(MybatisPlusUtil.toColumns(Order::getCancelType), ShopOrderCancelType.PAY_TIMEOUT.getKey())
.set(MybatisPlusUtil.toColumns(Order::getCancelTime), DateUtil.getTimeAndToString());
.set(MybatisPlusUtil.toColumns(Order::getCancelType), ShopOrderCancelType.PAY_TIMEOUT.getKey())
.set(MybatisPlusUtil.toColumns(Order::getCancelTime), DateUtil.getTimeAndToString());
update(updateWrapper);
refreshCache(orderId);
}
@Override
public void updateOrderItemState(InputObject inputObject, OutputObject outputObject) {
Map<String, Object> map = inputObject.getParams();
String orderId = map.get("id").toString();
String orderItemId = map.get("orderItemId").toString();
orderItemService.UpdateOrderItemState(orderItemId);
List<OrderItem> orderItemList = orderItemService.queryOrderItemByParentId(orderId);
boolean allTwo = orderItemList.stream().map(OrderItem::getOrderItemState)
.allMatch(orderItemState -> orderItemState == CommonNumConstants.NUM_TWO);
if (allTwo) {
Integer numThree = CommonNumConstants.NUM_THREE;
updateOrderState(orderId, numThree);
} else {
Integer numTwo = CommonNumConstants.NUM_TWO;
updateOrderState(orderId, numTwo);
}
}
private void updateOrderState(String orderId, Integer orderState) {
UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(CommonConstants.ID, orderId);
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getOrderState), orderState);
update(updateWrapper);
}
}