diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index c9e76b9..6a5d4dd 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -2,6 +2,7 @@
+
@@ -14,4 +15,13 @@
+
+
+
\ No newline at end of file
diff --git a/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPayOrderController.java b/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPayOrderController.java
index a291fd8..1708819 100644
--- a/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPayOrderController.java
+++ b/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPayOrderController.java
@@ -1,8 +1,18 @@
package com.cyjd.rights.controller;
+import com.alipay.api.response.AlipayTradeRefundResponse;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.cyjd.rights.beans.R;
import com.cyjd.rights.business.service.AliPayOrderService;
+import com.cyjd.rights.business.service.AliPayService;
+import com.cyjd.rights.business.service.RefundOrderService;
import com.cyjd.rights.dto.AliPayInOrderDto;
+import com.cyjd.rights.dto.AliPayRefundDto;
+import com.cyjd.rights.entity.AliPayOrderEntity;
+import com.cyjd.rights.entity.RefundOrderEntity;
+import com.cyjd.rights.entity.RightsOrderEntity;
+import com.cyjd.rights.utils.OrderUtil;
import com.cyjd.rights.vo.AliPayOrderVo;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
@@ -16,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.time.LocalDateTime;
+
@Api(value = "支付宝支付订单接口",tags = "支付宝支付订单接口")
@RestController
@RequestMapping("/rights/aliPayOrder")
@@ -23,6 +35,13 @@ import org.springframework.web.bind.annotation.RestController;
public class AliPayOrderController {
@Autowired
private AliPayOrderService aliPayOrderService;
+
+ @Autowired
+ private AliPayService aliPayService;
+
+ @Autowired
+ private RefundOrderService refundOrderService;
+
@ApiOperation(value="查看用户支付记录分页")
@PostMapping(value = "/page")
public IPage pageOrder(@Validated @RequestBody @ApiParam("用户支付订单对象") AliPayInOrderDto dto){
@@ -32,4 +51,42 @@ public class AliPayOrderController {
}
+ @ApiOperation(value = "支付退款", notes = "支付退款")
+ @PostMapping("/aliPayRefund")
+ public R aliPayRefund(@RequestBody AliPayRefundDto aliPayRefundDto) {
+ //AliPayEnum aliPayEnum = AliPayEnum.getMessageEnum(inMap.get("app_id"));
+ String outRequestNo = OrderUtil.getItemID(9);
+ AlipayTradeRefundResponse response = aliPayService.aliPayRefund(aliPayRefundDto, outRequestNo);
+ if (response==null){
+ return R.error();
+ }
+ //保存
+ int status=0;
+ LocalDateTime now = LocalDateTime.now();
+ RefundOrderEntity refundOrderEntity = new RefundOrderEntity();
+ refundOrderEntity.setRefundPrice(aliPayRefundDto.getRefundAmount().toString());
+ refundOrderEntity.setRefundTime(now);
+ refundOrderEntity.setMobile(aliPayRefundDto.getMobile());
+ refundOrderEntity.setLinkId(refundOrderEntity.getLinkId());
+ refundOrderEntity.setOutTradeNo(aliPayRefundDto.getOutTradeNo());
+ refundOrderEntity.setOutRequestNo(outRequestNo);
+
+ if (response.isSuccess()) {
+ //修改支付宝退订时间
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("other_order_id", aliPayRefundDto.getOutTradeNo());
+ updateWrapper.eq("mobile", aliPayRefundDto.getMobile());
+ updateWrapper.set("unsub_time", now);
+ aliPayOrderService.update(new AliPayOrderEntity(), updateWrapper);
+ log.info("手机号:"+ aliPayRefundDto.getMobile()+"商户订单号:"+aliPayRefundDto.getOutTradeNo()+"调用成功");
+ status=1;
+ } else {
+ log.info("手机号:"+ aliPayRefundDto.getMobile()+"商户订单号:"+aliPayRefundDto.getOutTradeNo()+"调用成功");
+ }
+ refundOrderEntity.setStatus(status);
+ refundOrderService.save(refundOrderEntity);
+ return R.ok().put("status",status);
+ }
+
+
}
diff --git a/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPaySigningOrderController.java b/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPaySigningOrderController.java
index 04f2f3e..94eb332 100644
--- a/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPaySigningOrderController.java
+++ b/rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPaySigningOrderController.java
@@ -1,9 +1,16 @@
package com.cyjd.rights.controller;
+import com.alipay.api.response.AlipayUserAgreementUnsignResponse;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.cyjd.rights.beans.R;
+import com.cyjd.rights.business.service.AliPayService;
import com.cyjd.rights.business.service.AliPaySigningOrderService;
import com.cyjd.rights.dto.AliPaySignOrderDto;
+import com.cyjd.rights.dto.AliPayUnSignOrderDto;
+import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.vo.AliPaySigningOrderVo;
+import com.cyjd.rights.vo.AliPayUnSignReq;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -16,19 +23,50 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-@Api(value = "支付宝签约订单接口",tags = "支付宝签约订单接口")
+import java.time.LocalDateTime;
+
+@Api(value = "支付宝签约订单接口", tags = "支付宝签约订单接口")
@RestController
@RequestMapping("/rights/aliPaySigningOrder")
@Slf4j
public class AliPaySigningOrderController {
@Autowired
private AliPaySigningOrderService aliPaySigningOrderService;
- @ApiOperation(value="查看用户签约记录分页")
+
+ @Autowired
+ private AliPayService aliPayService;
+
+ @ApiOperation(value = "查看用户签约记录分页")
@PostMapping(value = "/page")
- public IPage pageOrder(@Validated @RequestBody @ApiParam("用户签约对象") AliPaySignOrderDto dto){
+ public IPage pageOrder(@Validated @RequestBody @ApiParam("用户签约对象") AliPaySignOrderDto dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
IPage page = aliPaySigningOrderService.getPageOrder(dto);
return page;
}
+ @ApiOperation(value = "用户解约")
+ @PostMapping(value = "/aliPayUnSign")
+ public R pageOrder(@Validated @RequestBody @ApiParam("用户解约对象") AliPayUnSignOrderDto dto) {
+ AliPayUnSignReq aliPayUnSignReq = new AliPayUnSignReq();
+ aliPayUnSignReq.setExternalAgreementNo(dto.getOrderId());
+ AlipayUserAgreementUnsignResponse alipayUserAgreementUnsignResponse = aliPayService.aliPayUnSign(aliPayUnSignReq, dto.getAccountName());
+ if (alipayUserAgreementUnsignResponse == null) {
+ return R.error();
+ }
+
+ if (alipayUserAgreementUnsignResponse.isSuccess()) {
+ //修改订单解约时间
+ LocalDateTime now = LocalDateTime.now();
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("order_id", dto.getOrderId());
+ updateWrapper.eq("mobile", dto.getMobile());
+ updateWrapper.set("unsub_time", now);
+ aliPaySigningOrderService.update(new AliPaySigningOrderEntity(), updateWrapper);
+ log.info("手机号:"+ dto.getMobile()+"订单号:"+dto.getOrderId()+"调用成功");
+ return R.ok();
+ }
+ log.info("手机号:"+ dto.getMobile()+"订单号:"+dto.getOrderId()+"调用失败");
+ return R.error();
+ }
+
}
diff --git a/rights-admin-controller/src/main/java/com/cyjd/rights/controller/RefundOrderController.java b/rights-admin-controller/src/main/java/com/cyjd/rights/controller/RefundOrderController.java
new file mode 100644
index 0000000..323a13c
--- /dev/null
+++ b/rights-admin-controller/src/main/java/com/cyjd/rights/controller/RefundOrderController.java
@@ -0,0 +1,36 @@
+package com.cyjd.rights.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.cyjd.rights.business.service.RefundOrderService;
+import com.cyjd.rights.dto.AliPayInOrderDto;
+import com.cyjd.rights.dto.RefundOrderDto;
+import com.cyjd.rights.entity.RefundOrderEntity;
+import com.cyjd.rights.vo.AliPayOrderVo;
+import com.github.pagehelper.PageHelper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(value = "退款类接口", tags = "退款类接口")
+@RestController
+@RequestMapping("/rights/refund")
+@Slf4j
+public class RefundOrderController {
+ @Autowired
+ private RefundOrderService refundOrderService;
+ @ApiOperation(value="查看用户退款记录分页")
+ @PostMapping(value = "/page")
+ public IPage pageOrder(@Validated @RequestBody @ApiParam("用户支付退款对象") RefundOrderDto dto){
+ PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
+ IPage page = refundOrderService.getPageOrder(dto);
+ return page;
+ }
+
+}
diff --git a/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java b/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
index 6254d18..cce0f91 100644
--- a/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
+++ b/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
@@ -1,8 +1,11 @@
package com.cyjd.rights.controller;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*;
import com.alipay.api.internal.util.AlipaySignature;
+import com.alipay.api.request.AlipayTradeRefundRequest;
+import com.alipay.api.response.AlipayTradeRefundResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyjd.rights.beans.AliPayProperties;
import com.cyjd.rights.beans.R;
@@ -202,31 +205,6 @@ public class AliPayController {
}
- @ApiOperation(value = "支付退款", notes = "支付退款")
- @PostMapping("/alipayRefund")
- public void alipayRefund() throws AlipayApiException {
-// AliPayEnum aliPayEnum = AliPayEnum.getMessageEnum(inMap.get("app_id"));
-// CertAlipayRequest certAlipayRequest = aliPayService.init(aliPayEnum.getAccountName());
-// AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
-// AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
-// JSONObject bizContent = new JSONObject();
-// bizContent.put("out_trade_no", "Y2023080420524534021000");
-// bizContent.put("refund_amount", 0.1);
-// bizContent.put("out_request_no", "HZ01RF001");
-// //// 返回参数选项,按需传入
-// //JSONArray queryOptions = new JSONArray();
-// //queryOptions.add("refund_detail_item_list");
-// //bizContent.put("query_options", queryOptions);
-//
-// request.setBizContent(bizContent.toString());
-// AlipayTradeRefundResponse response = alipayClient.certificateExecute(request);
-// if (response.isSuccess()) {
-// System.out.println("调用成功");
-// } else {
-// System.out.println("调用失败");
-// }
-
- }
//@Scheduled(cron = "0 0 8,20 * * ?")
diff --git a/rights-entity/src/main/java/com/cyjd/rights/dto/AliPayRefundDto.java b/rights-entity/src/main/java/com/cyjd/rights/dto/AliPayRefundDto.java
new file mode 100644
index 0000000..863ed5c
--- /dev/null
+++ b/rights-entity/src/main/java/com/cyjd/rights/dto/AliPayRefundDto.java
@@ -0,0 +1,21 @@
+package com.cyjd.rights.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "用户退款请求")
+@Data
+public class AliPayRefundDto {
+ @ApiModelProperty(value = "账户名称")
+ private String aliAccountName;
+
+ @ApiModelProperty("退订金额")
+ private Float refundAmount;
+
+ @ApiModelProperty("商户订单号(对应支付表里的other_order_id)")
+ private String outTradeNo;
+
+ @ApiModelProperty("用户手机号")
+ private String mobile;
+}
diff --git a/rights-entity/src/main/java/com/cyjd/rights/dto/AliPayUnSignOrderDto.java b/rights-entity/src/main/java/com/cyjd/rights/dto/AliPayUnSignOrderDto.java
new file mode 100644
index 0000000..9b4ccdb
--- /dev/null
+++ b/rights-entity/src/main/java/com/cyjd/rights/dto/AliPayUnSignOrderDto.java
@@ -0,0 +1,20 @@
+package com.cyjd.rights.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "支付解约请求")
+@Data
+public class AliPayUnSignOrderDto{
+
+ @ApiModelProperty(value = "对应签约表的orderId")
+ private String orderId;
+
+
+ @ApiModelProperty(value = "手机号")
+ private String mobile;
+
+ @ApiModelProperty(value = "对应的账户名字")
+ private String accountName;
+}
diff --git a/rights-entity/src/main/java/com/cyjd/rights/dto/RefundOrderDto.java b/rights-entity/src/main/java/com/cyjd/rights/dto/RefundOrderDto.java
new file mode 100644
index 0000000..33fbd3a
--- /dev/null
+++ b/rights-entity/src/main/java/com/cyjd/rights/dto/RefundOrderDto.java
@@ -0,0 +1,42 @@
+package com.cyjd.rights.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@ApiModel(value = "退款请求")
+@Data
+public class RefundOrderDto extends BasePageDto{
+
+ @ApiModelProperty(value = "商户订单号 对应支付表的other_order_id")
+ private String outTradeNo;
+
+
+ @ApiModelProperty(value = "链接Id")
+ private String linkId;
+
+ @ApiModelProperty(value = "退款订单号")
+ private String outRequestNo;
+
+ @ApiModelProperty(value = "手机号")
+ private String mobile;
+ /**
+ * 0失败 1成功
+ */
+ @ApiModelProperty(value = "订单状态")
+ private String status;
+
+ @ApiModelProperty(value = "查询开始时间")
+ @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime beginTime;
+
+ @ApiModelProperty(value = "查询结束时间")
+ @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+
+}
diff --git a/rights-entity/src/main/java/com/cyjd/rights/entity/RefundOrderEntity.java b/rights-entity/src/main/java/com/cyjd/rights/entity/RefundOrderEntity.java
new file mode 100644
index 0000000..8d73e60
--- /dev/null
+++ b/rights-entity/src/main/java/com/cyjd/rights/entity/RefundOrderEntity.java
@@ -0,0 +1,39 @@
+package com.cyjd.rights.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("tb_refund_order")
+public class RefundOrderEntity {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ //手机号
+ private String mobile;
+
+ //退款时间
+ private LocalDateTime refundTime;
+
+ //商户订单号 对应支付表的other_order_id
+ private String outTradeNo;
+
+ //退款订单号,传了这个支付宝会保证同样的退款请求号多次请求只会退一次
+ private String outRequestNo;
+
+ //退款金额
+ private String refundPrice;
+
+ //链接Id
+ private Integer linkId;
+
+ //0失败 1成功
+ private Integer status;
+}
diff --git a/rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java b/rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java
index a02d3c5..e7411fb 100644
--- a/rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java
+++ b/rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java
@@ -9,7 +9,7 @@ import java.util.Arrays;
public enum AliPayEnum {
CJYD1("cyjd1","2021003135690045"),CJYD2("cyjd2","2021004109660018"),
- CYJD3("cyjd3","2021004110626111");
+ CYJD3("cyjd3","2021004110626111"),ZX1("zx1","2021004111695300");
private String accountName;
diff --git a/rights-entity/src/main/java/com/cyjd/rights/utils/AlipayRequestBuilderUtil.java b/rights-entity/src/main/java/com/cyjd/rights/utils/AlipayRequestBuilderUtil.java
index 3cce3fd..c41ef33 100644
--- a/rights-entity/src/main/java/com/cyjd/rights/utils/AlipayRequestBuilderUtil.java
+++ b/rights-entity/src/main/java/com/cyjd/rights/utils/AlipayRequestBuilderUtil.java
@@ -125,7 +125,7 @@ public class AlipayRequestBuilderUtil {
AlipayUserAgreementUnsignRequest request = new AlipayUserAgreementUnsignRequest();
AliPayUnSignContentReq aliPayUnSignContentReq = EntityConvertUtil.convertBean(aliPayUnSignReq, AliPayUnSignContentReq.class);
aliPayUnSignContentReq.setPersonalProductCode(AliPayConstant.CYCLE_PAY_AUTH_P);
- aliPayUnSignContentReq.setSignScene(AliPayConstant.CYCLE_SIGN_SCENE);
+ aliPayUnSignContentReq.setSignScene(AliPayConstant.INDUSTRY_DEFAULT_SCENE);
request.setBizContent(GSON.toJson(aliPayUnSignContentReq));
return request;
}
diff --git a/rights-entity/src/main/java/com/cyjd/rights/utils/OrderUtil.java b/rights-entity/src/main/java/com/cyjd/rights/utils/OrderUtil.java
index b34a404..c5d5c2e 100644
--- a/rights-entity/src/main/java/com/cyjd/rights/utils/OrderUtil.java
+++ b/rights-entity/src/main/java/com/cyjd/rights/utils/OrderUtil.java
@@ -25,4 +25,30 @@ public class OrderUtil {
return "Y" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + new Random().nextInt(8999) + 1000;
}
+
+ /**
+ * 生成随机数当作getItemID 退订单号
+ * n : 需要的长度
+ * @return
+ */
+ public static String getItemID( int n )
+ {
+ String val = "";
+ Random random = new Random();
+ for ( int i = 0; i < n; i++ )
+ {
+ String str = random.nextInt( 2 ) % 2 == 0 ? "num" : "char";
+ if ( "char".equalsIgnoreCase( str ) )
+ { // 产生字母
+ int nextInt = random.nextInt( 2 ) % 2 == 0 ? 65 : 97;
+ // System.out.println(nextInt + "!!!!"); 1,0,1,1,1,0,0
+ val += (char) ( nextInt + random.nextInt( 26 ) );
+ }
+ else if ( "num".equalsIgnoreCase( str ) )
+ { // 产生数字
+ val += String.valueOf( random.nextInt( 10 ) );
+ }
+ }
+ return val;
+ }
}
diff --git a/rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java b/rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java
index 2ba8e02..184b32f 100644
--- a/rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java
+++ b/rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java
@@ -2,10 +2,8 @@ package com.cyjd.rights.business.service;
import com.alipay.api.CertAlipayRequest;
-import com.alipay.api.response.AlipayTradeCancelResponse;
-import com.alipay.api.response.AlipayTradePayResponse;
-import com.alipay.api.response.AlipayUserAgreementExecutionplanModifyResponse;
-import com.alipay.api.response.AlipayUserAgreementUnsignResponse;
+import com.alipay.api.response.*;
+import com.cyjd.rights.dto.AliPayRefundDto;
import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.vo.*;
@@ -65,5 +63,12 @@ public interface AliPayService {
CertAlipayRequest init(String aliPayAccountName);
+ /**
+ * 退款
+ * @param aliPayRefundDto
+ * @param outRequestNo
+ * @return
+ */
+ AlipayTradeRefundResponse aliPayRefund(AliPayRefundDto aliPayRefundDto,String outRequestNo);
}
diff --git a/rights-interface/src/main/java/com/cyjd/rights/business/service/RefundOrderService.java b/rights-interface/src/main/java/com/cyjd/rights/business/service/RefundOrderService.java
new file mode 100644
index 0000000..9f87d3f
--- /dev/null
+++ b/rights-interface/src/main/java/com/cyjd/rights/business/service/RefundOrderService.java
@@ -0,0 +1,13 @@
+package com.cyjd.rights.business.service;
+
+import com.alipay.api.CertAlipayRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cyjd.rights.dto.RefundOrderDto;
+import com.cyjd.rights.entity.AliAccountEntity;
+import com.cyjd.rights.entity.RefundOrderEntity;
+
+public interface RefundOrderService extends IService {
+
+ IPage getPageOrder(RefundOrderDto dto);
+}
diff --git a/rights-server/src/main/java/com/cyjd/rights/business/mapper/RefundOrderMapper.java b/rights-server/src/main/java/com/cyjd/rights/business/mapper/RefundOrderMapper.java
new file mode 100644
index 0000000..879256f
--- /dev/null
+++ b/rights-server/src/main/java/com/cyjd/rights/business/mapper/RefundOrderMapper.java
@@ -0,0 +1,12 @@
+package com.cyjd.rights.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyjd.rights.dto.RefundOrderDto;
+import com.cyjd.rights.entity.RefundOrderEntity;
+
+import java.util.List;
+
+public interface RefundOrderMapper extends BaseMapper {
+
+ List getPageOrder(RefundOrderDto dto);
+}
diff --git a/rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java b/rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java
index c908953..eb7d55a 100644
--- a/rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java
+++ b/rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java
@@ -1,5 +1,6 @@
package com.cyjd.rights.business.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*;
import com.alipay.api.request.*;
import com.alipay.api.response.*;
@@ -9,10 +10,12 @@ import com.cyjd.rights.business.service.AliAccountService;
import com.cyjd.rights.business.service.AliPayOrderService;
import com.cyjd.rights.business.service.AliPayService;
import com.cyjd.rights.constant.AliPayConstant;
+import com.cyjd.rights.dto.AliPayRefundDto;
import com.cyjd.rights.entity.AliAccountEntity;
import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.utils.AlipayRequestBuilderUtil;
+import com.cyjd.rights.utils.OrderUtil;
import com.cyjd.rights.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -251,7 +254,7 @@ public class AliPayServiceImpl implements AliPayService {
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayUserAgreementUnsignRequest request = alipayRequestBuilderUtil.buildAlipayUserAgreementUnsignRequest(aliPayUnSignReq);
//log.info("签约号{}:周期扣款-解除签约入参:{}", aliPayUnSignReq.getExternalAgreementNo(), request.getBizContent());
- AlipayUserAgreementUnsignResponse response = alipayClient.execute(request);
+ AlipayUserAgreementUnsignResponse response = alipayClient.certificateExecute(request);
if (response.isSuccess()) {
//log.info("用户内部系统签约号{}:周期扣款-解除签约,调用成功", aliPayUnSignReq.getExternalAgreementNo());
return response;
@@ -289,5 +292,31 @@ public class AliPayServiceImpl implements AliPayService {
return certAlipayRequest;
}
+ @Override
+ public AlipayTradeRefundResponse aliPayRefund(AliPayRefundDto aliPayRefundDto, String outRequestNo) {
+ CertAlipayRequest certAlipayRequest = init(aliPayRefundDto.getAliAccountName());
+ AlipayClient alipayClient = null;
+ AlipayTradeRefundResponse response=null;
+ try {
+ alipayClient = new DefaultAlipayClient(certAlipayRequest);
+ AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
+ JSONObject bizContent = new JSONObject();
+ bizContent.put("out_trade_no", aliPayRefundDto.getOutTradeNo()); //商户订单号
+ bizContent.put("refund_amount", aliPayRefundDto.getRefundAmount());
+ bizContent.put("out_request_no", outRequestNo); //退订单号,传了这个支付宝会保证同样的退款请求号多次请求只会退一次
+ //// 返回参数选项,按需传入
+ //JSONArray queryOptions = new JSONArray();
+ //queryOptions.add("refund_detail_item_list");
+ //bizContent.put("query_options", queryOptions);
+
+ request.setBizContent(bizContent.toString());
+ response= alipayClient.certificateExecute(request);
+ return response;
+ } catch (AlipayApiException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
}
diff --git a/rights-server/src/main/java/com/cyjd/rights/business/service/impl/RefundOrderServiceImpl.java b/rights-server/src/main/java/com/cyjd/rights/business/service/impl/RefundOrderServiceImpl.java
new file mode 100644
index 0000000..cfcf76f
--- /dev/null
+++ b/rights-server/src/main/java/com/cyjd/rights/business/service/impl/RefundOrderServiceImpl.java
@@ -0,0 +1,31 @@
+package com.cyjd.rights.business.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cyjd.rights.business.mapper.RefundOrderMapper;
+import com.cyjd.rights.business.service.RefundOrderService;
+import com.cyjd.rights.dto.RefundOrderDto;
+import com.cyjd.rights.entity.RefundOrderEntity;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.java.Log;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+@Log
+public class RefundOrderServiceImpl extends ServiceImpl implements RefundOrderService {
+ @Resource
+ private RefundOrderMapper refundOrderMapper;
+ @Override
+ public IPage getPageOrder(RefundOrderDto dto) {
+ PageHelper.startPage(dto.getPageNum(),dto.getPageSize());
+ List pageOrder = refundOrderMapper.getPageOrder(dto);
+ IPage page=new Page<>(dto.getPageNum(),dto.getPageSize(),new PageInfo(pageOrder).getTotal());
+ page.setRecords(pageOrder);
+ return page;
+ }
+}
diff --git a/rights-server/src/main/java/com/cyjd/rights/business/service/impl/YunmeiServiceImpl.java b/rights-server/src/main/java/com/cyjd/rights/business/service/impl/YunmeiServiceImpl.java
index 37cfbf6..38b1195 100644
--- a/rights-server/src/main/java/com/cyjd/rights/business/service/impl/YunmeiServiceImpl.java
+++ b/rights-server/src/main/java/com/cyjd/rights/business/service/impl/YunmeiServiceImpl.java
@@ -15,6 +15,7 @@ import com.cyjd.rights.dto.DirectBuyOrderDto;
import com.cyjd.rights.dto.OrderNotifyDto;
import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.entity.AliPaySigningOrderEntity;
+import com.cyjd.rights.entity.RefundOrderEntity;
import com.cyjd.rights.entity.RightsOrderEntity;
import com.cyjd.rights.enums.YunmeiCallbackEnum;
import com.cyjd.rights.enums.YunmeiEnum;
@@ -45,6 +46,9 @@ public class YunmeiServiceImpl implements YunmeiService {
@Autowired
private RightsOrderService rightsOrderService;
+ @Autowired
+ private RefundOrderServiceImpl refundOrderService;
+
@Override
public JSONArray getProductList() {
long timeMillis = System.currentTimeMillis();
@@ -181,6 +185,15 @@ public class YunmeiServiceImpl implements YunmeiService {
JSONObject resJSON = new JSONObject();
String code = "10026";
String reason = "暂无领取资格";
+ //判断用户是否退订
+ RefundOrderEntity refundOrder = refundOrderService.getOne(new QueryWrapper().eq("mobile", mobile));
+ if (refundOrder==null){
+ code = "10027";
+ reason = "黑名单用户或已退款";
+ resJSON.put("code", code);
+ resJSON.put("reason", reason);
+ return resJSON;
+ }
AliPayOrderEntity aliPayOrderEntity = aliPayOrderService.getOne(new QueryWrapper()
.eq("mobile", mobile).eq("status", 1)
.select("mobile,order_time").orderByDesc("order_time"));
diff --git a/rights-server/src/main/resources/mapper/business/AliPayOrderMapper.xml b/rights-server/src/main/resources/mapper/business/AliPayOrderMapper.xml
index 6fc7b0f..958e0ac 100644
--- a/rights-server/src/main/resources/mapper/business/AliPayOrderMapper.xml
+++ b/rights-server/src/main/resources/mapper/business/AliPayOrderMapper.xml
@@ -29,6 +29,7 @@
and order_time < #{endTime}
+ order by order_time desc
\ No newline at end of file
diff --git a/rights-server/src/main/resources/mapper/business/AliPaySigningOrderMapper.xml b/rights-server/src/main/resources/mapper/business/AliPaySigningOrderMapper.xml
index a5e9fe1..f67873b 100644
--- a/rights-server/src/main/resources/mapper/business/AliPaySigningOrderMapper.xml
+++ b/rights-server/src/main/resources/mapper/business/AliPaySigningOrderMapper.xml
@@ -35,5 +35,6 @@
and next_pay_time < #{endSearchNextPayTime}
+ order by order_time desc
\ No newline at end of file
diff --git a/rights-server/src/main/resources/mapper/business/RefundOrderMapper.xml b/rights-server/src/main/resources/mapper/business/RefundOrderMapper.xml
new file mode 100644
index 0000000..7cf3f76
--- /dev/null
+++ b/rights-server/src/main/resources/mapper/business/RefundOrderMapper.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/rights-server/src/main/resources/mapper/business/RightsOrderMapper.xml b/rights-server/src/main/resources/mapper/business/RightsOrderMapper.xml
index 89dd3e2..fd90a0c 100644
--- a/rights-server/src/main/resources/mapper/business/RightsOrderMapper.xml
+++ b/rights-server/src/main/resources/mapper/business/RightsOrderMapper.xml
@@ -23,5 +23,6 @@
and order_time < #{endTime}
+ order by order_time desc
\ No newline at end of file