Browse Source

新增解约,退款功能,订单展示更改为根据支付时间降序排列,新增退款订单展示和查询,权益领取增加退款用户不能领取判断

master
qyhdd 2 years ago
parent
commit
ed7682093f
  1. 10
      .idea/compiler.xml
  2. 57
      rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPayOrderController.java
  3. 38
      rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPaySigningOrderController.java
  4. 36
      rights-admin-controller/src/main/java/com/cyjd/rights/controller/RefundOrderController.java
  5. 28
      rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
  6. 21
      rights-entity/src/main/java/com/cyjd/rights/dto/AliPayRefundDto.java
  7. 20
      rights-entity/src/main/java/com/cyjd/rights/dto/AliPayUnSignOrderDto.java
  8. 42
      rights-entity/src/main/java/com/cyjd/rights/dto/RefundOrderDto.java
  9. 39
      rights-entity/src/main/java/com/cyjd/rights/entity/RefundOrderEntity.java
  10. 2
      rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java
  11. 2
      rights-entity/src/main/java/com/cyjd/rights/utils/AlipayRequestBuilderUtil.java
  12. 26
      rights-entity/src/main/java/com/cyjd/rights/utils/OrderUtil.java
  13. 13
      rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java
  14. 13
      rights-interface/src/main/java/com/cyjd/rights/business/service/RefundOrderService.java
  15. 12
      rights-server/src/main/java/com/cyjd/rights/business/mapper/RefundOrderMapper.java
  16. 31
      rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java
  17. 31
      rights-server/src/main/java/com/cyjd/rights/business/service/impl/RefundOrderServiceImpl.java
  18. 13
      rights-server/src/main/java/com/cyjd/rights/business/service/impl/YunmeiServiceImpl.java
  19. 1
      rights-server/src/main/resources/mapper/business/AliPayOrderMapper.xml
  20. 1
      rights-server/src/main/resources/mapper/business/AliPaySigningOrderMapper.xml
  21. 33
      rights-server/src/main/resources/mapper/business/RefundOrderMapper.xml
  22. 1
      rights-server/src/main/resources/mapper/business/RightsOrderMapper.xml

10
.idea/compiler.xml

@ -2,6 +2,7 @@
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<annotationProcessing> <annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true"> <profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" /> <sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
@ -14,4 +15,13 @@
</profile> </profile>
</annotationProcessing> </annotationProcessing>
</component> </component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="rights-admin-controller" options="-parameters" />
<module name="rights-client-controller" options="-parameters" />
<module name="rights-entity" options="-parameters" />
<module name="rights-interface" options="-parameters" />
<module name="rights-server" options="-parameters" />
</option>
</component>
</project> </project>

57
rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPayOrderController.java

@ -1,8 +1,18 @@
package com.cyjd.rights.controller; 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.baomidou.mybatisplus.core.metadata.IPage;
import com.cyjd.rights.beans.R;
import com.cyjd.rights.business.service.AliPayOrderService; 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.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.cyjd.rights.vo.AliPayOrderVo;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@Api(value = "支付宝支付订单接口",tags = "支付宝支付订单接口") @Api(value = "支付宝支付订单接口",tags = "支付宝支付订单接口")
@RestController @RestController
@RequestMapping("/rights/aliPayOrder") @RequestMapping("/rights/aliPayOrder")
@ -23,6 +35,13 @@ import org.springframework.web.bind.annotation.RestController;
public class AliPayOrderController { public class AliPayOrderController {
@Autowired @Autowired
private AliPayOrderService aliPayOrderService; private AliPayOrderService aliPayOrderService;
@Autowired
private AliPayService aliPayService;
@Autowired
private RefundOrderService refundOrderService;
@ApiOperation(value="查看用户支付记录分页") @ApiOperation(value="查看用户支付记录分页")
@PostMapping(value = "/page") @PostMapping(value = "/page")
public IPage<AliPayOrderVo> pageOrder(@Validated @RequestBody @ApiParam("用户支付订单对象") AliPayInOrderDto dto){ public IPage<AliPayOrderVo> 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<AliPayOrderEntity> 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);
}
} }

38
rights-admin-controller/src/main/java/com/cyjd/rights/controller/AliPaySigningOrderController.java

