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) }查询多个表数据并储存到这个结构体商家名称在user_base表里面待结算金额和已结算金额需要查某一个表里前端传回来的同一个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 16:30:09 浏览: 257
根据你提供的代码,你想要查询多个表的数据并将结果存储到 `BusinessOrderRecharge` 结构体中。其中,商家名称需要从 `user_base` 表中获取,待结算金额和已结算金额需要从某一个表中查询同一个 ID 下某一个字段状态为 1 的关联字段数据总和。以下是修改后的代码示例:
```go
func AppOperateRecharge(a *decorator.ApiBase) error {
logger.AccessLogger.Info("AppOperateRecharge...")
resp := adminStruct.BusinessOrderRecharge{}
// 查询商家名称
err := a.Ts.Table("user_base").
Select("bname").
Where("link_id = ? AND user_type = ?", a.Token.LinkId, a.Token.UserType).
Scan(&resp.Bname).Error
if err != nil {
return err
}
// 查询待结算金额总和
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, 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)
}
```
请注意以下几点:
1. 你需要根据实际情况修改 `user_base`、`unpaid_column_name`、`table_name`、`stmt_column_name` 和 `business_base`,将它们替换为你实际使用的表名和列名。
2. 使用 `Scan()` 方法将查询结果分别存储到 `resp.Bname`、`resp.Unpaid_amt` 和 `resp.Stmt_amt` 字段中。
3. 在查询语句中使用 `?` 占位符来代替变量,然后在 `Scan()` 方法中传递相应的参数来填充占位符。
4. 请确保你已经导入了正确的包和依赖项,并根据实际情况进行错误处理和日志记录等操作。
这个示例代码仅供参考,你需要根据实际情况进行适当的修改。
阅读全文