From 93a7689a9427e446aba313b1f6a629ee2a067825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 10 Nov 2020 09:39:30 +0800 Subject: [PATCH] getusers --- business/model/dao/dao_user.go | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/business/model/dao/dao_user.go b/business/model/dao/dao_user.go index 883472bc7..62a601d07 100644 --- a/business/model/dao/dao_user.go +++ b/business/model/dao/dao_user.go @@ -58,21 +58,39 @@ func GetUserByIDWithMembers(db *DaoDB, fieldName, fieldValue string) (getSelfInf return getSelfInfoResult, err } -func GetUsers(db *DaoDB, userType int, keyword string, userIDs, userID2s, mobiles []string, offset, pageSize int) (userList []*model.User, totalCount int, err error) { +type GetUsersResult struct { + model.User + AcceptOrderCount int `json:"acceptOrderCount"` + FinishedOrderCount int `json:"finishedOrderCount"` +} + +func GetUsers(db *DaoDB, userType int, keyword string, userIDs, userID2s, mobiles []string, offset, pageSize int) (userList []*GetUsersResult, totalCount int, err error) { offset = jxutils.FormalizePageOffset(offset) pageSize = jxutils.FormalizePageSize(pageSize) if userType == 0 { userType = 255 } + sqlParams := []interface{}{} sql := ` SELECT SQL_CALC_FOUND_ROWS - t1.* + t1.*, t2.accept_order_count, t3.finished_order_count FROM user t1 - WHERE t1.status = 1 AND t1.deleted_at = ? AND t1.type & ? <> 0` - sqlParams := []interface{}{ - utils.DefaultTimeValue, - userType, + JOIN (SELECT user_id, COUNT(user_id) accept_order_count FROM job_order` + if len(userIDs) > 0 { + sql += " WHERE user_id IN (" + GenQuestionMarks(len(userIDs)) + ")" + sqlParams = append(sqlParams, userIDs) } + sql += `GROUP BY 1)t2 + JOIN (SELECT user_id, COUNT(user_id) finished_order_count FROM job_order WHERE 1 = 1 ` + if len(userIDs) > 0 { + sql += " AND user_id IN (" + GenQuestionMarks(len(userIDs)) + ")" + sqlParams = append(sqlParams, userIDs) + } + sql += ` AND status = ? GROUP BY 1)t3 + WHERE t1.status = 1 AND t1.deleted_at = ? AND t1.type & ? <> 0 + AND t1.user_id = t2.user_id + AND t1.user_id = t3.user_id` + sqlParams = append(sqlParams, model.JobOrderStatusFinish, utils.DefaultTimeValue, userType) if len(userIDs) > 0 { sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")" sqlParams = append(sqlParams, userIDs)