feat: add dashboard and virtual pay enhancements

This commit is contained in:
王鹏
2026-07-29 14:34:54 +08:00
parent 2250f744d1
commit 349f1c0374
55 changed files with 3085 additions and 213 deletions

View File

@@ -0,0 +1,108 @@
package com.ruoyi.app.domain;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 首页业务指标汇总。
*/
public class AppDashboardSummary implements Serializable
{
private static final long serialVersionUID = 1L;
private Long resourceTotal;
private Long resourceToday;
private Long userTotal;
private Long userToday;
private Long orderTotal;
private Long orderToday;
private BigDecimal amountTotal;
private BigDecimal amountToday;
public Long getResourceTotal()
{
return resourceTotal;
}
public void setResourceTotal(Long resourceTotal)
{
this.resourceTotal = resourceTotal;
}
public Long getResourceToday()
{
return resourceToday;
}
public void setResourceToday(Long resourceToday)
{
this.resourceToday = resourceToday;
}
public Long getUserTotal()
{
return userTotal;
}
public void setUserTotal(Long userTotal)
{
this.userTotal = userTotal;
}
public Long getUserToday()
{
return userToday;
}
public void setUserToday(Long userToday)
{
this.userToday = userToday;
}
public Long getOrderTotal()
{
return orderTotal;
}
public void setOrderTotal(Long orderTotal)
{
this.orderTotal = orderTotal;
}
public Long getOrderToday()
{
return orderToday;
}
public void setOrderToday(Long orderToday)
{
this.orderToday = orderToday;
}
public BigDecimal getAmountTotal()
{
return amountTotal;
}
public void setAmountTotal(BigDecimal amountTotal)
{
this.amountTotal = amountTotal;
}
public BigDecimal getAmountToday()
{
return amountToday;
}
public void setAmountToday(BigDecimal amountToday)
{
this.amountToday = amountToday;
}
}

View File

@@ -30,6 +30,21 @@ public class AppResourceList extends BaseEntity
@Excel(name = "访问密码")
private String password;
/** 规格价格,单位分 */
@Excel(name = "规格价格(分)")
private Integer priceFen;
/** 状态1启用0停用 */
@Excel(name = "规格状态", readConverterExp = "0=停用,1=启用")
private Integer status;
/** 显示顺序 */
@Excel(name = "显示顺序")
private Integer sortOrder;
/** 当前用户是否已购买,仅用于小程序详情返回 */
private Boolean purchased;
/** 关联主表app_resource */
@Excel(name = "关联主表app_resource")
private Long appResourceId;
@@ -70,6 +85,47 @@ public class AppResourceList extends BaseEntity
{
return password;
}
public Integer getPriceFen()
{
return priceFen;
}
public void setPriceFen(Integer priceFen)
{
this.priceFen = priceFen;
}
public Integer getStatus()
{
return status;
}
public void setStatus(Integer status)
{
this.status = status;
}
public Integer getSortOrder()
{
return sortOrder;
}
public void setSortOrder(Integer sortOrder)
{
this.sortOrder = sortOrder;
}
public Boolean getPurchased()
{
return purchased;
}
public void setPurchased(Boolean purchased)
{
this.purchased = purchased;
}
public void setAppResourceId(Long appResourceId)
{
this.appResourceId = appResourceId;
@@ -87,6 +143,10 @@ public class AppResourceList extends BaseEntity
.append("listName", getListName())
.append("listUrl", getListUrl())
.append("password", getPassword())
.append("priceFen", getPriceFen())
.append("status", getStatus())
.append("sortOrder", getSortOrder())
.append("purchased", getPurchased())
.append("appResourceId", getAppResourceId())
.toString();
}

View File

@@ -33,6 +33,12 @@ public class AppVirtualOrder extends BaseEntity
@Excel(name = "资源标题")
private String resourceTitle;
@Excel(name = "规格ID")
private Long resourceListId;
@Excel(name = "购买规格")
private String specName;
@Excel(name = "微信道具ID")
private String productId;
@@ -137,6 +143,26 @@ public class AppVirtualOrder extends BaseEntity
this.resourceTitle = resourceTitle;
}
public Long getResourceListId()
{
return resourceListId;
}
public void setResourceListId(Long resourceListId)
{
this.resourceListId = resourceListId;
}
public String getSpecName()
{
return specName;
}
public void setSpecName(String specName)
{
this.specName = specName;
}
public String getProductId()
{
return productId;

View File

@@ -0,0 +1,131 @@
package com.ruoyi.app.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 小程序“我的订单”安全展示对象,不包含 OpenID 和微信交易号等敏感字段。
*/
public class AppVirtualOrderSummary implements Serializable
{
private static final long serialVersionUID = 1L;
private String orderNo;
private Long resourceId;
private String resourceTitle;
private Long resourceListId;
private String specName;
private Integer priceFen;
private Integer status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date payTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date refundTime;
public String getOrderNo()
{
return orderNo;
}
public void setOrderNo(String orderNo)
{
this.orderNo = orderNo;
}
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 Long getResourceListId()
{
return resourceListId;
}
public void setResourceListId(Long resourceListId)
{
this.resourceListId = resourceListId;
}
public String getSpecName()
{
return specName;
}
public void setSpecName(String specName)
{
this.specName = specName;
}
public Integer getPriceFen()
{
return priceFen;
}
public void setPriceFen(Integer priceFen)
{
this.priceFen = priceFen;
}
public Integer getStatus()
{
return status;
}
public void setStatus(Integer status)
{
this.status = status;
}
public Date getCreateTime()
{
return createTime;
}
public void setCreateTime(Date createTime)
{
this.createTime = createTime;
}
public Date getPayTime()
{
return payTime;
}
public void setPayTime(Date payTime)
{
this.payTime = payTime;
}
public Date getRefundTime()
{
return refundTime;
}
public void setRefundTime(Date refundTime)
{
this.refundTime = refundTime;
}
}

View File

@@ -1,13 +1,15 @@
package com.ruoyi.app.domain.request;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
public class CreateVirtualOrderRequest
{
@NotNull(message = "资源ID不能为空")
/** 旧版小程序兼容字段;新版按 resourceListId 下单。 */
private Long resourceId;
/** 资源下载项ID一条下载项即一个付费规格。 */
private Long resourceListId;
@NotBlank(message = "微信登录凭证不能为空")
private String code;
@@ -21,6 +23,16 @@ public class CreateVirtualOrderRequest
this.resourceId = resourceId;
}
public Long getResourceListId()
{
return resourceListId;
}
public void setResourceListId(Long resourceListId)
{
this.resourceListId = resourceListId;
}
public String getCode()
{
return code;