func AppOperateRecharge(a *decorator.ApiBase) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRechargeResponse{} resp.ResponseCommon = a.NewSuccessResponseCommon() a.Ts.Table("business_base as a"). Select("s.bid, a.bname, s.acct_bal,s.buy_sum_amt, " + "sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END) as unpaid_amt, " + "sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END) as stmt_amt, " + "a.admin_uid, u.user_name, a.status"). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.bid=a.bid"). Group("a.bid").Count(&resp.Count).Offset(a.Offset). Limit(a.Size). Find(&resp.Data) return a.ReturnSuccessCustomResponse(resp) }
时间: 2024-04-16 17:25:24 浏览: 19
这段代码是一个名为AppOperateRecharge的函数,它接受一个名为a的指向decorator.ApiBase类型的指针作为参数,并返回一个错误。函数内部首先打印日志信息"AppOperateRecharge...",然后定义一个名为resp的adminStruct.BusinessOrderRechargeResponse类型的变量。接下来,它将resp.ResponseCommon设置为a.NewSuccessResponseCommon()的返回值,用于初始化resp的ResponseCommon字段。
然后,使用a.Ts.Table方法选择表"business_base",并使用Select方法指定查询的列,包括s.bid、a.bname、s.acct_bal等。在查询中,使用了两个sum函数来计算满足条件的记录的总和,其中第一个sum函数计算stmt_status等于1时的stmt_amt字段的总和,第二个sum函数计算stmt_status等于0时的stmt_amt字段的总和。
之后,使用多个左连接(left join)来连接其他表,并通过Group方法对结果进行分组。通过Count方法获取查询结果的数量,并将其存储到resp.Count中。接着使用Offset方法指定偏移量,并使用Limit方法指定返回的记录数量。最后,使用Find方法将查询结果存储到resp.Data中。
函数最后使用a.ReturnSuccessCustomResponse方法将resp作为参数返回。
在这段代码中,adminStruct.BusinessOrderRechargeResponse结构体定义了多个字段,包括ResponseCommon和Data。ResponseCommon字段用于存储响应的公共信息,Data字段用于存储查询结果的数据。
希望能对你有所帮助!如果有任何进一步的问题,请随时提问。