| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.yhlxj.web.controller.manage;
- import com.cyksj.common.exception.BusinessRuntimeException;
- import com.ejlchina.searcher.BeanSearcher;
- import com.ejlchina.searcher.SearchResult;
- import com.ejlchina.searcher.util.MapUtils;
- import com.yhlxj.dao.model.dto.Result;
- import com.yhlxj.dao.model.entity.WebWholesaleOrderDon;
- import com.yhlxj.dao.model.enums.GatewayResponse;
- import com.yhlxj.dao.model.request.AlipayOrderDonReq;
- import com.yhlxj.dao.model.request.WebOrderPayRequest;
- import com.yhlxj.dao.model.response.AliPayTradeStatus;
- import com.yhlxj.dao.model.view.WebWholesaleCodeDetailView;
- import com.yhlxj.dao.model.view.WebWholesaleOrderView;
- import com.yhlxj.service.order.WebWholesaleOrderDonService;
- import com.yhlxj.web.util.StpUserUtil;
- import com.yhlxj.web.util.StpWholesaleUtil;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpServletRequest;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- /**
- * 项目名: yhlxj2
- * 文件名: WholesaleCodeController
- * 创建者: JavaZou
- * 创建时间:2025/6/4 16:31
- * 兑换码管理
- */
- @Slf4j
- @RequiredArgsConstructor
- @RestController
- @RequestMapping("/manage/wholesale/code")
- public class WholesaleCodeController {
- private final BeanSearcher beanSearcher;
- private final HttpServletRequest request;
- private final WebWholesaleOrderDonService webWholesaleOrderDonService;
- /**
- * 兑换码 明细
- */
- @GetMapping("/get/detail")
- public Result<SearchResult<WebWholesaleCodeDetailView>> getCodeDetail() {
- SearchResult<WebWholesaleCodeDetailView> search = beanSearcher.search(WebWholesaleCodeDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
- .field(WebWholesaleCodeDetailView::getStatus, WebWholesaleOrderDon.Status.complete.name())
- .build());
- return GatewayResponse.SUCCESS.newBuilder().toResult(search);
- }
- /**
- * 兑换码订单
- */
- @GetMapping("/get/order")
- public Result<SearchResult<WebWholesaleOrderView>> getOrders() {
- long wholesaleId = StpWholesaleUtil.getLoginIdAsLong();
- SearchResult<WebWholesaleOrderView> search = beanSearcher.search(WebWholesaleOrderView.class, MapUtils.flatBuilder(request.getParameterMap())
- .field(WebWholesaleOrderView::getWholesaleId, wholesaleId)
- .field(WebWholesaleOrderView::getStatus, WebWholesaleOrderDon.Status.complete.name())
- .build());
- return GatewayResponse.SUCCESS.newBuilder().toResult(search);
- }
- /**
- * 购买兑换码 预下单
- */
- @PostMapping("/post/submit")
- public Result<WebWholesaleOrderDon> submit(@Validated @RequestBody WebOrderPayRequest payRequest) throws Exception {
- final String methodName = "吊起兑换码预支付";
- long userId = StpWholesaleUtil.getLoginIdAsLong();
- payRequest.setUserId(userId);
- log.info("{}[start] params:{}", methodName, payRequest);
- WebWholesaleOrderDon orderDon = webWholesaleOrderDonService.submit(payRequest);
- return GatewayResponse.SUCCESS.newBuilder().toResult(orderDon);
- }
- /**
- * 支付宝支付
- */
- @PostMapping("/zfb/unified/pay")
- public Result<String> zfbUnifiedPay(@RequestBody @Validated AlipayOrderDonReq re) throws Exception {
- if (re.getType() == null) throw BusinessRuntimeException.getInstance("支付异常");
- String pay_body = webWholesaleOrderDonService.zfbUnifiedPay(re).getBody();
- return GatewayResponse.SUCCESS.newBuilder().toResult(pay_body);
- }
- /**
- * 支付宝回调
- */
- @PostMapping("/prepay/zfb/notify")
- public String aliPayNotify(HttpServletRequest request) throws Exception {
- ////将异步通知中收到的所有参数都存放到map中
- Map<String, String> params = convertRequestParamsToMap(request);
- String tradeStatus = params.get("trade_status");
- String orderNo = params.get("out_trade_no");
- if (AliPayTradeStatus.TRADE_SUCCESS.getStatus().equals(tradeStatus) || AliPayTradeStatus.TRADE_FINISHED.getStatus().equals(tradeStatus)) {
- log.info("支付宝商家订单号orderNo:{},status:{}开始回调", orderNo, tradeStatus);
- webWholesaleOrderDonService.aliPayNotify(params);
- } else {
- log.error("支付宝回调 error 状态不符合 成功或完成 status:{} ,orderNo:{}", tradeStatus, orderNo);
- return "fail";
- }
- return "success";
- }
- /**
- * 获取支付宝回调参数
- */
- private static Map<String, String> convertRequestParamsToMap(HttpServletRequest request) {
- Map<String, String> retMap = new HashMap<>();
- Set<Map.Entry<String, String[]>> entrySet = request.getParameterMap().entrySet();
- for (Map.Entry<String, String[]> entry : entrySet) {
- String name = entry.getKey();
- String[] values = entry.getValue();
- int valLen = values.length;
- if (valLen == 1) {
- retMap.put(name, values[0]);
- } else if (valLen > 1) {
- StringBuilder sb = new StringBuilder();
- for (String val : values) {
- sb.append(",").append(val);
- }
- retMap.put(name, sb.substring(1));
- } else {
- retMap.put(name, "");
- }
- }
- return retMap;
- }
- }
|