add购买记录功能

This commit is contained in:
2025-12-22 18:32:34 +08:00
parent 65a61d0336
commit 7f8554fa12
314 changed files with 4029 additions and 83496 deletions

View File

@@ -1106,3 +1106,192 @@ func (h *FinanceHandler) DebugEventSystem(c *gin.Context) {
h.responseBuilder.Success(c, debugInfo, "事件系统调试信息")
}
// GetUserPurchaseRecords 获取用户购买记录
// @Summary 获取用户购买记录
// @Description 获取当前用户的购买记录列表,支持分页和筛选
// @Tags 财务管理
// @Accept json
// @Produce json
// @Security Bearer
// @Param page query int false "页码" default(1)
// @Param page_size query int false "每页数量" default(10)
// @Param payment_type query string false "支付类型: alipay, wechat, free"
// @Param pay_channel query string false "支付渠道: alipay, wechat"
// @Param status query string false "订单状态: created, paid, failed, cancelled, refunded, closed"
// @Param start_time query string false "开始时间 (格式: 2006-01-02 15:04:05)"
// @Param end_time query string false "结束时间 (格式: 2006-01-02 15:04:05)"
// @Param min_amount query string false "最小金额"
// @Param max_amount query string false "最大金额"
// @Param product_code query string false "产品编号"
// @Success 200 {object} responses.PurchaseRecordListResponse "获取成功"
// @Failure 400 {object} map[string]interface{} "请求参数错误"
// @Failure 401 {object} map[string]interface{} "未认证"
// @Failure 500 {object} map[string]interface{} "服务器内部错误"
// @Router /api/v1/finance/purchase-records [get]
func (h *FinanceHandler) GetUserPurchaseRecords(c *gin.Context) {
userID := c.GetString("user_id")
if userID == "" {
h.responseBuilder.Unauthorized(c, "用户未登录")
return
}
// 解析查询参数
page := h.getIntQuery(c, "page", 1)
pageSize := h.getIntQuery(c, "page_size", 10)
// 构建筛选条件
filters := make(map[string]interface{})
// 时间范围筛选
if startTime := c.Query("start_time"); startTime != "" {
if t, err := time.Parse("2006-01-02 15:04:05", startTime); err == nil {
filters["start_time"] = t
}
}
if endTime := c.Query("end_time"); endTime != "" {
if t, err := time.Parse("2006-01-02 15:04:05", endTime); err == nil {
filters["end_time"] = t
}
}
// 支付类型筛选
if paymentType := c.Query("payment_type"); paymentType != "" {
filters["payment_type"] = paymentType
}
// 支付渠道筛选
if payChannel := c.Query("pay_channel"); payChannel != "" {
filters["pay_channel"] = payChannel
}
// 状态筛选
if status := c.Query("status"); status != "" {
filters["status"] = status
}
// 产品编号筛选
if productCode := c.Query("product_code"); productCode != "" {
filters["product_code"] = productCode
}
// 金额范围筛选
if minAmount := c.Query("min_amount"); minAmount != "" {
filters["min_amount"] = minAmount
}
if maxAmount := c.Query("max_amount"); maxAmount != "" {
filters["max_amount"] = maxAmount
}
// 构建分页选项
options := interfaces.ListOptions{
Page: page,
PageSize: pageSize,
Sort: "created_at",
Order: "desc",
}
result, err := h.appService.GetUserPurchaseRecords(c.Request.Context(), userID, filters, options)
if err != nil {
h.logger.Error("获取用户购买记录失败", zap.Error(err))
h.responseBuilder.BadRequest(c, "获取购买记录失败")
return
}
h.responseBuilder.Success(c, result, "获取用户购买记录成功")
}
// GetAdminPurchaseRecords 获取管理端购买记录
// @Summary 获取管理端购买记录
// @Description 获取所有用户的购买记录列表,支持分页和筛选(管理员权限)
// @Tags 管理员-财务管理
// @Accept json
// @Produce json
// @Security Bearer
// @Param page query int false "页码" default(1)
// @Param page_size query int false "每页数量" default(10)
// @Param user_id query string false "用户ID"
// @Param payment_type query string false "支付类型: alipay, wechat, free"
// @Param pay_channel query string false "支付渠道: alipay, wechat"
// @Param status query string false "订单状态: created, paid, failed, cancelled, refunded, closed"
// @Param start_time query string false "开始时间 (格式: 2006-01-02 15:04:05)"
// @Param end_time query string false "结束时间 (格式: 2006-01-02 15:04:05)"
// @Param min_amount query string false "最小金额"
// @Param max_amount query string false "最大金额"
// @Param product_code query string false "产品编号"
// @Success 200 {object} responses.PurchaseRecordListResponse "获取成功"
// @Failure 400 {object} map[string]interface{} "请求参数错误"
// @Failure 401 {object} map[string]interface{} "未认证"
// @Failure 403 {object} map[string]interface{} "权限不足"
// @Failure 500 {object} map[string]interface{} "服务器内部错误"
// @Router /api/v1/admin/finance/purchase-records [get]
func (h *FinanceHandler) GetAdminPurchaseRecords(c *gin.Context) {
// 解析查询参数
page := h.getIntQuery(c, "page", 1)
pageSize := h.getIntQuery(c, "page_size", 10)
// 构建筛选条件
filters := make(map[string]interface{})
// 用户ID筛选
if userID := c.Query("user_id"); userID != "" {
filters["user_id"] = userID
}
// 时间范围筛选
if startTime := c.Query("start_time"); startTime != "" {
if t, err := time.Parse("2006-01-02 15:04:05", startTime); err == nil {
filters["start_time"] = t
}
}
if endTime := c.Query("end_time"); endTime != "" {
if t, err := time.Parse("2006-01-02 15:04:05", endTime); err == nil {
filters["end_time"] = t
}
}
// 支付类型筛选
if paymentType := c.Query("payment_type"); paymentType != "" {
filters["payment_type"] = paymentType
}
// 支付渠道筛选
if payChannel := c.Query("pay_channel"); payChannel != "" {
filters["pay_channel"] = payChannel
}
// 状态筛选
if status := c.Query("status"); status != "" {
filters["status"] = status
}
// 产品编号筛选
if productCode := c.Query("product_code"); productCode != "" {
filters["product_code"] = productCode
}
// 金额范围筛选
if minAmount := c.Query("min_amount"); minAmount != "" {
filters["min_amount"] = minAmount
}
if maxAmount := c.Query("max_amount"); maxAmount != "" {
filters["max_amount"] = maxAmount
}
// 构建分页选项
options := interfaces.ListOptions{
Page: page,
PageSize: pageSize,
Sort: "created_at",
Order: "desc",
}
result, err := h.appService.GetAdminPurchaseRecords(c.Request.Context(), filters, options)
if err != nil {
h.logger.Error("获取管理端购买记录失败", zap.Error(err))
h.responseBuilder.BadRequest(c, "获取购买记录失败")
return
}
h.responseBuilder.Success(c, result, "获取管理端购买记录成功")
}