@ -1,9 +1,16 @@
package com.cyjd.rights.controller; 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.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.business.service.AliPaySigningOrderService;
import com.cyjd.rights.dto.AliPaySignOrderDto; 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.AliPaySigningOrderVo;
import com.cyjd.rights.vo.AliPayUnSignReq;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -16,6 +23,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@Api(value = "支付宝签约订单接口", tags = "支付宝签约订单接口") @Api(value = "支付宝签约订单接口", tags = "支付宝签约订单接口")
@RestController @RestController
@RequestMapping("/rights/aliPaySigningOrder") @RequestMapping("/rights/aliPaySigningOrder")
@ -23,6 +32,10 @@ import org.springframework.web.bind.annotation.RestController;
public class AliPaySigningOrderController { public class AliPaySigningOrderController {
@Autowired @Autowired
private AliPaySigningOrderService aliPaySigningOrderService; private AliPaySigningOrderService aliPaySigningOrderService;
@Autowired
private AliPayService aliPayService;
@ApiOperation(value = "查看用户签约记录分页") @ApiOperation(value = "查看用户签约记录分页")
@PostMapping(value = "/page") @PostMapping(value = "/page")
public IPage<AliPaySigningOrderVo> pageOrder(@Validated @RequestBody @ApiParam("用户签约对象") AliPaySignOrderDto dto) { public IPage<AliPaySigningOrderVo> pageOrder(@Validated @RequestBody @ApiParam("用户签约对象") AliPaySignOrderDto dto) {
@ -31,4 +44,29 @@ public class AliPaySigningOrderController {
return page; 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<AliPaySigningOrderEntity> 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();
}
} }

36
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<RefundOrderEntity> pageOrder(@Validated @RequestBody @ApiParam("用户支付退款对象") RefundOrderDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
IPage<RefundOrderEntity> page = refundOrderService.getPageOrder(dto);
return page;
}
}

28
rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java

@ -1,8 +1,11 @@
package com.cyjd.rights.controller; package com.cyjd.rights.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*; import com.alipay.api.*;
import com.alipay.api.internal.util.AlipaySignature; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyjd.rights.beans.AliPayProperties; import com.cyjd.rights.beans.AliPayProperties;
import com.cyjd.rights.beans.R; 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 * * ?") //@Scheduled(cron = "0 0 8,20 * * ?")

21
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;
}

20
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;
}

42
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;
}

39
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;
}

2
rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java

@ -9,7 +9,7 @@ import java.util.Arrays;
public enum AliPayEnum { public enum AliPayEnum {
CJYD1("cyjd1","2021003135690045"),CJYD2("cyjd2","2021004109660018"), CJYD1("cyjd1","2021003135690045"),CJYD2("cyjd2","2021004109660018"),
CYJD3("cyjd3","2021004110626111"); CYJD3("cyjd3","2021004110626111"),ZX1("zx1","2021004111695300");
private String accountName; private String accountName;

2
rights-entity/src/main/java/com/cyjd/rights/utils/AlipayRequestBuilderUtil.java

@ -125,7 +125,7 @@ public class AlipayRequestBuilderUtil {
AlipayUserAgreementUnsignRequest request = new AlipayUserAgreementUnsignRequest(); AlipayUserAgreementUnsignRequest request = new AlipayUserAgreementUnsignRequest();
AliPayUnSignContentReq aliPayUnSignContentReq = EntityConvertUtil.convertBean(aliPayUnSignReq, AliPayUnSignContentReq.class); AliPayUnSignContentReq aliPayUnSignContentReq = EntityConvertUtil.convertBean(aliPayUnSignReq, AliPayUnSignContentReq.class);
aliPayUnSignContentReq.setPersonalProductCode(AliPayConstant.CYCLE_PAY_AUTH_P); aliPayUnSignContentReq.setPersonalProductCode(AliPayConstant.CYCLE_PAY_AUTH_P);
aliPayUnSignContentReq.setSignScene(AliPayConstant.CYCLE_SIGN_SCENE); aliPayUnSignContentReq.setSignScene(AliPayConstant.INDUSTRY_DEFAULT_SCENE);
request.setBizContent(GSON.toJson(aliPayUnSignContentReq)); request.setBizContent(GSON.toJson(aliPayUnSignContentReq));
return request; return request;
} }

26
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; 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;
}
} }

