|
- 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.config.PayProperty;
- import com.simple.domain.po.*;
- import com.simple.enums.EnumPayStatus;
- import com.simple.enums.EnumPayWay;
- import com.simple.exception.MallinkException;
- import com.simple.service.*;
- import io.swagger.annotations.Api;
- 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")
- @Api(description="退款相关接口")
- public class WxRefundOrderController extends BaseController {
- private Logger logger = Logger.getLogger(WxRefundOrderController.class);
-
- @Autowired
- private PayProperty payProperty;
-
- @Autowired
- private WxCouponOrderService wxCouponOrderService;
-
- @Autowired
- private WxOrderService wxOrderService;
-
- @Autowired
- private WxPayOrderService wxPayOrderService;
-
- @Autowired
- private WxRefundOrderService wxRefundOrderService;
-
- @ApiOperation(value = "发起退款", notes = "{\"orderId\":\"string\"}")
- @PostMapping("/create")
- public ResultData create(@RequestBody Map<String, String> paramMap) {
- // couponOrder发起退款
- logger.info("/api/refund/create" + paramMap.toString());
- //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空");
- //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
- String orderIdStr = paramMap.get("orderId");
- if (StringUtils.isBlank(orderIdStr)) {
- logger.error("orderId不能为空: " + paramMap.toString());
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
- }
- Long orderId = 0L;
- try {
- orderId = Long.valueOf(orderIdStr);
- } catch (NumberFormatException e) {
- logger.error("orderId参数不正确: " + paramMap.toString());
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
- }
-
- WxOrder order = null;
- try {
- order = wxOrderService.getById(orderId);
- } catch (Exception e) {
- logger.error("订单不存在: " + orderIdStr);
- return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr);
- }
- if (order == null) {
- logger.error("订单不存在: " + orderIdStr);
- return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr);
- }
- if (order.getPayment() <= 0) {
- logger.error("订单支付金额小于等于0: " + order.toString());
- throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
- }
-
- WxPayOrder payOrderQ = new WxPayOrder();
- payOrderQ.setCUserId(order.getCUserId());
- payOrderQ.setOrderId(orderId);
- payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
-
- WxPayOrder payOrder = null;
-
- try {
- payOrder = wxPayOrderService.getByObj(payOrderQ);
- } catch (Exception e) {
- logger.error("payOrder不存在");
- return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND.getCode(), "支付订单不存在,无法退款");
- }
- if (payOrder == null) {
- logger.error("payOrder不存在");
- return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND.getCode(), "支付订单不存在,无法退款");
- }
-
- WxRefundOrder refundOrderQ = new WxRefundOrder();
- refundOrderQ.setPayOrderNo(String.valueOf(payOrder.getId()));
- refundOrderQ.setOrderId(orderId);
-
- WxMerchantBUser bUser = getUser();
- WxAppinfo appinfo = getAppInfo(bUser.getAppId());
- try {
- wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, refundOrderQ, payOrder, 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<WxRefundOrder> 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));
- }
-
-
- }
|