77 lines
2.9 KiB
Go
77 lines
2.9 KiB
Go
package localjx
|
|
|
|
import (
|
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
)
|
|
|
|
type GetJxShopUsersResult struct {
|
|
model.User
|
|
BuyCount int `json:"buyCount"`
|
|
ActualPayPrice int `json:"actualPayPrice"`
|
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
|
GoodCommentCount int `json:"goodCommentCount"`
|
|
BadCommentCount int `json:"badCommentCount"`
|
|
UserMembers []*model.UserMember `json:"userMembers"`
|
|
}
|
|
|
|
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 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
|
|
WHERE 1 = 1
|
|
`
|
|
if fromTimeP != utils.ZeroTimeValue && toTimeP != utils.ZeroTimeValue {
|
|
sql += ` AND c.order_created_at >= ? AND c.order_created_at <= ?`
|
|
sqlParams = append(sqlParams, fromTimeP, toTimeP)
|
|
}
|
|
if len(vendorIDs) > 0 {
|
|
sql += ` AND c.vendor_id IN(` + dao.GenQuestionMarks(len(vendorIDs)) + `) `
|
|
sqlParams = append(sqlParams, vendorIDs)
|
|
}
|
|
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 b.name LIKE ? OR a.mobile LIKE ?)"
|
|
sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
|
|
}
|
|
sql += "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, &requestList, sql, sqlParams...); err == nil {
|
|
pagedInfo = &model.PagedInfo{
|
|
TotalCount: dao.GetLastTotalRowCount2(db, txDB),
|
|
// Data: requestList,
|
|
}
|
|
for _, v := range requestList {
|
|
userMembers, _ := dao.GetUserMember(db, v.UserID, "", "", model.VendorIDJX, model.MemberTypeDiscountCard, model.YES)
|
|
v.UserMembers = userMembers
|
|
}
|
|
pagedInfo.Data = requestList
|
|
}
|
|
return pagedInfo, err
|
|
}
|