13
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.CertAlipayRequest;
import com.alipay.api.response.AlipayTradeCancelResponse; import com.alipay.api.response.*;
import com.alipay.api.response.AlipayTradePayResponse; import com.cyjd.rights.dto.AliPayRefundDto;
import com.alipay.api.response.AlipayUserAgreementExecutionplanModifyResponse;
import com.alipay.api.response.AlipayUserAgreementUnsignResponse;
import com.cyjd.rights.entity.AliPaySigningOrderEntity; import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.vo.*; import com.cyjd.rights.vo.*;
@ -65,5 +63,12 @@ public interface AliPayService {
CertAlipayRequest init(String aliPayAccountName); CertAlipayRequest init(String aliPayAccountName);
/**
* 退款
* @param aliPayRefundDto
* @param outRequestNo
* @return
*/
AlipayTradeRefundResponse aliPayRefund(AliPayRefundDto aliPayRefundDto,String outRequestNo);
} }

13
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<RefundOrderEntity> {
IPage<RefundOrderEntity> getPageOrder(RefundOrderDto dto);
}

12
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<RefundOrderEntity> {
List<RefundOrderEntity> getPageOrder(RefundOrderDto dto);
}

31
rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java

@ -1,5 +1,6 @@
package com.cyjd.rights.business.service.impl; package com.cyjd.rights.business.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*; import com.alipay.api.*;
import com.alipay.api.request.*; import com.alipay.api.request.*;
import com.alipay.api.response.*; 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.AliPayOrderService;
import com.cyjd.rights.business.service.AliPayService; import com.cyjd.rights.business.service.AliPayService;
import com.cyjd.rights.constant.AliPayConstant; import com.cyjd.rights.constant.AliPayConstant;
import com.cyjd.rights.dto.AliPayRefundDto;
import com.cyjd.rights.entity.AliAccountEntity; import com.cyjd.rights.entity.AliAccountEntity;
import com.cyjd.rights.entity.AliPayOrderEntity; import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.entity.AliPaySigningOrderEntity; import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.utils.AlipayRequestBuilderUtil; import com.cyjd.rights.utils.AlipayRequestBuilderUtil;
import com.cyjd.rights.utils.OrderUtil;
import com.cyjd.rights.vo.*; import com.cyjd.rights.vo.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -251,7 +254,7 @@ public class AliPayServiceImpl implements AliPayService {
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayUserAgreementUnsignRequest request = alipayRequestBuilderUtil.buildAlipayUserAgreementUnsignRequest(aliPayUnSignReq); AlipayUserAgreementUnsignRequest request = alipayRequestBuilderUtil.buildAlipayUserAgreementUnsignRequest(aliPayUnSignReq);
//log.info("签约号{}:周期扣款-解除签约入参:{}", aliPayUnSignReq.getExternalAgreementNo(), request.getBizContent()); //log.info("签约号{}:周期扣款-解除签约入参:{}", aliPayUnSignReq.getExternalAgreementNo(), request.getBizContent());
AlipayUserAgreementUnsignResponse response = alipayClient.execute(request); AlipayUserAgreementUnsignResponse response = alipayClient.certificateExecute(request);
if (response.isSuccess()) { if (response.isSuccess()) {
//log.info("用户内部系统签约号{}:周期扣款-解除签约,调用成功", aliPayUnSignReq.getExternalAgreementNo()); //log.info("用户内部系统签约号{}:周期扣款-解除签约,调用成功", aliPayUnSignReq.getExternalAgreementNo());
return response; return response;
@ -289,5 +292,31 @@ public class AliPayServiceImpl implements AliPayService {
return certAlipayRequest; 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;
}
}
} }

31
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<RefundOrderMapper, RefundOrderEntity> implements RefundOrderService {
@Resource
private RefundOrderMapper refundOrderMapper;
@Override
public IPage<RefundOrderEntity> getPageOrder(RefundOrderDto dto) {
PageHelper.startPage(dto.getPageNum(),dto.getPageSize());
List<RefundOrderEntity> pageOrder = refundOrderMapper.getPageOrder(dto);
IPage<RefundOrderEntity> page=new Page<>(dto.getPageNum(),dto.getPageSize(),new PageInfo(pageOrder).getTotal());
page.setRecords(pageOrder);
return page;
}
}

