From bb67aaa08a6a09623528f317aebb3e3d1c9d2002 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Sat, 18 Aug 2018 13:11:34 +0800 Subject: [PATCH] =?UTF-8?q?[c=E7=AB=AF=E9=80=80=E6=AC=BE][=E6=96=B0?= =?UTF-8?q?=E5=A2=9E]:=E6=B7=BB=E5=8A=A0c=E7=AB=AF=E9=80=80=E5=88=B8?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 28 ++++++ .../controller/WxRefundOrderController.java | 94 +++++++++++++++++++ .../impl/WxCouponOrderServiceImpl.java | 24 +++-- .../impl/WxRefundOrderServiceImpl.java | 2 + 4 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 6105daba8..1456ce88a 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -28,6 +28,34 @@ public class WxCouponOrderController extends BaseController { @Autowired private WxCouponOrderService wxCouponOrderService; + @ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("refund") + public ResultData refund(@RequestBody Map paramMap) { + logger.info(paramMap.toString()); + String couponOrderIdStr = paramMap.get("couponOrderId"); + if (StringUtils.isBlank(couponOrderIdStr)) { + logger.error("couponOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空"); + } + Long couponOrderId = 0L; + try { + couponOrderId = Long.valueOf(couponOrderIdStr); + } catch (NumberFormatException e) { + logger.error("couponOrderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); + } + try { + ResultData rd = wxCouponOrderService.refund(couponOrderId, getUser().getId()); + return rd; + } catch (MallinkException e) { + logger.error("退券异常: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("退券异常: " + e.getMessage()); + return new ResultData(ErrorCode.REFUND_ORDER_ERROR, e.getMessage()); + } + } + @ApiOperation("分页列表接口") @GetMapping("list") diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java new file mode 100644 index 000000000..47c7af28f --- /dev/null +++ b/mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java @@ -0,0 +1,94 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxAppinfo; +import com.simple.domain.po.WxCUser; +import com.simple.domain.po.WxMerchantBUser; +import com.simple.domain.po.WxRefundOrder; +import com.simple.enums.EnumPayWay; +import com.simple.exception.MallinkException; +import com.simple.service.WxRefundOrderService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("/api/refund") +public class WxRefundOrderController extends BaseController +{ + private Logger logger = Logger.getLogger(WxRefundOrderController.class); + + @Autowired + private WxRefundOrderService wxRefundOrderService; + + @ApiOperation(value = "发起退款", notes = "{\"orderId\":,\"string\", \"payOrderId\":\"string\"}") + @PostMapping("/create") + public ResultData create(@RequestBody Map paramMap) { + logger.info("/api/refund/create" + paramMap.toString()); + //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + String orderIdStr = paramMap.get("orderId"); + String payOrderIdStr = paramMap.get("payOrderId"); + if (StringUtils.isBlank(orderIdStr)) { + logger.error("orderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + if (StringUtils.isBlank(payOrderIdStr)) { + logger.error("payOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId不能为空"); + } + Long orderId = 0L; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error("orderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); + } + WxRefundOrder refundOrder = new WxRefundOrder(); + refundOrder.setPayOrderNo(payOrderIdStr); + refundOrder.setOrderId(orderId); + + WxCUser cUser = getUser(); + WxAppinfo appinfo = getAppInfo(cUser.getAppId()); + try { + wxRefundOrderService.createRefundOrder(appinfo, refundOrder, EnumPayWay.PAY_WAY_WEAPP); + return new ResultData(); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.REFUND_ORDER_ERROR); + } + } + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder,Integer pageNum, Integer pageSize) { + if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder(); + final PageInfo page = wxRefundOrderService.listAsPage(wxRefundOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData findById(Long id) { + return new ResultData(Result.SUCCESS,"查询成功",wxRefundOrderService.getById(id)); + } + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index a67f1369c..ebbd55b1e 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -125,18 +125,24 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); } - WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); - if(wxMerchantBUser == null){ - logger.error("操作员ID不存在:"+ bUserId); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); - } - WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId()); - if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){ - logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + if(bUserId != wxCouponOrder.getCUserId()) { + // TODO web管理端退款 + // B端用户退款 + WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); + if (wxMerchantBUser == null) { + logger.error("操作员ID不存在:" + bUserId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) { + logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + } else { + logger.info("自己发起退款, userId: " + bUserId); } + if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) { logger.error("已过期: couponOrder-" + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index 8f9cfa15e..ebdf0dcc7 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -257,6 +257,8 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); } + // TODO 检查 是否已核销, 已核销不能退款 + // 创建退款订单 final IdWorker idWorker = IdWorker.get(); Long id = idWorker.nextId();