From b20449bdfd69a08c183a95cc75a5577d4cdf0643 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 20 May 2021 15:48:51 +0800 Subject: [PATCH] aa --- business/jxstore/report/report.go | 76 +++++++++++++++++++++++++++++- business/model/dao/report.go | 77 ------------------------------- 2 files changed, 75 insertions(+), 78 deletions(-) diff --git a/business/jxstore/report/report.go b/business/jxstore/report/report.go index 4414e02c5..46f635e7e 100644 --- a/business/jxstore/report/report.go +++ b/business/jxstore/report/report.go @@ -704,5 +704,79 @@ func RefreshJDMembers(ctx *jxcontext.Context) (err error) { } func UserMemberReport(ctx *jxcontext.Context, vendorID int, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) { - return dao.UserMemberReport(dao.GetDB(), vendorID, keyword, offset, pageSize) + var ( + db = dao.GetDB() + ) + var list []*dao.UserMemberReportResult + sql := ` + SELECT SQL_CALC_FOUND_ROWS a.mobile, IF(a.vendor_id = ?, c.name, b.consignee_name) name, IF(a.deleted_at = '1970-01-01 00:00:00',0,1) status, a.vendor_id, + COUNT(b.*) buy_count, COUNT(bb.*) finished_count, SUM(b.actual_pay_price) buy_price, SUM(b.actual_pay_price) finished_price, COUNT(d.score > 3) good_comment_count, + COUNT(d.score < 3) bad_comment_count + FROM user_member a + LEFT JOIN goods_order b ON a.mobile = b.consignee_mobile2 AND a.vendor_id = b.vendor_id + LEFT JOIN goods_order bb ON a.mobile = bb.consignee_mobile2 AND bb.status = ? AND a.vendor_id = bb.vendor_id + LEFT JOIN user c ON c.mobile = a.mobile + LEFT JOIN jx_bad_comments d ON d.order_id = b.vendor_order_id + ` + sqlParams := []interface{}{ + model.VendorIDJX, model.OrderStatusFinished, + } + if vendorID != -1 { + sql += " AND a.vendor_id = ?" + sqlParams = append(sqlParams, vendorID) + } + if keyword != "" { + keywordLike := "%" + keyword + "%" + sql += " AND (a.mobile LIKE ? OR name LIKE ?)" + sqlParams = append(sqlParams, keywordLike, keywordLike) + } + sql += ` + GROUP BY 1, 2, 3 + LIMIT ? OFFSET ? + ` + pageSize = jxutils.FormalizePageSize(pageSize) + sqlParams = append(sqlParams, pageSize, offset) + txDB, _ := dao.Begin(db) + defer dao.Commit(db, txDB) + if err = dao.GetRowsTx(txDB, &list, sql, sqlParams...); err == nil { + page = &model.PagedInfo{ + TotalCount: dao.GetLastTotalRowCount2(db, txDB), + //Data: page, + } + task := tasksch.NewParallelTask("", tasksch.NewParallelConfig().SetIsContinueWhenError(true), jxcontext.AdminCtx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + v := batchItemList[0].(*dao.UserMemberReportResult) + var good *model.GoodsOrder + sql := ` + SELECT * FROM goods_order WHERE consignee_mobile2 = ? AND vendor_id = ? LIMIT 1 OFFSET 0 + ` + sqlParams := []interface{}{v.Mobile, v.VendorID} + dao.GetRow(db, &good, sql, sqlParams) + if good != nil { + v.NewPrice = good.ActualPayPrice + } + var place *model.Place + sql2 := ` + SELECT a.* FROM place a,( + SELECT b.city_code, COUNT(*) count + FROM goods_order a + LEFT JOIN store b ON b.id = IF(a.jx_store_id = 0, store_id, jx_store_id) + WHERE consignee_mobile2 = ? AND vendor_id = ? + GROUP BY 1 + ORDER BY COUNT(*) + LIMIT 1 OFFSET 0)b + WHERE a.code = b.city_code + ` + dao.GetRow(db, &place, sql2, sqlParams) + if place != nil { + v.CityName = place.Name + v.CityCode = place.Code + } + return retVal, err + }, list) + tasksch.HandleTask(task, nil, true).Run() + task.GetResult(0) + page.Data = list + } + return page, err } diff --git a/business/model/dao/report.go b/business/model/dao/report.go index b0d4bc022..3acd1ea07 100644 --- a/business/model/dao/report.go +++ b/business/model/dao/report.go @@ -1,8 +1,6 @@ package dao import ( - "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" - "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "time" "git.rosy.net.cn/baseapi/utils" @@ -392,78 +390,3 @@ type UserMemberReportResult struct { CityCode int `json:"cityCode"` // 常住城市 CityName string `json:"cityName"` } - -func UserMemberReport(db *DaoDB, vendorID int, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) { - var list []*UserMemberReportResult - sql := ` - SELECT SQL_CALC_FOUND_ROWS a.mobile, IF(a.vendor_id = ?, c.name, b.consignee_name) name, IF(a.deleted_at = '1970-01-01 00:00:00',0,1) status, a.vendor_id, - COUNT(b.*) buy_count, COUNT(bb.*) finished_count, SUM(b.actual_pay_price) buy_price, SUM(b.actual_pay_price) finished_price, COUNT(d.score > 3) good_comment_count, - COUNT(d.score < 3) bad_comment_count - FROM user_member a - LEFT JOIN goods_order b ON a.mobile = b.consignee_mobile2 AND a.vendor_id = b.vendor_id - LEFT JOIN goods_order bb ON a.mobile = bb.consignee_mobile2 AND bb.status = ? AND a.vendor_id = bb.vendor_id - LEFT JOIN user c ON c.mobile = a.mobile - LEFT JOIN jx_bad_comments d ON d.order_id = b.vendor_order_id - ` - sqlParams := []interface{}{ - model.VendorIDJX, model.OrderStatusFinished, - } - if vendorID != -1 { - sql += " AND a.vendor_id = ?" - sqlParams = append(sqlParams, vendorID) - } - if keyword != "" { - keywordLike := "%" + keyword + "%" - sql += " AND (a.mobile LIKE ? OR name LIKE ?)" - sqlParams = append(sqlParams, keywordLike, keywordLike) - } - sql += ` - GROUP BY 1, 2, 3 - LIMIT ? OFFSET ? - ` - pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) - txDB, _ := Begin(db) - defer Commit(db, txDB) - if err = GetRowsTx(txDB, &list, sql, sqlParams...); err == nil { - page = &model.PagedInfo{ - TotalCount: GetLastTotalRowCount2(db, txDB), - //Data: page, - } - task := tasksch.NewParallelTask("", tasksch.NewParallelConfig().SetIsContinueWhenError(true), jxcontext.AdminCtx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - v := batchItemList[0].(*UserMemberReportResult) - var good *model.GoodsOrder - sql := ` - SELECT * FROM goods_order WHERE consignee_mobile2 = ? AND vendor_id = ? LIMIT 1 OFFSET 0 - ` - sqlParams := []interface{}{v.Mobile, v.VendorID} - GetRow(db, &good, sql, sqlParams) - if good != nil { - v.NewPrice = good.ActualPayPrice - } - var place *model.Place - sql2 := ` - SELECT a.* FROM place a,( - SELECT b.city_code, COUNT(*) count - FROM goods_order a - LEFT JOIN store b ON b.id = IF(a.jx_store_id = 0, store_id, jx_store_id) - WHERE consignee_mobile2 = ? AND vendor_id = ? - GROUP BY 1 - ORDER BY COUNT(*) - LIMIT 1 OFFSET 0)b - WHERE a.code = b.city_code - ` - GetRow(db, &place, sql2, sqlParams) - if place != nil { - v.CityName = place.Name - v.CityCode = place.Code - } - return retVal, err - }, list) - tasksch.HandleTask(task, nil, true).Run() - task.GetResult(0) - page.Data = list - } - return page, err -}