13
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.dto.OrderNotifyDto;
import com.cyjd.rights.entity.AliPayOrderEntity; import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.entity.AliPaySigningOrderEntity; import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.entity.RefundOrderEntity;
import com.cyjd.rights.entity.RightsOrderEntity; import com.cyjd.rights.entity.RightsOrderEntity;
import com.cyjd.rights.enums.YunmeiCallbackEnum; import com.cyjd.rights.enums.YunmeiCallbackEnum;
import com.cyjd.rights.enums.YunmeiEnum; import com.cyjd.rights.enums.YunmeiEnum;
@ -45,6 +46,9 @@ public class YunmeiServiceImpl implements YunmeiService {
@Autowired @Autowired
private RightsOrderService rightsOrderService; private RightsOrderService rightsOrderService;
@Autowired
private RefundOrderServiceImpl refundOrderService;
@Override @Override
public JSONArray getProductList() { public JSONArray getProductList() {
long timeMillis = System.currentTimeMillis(); long timeMillis = System.currentTimeMillis();
@ -181,6 +185,15 @@ public class YunmeiServiceImpl implements YunmeiService {
JSONObject resJSON = new JSONObject(); JSONObject resJSON = new JSONObject();
String code = "10026"; String code = "10026";
String reason = "暂无领取资格"; String reason = "暂无领取资格";
//判断用户是否退订
RefundOrderEntity refundOrder = refundOrderService.getOne(new QueryWrapper<RefundOrderEntity>().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<AliPayOrderEntity>() AliPayOrderEntity aliPayOrderEntity = aliPayOrderService.getOne(new QueryWrapper<AliPayOrderEntity>()
.eq("mobile", mobile).eq("status", 1) .eq("mobile", mobile).eq("status", 1)
.select("mobile,order_time").orderByDesc("order_time")); .select("mobile,order_time").orderByDesc("order_time"));

1
rights-server/src/main/resources/mapper/business/AliPayOrderMapper.xml

@ -29,6 +29,7 @@
and order_time &lt; #{endTime} and order_time &lt; #{endTime}
</if> </if>
</where> </where>
order by order_time desc
</select> </select>
<select id="test"></select> <select id="test"></select>
</mapper> </mapper>

1
rights-server/src/main/resources/mapper/business/AliPaySigningOrderMapper.xml

@ -35,5 +35,6 @@
and next_pay_time &lt; #{endSearchNextPayTime} and next_pay_time &lt; #{endSearchNextPayTime}
</if> </if>
</where> </where>
order by order_time desc
</select> </select>
</mapper> </mapper>

33
rights-server/src/main/resources/mapper/business/RefundOrderMapper.xml

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cyjd.rights.business.mapper.AliPayOrderMapper">
<select id="getPageOrder" resultType="com.cyjd.rights.entity.RefundOrderEntity">
select
id,mobile,refund_time,status,out_trade_no,out_request_no,refund_price,link_id
from tb_refund_order
<where>
1=1
<if test="outTradeNo!=null and outTradeNo!=''">
and out_trade_no = #{outTradeNo}
</if>
<if test="linkId!=null and linkId!=''">
and link_id = #{linkId}
</if>
<if test="outRequestNo!=null and outRequestNo!=''">
and out_request_no = #{outRequestNo}
</if>
<if test="status!=null and status!=''">
and status = #{status}
</if>
<if test="mobile!=null and mobile!=''">
and mobile = #{mobile}
</if>
<if test="beginTime!=null">
and refund_time &gt; #{beginTime}
</if>
<if test="endTime!=null">
and refund_time &lt; #{endTime}
</if>
</where>
</select>
</mapper>

1
rights-server/src/main/resources/mapper/business/RightsOrderMapper.xml

@ -23,5 +23,6 @@
and order_time &lt; #{endTime} and order_time &lt; #{endTime}
</if> </if>
</where> </where>
order by order_time desc
</select> </select>
</mapper> </mapper>
Loading…
Cancel
Save