func AppOperateRecharge(a *decorator.ApiBase, data *adminStruct.BusinessOrderRechargeName) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRechargeResponse{} resp.ResponseCommon = a.NewSuccessResponseCommon() resQuerya := a.Ts.Table("business_base as a"). Select(`s.bid, a.bname, s.acct_bal, s.buy_sum_amt, ifnull(sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END), 0) as unpaid_amt, ifnull(sum(CASE WHEN i.epay_status=0 and i.contract_no='' and i.link_id=a.bid THEN i.order_amt ELSE 0 END ),0)as pur_no_sett, ifnull(sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END), 0 )as stmt_amt, a.admin_uid, u.user_name, a.status`). Joins("left join source_pay_info as i on i.link_id=a.bid"). 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") if len(data.Bname) > 0 { resQuerya = resQuerya.Where("a.bname like ?", data.Bname) } utils.Error(resQuerya.Limit(a.Size). Offset(a.Offset).Count(&resp.Count). Find(&resp.Data).Error) return a.ReturnSuccessCustomResponse(resp) }
时间: 2024-04-17 15:29:22 浏览: 28
这是一个名为`AppOperateRecharge`的函数,它接受两个参数`a`和`data`。函数的目的是处理应用程序的充值业务订单。
在函数中,首先记录了一条访问日志。然后创建了一个`adminStruct.BusinessOrderRechargeResponse`结构体实例`resp`,并设置了它的`ResponseCommon`字段为一个新的成功响应。
接下来,创建了一个查询`resQuerya`,用于从数据库中获取相关数据。查询涉及多个表之间的连接操作。首先,将`business_base`表和`source_pay_info`表连接,并使用左连接将它们与其他表关联。查询还包括一些列的选择和聚合函数。如果传入的`data.Bname`参数不为空,则使用`like`操作符对`a.bname`列进行模糊匹配。
然后,使用`resQuerya`进行查询,并限制返回结果的数量和偏移量。通过调用`Count`方法获取符合条件的记录数,并将其赋值给`resp.Count`。最后,通过调用`Find`方法将查询结果赋值给`resp.Data`。
在函数的最后,通过调用`a.ReturnSuccessCustomResponse`方法返回成功响应,并将`resp`作为参数传递给该方法。
函数返回一个错误类型的值,表示函数执行过程中是否发生了错误。
相关问题
修改这段代码里的错误func AppOperateRecharge(a *decorator.ApiBase, data *adminStruct.BusinessOrderRechargeName) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRechargeResponse{} resp.ResponseCommon = a.NewSuccessResponseCommon() resQuerya := a.Ts.Table("business_base as a"). Select(`s.bid, a.bname, s.acct_bal, s.buy_sum_amt, + ifnull(sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END), 0) as unpaid_amt, + ifnull(sum(i.order_amt) i.epay_status=0 and i.contract_no='' ),0)as buyunpaid, + ifnull(sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END), 0 )as stmt_amt, + a.admin_uid, u.user_name, a.status`). Joins("left join source_pay_info as i on i.link_id=a.bid"). 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") if len(data.Bname) > 0 { resQuerya = resQuerya.Where("a.bname like ?", data.Bname) } utils.Error(resQuerya.Limit(a.Size). Offset(a.Offset).Count(&resp.Count). Find(&resp.Data).Error) return a.ReturnSuccessCustomResponse(resp) }
修改后的代码如下:
```go
func AppOperateRecharge(a *decorator.ApiBase, data *adminStruct.BusinessOrderRechargeName) error {
logger.AccessLogger.Info("AppOperateRecharge...")
resp := adminStruct.BusinessOrderRechargeResponse{}
resp.ResponseCommon = a.NewSuccessResponseCommon()
resQuerya := a.Ts.Table("business_base as a").
Select(`s.bid, a.bname, s.acct_bal, s.buy_sum_amt,
ifnull(sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END), 0) as unpaid_amt,
ifnull(sum(CASE WHEN i.epay_status=0 and i.contract_no='' and i.link_id = a.bid THEN i.order_amt ELSE 0 END), 0) as buyunpaid,
ifnull(sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END), 0) as stmt_amt,
a.admin_uid, u.user_name, a.status`).
Joins("left join source_pay_info as i on i.link_id=a.bid").
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")
if len(data.Bname) > 0 {
resQuerya = resQuerya.Where("a.bname like ?", data.Bname)
}
utils.Error(resQuerya.Limit(a.Size).
Offset(a.Offset).Count(&resp.Count).
Find(&resp.Data).Error)
return a.ReturnSuccessCustomResponse(resp)
}
```
修改的地方在以下部分:
```go
ifnull(sum(i.order_amt) i.epay_status=0 and i.contract_no='' ),0)as buyunpaid,
```
修改为:
```go
ifnull(sum(CASE WHEN i.epay_status=0 and i.contract_no='' and i.link_id = a.bid THEN i.order_amt ELSE 0 END), 0) as buyunpaid,
```
修改后的代码将修复原来存在的错误。现在,`ifnull` 函数将正确计算满足条件的订单金额总和,并将结果存储在 `buyunpaid` 字段中。这样,代码就能正常运行。
func AppOperateRecharge(a *decorator.ApiBase, data *adminStruct.BusinessOrderRecharge) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRechargeResponse{} resp.ResponseCommon = a.NewSuccessResponseCommon() resQuerya := a.Ts.Table("business_base as a"). Select(`s.bid, a.bname, s.acct_bal, s.buy_sum_amt, + ifnull(sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END), 0) as unpaid_amt, + ifnull(sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END), 0 )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") if data.BusinessName > 0 { resQuerya = resQuerya.Where(" a.bname=?", data.BusinessName) } Count(&resp.Count). Offset(a.Offset). Limit(a.Size). Find(&resp.Data) return a.ReturnSuccessCustomResponse(resp) }
在函数`AppOperateRecharge`中增加商家名称搜索的功能,您可以按照以下修改:
```go
func AppOperateRecharge(a *decorator.ApiBase, data *adminStruct.BusinessOrderRecharge) error {
logger.AccessLogger.Info("AppOperateRecharge...")
resp := adminStruct.BusinessOrderRechargeResponse{}
resp.ResponseCommon = a.NewSuccessResponseCommon()
resQuerya := a.Ts.Table("business_base as a").
Select(`s.bid, a.bname, s.acct_bal, s.buy_sum_amt,
ifnull(sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END), 0) as unpaid_amt,
ifnull(sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END), 0 )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")
if len(data.BusinessName) > 0 {
resQuerya = resQuerya.Where("a.bname LIKE ?", "%"+data.BusinessName+"%")
}
resQuerya.Count(&resp.Count).
Offset(a.Offset).
Limit(a.Size).
Find(&resp.Data)
return a.ReturnSuccessCustomResponse(resp)
}
```
在上述代码中,我们将函数的参数`data`改为`*adminStruct.BusinessOrderRecharge`类型,并在查询语句中添加了一个条件,根据商家名称进行模糊匹配。使用`LIKE`关键字和通配符`%`来实现模糊搜索。
这样,当调用`AppOperateRecharge`函数时,可以传递`BusinessName`字段作为参数进行商家名称的搜索,例如:
```go
data := &adminStruct.BusinessOrderRecharge{
// ...
BusinessName: "商家名称",
// ...
}
err := AppOperateRecharge(a, data)
```
请注意,这只是一个示例修改,具体的实现可能因为代码结构和需求的不同而有所调整。