This commit is contained in:
@@ -797,9 +797,9 @@ func (h *ProductAdminHandler) BatchUpdateSubscriptionPrices(c *gin.Context) {
|
||||
}
|
||||
|
||||
h.responseBuilder.Success(c, map[string]interface{}{
|
||||
"user_id": cmd.UserID,
|
||||
"user_id": cmd.UserID,
|
||||
"discount": cmd.Discount,
|
||||
"scope": cmd.Scope,
|
||||
"scope": cmd.Scope,
|
||||
}, "一键改价成功")
|
||||
}
|
||||
|
||||
@@ -1113,8 +1113,6 @@ func (h *ProductAdminHandler) DeleteProductDocumentation(c *gin.Context) {
|
||||
h.responseBuilder.Success(c, nil, "文档删除成功")
|
||||
}
|
||||
|
||||
|
||||
|
||||
// GetAdminWalletTransactions 获取管理端消费记录
|
||||
// @Summary 获取管理端消费记录
|
||||
// @Description 管理员获取消费记录,支持筛选和分页
|
||||
@@ -1173,6 +1171,11 @@ func (h *ProductAdminHandler) GetAdminWalletTransactions(c *gin.Context) {
|
||||
filters["product_name"] = productName
|
||||
}
|
||||
|
||||
// 企业名称筛选
|
||||
if companyName := c.Query("company_name"); companyName != "" {
|
||||
filters["company_name"] = companyName
|
||||
}
|
||||
|
||||
// 金额范围筛选
|
||||
if minAmount := c.Query("min_amount"); minAmount != "" {
|
||||
filters["min_amount"] = minAmount
|
||||
@@ -1475,6 +1478,26 @@ func (h *ProductAdminHandler) GetAdminApiCalls(c *gin.Context) {
|
||||
filters["product_ids"] = productIds
|
||||
}
|
||||
|
||||
// 产品名称筛选
|
||||
if productName := c.Query("product_name"); productName != "" {
|
||||
filters["product_name"] = productName
|
||||
}
|
||||
|
||||
// 企业名称筛选
|
||||
if companyName := c.Query("company_name"); companyName != "" {
|
||||
filters["company_name"] = companyName
|
||||
}
|
||||
|
||||
// 交易ID筛选
|
||||
if transactionId := c.Query("transaction_id"); transactionId != "" {
|
||||
filters["transaction_id"] = transactionId
|
||||
}
|
||||
|
||||
// 状态筛选
|
||||
if status := c.Query("status"); status != "" {
|
||||
filters["status"] = status
|
||||
}
|
||||
|
||||
// 时间范围筛选
|
||||
if startTime := c.Query("start_time"); startTime != "" {
|
||||
if t, err := time.Parse("2006-01-02 15:04:05", startTime); err == nil {
|
||||
|
||||
@@ -582,32 +582,77 @@ func (h *ProductHandler) GetMySubscriptionUsage(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 先获取订阅信息以验证权限
|
||||
result, err := h.subAppService.GetSubscriptionUsage(c.Request.Context(), subscriptionID)
|
||||
if err != nil {
|
||||
h.logger.Error("获取我的订阅使用情况失败", zap.Error(err), zap.String("user_id", userID), zap.String("subscription_id", subscriptionID))
|
||||
h.responseBuilder.NotFound(c, "订阅不存在")
|
||||
return
|
||||
}
|
||||
|
||||
// 验证订阅是否属于当前用户(通过获取订阅详情来验证)
|
||||
var query queries.GetSubscriptionQuery
|
||||
query.ID = subscriptionID
|
||||
|
||||
subscription, err := h.subAppService.GetSubscriptionByID(c.Request.Context(), &query)
|
||||
if err != nil {
|
||||
h.logger.Error("获取订阅信息失败", zap.Error(err), zap.String("user_id", userID), zap.String("subscription_id", subscriptionID))
|
||||
h.logger.Error("获取订阅详情失败", zap.Error(err), zap.String("subscription_id", subscriptionID))
|
||||
h.responseBuilder.NotFound(c, "订阅不存在")
|
||||
return
|
||||
}
|
||||
|
||||
// 验证订阅是否属于当前用户
|
||||
if subscription.UserID != userID {
|
||||
h.logger.Error("用户尝试访问不属于自己的订阅使用情况", zap.String("user_id", userID), zap.String("subscription_user_id", subscription.UserID), zap.String("subscription_id", subscriptionID))
|
||||
h.logger.Error("用户尝试访问不属于自己的订阅", zap.String("user_id", userID), zap.String("subscription_user_id", subscription.UserID), zap.String("subscription_id", subscriptionID))
|
||||
h.responseBuilder.Forbidden(c, "无权访问此订阅")
|
||||
return
|
||||
}
|
||||
|
||||
usage, err := h.subAppService.GetSubscriptionUsage(c.Request.Context(), subscriptionID)
|
||||
if err != nil {
|
||||
h.logger.Error("获取订阅使用情况失败", zap.Error(err))
|
||||
h.responseBuilder.BadRequest(c, err.Error())
|
||||
h.responseBuilder.Success(c, result, "获取我的订阅使用情况成功")
|
||||
}
|
||||
|
||||
// CancelMySubscription 取消我的订阅
|
||||
// @Summary 取消我的订阅
|
||||
// @Description 取消指定的订阅(软删除)
|
||||
// @Tags 我的订阅
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security Bearer
|
||||
// @Param id path string true "订阅ID"
|
||||
// @Success 200 {object} map[string]interface{} "取消订阅成功"
|
||||
// @Failure 400 {object} map[string]interface{} "请求参数错误"
|
||||
// @Failure 401 {object} map[string]interface{} "未认证"
|
||||
// @Failure 403 {object} map[string]interface{} "无权操作"
|
||||
// @Failure 404 {object} map[string]interface{} "订阅不存在"
|
||||
// @Failure 500 {object} map[string]interface{} "服务器内部错误"
|
||||
// @Router /api/v1/my/subscriptions/{id}/cancel [post]
|
||||
func (h *ProductHandler) CancelMySubscription(c *gin.Context) {
|
||||
userID := c.GetString("user_id")
|
||||
if userID == "" {
|
||||
h.responseBuilder.Unauthorized(c, "用户未登录")
|
||||
return
|
||||
}
|
||||
|
||||
h.responseBuilder.Success(c, usage, "获取使用情况成功")
|
||||
subscriptionID := c.Param("id")
|
||||
if subscriptionID == "" {
|
||||
h.responseBuilder.BadRequest(c, "订阅ID不能为空")
|
||||
return
|
||||
}
|
||||
|
||||
err := h.subAppService.CancelMySubscription(c.Request.Context(), userID, subscriptionID)
|
||||
if err != nil {
|
||||
h.logger.Error("取消订阅失败", zap.Error(err), zap.String("user_id", userID), zap.String("subscription_id", subscriptionID))
|
||||
|
||||
// 根据错误类型返回不同的响应
|
||||
if err.Error() == "订阅不存在" {
|
||||
h.responseBuilder.NotFound(c, "订阅不存在")
|
||||
} else if err.Error() == "无权取消此订阅" {
|
||||
h.responseBuilder.Forbidden(c, "无权取消此订阅")
|
||||
} else {
|
||||
h.responseBuilder.BadRequest(c, err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
h.responseBuilder.Success(c, nil, "取消订阅成功")
|
||||
}
|
||||
|
||||
// GetProductDocumentation 获取产品文档
|
||||
|
||||
Reference in New Issue
Block a user