diff --git a/mall-common/src/main/java/com/suisung/mall/common/support/Auth.java b/mall-common/src/main/java/com/suisung/mall/common/support/Auth.java index 5a75bb9d..9528f804 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/support/Auth.java +++ b/mall-common/src/main/java/com/suisung/mall/common/support/Auth.java @@ -43,4 +43,11 @@ public @interface Auth { */ boolean isMobile() default false; + /** + * 商家APP端 + * + * @return + */ + boolean isMerchant() default false; + } diff --git a/mall-common/src/main/java/com/suisung/mall/common/support/AuthInterceptor.java b/mall-common/src/main/java/com/suisung/mall/common/support/AuthInterceptor.java index 6db888f7..5dc95f66 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/support/AuthInterceptor.java +++ b/mall-common/src/main/java/com/suisung/mall/common/support/AuthInterceptor.java @@ -48,11 +48,7 @@ public class AuthInterceptor implements HandlerMethodArgumentResolver, Applicati public boolean supportsParameter(MethodParameter parameter) { if (parameter.hasParameterAnnotation(Auth.class)) { return true; - } else if (parameter.getMethodAnnotation(Auth.class) != null) { - return true; - } else { - return false; - } + } else return parameter.getMethodAnnotation(Auth.class) != null; } @Override @@ -82,6 +78,9 @@ public class AuthInterceptor implements HandlerMethodArgumentResolver, Applicati if (auth.isMobile() && !user.isMobile()) { throw new ApiException(ResultCode.FORBIDDEN); } + if (auth.isMerchant() && !user.isMerchant()) { + throw new ApiException(ResultCode.FORBIDDEN); + } return user; } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderInfoController.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderInfoController.java index f072efa4..2fc1bc87 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderInfoController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderInfoController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController; /** *

- * 订单信息表 前端控制器 + * 订单信息表 后端控制器 *

* * @author Xinze diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java index 4bd4f4a8..54da69cd 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java @@ -61,14 +61,16 @@ public class UserReturnController extends BaseControllerImpl { @ApiOperation(value = "添加退款退货-部分退货,卖家也可以决定不退货退款,买家申请退款不支持。卖家可以主动退款。", notes = "添加退款退货-发货退货,卖家也可以决定不退货退款,买家申请退款不支持。卖家可以主动退款。") @RequestMapping(value = "/addItem", method = RequestMethod.GET) public CommonResult addItem(OrderReturnVo orderReturnVo) { - OrderReturnInputVo orderReturnInput = BeanUtil.copyProperties(orderReturnVo, OrderReturnInputVo.class); - OrderReturnItemInputVo orderReturnItemInput = new OrderReturnItemInputVo(); - orderReturnItemInput.setOrder_item_id(orderReturnVo.getOrder_item_id()); - orderReturnItemInput.setReturn_item_num(orderReturnVo.getReturn_item_num()); - orderReturnItemInput.setReturn_refund_amount(orderReturnVo.getReturn_refund_amount()); - orderReturnInput.getReturn_items().add(orderReturnItemInput); + OrderReturnInputVo orderReturnInputVo = BeanUtil.copyProperties(orderReturnVo, OrderReturnInputVo.class); - return shopOrderReturnService.addItem(orderReturnInput); + OrderReturnItemInputVo orderReturnItemInputVo = new OrderReturnItemInputVo(); + orderReturnItemInputVo.setOrder_item_id(orderReturnVo.getOrder_item_id()); + orderReturnItemInputVo.setReturn_item_num(orderReturnVo.getReturn_item_num()); + orderReturnItemInputVo.setReturn_refund_amount(orderReturnVo.getReturn_refund_amount()); + + orderReturnInputVo.getReturn_items().add(orderReturnItemInputVo); + + return shopOrderReturnService.addItem(orderReturnInputVo); } @ApiOperation(value = "添加退款退货-整单退货", notes = "添加退款退货-整单退货") @@ -80,7 +82,7 @@ public class UserReturnController extends BaseControllerImpl { throw new ApiUserException(I18nUtil._("用户信息异常!")); } - return shopOrderReturnService.addWholeItems(order_id); + return shopOrderReturnService.addWholeItems(order_id, false, ""); } @ApiOperation(value = "取消退款订单", notes = "取消退款订单") diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java index ff88b3bf..7ff68865 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java @@ -40,6 +40,10 @@ public interface ShopOrderReturnService extends IBaseService { long getReturnNum(List return_state_id, Integer store_id, Integer subsite_id); + /** + * @param orderReturnInputVo + * @return + */ CommonResult addItem(OrderReturnInputVo orderReturnInputVo); Map getReturnDetail(String return_id); @@ -145,12 +149,20 @@ public interface ShopOrderReturnService extends IBaseService { boolean ifDenyReturn(Long order_item_id); /** - * 添加退款退货-整单退货 + * 该方法用于处理整单退货申请,具体功能如下: + * 根据订单ID获取订单信息,若为空则抛异常。 + * 检查订单是否已付款,未付款则不允许退货。 + * 查询该订单是否已有未取消的退款单,如有则不能再次申请。 + * 获取订单对应的商品列表,若为空则提示无商品。 + * 构建退货请求对象 OrderReturnInputVo,包含订单商品信息(每个商品的数量和金额)。 + * 调用 addItem 方法提交退货申请 * - * @param order_id + * @param orderId + * @param isSystemOpt 是否系统自动操作 + * @param remark 退单备注 * @return */ - CommonResult addWholeItems(String order_id); + CommonResult addWholeItems(String orderId, Boolean isSystemOpt, String remark); /** * 退货单转单-供应商 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java index 05e13f98..9757c46c 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java @@ -9,8 +9,11 @@ import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.api.ResultCode; import com.suisung.mall.common.api.StateCode; import com.suisung.mall.common.constant.CommonConstant; +import com.suisung.mall.common.domain.UserDto; +import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.feignService.AccountService; import com.suisung.mall.common.feignService.PayService; import com.suisung.mall.common.feignService.SnsService; @@ -120,14 +123,10 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl notice = snsService.getMsgUser(user_id); // + Map data = new HashMap(); + Map order = new HashMap(); // todo diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java index be7ea100..7718b7ca 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java @@ -10,6 +10,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.PhoneUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -901,17 +902,15 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl - * RETURN_PROCESS_SUBMIT = 3100; //【客户】提交退单1ReturnReturn - * RETURN_PROCESS_CHECK = 3105; //退单审核1ReturnReturn - * RETURN_PROCESS_RECEIVED = 3110; //收货确认0ReturnReturn - * RETURN_PROCESS_REFUND = 3115; //退款确认0ReturnReturn - * RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[【客户】收款确认0 ReturnReturn - * RETURN_PROCESS_FINISH = 3125; //完成1退货退款 - * RETURN_PROCESS_REFUSED = 3130; //-商家拒绝退货 - * RETURN_PROCESS_CANCEL = 3135; //-买家取消退款 + * @param orderId

+ * RETURN_PROCESS_SUBMIT = 3100; //【客户】提交退单1ReturnReturn + * RETURN_PROCESS_CHECK = 3105; //退单审核1ReturnReturn + * RETURN_PROCESS_RECEIVED = 3110; //收货确认0ReturnReturn + * RETURN_PROCESS_REFUND = 3115; //退款确认0ReturnReturn + * RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[【客户】收款确认0 ReturnReturn + * RETURN_PROCESS_FINISH = 3125; //完成1退货退款 + * RETURN_PROCESS_REFUSED = 3130; //-商家拒绝退货 + * RETURN_PROCESS_CANCEL = 3135; //-买家取消退款 * @return */ @GlobalTransactional @@ -919,7 +918,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); @@ -929,7 +928,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl returnQueryWrapper = new QueryWrapper<>(); - returnQueryWrapper.eq("order_id", order_id).ne("return_state_id", StateCode.RETURN_PROCESS_CANCEL); + returnQueryWrapper.eq("order_id", orderId).ne("return_state_id", StateCode.RETURN_PROCESS_CANCEL); List shopOrderReturns = find(returnQueryWrapper); if (CollectionUtil.isNotEmpty(shopOrderReturns)) { @@ -2021,24 +2030,27 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl itemQueryWrapperOne = new QueryWrapper<>(); - itemQueryWrapperOne.eq("order_id", order_id); + itemQueryWrapperOne.eq("order_id", orderId); List itemList = shopOrderItemService.find(itemQueryWrapperOne); if (CollectionUtil.isEmpty(itemList)) { throw new ApiException(I18nUtil._("订单商品表为空!")); } + // 生成退款单 OrderReturnInputVo orderReturnInputVo = new OrderReturnInputVo(); - orderReturnInputVo.setOrder_id(order_id); + orderReturnInputVo.setOrder_id(orderId); orderReturnInputVo.setReturn_tel(""); // 为什么不获取订单用户的手机号码 - orderReturnInputVo.setReturn_buyer_message(I18nUtil._("整单退!")); + orderReturnInputVo.setReturn_buyer_message(I18nUtil._(remark)); orderReturnInputVo.setUser_id(orderInfo.getBuyer_user_id()); + orderReturnInputVo.setSystem_opear(isSystemOpt); for (ShopOrderItem orderItem : itemList) { OrderReturnItemInputVo returnItemInputVo = new OrderReturnItemInputVo(); returnItemInputVo.setOrder_item_id(orderItem.getOrder_item_id()); returnItemInputVo.setReturn_item_num(orderItem.getOrder_item_quantity()); returnItemInputVo.setReturn_refund_amount(orderItem.getOrder_item_payment_amount()); + orderReturnInputVo.getReturn_items().add(returnItemInputVo); } @@ -2170,12 +2182,65 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + ShopOrderReturn shopOrderReturn = findOne(queryWrapper); + if (shopOrderReturn == null) { + throw new ApiException(I18nUtil._("订单信息异常!")); + } + + shopOrderReturn.setReturn_flag(0); // 0-不用退货;1-需要退货 + shopOrderReturn.setReturn_buyer_message("配送异常,系统自动退款"); + shopOrderReturn.setReturn_store_message("配送异常,系统自动退款"); + + // 退货审核(商家同意退款,仅仅退款,因为商品还没有配送出去) + Boolean success = processReviewList(shopOrderReturn, 0); + return success ? CommonResult.success() : CommonResult.failed(); } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index dd4690b9..4f2ad89f 100644 --- a/pom.xml +++ b/pom.xml @@ -317,18 +317,18 @@ 114.132.210.208:8718 - - - - - - - 42.194.196.179 - 3306 - mall_prod - root - J0XivNvAcR14}pA6Cysm.E27 - com.mysql.cj.jdbc.Driver + 42.194.196.179 + 3306 + mall_dev + webdev + jbFr9YewcA9Mihx6fnw51Kzq + com.mysql.cj.jdbc.Driver + + + + + + 114.132.210.208 15