func AppOperateRecharge(a *decorator.ApiBase) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRecharge{} a.Ts.Table("business_base as a"). Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, a.'). Where("a.link_id=? and a.user_type=?", a.Token.LinkId, a.Token.UserType) return a.ReturnSuccessCustomResponse(resp) }查询多个表数据并储存到这个结构体待结算金额和已结算金额需要查某一个表里前端传回来的同一个id某一个字段状态为1的关联字段数据总和type BusinessOrderRecharge struct { Bid int64 json:"bid" // 商家ID Bname string json:"bname" // 商家名称 Acct_Bal int64 json:"acct_Bal" //账面余额 Buy_sum_amt int64 json:"buy_Sum_Amt" //采购货款 Unpaid_amt int64 json:"unpaid_Amt" //待结算货款 Stmt_amt int64 json:"stmt_Amt" //已结算金额 Admin_uid int64 json:"admin_Uid" //管理员 Admin_name string json:"admin_name" //管理员姓名 Status string json:"status" //商家状态
时间: 2024-04-15 18:30:05 浏览: 163
根据你的要求,修改后的代码如下所示:
```go
func AppOperateRecharge(a *decorator.ApiBase) error {
logger.AccessLogger.Info("AppOperateRecharge...")
resp := adminStruct.BusinessOrderRecharge{}
// 查询待结算金额总和
unpaidQuery := fmt.Sprintf("SELECT SUM(unpaid_column_name) FROM table_name WHERE id = ? AND status = 1")
var unpaidAmt int64
err := a.Ts.Raw(unpaidQuery, a.Token.ID).Scan(&unpaidAmt).Error
if err != nil {
return err
}
resp.Unpaid_amt = unpaidAmt
// 查询已结算金额总和
stmtQuery := fmt.Sprintf("SELECT SUM(stmt_column_name) FROM table_name WHERE id = ? AND status = 1")
var stmtAmt int64
err = a.Ts.Raw(stmtQuery, a.Token.ID).Scan(&stmtAmt).Error
if err != nil {
return err
}
resp.Stmt_amt = stmtAmt
// 查询其他字段
query := `SELECT bid, bname, acct_bal, buy_Sum_Amt, admin_uid, admin_name, status FROM business_base WHERE link_id = ? AND user_type = ?`
err = a.Ts.Raw(query, a.Token.LinkId, a.Token.UserType).Scan(&resp).Error
if err != nil {
return err
}
return a.ReturnSuccessCustomResponse(resp)
}
```
请将 `unpaid_column_name` 替换为待结算金额字段的列名,`stmt_column_name` 替换为已结算金额字段的列名,`table_name` 替换为包含这些字段的表名。
在代码中,首先使用原始 SQL 查询语句获取待结算金额总和和已结算金额总和,然后将查询结果分别存储到 `resp.Unpaid_amt` 和 `resp.Stmt_amt` 字段中。接下来,使用原始 SQL 查询语句查询其他字段,并将查询结果存储到 `resp` 变量中。
请注意,在实际应用中,你需要根据实际情况修改列名和表名,并确保已导入所需的包和依赖项。另外,为了安全起见,在实际应用中应该对用户输入的 ID 进行适当的验证和防止 SQL 注入攻击的处理。
阅读全文