支付
This commit is contained in:
parent
0a17381dc2
commit
80dc442528
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
16
src/main/java/com/pixelai/api/pa/dao/PaOrderMapper.java
Normal file
16
src/main/java/com/pixelai/api/pa/dao/PaOrderMapper.java
Normal 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> {
|
||||||
|
|
||||||
|
}
|
69
src/main/java/com/pixelai/api/pa/entity/PaOrder.java
Normal file
69
src/main/java/com/pixelai/api/pa/entity/PaOrder.java
Normal 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;
|
||||||
|
}
|
41
src/main/java/com/pixelai/api/pa/service/PaOrderService.java
Normal file
41
src/main/java/com/pixelai/api/pa/service/PaOrderService.java
Normal 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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
20
src/main/resources/mapper/PaOrderMapper.xml
Normal file
20
src/main/resources/mapper/PaOrderMapper.xml
Normal 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>
|
Loading…
Reference in New Issue
Block a user