package com.doumee.api.web; import com.doumee.api.BaseController; import com.doumee.core.model.ApiResponse; import com.allinpay.syb.model.PayOrderParam; import com.allinpay.syb.model.PayOrderResponse; import com.doumee.dao.business.model.Orders; import com.doumee.service.business.OrdersService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URLDecoder; /** * 订单记录表信息表Controller定义 * @author doumee * @date 2026-02-02 11:10:42 */ @Api(tags = "订单信息接口") @RestController @Slf4j @RequestMapping("/web/orders") public class WebOrdersController extends BaseController { @Autowired private OrdersService ordersService; @ApiOperation("订单新建") @PostMapping("/create") public ApiResponse createOrder(@RequestBody Orders orders, RedirectAttributes redirectAttributes) { PayOrderResponse result = ordersService.createPay(orders); return ApiResponse.success(result); } @ApiOperation("订单支付结果页") @GetMapping("/returnPage") public void returnPage(@ModelAttribute PayOrderParam param, HttpServletResponse response)throws IOException { ordersService.returnPage(param,response); } @ApiOperation("订单支付结果异步通知") @PostMapping(value = "/notity", consumes = "application/x-www-form-urlencoded") public void notify (HttpServletRequest request, HttpServletResponse response) throws IOException { log.error ("接收到支付通知"); try { request.setCharacterEncoding("UTF-8");//通知传输的编码为GBK StringBuilder stringBuilder = new StringBuilder(); String line; ServletInputStream inputStream = request.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); while ((line = reader.readLine()) != null) { stringBuilder.append(line); } String body = stringBuilder.toString(); ordersService.dealOrdreResult(URLDecoder.decode(body, "UTF-8"),response); }catch (Exception e){ e.printStackTrace(); } } @ApiOperation("根据ID查询") @GetMapping("detail") public ApiResponse findById(@RequestParam Integer id) { return ApiResponse.success(ordersService.findById(id)); } }