用户统计

This commit is contained in:
苏尹岚
2020-10-12 11:49:56 +08:00
parent adf23c0831
commit 31088be645
2 changed files with 35 additions and 22 deletions

View File

@@ -2,7 +2,6 @@ package localjx
import (
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
@@ -13,37 +12,45 @@ import (
type GetJxShopUsersResult struct {
model.User
BuyCount int `json:"buyCount"`
ActualPayPrice int `json:"actualPayPrice"`
BuyCount int `json:"buyCount"`
ActualPayPrice int `json:"actualPayPrice"`
// VendorUserID int `orm:"column(vendor_user_id)" json:"vendorUserID"`
GoodCommentCount int `json:"goodCommentCount"`
BadCommentCount int `json:"badCommentCount"`
UserMembers []*model.UserMember `json:"userMembers"`
}
func GetJxShopUsers(ctx *jxcontext.Context, keyword string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
func GetJxShopUsers(ctx *jxcontext.Context, keyword, fromTime, toTime string, vendorIDs []int, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
var (
requestList []*GetJxShopUsersResult
db = dao.GetDB()
fromTimeP = utils.Str2Time(fromTime)
toTimeP = utils.Str2Time(toTime)
sqlParams = []interface{}{}
)
sql := `
SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, b.buy_count, b.actual_pay_price
FROM user a,
(SELECT a.user_id, COUNT(*) buy_count, SUM(c.actual_pay_price) actual_pay_price
FROM user a
JOIN auth_bind b ON b.user_id = a.user_id AND b.deleted_at = ? AND b.type_id = ?
JOIN goods_order c ON c.user_id = a.user_id AND c.status <> ? AND c.store_id <> ?
WHERE a.deleted_at = ?
GROUP BY 1) b
WHERE a.user_id = b.user_id
`
sqlParams := []interface{}{
utils.DefaultTimeValue, api.WeixinMiniAppID2,
model.OrderStatusCanceled, model.MatterStoreID,
utils.DefaultTimeValue,
sql := `
SELECT a.*, b.name, b.created_at, b.last_login_at
FROM (
SELECT c.vendor_user_id, IF(c.consignee_mobile2 <> '',c.consignee_mobile2,c.consignee_mobile) mobile,
c.vendor_id,COUNT(*) buy_count, SUM(c.actual_pay_price) actual_pay_price, COUNT(d.score > 3) good_comment_count,
COUNT(d.score < 3) bad_comment_count
FROM goods_order c
LEFT JOIN jx_bad_comments d ON d.order_id = c.vendor_order_id
`
if fromTimeP != utils.ZeroTimeValue && toTimeP != utils.ZeroTimeValue {
sql += ` WHERE c.order_created_at >= ? AND c.order_created_at <= ?`
sqlParams = append(sqlParams, fromTimeP, toTimeP)
}
sql += `
AND c.status <> ?
GROUP BY 1,2,3)a
LEFT JOIN user b ON b.user_id = a.vendor_user_id
WHERE (b.deleted_at = ? OR b.deleted_at is null)
`
sqlParams = append(sqlParams, model.OrderStatusCanceled, utils.DefaultTimeValue)
if keyword != "" {
sql += " AND (a.user_id LIKE ? OR a.name LIKE ? OR a.mobile LIKE ? OR a.user_id2 LIKE ?)"
sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
sql += " AND (a.user_id LIKE ? OR b.name LIKE ? OR a.mobile LIKE ?)"
sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
}
sql += "LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize)