aa
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user