package com.nova.sankuai.controller.v1.platform;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.nova.sankuai.domain.dto.*;
|
import com.nova.sankuai.domain.entity.AlipayRefundRecord;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.nova.sankuai.domain.entity.AlipayOrderInfo;
|
import com.nova.sankuai.domain.vo.AlipayOrderInfoVO;
|
import com.nova.sankuai.infra.config.CommonException;
|
import com.nova.sankuai.infra.utils.Jsr303Validator;
|
import com.nova.sankuai.infra.utils.ResultJson;
|
import com.nova.sankuai.security.UserDetail;
|
import com.nova.sankuai.service.IAlipayPlatformService;import com.nova.sankuai.service.IVipCardOrderService;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.math.BigDecimal;
|
import java.util.Map;
|
|
@Slf4j
|
@RestController
|
public class AlipayPlatformController {
|
|
private final IAlipayPlatformService alipayPlatformService;
|
private final Jsr303Validator validator;
|
@Resource
|
private IVipCardOrderService vipCardOrderService;
|
|
public AlipayPlatformController(IAlipayPlatformService alipayPlatformService,
|
Jsr303Validator validator) {
|
this.alipayPlatformService = alipayPlatformService;
|
this.validator = validator;
|
}
|
|
@PostMapping(value = "/api/v2/alipay-platform/order-create")
|
ResultJson<String> orderCreateV2(@RequestBody String encodedString) {
|
AlipayOrderCreateDTO createDTO = alipayPlatformService.decode(encodedString, AlipayOrderCreateDTO.class);
|
if (validator.isLegal(createDTO)) {
|
String form = alipayPlatformService.orderCreate(createDTO);
|
return ResultJson.ok(form);
|
}
|
throw new CommonException(validator.getValidationMsg(createDTO));
|
}
|
|
@PostMapping(value = "/api/v1/alipay-platform/order-create")
|
ResultJson<Map<String, String>> orderCreate(@RequestBody String encodedString) {
|
AlipayOrderCreateDTO createDTO = alipayPlatformService.decode(encodedString, AlipayOrderCreateDTO.class);
|
if (validator.isLegal(createDTO)) {
|
String form = alipayPlatformService.orderCreate(createDTO);
|
return ResultJson.ok(alipayPlatformService.sign(form));
|
}
|
throw new CommonException(validator.getValidationMsg(createDTO));
|
}
|
|
@PostMapping("/api/v1/alipay-platform/order-query")
|
ResultJson<Map<String, String>> orderQuery(@RequestBody String encodedString) {
|
AlipayOrderQueryDTO queryDTO = alipayPlatformService.decode(encodedString, AlipayOrderQueryDTO.class);
|
if (validator.isLegal(queryDTO)) {
|
AlipayOrderInfoVO res = alipayPlatformService.orderQuery(queryDTO);
|
return ResultJson.ok(alipayPlatformService.sign(alipayPlatformService.toJsonString(res)));
|
}
|
throw new CommonException(validator.getValidationMsg(queryDTO));
|
}
|
|
@PostMapping("/api/v1/alipay-platform/notify")
|
String alipayNotify(HttpServletRequest request) {
|
Map<String, String[]> paramMap = request.getParameterMap();
|
alipayPlatformService.handleNotify(paramMap);
|
return "success";
|
}
|
|
@ApiOperation("退款申请提交")
|
@PostMapping("/api/v2/alipay-platform/refund-submit")
|
ResultJson<String> refundSubmit(@RequestBody AlipayRefundDTO refundDTO) {
|
alipayPlatformService.refund(refundDTO);
|
return ResultJson.ok("退款申请提交成功");
|
}
|
|
@ApiOperation("退款金额确定")
|
@PostMapping("/api/v2/alipay-platform/refund-amount")
|
ResultJson<BigDecimal> refundAmount(@AuthenticationPrincipal UserDetail user) {
|
return ResultJson.ok(alipayPlatformService.refundAmountCalculate(user));
|
}
|
|
@ApiOperation("退款申请分页查询")
|
@PostMapping("/api/v2/alipay-platform/refund-list")
|
ResultJson<IPage<AlipayRefundRecord>> refundList(@RequestBody AlipayRefundQueryDTO queryDTO) {
|
IPage<AlipayRefundRecord> page = alipayPlatformService.refundList(queryDTO);
|
return ResultJson.ok(page);
|
}
|
|
@ApiOperation("退款申请状态修改")
|
@PostMapping("/api/v2/alipay-platform/refund-finish")
|
ResultJson<String> refundFinish(@RequestBody AlipayRefundFinishDTO finishDTO) {
|
alipayPlatformService.refundFinish(finishDTO);
|
return ResultJson.ok("退款处理完成");
|
}
|
|
@PostMapping("/api/v1/alipay-platform/notifyInnerVipOrder")
|
@ApiOperation(value = "回调更新内部会员服务订单信息")
|
public String notifyInnerVipOrder(@RequestBody String params) {
|
try {
|
log.info("回调更新内部会员服务订单信息开始,原始参数:" + params);
|
JSONObject json = JSONUtil.parseObj(params);
|
String encodedString = json.getStr("value");
|
AlipayOrderInfo alipayOrderInfo = alipayPlatformService.decodeByPublicKey(encodedString, AlipayOrderInfo.class);
|
vipCardOrderService.notifyInnerVipOrder(alipayOrderInfo);
|
return "ok";
|
} catch (Exception e) {
|
return "fail";
|
}
|
}
|
}
|