From b073fb414a79ab05c2658bb40b52fd2f2f1ed592 Mon Sep 17 00:00:00 2001 From: hanxueda Date: Thu, 9 May 2019 19:30:53 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=AE=A2=E5=8D=95][=E4=BF=AE=E6=94=B9]:A?= =?UTF-8?q?=E7=AB=AF=E4=BC=98=E5=8C=96=E4=B8=8B=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/market/WxOrderController.java | 139 +++++++----------- .../market/WxPayOrderController.java | 43 +----- .../controller/WxOrderController.java | 2 +- .../controller/WxPayOrderController.java | 2 +- .../com/iformall/domain/dto/OrderSaveDto.java | 3 + 5 files changed, 61 insertions(+), 128 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index eecd85b82..f9dde8447 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -6,7 +6,9 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; +import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxOrder; import com.iformall.domain.vo.WxOrderQueryVo; @@ -16,6 +18,7 @@ import com.iformall.enums.EnumUserType; import com.iformall.exception.MallinkException; import com.iformall.service.WxCUserService; import com.iformall.service.WxCouponChannelService; +import com.iformall.service.WxCouponService; import com.iformall.service.WxOrderService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -43,6 +46,9 @@ public class WxOrderController extends BaseController { @Autowired private WxCUserService wxCUserService; + @Autowired + private WxCouponService wxCouponService; + @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -130,101 +136,35 @@ public class WxOrderController extends BaseController { @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @PostMapping("save") - public ResultData saveOrder(@RequestBody Map paramMap) { - - logger.info("OrderSave: " + paramMap.toString()); - //Assert.notNull(wxOrders.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - String couponChannelIdStr = paramMap.get("couponChannelId"); - String couponIdStr = paramMap.get("couponId"); - String pressStr = paramMap.get("press"); - String orderGroupIdStr = paramMap.get("orderGroupId"); - String formId = paramMap.get("formId"); - //被操作人的ID - String userIdStr = paramMap.get("userId"); - Long userId = 0L; - if (StringUtils.isNotBlank(userIdStr)) { - userId = Long.valueOf(userIdStr); - } - WxCUser wxCUser = wxCUserService.getById(userId); - if (wxCUser == null) { - throw new MallinkException(ErrorCode.USER_NOT_MEMBER); - } - - if (StringUtils.isBlank(couponChannelIdStr)) { + public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { + logger.info("OrderSave: " + orderSaveDto); + if (orderSaveDto.getCouponChannelId() == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); } - Long couponChannelId = 0L, couponId = 0L, orderGroupId = null; - boolean isPress = false; - - if (StringUtils.isNotBlank(couponChannelIdStr)) { - try { - couponChannelId = Long.valueOf(couponChannelIdStr); - } catch (NumberFormatException e) { - logger.error("couponChannelId convert error, " + couponChannelIdStr + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "couponChannelId: " + couponChannelIdStr + ", e:" + e.getMessage()); - } - WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(couponChannelId); - if (wxCouponChannel == null) { - logger.error("couponChannelId convert error, " + couponChannelIdStr); - return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); - } - - if (wxCouponChannel.getTargetAd().equals(EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode())) { - Date now = new Date(); - if (wxCouponChannel.getBeginTime().getTime() > now.getTime()) { - logger.error("此券活动未开始:" + couponChannelIdStr); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED); - } - if (wxCouponChannel.getEndTime().getTime() < now.getTime()) { - logger.error("此券活动已结束:" + couponChannelIdStr); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_END); - } - } - - if (wxCouponChannel.getStatus() == EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()) { - logger.error("此券已下架:" + couponChannelIdStr); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); - } - if (StringUtils.isBlank(couponIdStr)) { - couponId = wxCouponChannel.getCouponId(); - } - } - if (couponId <= 0 && !StringUtils.isBlank(couponIdStr)) { - try { - couponId = Long.valueOf(couponIdStr); - } catch (NumberFormatException e) { - logger.error("couponId convert error, " + couponIdStr + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "couponId: " + couponIdStr + ", e:" + e.getMessage()); - } - } + WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(orderSaveDto.getCouponChannelId()); + ResultData resultData = couponChannelCheck(orderSaveDto, wxCouponChannel); + if (resultData != null) return resultData; - if (couponId <= 0) { + Long couponId = orderSaveDto.getCouponId() == null ? wxCouponChannel.getCouponId() : orderSaveDto.getCouponId(); + if (couponId == null) { logger.error("couponChannelId或者couponId不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId或者couponId不能为空"); } - if(pressStr != null) { - try{ - isPress = Boolean.valueOf(pressStr); - } catch (Exception e) { - logger.error("press转换失败"); - } - } - - if (orderGroupIdStr != null) { - try { - orderGroupId = Long.valueOf(orderGroupIdStr); - } catch (Exception e) { - logger.error("orderGroupId转换失败"); - } - } - - //用于标记当前操作人为A端用户 - wxCUser.setOperatorType(EnumUserType.MALLUSER.getCode()); - wxCUser.setOperatorId(getUser().getId()); try { - WxOrder order = wxOrderService.saveCouponOrder(wxCUser, couponChannelId, couponId, isPress, orderGroupId, formId); + WxCUser user = wxCUserService.getById(orderSaveDto.getUserId()); + //用于标记当前操作人为A端用户 + user.setOperatorType(EnumUserType.MALLUSER.getCode()); + user.setOperatorId(getUser().getId()); + WxOrder order = null; + WxCoupon coupon = wxCouponService.getById(couponId); + if (coupon == null) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + if (!wxOrderService.checkCouponIsFree(coupon)) + return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); + // 免费券 + order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId()); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); @@ -235,4 +175,29 @@ public class WxOrderController extends BaseController { } } + private ResultData couponChannelCheck(@RequestBody OrderSaveDto orderSaveDto, WxCouponChannel wxCouponChannel) { + if (wxCouponChannel == null) { + logger.error("couponChannelId convert error, " + orderSaveDto.getCouponChannelId()); + return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); + } + + if (wxCouponChannel.getTargetAd().equals(EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode())) { + Date now = new Date(); + if (wxCouponChannel.getBeginTime().getTime() > now.getTime()) { + logger.error("此券活动未开始:" + orderSaveDto.getCouponChannelId()); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED); + } + if (wxCouponChannel.getEndTime().getTime() < now.getTime()) { + logger.error("此券活动已结束:" + orderSaveDto.getCouponChannelId()); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_END); + } + } + + if (wxCouponChannel.getStatus() == EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()) { + logger.error("此券已下架:" + orderSaveDto.getCouponChannelId()); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); + } + return null; + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPayOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPayOrderController.java index 713becab8..eb65c0820 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPayOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPayOrderController.java @@ -98,57 +98,22 @@ public class WxPayOrderController extends BaseController { logger.info("orderId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); } - Long payOrderId = 0L, orderId = 0L; try { - orderId = Long.valueOf(orderIdStr); + Long.valueOf(orderIdStr); } catch (NumberFormatException e) { logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); } if (!StringUtils.isBlank(payOrderIdStr)) { try { - payOrderId = Long.valueOf(payOrderIdStr); + Long.valueOf(payOrderIdStr); } catch (NumberFormatException e) { logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确"); } } + // 免费券直接返回成功 + return new ResultData(Result.SUCCESS, "免费券支付状态更新成功"); - WxPayOrder payOrder = new WxPayOrder(); - payOrder.setId(payOrderId); - payOrder.setOrderId(orderId); - payOrder.setPayOrderStatus(status); - payOrder.setFailReason(reasonStr); - - WxOrder order = null; - - try { - if(status.equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) && !payOrderIdStr.equals("0")) { - // 前端提示支付成功, 不作为支付成功标志,只检查支付订单状态 - // 有价券不走update, callback更新 - payOrder = wxPayOrderService.getById(payOrderId); - if(payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())) { - order = wxOrderService.getById(orderId); - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } else { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付未状态,请等待!!"); - } - } else { - // 1. 免费券,status = 1,成功 - // 2. 有价券,status = 2,取消支付 - if(status.equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())) { - wxPayOrderService.handlePayOrderStatusUpdate(payOrder, 1); - } else if (status.equals(EnumPayStatus.PAY_STATUS_FAIL.getCode())) { - wxPayOrderService.handlePayOrderStatusUpdate(payOrder, 2); - } - } - return new ResultData(Result.SUCCESS, "支付状态更新成功"); - } catch (MallinkException e) { - logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } catch (Exception e) { - logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); - } } } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 722697aab..83a5e8bc3 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -46,7 +46,7 @@ public class WxOrderController extends BaseController { @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @PostMapping("save") - public ResultData saveOrderNew(@RequestBody OrderSaveDto orderSaveDto) { + public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { logger.info("OrderSave: " + orderSaveDto); if (orderSaveDto.getCouponChannelId() == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index a391e0635..16d8fe1ec 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -78,7 +78,7 @@ public class WxPayOrderController extends BaseController { @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") - public ResultData updatePayOrderNew(@RequestBody Map paramMap) { + public ResultData updatePayOrder(@RequestBody Map paramMap) { logger.info("/api/pay/updatePayOrder" + paramMap.toString()); String payOrderIdStr = (String) paramMap.get("payOrderId"); String orderIdStr = (String) paramMap.get("orderId"); diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java index a886da88b..25d1c091f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java @@ -19,4 +19,7 @@ public class OrderSaveDto implements Serializable { private String formId; + //被操作人的ID 供A端使用 + private Long userId; + }