user_charge.go 2.83 KB
Newer Older
1 2 3 4
package main

import (
	"fmt"
hujiebin's avatar
hujiebin committed
5 6
	"git.hilo.cn/hilo-common/script/model"
	"git.hilo.cn/hilo-common/script/mysql"
7 8 9
)

func main() {
hujiebin's avatar
hujiebin committed
10
	//uids := []uint64{889621, 904971, 1072931, 1083981, 1108951, 1147471, 1187511, 1365041, 1496521, 1540091, 1888121, 2037771, 2236221, 2396461, 2603721, 2613321, 2648851, 2778081, 3142631, 3219391, 3401561, 3533911, 3602511, 3791481, 3840571, 3845671, 3865481, 3873381, 3892321, 4009941}
11 12 13 14 15
	//var uids []uint64
	//if err := mysql.ProdReadOnlyDB.Raw("select id from user where origin_code <> `code`").Find(&uids).Error; err != nil {
	//	panic(err)
	//}
	uids := []uint64{548601, 886081, 923871, 1055451, 1263881, 1388201, 1670021, 1791671, 1844281, 1893271, 2087771, 2132651, 2133891, 2382981, 3058361, 3235801, 3270831, 3318141, 3533911, 3699011, 4121831}
hujiebin's avatar
hujiebin committed
16 17 18 19 20 21 22 23
	var users []model.User
	if err := mysql.ProdReadOnlyDB.Model(model.User{}).Where("id in ?", uids).Find(&users).Error; err != nil {
		panic(err)
	}
	uM := make(map[uint64]model.User)
	for k, u := range users {
		uM[u.Id] = users[k]
	}
24
	var data = make(map[uint64][2]int64)
25
	for _, uid := range uids {
26 27 28
		m1, d1, _ := GetUsersChargeMoneySum([]uint64{uid})
		m2, d2, _ := GetUserDealerTransferMoneySum([]uint64{uid})
		data[uid] = [2]int64{m1 + m2, d1 + d2}
29
	}
hujiebin's avatar
hujiebin committed
30
	for uid, num := range data {
31
		fmt.Printf("%d,%d,%d\n", uid, num[0], num[1])
32 33 34 35 36 37
	}
}

// 获取用户范围内充值金额
// param sinceTime: 过去n时间内
// 返回美分
38
func GetUsersChargeMoneySum(uids []uint64) (int64, int64, error) {
39
	if len(uids) <= 0 {
40
		return 0, 0, nil
41 42
	}
	type R struct {
43 44
		Money   int64
		Diamond int64
45 46 47 48
	}
	var money R
	if err := mysql.ProdReadOnlyDB.Table("diamond_account_detail AS d").
		Joins("INNER JOIN pay_order AS p ON d.origin_id = p.id").
hujiebin's avatar
hujiebin committed
49 50
		Where("d.user_id in (?) AND operate_type in (?) AND add_reduce = 1",
			uids, []int{int(4), int(42), int(55), int(68)}).
51 52 53 54
		Where("d.created_time >= ? AND d.created_time <= ?", "2023-02-08 18:45:00", "2023-02-15 18:00:00").
		Order("d.user_id").
		Select("SUM(p.price) as money,SUM(d.num) as diamond").Scan(&money).Error; err != nil {
		return 0, 0, err
55
	}
56
	return money.Money, money.Diamond, nil
57 58 59 60 61
}

// 获取代理范围内总充值金额
// param sinceTime: 过去n时间内
// 返回美分
62
func GetUserDealerTransferMoneySum(uids []uint64) (int64, int64, error) {
63
	if len(uids) <= 0 {
64
		return 0, 0, nil
65 66
	}
	type R struct {
67 68
		Price   int64
		Diamond int64
69 70 71 72
	}
	var money R
	if err := mysql.ProdReadOnlyDB.Table("diamond_account_detail AS d").
		Joins("INNER JOIN dealer_transfer_detail AS t ON d.origin_id = t.id").
hujiebin's avatar
hujiebin committed
73
		Where("d.user_id in (?) AND operate_type = ? AND add_reduce = 1",
74 75 76
			uids, 26).Select("SUM(t.dollar) as price,SUM(d.num) as diamond").
		Where("d.created_time >= ? AND d.created_time <= ?", "2023-02-08 18:45:00", "2023-02-15 18:00:00").
		Order("d.user_id").
77
		Scan(&money).Error; err != nil {
78
		return 0, 0, err
79
	}
80
	return money.Price, money.Diamond, nil
81
}