feat: 新增虚拟支付订单与网盘链接检测功能

This commit is contained in:
王鹏
2026-07-28 13:42:30 +08:00
parent 4070179f46
commit 2250f744d1
60 changed files with 3668 additions and 106 deletions

View File

@@ -40,6 +40,9 @@ public class AppBlogArticle extends BaseEntity
@Excel(name = "封面图url")
private String showImg;
/** List-card thumbnail URL (not persisted). */
private String showImgThumb;
/** 关联已有资源关联app_resource id */
@Excel(name = "关联已有资源", readConverterExp = "关=联app_resource,i=d")
private Long appResourceId;
@@ -159,6 +162,15 @@ public class AppBlogArticle extends BaseEntity
{
return showImg;
}
public void setShowImgThumb(String showImgThumb)
{
this.showImgThumb = showImgThumb;
}
public String getShowImgThumb()
{
return showImgThumb;
}
public void setAppResourceId(Long appResourceId)
{
this.appResourceId = appResourceId;

View File

@@ -27,6 +27,9 @@ public class AppResource extends BaseEntity
@Excel(name = "封面图")
private String showImg;
/** List-card thumbnail URL (not persisted). */
private String showImgThumb;
/** 说明 */
@Excel(name = "说明")
private String explain;
@@ -51,6 +54,13 @@ public class AppResource extends BaseEntity
@Excel(name = "需要观看几次广告解锁")
private Long adNumber;
/** 虚拟支付价格,单位分 */
@Excel(name = "付费价格(分)")
private Integer priceFen;
/** 同价格档位对应的微信虚拟道具ID非 app_resource 表字段) */
private String virtualProductId;
/** 下载次数 */
@Excel(name = "下载次数")
private Long downNum;
@@ -100,6 +110,15 @@ public class AppResource extends BaseEntity
{
return showImg;
}
public void setShowImgThumb(String showImgThumb)
{
this.showImgThumb = showImgThumb;
}
public String getShowImgThumb()
{
return showImgThumb;
}
public void setExplain(String explain)
{
this.explain = explain;
@@ -145,6 +164,26 @@ public class AppResource extends BaseEntity
{
return adNumber;
}
public Integer getPriceFen()
{
return priceFen;
}
public void setPriceFen(Integer priceFen)
{
this.priceFen = priceFen;
}
public String getVirtualProductId()
{
return virtualProductId;
}
public void setVirtualProductId(String virtualProductId)
{
this.virtualProductId = virtualProductId;
}
public void setDownNum(Long downNum)
{
this.downNum = downNum;
@@ -194,6 +233,8 @@ public class AppResource extends BaseEntity
.append("isShow", getIsShow())
.append("isAd", getIsAd())
.append("adNumber", getAdNumber())
.append("priceFen", getPriceFen())
.append("virtualProductId", getVirtualProductId())
.append("downNum", getDownNum())
.append("weight", getWeight())
.append("delFlag", getDelFlag())

View File

@@ -0,0 +1,239 @@
package com.ruoyi.app.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* 资源虚拟支付订单。
*/
public class AppVirtualOrder extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long id;
@Excel(name = "业务订单号")
private String orderNo;
@Excel(name = "用户ID")
private Long userId;
@Excel(name = "用户账号")
private String userName;
@Excel(name = "用户昵称")
private String nickName;
@Excel(name = "资源ID")
private Long resourceId;
@Excel(name = "资源标题")
private String resourceTitle;
@Excel(name = "微信道具ID")
private String productId;
@Excel(name = "支付金额(分)")
private Integer priceFen;
@Excel(name = "OpenID")
private String openId;
/** 0-待支付1-已支付并发货2-已退款3-已关闭。 */
@Excel(name = "订单状态", readConverterExp = "0=待支付,1=已支付并发货,2=已退款,3=已关闭")
private Integer status;
@Excel(name = "微信内部订单号")
private String wxOrderNo;
@Excel(name = "微信支付交易单号")
private String transactionId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date payTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date provideTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date refundTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastQueryTime;
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getOrderNo()
{
return orderNo;
}
public void setOrderNo(String orderNo)
{
this.orderNo = orderNo;
}
public Long getUserId()
{
return userId;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getNickName()
{
return nickName;
}
public void setNickName(String nickName)
{
this.nickName = nickName;
}
public Long getResourceId()
{
return resourceId;
}
public void setResourceId(Long resourceId)
{
this.resourceId = resourceId;
}
public String getResourceTitle()
{
return resourceTitle;
}
public void setResourceTitle(String resourceTitle)
{
this.resourceTitle = resourceTitle;
}
public String getProductId()
{
return productId;
}
public void setProductId(String productId)
{
this.productId = productId;
}
public Integer getPriceFen()
{
return priceFen;
}
public void setPriceFen(Integer priceFen)
{
this.priceFen = priceFen;
}
public String getOpenId()
{
return openId;
}
public void setOpenId(String openId)
{
this.openId = openId;
}
public Integer getStatus()
{
return status;
}
public void setStatus(Integer status)
{
this.status = status;
}
public String getWxOrderNo()
{
return wxOrderNo;
}
public void setWxOrderNo(String wxOrderNo)
{
this.wxOrderNo = wxOrderNo;
}
public String getTransactionId()
{
return transactionId;
}
public void setTransactionId(String transactionId)
{
this.transactionId = transactionId;
}
public Date getPayTime()
{
return payTime;
}
public void setPayTime(Date payTime)
{
this.payTime = payTime;
}
public Date getProvideTime()
{
return provideTime;
}
public void setProvideTime(Date provideTime)
{
this.provideTime = provideTime;
}
public Date getRefundTime()
{
return refundTime;
}
public void setRefundTime(Date refundTime)
{
this.refundTime = refundTime;
}
public Date getLastQueryTime()
{
return lastQueryTime;
}
public void setLastQueryTime(Date lastQueryTime)
{
this.lastQueryTime = lastQueryTime;
}
}

View File

@@ -0,0 +1,67 @@
package com.ruoyi.app.domain;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 虚拟支付价格档位与微信道具的映射。
*/
public class AppVirtualProduct extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long id;
private String productId;
private Integer priceFen;
private String productName;
private Integer status;
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getProductId()
{
return productId;
}
public void setProductId(String productId)
{
this.productId = productId;
}
public Integer getPriceFen()
{
return priceFen;
}
public void setPriceFen(Integer priceFen)
{
this.priceFen = priceFen;
}
public String getProductName()
{
return productName;
}
public void setProductName(String productName)
{
this.productName = productName;
}
public Integer getStatus()
{
return status;
}
public void setStatus(Integer status)
{
this.status = status;
}
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.app.domain.request;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
public class CreateVirtualOrderRequest
{
@NotNull(message = "资源ID不能为空")
private Long resourceId;
@NotBlank(message = "微信登录凭证不能为空")
private String code;
public Long getResourceId()
{
return resourceId;
}
public void setResourceId(Long resourceId)
{
this.resourceId = resourceId;
}
public String getCode()
{
return code;
}
public void setCode(String code)
{
this.code = code;
}
}