This commit is contained in:
lihongbiao 2025-01-20 12:13:08 +08:00
parent 0a17381dc2
commit 80dc442528
6 changed files with 334 additions and 0 deletions

View File

@ -0,0 +1,125 @@
package com.pixelai.api.pa.controller;
import com.aliyun.core.utils.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.base.annotation.SysLog;
import com.base.helper.BaseController;
import com.base.helper.Result;
import com.pixelai.api.domain.apy.OrderPayAppService;
import com.pixelai.api.pa.entity.PaOrder;
import com.pixelai.api.pa.service.PaOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.Collections;
import java.util.Map;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>
* 前端控制器
* </p>
*
* @author gjj
* @since 2025-01-19
*/
@Api(tags = "pa订单管理")
@RestController
@RequestMapping("/paOrder")
public class PaOrderController extends BaseController {
private static final Logger LOG = LoggerFactory.getLogger(PaOrderController.class);
@Autowired
private PaOrderService entityService;
@Autowired
private OrderPayAppService payAppService;
@SysLog(action = "findByPage", value = "分页查询订单")
@ApiOperation(value = "分页查询订单", notes = "分页查询订单")
@RequestMapping(method = RequestMethod.GET)
@ApiImplicitParams({@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query")})
public Result<IPage<PaOrder>> findByPage(final PaOrder example, final Page page) {
IPage<PaOrder> records = entityService.page(example,page);
return new Result(true, records);
}
@SysLog(action = "one", value = "查询单个订单")
@ApiOperation(value = "查询单个订单")
@RequestMapping(value = "{id}", method = {RequestMethod.GET})
@ApiImplicitParam(name = "id", value = "订单ID", required = true, paramType = "path")
public Result one(@PathVariable final Integer id) {
try {
PaOrder entity = entityService.getById(id);
return new Result(true, entity);
} catch (Exception e) {
LOG.error("查询单个订单失败", e);
return new Result(false, new PaOrder());
}
}
@SysLog(action = "add", value = "添加订单")
@ApiOperation(value = "添加订单")
@RequestMapping(method = {RequestMethod.POST})
public Result add(@Valid @RequestBody final PaOrder entity, final BindingResult result) {
try {
if (result.hasErrors()) {
Map<String, String> map = this.getErrors(result);
String errorMsg = map.entrySet().iterator().next().getValue();
return new Result(false, "保存订单失败", errorMsg, map);
} else {
entityService.save(entity);
return new Result(true, "成功保存订单", null);
}
} catch (Exception e) {
LOG.error("添加订单失败", e);
return new Result(false, "保存订单失败", e.getMessage());
}
}
@ApiOperation(value = "全部订单")
@RequestMapping(value = "all", method = RequestMethod.GET)
public Result<List<PaOrder>> all(PaOrder example) {
List<PaOrder> entitys = entityService.list(example);
if (null != entitys) {
return new Result<>(true, entitys);
}
return new Result<>(true, Collections.emptyList());
}
@ApiOperation(value = "h5支付")
@RequestMapping(value = "h5Pay", method = RequestMethod.GET)
public Result h5Pay(PaOrder order,HttpServletRequest request) {
// 调用业务逻辑获取支付 URL
String h5Url = payAppService.h5Pay(order,request);
// 如果没有获取到支付链接返回失败的结果
if (StringUtils.isBlank(h5Url)) {
return new Result<>(false, "支付失败");
}
// 返回成功的结果
return new Result<>(true, h5Url);
}
@ApiOperation(value = "h5回调")
@RequestMapping(value = "payNotify", method = RequestMethod.GET)
public void payNotify(HttpServletRequest request) {
try {
payAppService.payNotify(request);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,16 @@
package com.pixelai.api.pa.dao;
import com.pixelai.api.pa.entity.PaOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author gjj
* @since 2025-01-19
*/
public interface PaOrderMapper extends BaseMapper<PaOrder> {
}

View File

@ -0,0 +1,69 @@
package com.pixelai.api.pa.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import com.pixelai.api.pa.entity.enums.PayState;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author gjj
* @since 2025-01-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="PaOrder", description="")
public class PaOrder implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "用户 ID")
private Integer memberId;
@ApiModelProperty(value = "订单号")
private String orderNum;
@ApiModelProperty(value = "支付人账号")
private String memberAccount;
@ApiModelProperty(value = "商家账号")
private String merchantAccount;
@ApiModelProperty(value = "支付金额")
private BigDecimal amount;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "支付用途")
private String orderType;
@ApiModelProperty(value = "支付状态")
private PayState payStatus;
@ApiModelProperty(value = "支付结果")
private String result;
@ApiModelProperty(value = "状态(有效:t 无效:f)")
private String state;
@ApiModelProperty(value = "1-5, 2-10, 3-20, 4-30, 5-50, 6-100")
private String buyType;
}

View File

@ -0,0 +1,41 @@
package com.pixelai.api.pa.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pixelai.api.pa.entity.PaOrder;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author gjj
* @since 2025-01-19
*/
public interface PaOrderService extends IService<PaOrder> {
/**
* 条件查询
* @param example
* @return
*/
List<PaOrder> list(PaOrder example);
/**
* 分页查询
* @param example
* @param page
* @return
*/
IPage<PaOrder> page(PaOrder example, IPage page);
/**
* 订单号查询订单
* @param outTradeNo
* @return
*/
PaOrder getOrderByTradeNo(String outTradeNo);
}

View File

@ -0,0 +1,63 @@
package com.pixelai.api.pa.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pixelai.api.pa.dao.PaOrderMapper;
import com.pixelai.api.pa.entity.PaOrder;
import com.pixelai.api.pa.service.PaOrderService;
import com.pixelai.config.WeChatConfig;
import com.pixelai.utils.WeChatUtil;
import com.wechat.pay.java.core.exception.MalformedMessageException;
import com.wechat.pay.java.service.payments.h5.H5Service;
import com.wechat.pay.java.service.payments.h5.model.*;
import eu.bitwalker.useragentutils.UserAgent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 服务实现类
* </p>
*
* @author gjj
* @since 2025-01-19
*/
@Service
public class PaOrderServiceImpl extends ServiceImpl<PaOrderMapper, PaOrder> implements PaOrderService {
@Override
public List<PaOrder> list(PaOrder example) {
return this.list(buildWrapper(example));
}
@Override
public IPage<PaOrder> page(PaOrder example, IPage page) {
return this.page(page,buildWrapper(example));
}
@Override
public PaOrder getOrderByTradeNo(String outTradeNo) {
QueryWrapper<PaOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("out_trade_no", outTradeNo);
queryWrapper.eq("state", "t");
return this.getOne(queryWrapper);
}
/**
* 构建查询
*
* @param example
* @return
*/
private QueryWrapper<PaOrder> buildWrapper(PaOrder example) {
QueryWrapper<PaOrder> wrapper = new QueryWrapper<>();
return wrapper;
}
}

View File

@ -0,0 +1,20 @@
<?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.pixelai.api.pa.dao.PaOrderMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.pixelai.api.pa.entity.PaOrder">
<id column="id" property="id" />
<result column="member_id" property="memberId" />
<result column="order_num" property="orderNum" />
<result column="member_account" property="memberAccount" />
<result column="merchant_account" property="merchant account" />
<result column="amount" property="amount" />
<result column="create_time" property="createTime" />
<result column="order_type" property="orderType" />
<result column="pay_status" property="payStatus" />
<result column="result" property="result" />
<result column="state" property="state" />
</resultMap>
</mapper>