go-common/app/job/main/growup/service/income/run_test.go
2019-04-22 18:49:16 +08:00

1026 lines
43 KiB
Go

package income
import (
"bytes"
"context"
"fmt"
"go-common/app/job/main/growup/conf"
"strconv"
"strings"
"testing"
"time"
model "go-common/app/job/main/growup/model/income"
xtime "go-common/library/time"
. "github.com/smartystreets/goconvey/convey"
)
func Test_Run(t *testing.T) {
Convey("Test Run creative one day one record\n", t, func() {
c := context.Background()
deleteAll(c)
date := "2018-06-01"
dateSec := "2018-06-01 15:02:03"
d, _ := time.ParseInLocation("2006-01-02", date, time.Local)
ac := insertAvDailyCharge(c, date, dateSec, 1101, 110, 10)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var totalIncome, taxMoney, count int64 = 10, 0, 1
checkAllData(c, ac, totalIncome, taxMoney, count, date)
})
}
func Test_RunWithBubble(t *testing.T) {
var (
c = context.TODO()
date = time.Now()
avid = int64(2333)
mid = int64(233)
charge = int64(10)
err error
)
Convey("Test Run ", t, func() {
deleteAll(c)
s.conf.Bubble = &conf.BubbleConfig{BRatio: []*conf.BRatio{{BType: 1, Ratio: 0.8}}}
insertBubbleMeta(c, fmt.Sprintf("(%d,%d,'%s')", avid, 1, date.Format("2006-01-02")))
dailyCharge := insertAvDailyCharge(c, date.Format("2006-01-02"), date.Format("2006-01-02 15:04:05"), avid, mid, charge)
err = s.run(c, date)
So(err, ShouldBeNil)
err = s.runStatis(c, date)
So(err, ShouldBeNil)
checkAllData(c, dailyCharge, 8, 0, 1, date.Format("2006-01-02"))
})
}
func Test_RunWithMultiBubble(t *testing.T) {
var (
c = context.TODO()
date = time.Now()
avid = int64(2333)
mid = int64(233)
charge = int64(10)
err error
)
Convey("Test Run ", t, func() {
deleteAll(c)
s.conf.Bubble = &conf.BubbleConfig{BRatio: []*conf.BRatio{{BType: 1, Ratio: 0.8}, {BType: 2, Ratio: 0.7}}}
insertBubbleMeta(c, fmt.Sprintf("(%d,%d,'%s')", avid, 1, date.Format("2006-01-02")))
insertBubbleMeta(c, fmt.Sprintf("(%d,%d,'%s')", avid, 2, date.Format("2006-01-02")))
dailyCharge := insertAvDailyCharge(c, date.Format("2006-01-02"), date.Format("2006-01-02 15:04:05"), avid, mid, charge)
err = s.run(c, date)
So(err, ShouldBeNil)
err = s.runStatis(c, date)
So(err, ShouldBeNil)
checkAllData(c, dailyCharge, 7, 0, 1, date.Format("2006-01-02"))
})
}
func Test_AvIncome(t *testing.T) {
Convey("Test av income\n", t, func() {
c := context.Background()
deleteAll(c)
ac1 := insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
ac2 := insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome1 := checkAvIncome(c, ac1, 10, 0, 1, "2018-06-01")
avIncome2 := checkAvIncome(c, ac2, 10, 0, 1, "2018-06-01")
checkAvIncomeStatis(c, avIncome1, 10)
checkAvIncomeStatis(c, avIncome2, 10)
ac3 := insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 20)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome3 := checkAvIncome(c, ac3, 30, 0, 1, "2018-06-02")
checkAvIncomeStatis(c, avIncome2, 10)
checkAvIncomeStatis(c, avIncome3, 30)
ac3 = insertAvDailyCharge(c, "2018-07-01", "2018-06-01 15:02:03", 1101, 110, 20)
d, _ = time.ParseInLocation("2006-01-02", "2018-07-01", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome3 = checkAvIncome(c, ac3, 50, 0, 1, "2018-07-01")
checkAvIncomeStatis(c, avIncome3, 50)
})
}
func Test_AvIncomeDateStatis(t *testing.T) {
Convey("Test av income daily weekly monthly statis\n", t, func() {
c := context.Background()
deleteAll(c)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1103, 110, 3500)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkAvIncomeDateStatis(c, 0, 2, 1, 3494, 12, d, "av_income_daily_statis")
checkAvIncomeDateStatis(c, 4, 1, 1, 3494, 12, d, "av_income_daily_statis")
weekD := getStartWeeklyDate(d)
checkAvIncomeDateStatis(c, 0, 2, 1, 3494, 12, weekD, "av_income_weekly_statis")
checkAvIncomeDateStatis(c, 4, 1, 1, 3494, 12, weekD, "av_income_weekly_statis")
monthD := getStartMonthlyDate(d)
checkAvIncomeDateStatis(c, 0, 2, 1, 3494, 12, monthD, "av_income_monthly_statis")
checkAvIncomeDateStatis(c, 4, 1, 1, 3494, 12, monthD, "av_income_monthly_statis")
// insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 1000)
// insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1102, 110, 1000)
// insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1103, 110, 4000)
// d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
// err = s.run(c, d)
// So(err, ShouldBeNil)
// checkAvIncomeDateStatis(c, 0, 2, 1, 5801, 12, d, "av_income_daily_statis")
// checkAvIncomeDateStatis(c, 1, 1, 1, 5801, 12, d, "av_income_daily_statis")
// weekD = getStartWeeklyDate(d)
// income := 5801 + 3494
// checkAvIncomeDateStatis(c, 0, 2, 1, income, 12, weekD, "av_income_weekly_statis")
// checkAvIncomeDateStatis(c, 1, 0, 1, income, 12, weekD, "av_income_weekly_statis")
// checkAvIncomeDateStatis(c, 2, 1, 1, income, 12, weekD, "av_income_weekly_statis")
// monthD = getStartMonthlyDate(d)
// checkAvIncomeDateStatis(c, 0, 2, 1, income, 12, monthD, "av_income_monthly_statis")
// checkAvIncomeDateStatis(c, 1, 0, 1, income, 12, monthD, "av_income_monthly_statis")
// checkAvIncomeDateStatis(c, 2, 1, 1, income, 12, monthD, "av_income_monthly_statis")
// insertAvDailyCharge(c, "2018-06-10", "2018-06-01 15:02:03", 1101, 110, 15000)
// insertAvDailyCharge(c, "2018-06-10", "2018-06-01 15:02:03", 1102, 110, 15000)
// insertAvDailyCharge(c, "2018-06-10", "2018-06-01 15:02:03", 1103, 110, 40000)
// d, _ = time.ParseInLocation("2006-01-02", "2018-06-10", time.Local)
// err = s.run(c, d)
// So(err, ShouldBeNil)
// checkAvIncomeDateStatis(c, 0, 0, 1, 54651, 12, d, "av_income_daily_statis")
// checkAvIncomeDateStatis(c, 1, 0, 1, 54651, 12, d, "av_income_daily_statis")
// checkAvIncomeDateStatis(c, 3, 2, 1, 54651, 12, d, "av_income_daily_statis")
// checkAvIncomeDateStatis(c, 4, 1, 1, 54651, 12, d, "av_income_daily_statis")
// weekD = getStartWeeklyDate(d)
// checkAvIncomeDateStatis(c, 0, 0, 1, 54651, 12, weekD, "av_income_weekly_statis")
// checkAvIncomeDateStatis(c, 1, 0, 1, 54651, 12, weekD, "av_income_weekly_statis")
// checkAvIncomeDateStatis(c, 3, 2, 1, 54651, 12, weekD, "av_income_weekly_statis")
// checkAvIncomeDateStatis(c, 4, 1, 1, 54651, 12, weekD, "av_income_weekly_statis")
// monthD = getStartMonthlyDate(d)
// checkAvIncomeDateStatis(c, 0, 0, 1, 63946, 12, monthD, "av_income_monthly_statis")
// checkAvIncomeDateStatis(c, 1, 0, 1, 63946, 12, monthD, "av_income_monthly_statis")
// checkAvIncomeDateStatis(c, 3, 2, 1, 63946, 12, monthD, "av_income_monthly_statis")
// checkAvIncomeDateStatis(c, 4, 1, 1, 63946, 12, monthD, "av_income_monthly_statis")
// insertAvDailyCharge(c, "2018-07-10", "2018-06-01 15:02:03", 1101, 110, 100)
// d, _ = time.ParseInLocation("2006-01-02", "2018-07-10", time.Local)
// err = s.run(c, d)
// So(err, ShouldBeNil)
// monthD = getStartMonthlyDate(d)
// checkAvIncomeDateStatis(c, 0, 1, 1, 100, 12, monthD, "av_income_monthly_statis")
// checkAvIncomeDateStatis(c, 1, 0, 1, 100, 12, monthD, "av_income_monthly_statis")
})
}
func Test_UpIncome(t *testing.T) {
Convey("Test up income\n", t, func() {
c := context.Background()
deleteAll(c)
ac1 := insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
ac2 := insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome1 := checkAvIncome(c, ac1, 10, 0, 1, "2018-06-01")
avIncome2 := checkAvIncome(c, ac2, 10, 0, 1, "2018-06-01")
avs := []*model.AvIncome{avIncome1, avIncome2}
up := checkUpIncome(c, avs, 20, "up_income", "", 2)
checkUpIncomeWeekly(c, avs, 20, 2)
checkUpIncomeMonthly(c, avs, 20, 2)
checkUpIncomeStatis(c, up.MID, 20)
ac3 := insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 10)
ac4 := insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1102, 110, 10)
ac5 := insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1103, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome3 := checkAvIncome(c, ac3, 20, 0, 1, "2018-06-02")
avIncome4 := checkAvIncome(c, ac4, 20, 0, 1, "2018-06-02")
avIncome5 := checkAvIncome(c, ac5, 10, 0, 1, "2018-06-02")
avs = append(avs, avIncome3)
avs = append(avs, avIncome4)
avs = append(avs, avIncome5)
up = checkUpIncome(c, []*model.AvIncome{avIncome3, avIncome4, avIncome5}, 50, "up_income", "", 3)
checkUpIncomeWeekly(c, avs, 50, 3)
checkUpIncomeMonthly(c, avs, 50, 3)
checkUpIncomeStatis(c, up.MID, 50)
checkUpAccount(c, 110, 50, 50, 0, "2018-05")
})
}
func Test_UpIncomeDailyStatis(t *testing.T) {
Convey("Test up income daily statis\n", t, func() {
c := context.Background()
deleteAll(c)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1103, 111, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeDailyStatis(c, 0, 2, 30, d)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 10000)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1102, 111, 30000)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1103, 110, 70000)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeDailyStatis(c, 7, 1, 87300, d)
checkUpIncomeDailyStatis(c, 8, 1, 87300, d)
})
}
func Test_UpIncomeStatis(t *testing.T) {
Convey("Test up income statis\n", t, func() {
c := context.Background()
deleteAll(c)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1103, 111, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeStatis(c, 110, 20)
checkUpIncomeStatis(c, 111, 10)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1102, 110, 10)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1103, 111, 10)
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1104, 112, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeStatis(c, 110, 40)
checkUpIncomeStatis(c, 111, 20)
checkUpIncomeStatis(c, 112, 10)
insertAvDailyCharge(c, "2018-07-02", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-07-02", "2018-06-01 15:02:03", 1102, 110, 10)
insertAvDailyCharge(c, "2018-07-02", "2018-06-01 15:02:03", 1103, 111, 10)
insertAvDailyCharge(c, "2018-07-02", "2018-06-01 15:02:03", 1104, 112, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-07-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeStatis(c, 110, 60)
checkUpIncomeStatis(c, 111, 30)
checkUpIncomeStatis(c, 112, 20)
})
}
func Test_AvIncomeTag(t *testing.T) {
Convey("Test av income tag\n", t, func() {
c := context.Background()
deleteAll(c)
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,200,0)")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkAvIncomeTag(c, 1101, 20, 0, 20, "2018-06-01")
s.dao.Exec(c, "delete from av_charge_ratio")
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,20,1)")
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkAvIncomeTag(c, 1101, 30, 0, 50, "2018-06-02")
// tax
s.dao.Exec(c, "delete from av_charge_ratio")
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,20000,1)")
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1101, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-03", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkAvIncomeTag(c, 1101, 20010, 0, 20060, "2018-06-03")
})
}
func Test_IncomeTax(t *testing.T) {
Convey("Test income tax\n", t, func() {
c := context.Background()
deleteAll(c)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 3000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 111, 4000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1103, 112, 8000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1104, 113, 12000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1105, 114, 18000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1106, 115, 40000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1107, 116, 80000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1108, 117, 150000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1109, 118, 250000)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 11010, 119, 500000)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkAvIncomeTag(c, 1101, 3000, 0, 3000, "2018-06-01")
checkAvIncomeTag(c, 1102, 3950, 50, 3950, "2018-06-01")
checkAvIncomeTag(c, 1103, 7600, 400, 7600, "2018-06-01")
checkAvIncomeTag(c, 1104, 11100, 900, 11100, "2018-06-01")
checkAvIncomeTag(c, 1105, 16050, 1950, 16050, "2018-06-01")
checkAvIncomeTag(c, 1106, 33150, 6850, 33150, "2018-06-01")
checkAvIncomeTag(c, 1107, 61650, 18350, 61650, "2018-06-01")
checkAvIncomeTag(c, 1108, 105650, 44350, 105650, "2018-06-01")
checkAvIncomeTag(c, 1109, 160650, 89350, 160650, "2018-06-01")
checkAvIncomeTag(c, 11010, 265650, 234350, 265650, "2018-06-01")
})
}
func Test_UpIncomeTag(t *testing.T) {
Convey("Test up income tag\n", t, func() {
c := context.Background()
deleteAll(c)
s.dao.Exec(c, "insert into up_charge_ratio(mid,ratio,adjust_type) values(110,200,0)")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeTag(c, 110, 20, 0, 20, "2018-06-01", "up_income")
s.dao.Exec(c, "delete from up_charge_ratio")
s.dao.Exec(c, "insert into up_charge_ratio(mid,ratio,adjust_type) values(110,20000,1)")
insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
checkUpIncomeTag(c, 110, 20010, 0, 20030, "2018-06-02", "up_income")
// av ratio + up ratio float + float
s.dao.Exec(c, "delete from av_charge_ratio")
s.dao.Exec(c, "delete from up_charge_ratio")
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,200,0)")
s.dao.Exec(c, "insert into up_charge_ratio(mid,ratio,adjust_type) values(110,200,0)")
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-03", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var income int64 = (10*2 + 10) * 2
checkUpIncomeTag(c, 110, income, 0, 20030+income, "2018-06-03", "up_income")
// av ratio + up ratio float + fixed
s.dao.Exec(c, "delete from av_charge_ratio")
s.dao.Exec(c, "delete from up_charge_ratio")
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,200,0)")
s.dao.Exec(c, "insert into up_charge_ratio(mid,ratio,adjust_type) values(110,200,1)")
insertAvDailyCharge(c, "2018-06-04", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-04", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-04", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var income1 int64 = (10*2 + 10) + 200
checkUpIncomeTag(c, 110, income1, 0, 20030+income+income1, "2018-06-04", "up_income")
// av ratio + up ratio fixed + float
s.dao.Exec(c, "delete from av_charge_ratio")
s.dao.Exec(c, "delete from up_charge_ratio")
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,200,1)")
s.dao.Exec(c, "insert into up_charge_ratio(mid,ratio,adjust_type) values(110,200,0)")
insertAvDailyCharge(c, "2018-06-05", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-05", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-05", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var income2 int64 = 10*2 + 200 + 10*2
checkUpIncomeTag(c, 110, income2, 0, 20030+income+income1+income2, "2018-06-05", "up_income")
// av ratio + up ratio fixed + fixed
s.dao.Exec(c, "delete from av_charge_ratio")
s.dao.Exec(c, "delete from up_charge_ratio")
s.dao.Exec(c, "insert into av_charge_ratio(av_id,ratio,adjust_type) values(1101,200,1)")
s.dao.Exec(c, "insert into up_charge_ratio(mid,ratio,adjust_type) values(110,200,1)")
insertAvDailyCharge(c, "2018-06-06", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-06", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-06", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var income3 int64 = 10 + 10 + 200 + 200
checkUpIncomeTag(c, 110, income3, 0, 20030+income+income1+income2+income3, "2018-06-06", "up_income")
})
}
// black_list
func Test_AvBlackList(t *testing.T) {
Convey("Test av black list\n", t, func() {
c := context.Background()
deleteAll(c)
s.dao.Exec(c, "insert into av_black_list(av_id,mid,reason) values(1101,110,1)")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var count int
s.dao.QueryRow(c, "select count(*) from av_income").Scan(&count)
So(count, ShouldEqual, 0)
s.dao.QueryRow(c, "select count(*) from up_income").Scan(&count)
So(count, ShouldEqual, 0)
})
}
func Test_UpInfoVideo(t *testing.T) {
Convey("Test up_info_video\n", t, func() {
c := context.Background()
deleteAll(c)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
s.dao.Exec(c, "insert into up_info_video(mid,account_type,account_state,signed_at) values(1115,1,4,'2018-05-30')")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 20:02:03", 1101, 1115, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
var count int
s.dao.QueryRow(c, "select count(*) from av_income").Scan(&count)
So(count, ShouldEqual, 0)
s.dao.QueryRow(c, "select count(*) from up_income").Scan(&count)
So(count, ShouldEqual, 0)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
deleteAll(c)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
s.dao.Exec(c, "insert into up_info_video(mid,account_type,account_state,signed_at) values(1115,1,3,'2018-05-30')")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 20:02:03", 1101, 1115, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
s.dao.QueryRow(c, "select count(*) from av_income").Scan(&count)
So(count, ShouldEqual, 1)
s.dao.QueryRow(c, "select count(*) from up_income").Scan(&count)
So(count, ShouldEqual, 1)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
deleteAll(c)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
s.dao.Exec(c, "insert into up_info_video(mid,account_type,account_state,quit_at,signed_at) values(1115,1,5,'2018-06-01','2018-05-30')")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 20:02:03", 1101, 1115, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
s.dao.QueryRow(c, "select count(*) from av_income").Scan(&count)
So(count, ShouldEqual, 0)
s.dao.QueryRow(c, "select count(*) from up_income").Scan(&count)
So(count, ShouldEqual, 0)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
deleteAll(c)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
s.dao.Exec(c, "insert into up_info_video(mid,account_type,account_state,quit_at,signed_at) values(1115,1,5,'2018-06-02','2018-05-30')")
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 20:02:03", 1101, 1115, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
s.dao.QueryRow(c, "select count(*) from av_income").Scan(&count)
So(count, ShouldEqual, 1)
s.dao.QueryRow(c, "select count(*) from up_income").Scan(&count)
So(count, ShouldEqual, 1)
s.dao.Exec(c, "delete from up_info_video where mid = 1115")
})
}
func Test_UpIncomeWeekAndMonthly(t *testing.T) {
Convey("Test up weekly and monthly income\n", t, func() {
c := context.Background()
deleteAll(c)
ac1 := insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
ac2 := insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 111, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome1 := checkAvIncome(c, ac1, 10, 0, 1, "2018-06-01")
avIncome2 := checkAvIncome(c, ac2, 10, 0, 1, "2018-06-01")
checkUpIncome(c, []*model.AvIncome{avIncome1}, 10, "up_income", "", 1)
checkUpIncome(c, []*model.AvIncome{avIncome2}, 10, "up_income", "", 1)
checkUpIncomeWeekly(c, []*model.AvIncome{avIncome1}, 10, 1)
checkUpIncomeMonthly(c, []*model.AvIncome{avIncome2}, 10, 1)
ac11 := insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1101, 110, 10)
ac21 := insertAvDailyCharge(c, "2018-06-02", "2018-06-01 15:02:03", 1102, 111, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome11 := checkAvIncome(c, ac11, 20, 0, 1, "2018-06-02")
avIncome21 := checkAvIncome(c, ac21, 20, 0, 1, "2018-06-02")
checkUpIncome(c, []*model.AvIncome{avIncome11}, 20, "up_income", "", 1)
checkUpIncome(c, []*model.AvIncome{avIncome21}, 20, "up_income", "", 1)
checkUpIncomeWeekly(c, []*model.AvIncome{avIncome1, avIncome11}, 20, 1)
checkUpIncomeMonthly(c, []*model.AvIncome{avIncome2, avIncome21}, 20, 1)
ac12 := insertAvDailyCharge(c, "2018-06-05", "2018-06-01 15:02:03", 1101, 110, 10)
ac22 := insertAvDailyCharge(c, "2018-06-05", "2018-06-01 15:02:03", 1102, 111, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-05", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome12 := checkAvIncome(c, ac12, 30, 0, 1, "2018-06-05")
avIncome22 := checkAvIncome(c, ac22, 30, 0, 1, "2018-06-05")
checkUpIncome(c, []*model.AvIncome{avIncome12}, 30, "up_income", "", 1)
checkUpIncome(c, []*model.AvIncome{avIncome22}, 30, "up_income", "", 1)
checkUpIncomeWeekly(c, []*model.AvIncome{avIncome12}, 30, 1)
checkUpIncomeMonthly(c, []*model.AvIncome{avIncome2, avIncome21, avIncome22}, 30, 1)
ac13 := insertAvDailyCharge(c, "2018-07-01", "2018-06-01 15:02:03", 1101, 110, 10)
ac23 := insertAvDailyCharge(c, "2018-07-01", "2018-06-01 15:02:03", 1102, 111, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-07-01", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
err = s.runStatis(c, d)
So(err, ShouldBeNil)
avIncome13 := checkAvIncome(c, ac13, 40, 0, 1, "2018-07-01")
avIncome23 := checkAvIncome(c, ac23, 40, 0, 1, "2018-07-01")
checkUpIncome(c, []*model.AvIncome{avIncome13}, 40, "up_income", "", 1)
checkUpIncome(c, []*model.AvIncome{avIncome23}, 40, "up_income", "", 1)
checkUpIncomeWeekly(c, []*model.AvIncome{avIncome13}, 40, 1)
checkUpIncomeMonthly(c, []*model.AvIncome{avIncome23}, 40, 1)
})
}
func Test_UpAccount(t *testing.T) {
Convey("Test up_account\n", t, func() {
c := context.Background()
deleteAll(c)
insertAvDailyCharge(c, "2018-06-30", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-30", "2018-06-01 15:02:03", 1102, 110, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-30", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
checkUpAccount(c, 110, 20, 20, 0, "2018-05")
insertAvDailyCharge(c, "2018-07-01", "2018-06-01 15:02:03", 1103, 110, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-07-01", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
checkUpAccount(c, 110, 30, 20, 0, "2018-05")
insertAvDailyCharge(c, "2018-07-02", "2018-06-01 15:02:03", 1101, 110, 50)
d, _ = time.ParseInLocation("2006-01-02", "2018-07-02", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
checkUpAccount(c, 110, 80, 20, 0, "2018-05")
s.dao.Exec(c, "update up_account set total_unwithdraw_income = 60, total_withdraw_income = 20, withdraw_date_version = '2018-06' where mid = 110")
insertAvDailyCharge(c, "2018-07-03", "2018-06-01 15:02:03", 1101, 110, 50)
d, _ = time.ParseInLocation("2006-01-02", "2018-07-03", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
checkUpAccount(c, 110, 130, 110, 20, "2018-06")
})
}
func Test_MuchUpAccount(t *testing.T) {
Convey("Test much up account\n", t, func() {
c := context.Background()
deleteAll(c)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1102, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1103, 110, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1104, 111, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1105, 111, 10)
insertAvDailyCharge(c, "2018-06-01", "2018-06-01 15:02:03", 1106, 112, 10)
d, _ := time.ParseInLocation("2006-01-02", "2018-06-01", time.Local)
err := s.run(c, d)
So(err, ShouldBeNil)
checkUpAccount(c, 110, 30, 30, 0, "2018-05")
checkUpAccount(c, 111, 20, 20, 0, "2018-05")
checkUpAccount(c, 112, 10, 10, 0, "2018-05")
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1101, 110, 10)
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1103, 110, 10)
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1104, 111, 10)
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1105, 111, 10)
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1106, 112, 10)
insertAvDailyCharge(c, "2018-06-03", "2018-06-01 15:02:03", 1107, 112, 10)
d, _ = time.ParseInLocation("2006-01-02", "2018-06-03", time.Local)
err = s.run(c, d)
So(err, ShouldBeNil)
checkUpAccount(c, 110, 50, 50, 0, "2018-05")
checkUpAccount(c, 111, 40, 40, 0, "2018-05")
checkUpAccount(c, 112, 30, 30, 0, "2018-05")
})
}
func checkAllData(c context.Context, ac *model.AvCharge, totalIncome, taxMoney, count int64, date string) {
d, _ := time.ParseInLocation(_layout, date, time.Local)
// av
avIncome := checkAvIncome(c, ac, totalIncome, taxMoney, count, date)
checkAvIncomeStatis(c, avIncome, totalIncome) // Background
checkAvIncomeDateStatis(c, int(0), int(1), int(ac.TagID), int(totalIncome), int(12), d, "av_income_daily_statis")
weekD := getStartWeeklyDate(d)
checkAvIncomeDateStatis(c, int(0), int(1), int(ac.TagID), int(totalIncome), int(12), weekD, "av_income_weekly_statis")
monthD := getStartMonthlyDate(d)
checkAvIncomeDateStatis(c, int(0), int(1), int(ac.TagID), int(totalIncome), int(12), monthD, "av_income_monthly_statis")
// up
up := checkUpIncome(c, []*model.AvIncome{avIncome}, avIncome.Income, "up_income", "", 1)
checkUpIncomeWeekly(c, []*model.AvIncome{avIncome}, avIncome.Income, 1)
checkUpIncomeMonthly(c, []*model.AvIncome{avIncome}, avIncome.Income, 1)
checkUpIncomeStatis(c, up.MID, avIncome.Income)
checkUpIncomeDailyStatis(c, 0, 1, avIncome.Income, d)
checkUpAccount(c, up.MID, avIncome.Income, avIncome.Income, 0, "2018-05")
}
func checkAvIncome(c context.Context, ac *model.AvCharge, totalIncome, taxMoney, count int64, date string) *model.AvIncome {
ai := &model.AvIncome{}
err := s.dao.QueryRow(c, fmt.Sprintf("select av_id,mid,tag_id,is_original,upload_time,play_count,total_income,income,tax_money,date from av_income where av_id = %d and date = '%s'", ac.AvID, date)).Scan(
&ai.AvID, &ai.MID, &ai.TagID, &ai.IsOriginal, &ai.UploadTime, &ai.PlayCount, &ai.TotalIncome, &ai.Income, &ai.TaxMoney, &ai.Date)
So(err, ShouldBeNil)
So(ac.AvID, ShouldEqual, ai.AvID)
So(ac.MID, ShouldEqual, ai.MID)
So(ac.TagID, ShouldEqual, ai.TagID)
So(ac.IsOriginal, ShouldEqual, ai.IsOriginal)
So(ac.UploadTime, ShouldEqual, ai.UploadTime)
So(ac.TotalPlayCount, ShouldEqual, ai.PlayCount)
So(totalIncome, ShouldEqual, ai.TotalIncome)
So(taxMoney, ShouldEqual, ai.TaxMoney)
So(ac.IncCharge, ShouldEqual, ai.Income)
So(ac.Date, ShouldEqual, ai.Date)
return ai
}
func checkAvIncomeTag(c context.Context, avID, income, taxMoney, totalIncome int64, date string) {
ai := &model.AvIncome{}
err := s.dao.QueryRow(c, fmt.Sprintf("select total_income,income,tax_money from av_income where av_id = %d and date = '%s'", avID, date)).Scan(
&ai.TotalIncome, &ai.Income, &ai.TaxMoney)
So(err, ShouldBeNil)
So(totalIncome, ShouldEqual, ai.TotalIncome)
So(taxMoney, ShouldEqual, ai.TaxMoney)
So(income, ShouldEqual, ai.Income)
}
func checkAvIncomeStatis(c context.Context, ac *model.AvIncome, totalIncome int64) {
ai := &model.AvIncomeStat{}
err := s.dao.QueryRow(c, fmt.Sprintf("select av_id,mid,tag_id,is_original,upload_time,total_income from av_income_statis where av_id = %d", ac.AvID)).Scan(
&ai.AvID, &ai.MID, &ai.TagID, &ai.IsOriginal, &ai.UploadTime, &ai.TotalIncome)
So(err, ShouldBeNil)
So(ac.AvID, ShouldEqual, ai.AvID)
So(ac.MID, ShouldEqual, ai.MID)
So(ac.TagID, ShouldEqual, ai.TagID)
So(ac.IsOriginal, ShouldEqual, ai.IsOriginal)
So(ac.UploadTime, ShouldEqual, ai.UploadTime)
So(ac.TotalIncome, ShouldEqual, ai.TotalIncome)
}
func checkAvIncomeDateStatis(c context.Context, section, avs, categoryID, income, count int, d time.Time, table string) {
xd := xtime.Time(d.Unix())
ads := &model.DateStatis{}
err := s.dao.QueryRow(c, fmt.Sprintf("select avs,income,cdate from %s where money_section = %d and category_id = %d and cdate = '%s'", table, section, categoryID, d.Format(_layout))).Scan(
&ads.Count, &ads.Income, &ads.CDate)
So(err, ShouldBeNil)
So(income, ShouldEqual, ads.Income)
So(xd, ShouldEqual, ads.CDate)
So(avs, ShouldEqual, ads.Count)
var ccount int64
err = s.dao.QueryRow(c, fmt.Sprintf("select count(*) from %s where category_id = %d and cdate = '%s'", table, categoryID, d.Format(_layout))).Scan(&ccount)
So(err, ShouldBeNil)
So(count, ShouldEqual, ccount)
}
func checkUpIncome(c context.Context, avs []*model.AvIncome, totalIncome int64, table string, date string, count int64) (up *model.UpIncome) {
if len(avs) == 0 {
return
}
mid := avs[0].MID
if date == "" {
date = avs[0].Date.Time().Format(_layout)
}
var playCount, avIncome, taxMoney int64
for _, av := range avs {
playCount += av.PlayCount
avIncome += av.Income
taxMoney += av.TaxMoney
}
up = &model.UpIncome{}
err := s.dao.QueryRow(c, fmt.Sprintf("select mid,av_count,play_count,av_income,audio_income,column_income,tax_money,income,total_income from %s where mid = %d and date = '%s'", table, mid, date)).Scan(
&up.MID, &up.AvCount, &up.PlayCount, &up.AvIncome, &up.AudioIncome, &up.ColumnIncome, &up.TaxMoney, &up.Income, &up.TotalIncome)
So(err, ShouldBeNil)
So(count, ShouldEqual, up.AvCount)
// So(playCount, ShouldEqual, up.PlayCount)
So(avIncome, ShouldEqual, up.AvIncome)
So(0, ShouldEqual, up.AudioIncome)
So(0, ShouldEqual, up.ColumnIncome)
So(taxMoney, ShouldEqual, up.TaxMoney)
So(totalIncome, ShouldEqual, up.TotalIncome)
return up
}
func checkUpIncomeTag(c context.Context, mid, income, taxMoney, totalIncome int64, date, table string) {
up := &model.UpIncome{}
err := s.dao.QueryRow(c, fmt.Sprintf("select tax_money,income,total_income from %s where mid = %d and date = '%s'", table, mid, date)).Scan(
&up.TaxMoney, &up.Income, &up.TotalIncome)
So(err, ShouldBeNil)
So(income, ShouldEqual, up.Income)
So(taxMoney, ShouldEqual, up.TaxMoney)
So(totalIncome, ShouldEqual, up.TotalIncome)
}
func checkUpIncomeWeekly(c context.Context, avs []*model.AvIncome, totalIncome, count int64) {
m := make(map[string][]*model.AvIncome)
for _, av := range avs {
d := getStartWeeklyDate(av.Date.Time()).Format(_layout)
if _, ok := m[d]; !ok {
m[d] = make([]*model.AvIncome, 0)
}
m[d] = append(m[d], av)
}
for date, avs := range m {
checkUpIncome(c, avs, totalIncome, "up_income_weekly", date, count)
}
}
func checkUpIncomeMonthly(c context.Context, avs []*model.AvIncome, totalIncome, count int64) {
m := make(map[string][]*model.AvIncome)
for _, av := range avs {
d := getStartMonthlyDate(av.Date.Time()).Format(_layout)
if _, ok := m[d]; !ok {
m[d] = make([]*model.AvIncome, 0)
}
m[d] = append(m[d], av)
}
for date, avs := range m {
checkUpIncome(c, avs, totalIncome, "up_income_monthly", date, count)
}
}
func checkUpIncomeStatis(c context.Context, mid, totalIncome int64) {
var income int64
err := s.dao.QueryRow(c, fmt.Sprintf("select total_income from up_income_statis where mid = %d", mid)).Scan(&income)
So(err, ShouldBeNil)
So(totalIncome, ShouldEqual, income)
}
func checkUpIncomeDailyStatis(c context.Context, section, ups, income int64, d time.Time) {
xd := xtime.Time(d.Unix())
ads := &model.DateStatis{}
err := s.dao.QueryRow(c, fmt.Sprintf("select ups,income,cdate from up_income_daily_statis where money_section = %d and cdate = '%s'", section, d.Format(_layout))).Scan(
&ads.Count, &ads.Income, &ads.CDate)
So(err, ShouldBeNil)
So(income, ShouldEqual, ads.Income)
So(xd, ShouldEqual, ads.CDate)
So(ups, ShouldEqual, ads.Count)
var ccount int64
err = s.dao.QueryRow(c, fmt.Sprintf("select count(*) from up_income_daily_statis where cdate = '%s'", d.Format(_layout))).Scan(&ccount)
So(err, ShouldBeNil)
So(12, ShouldEqual, ccount)
}
func checkUpAccount(c context.Context, mid, total, unwithdraw, withdraw int64, dateVersion string) {
up := &model.UpAccount{}
err := s.dao.QueryRow(c, fmt.Sprintf("select total_income,total_unwithdraw_income,total_withdraw_income,withdraw_date_version from up_account where mid = %d", mid)).Scan(
&up.TotalIncome, &up.TotalUnwithdrawIncome, &up.TotalWithdrawIncome, &up.WithdrawDateVersion)
So(err, ShouldBeNil)
So(up.TotalIncome, ShouldEqual, total)
So(up.TotalUnwithdrawIncome, ShouldEqual, unwithdraw)
So(up.TotalWithdrawIncome, ShouldEqual, withdraw)
So(up.WithdrawDateVersion, ShouldEqual, dateVersion)
}
// func prepareTest(c context.Context) {
// s.dao.Exec(c, "delete from av_daily_charge_06")
// s.dao.Exec(c, "delete from av_daily_charge_07")
// s.dao.Exec(c, "delete from av_income where av_id = 1101")
// s.dao.Exec(c, "delete from av_income_statis where av_id = 1101")
// s.dao.Exec(c, "delete from av_income_daily_statis")
// s.dao.Exec(c, "delete from av_income_weekly_statis")
// s.dao.Exec(c, "delete from av_income_monthly_statis")
// s.dao.Exec(c, "delete from av_weekly_charge where av_id = 1101")
// s.dao.Exec(c, "delete from av_monthly_charge where av_id = 1101")
// s.dao.Exec(c, "delete from av_charge_statis where av_id = 1101")
// s.dao.Exec(c, "delete from up_income where mid = 110")
// s.dao.Exec(c, "delete from up_income_weekly where mid = 110")
// s.dao.Exec(c, "delete from up_income_monthly where mid = 110")
// s.dao.Exec(c, "delete from up_income_statis where mid = 110")
// s.dao.Exec(c, "delete from up_income_daily_statis")
// s.dao.Exec(c, "delete from up_account where mid = 110")
// s.dao.Exec(c, "delete from up_daily_charge where mid = 110")
// s.dao.Exec(c, "delete from up_weekly_charge where mid = 110")
// s.dao.Exec(c, "delete from up_monthly_charge where mid = 110")
// s.dao.Exec(c, "delete from up_av_statis where mid = 110")
// }
func deleteAll(c context.Context) {
// s.dao.Exec(c, "truncate up_info_video")
// s.dao.Exec(c, "truncate av_daily_charge_07")
// s.dao.Exec(c, "truncate av_daily_charge_06")
s.dao.Exec(c, "truncate av_black_list")
s.dao.Exec(c, "truncate av_charge_ratio")
s.dao.Exec(c, "truncate up_charge_ratio")
s.dao.Exec(c, "truncate av_income")
s.dao.Exec(c, "truncate av_income_statis")
s.dao.Exec(c, "truncate av_income_daily_statis")
s.dao.Exec(c, "truncate av_income_weekly_statis")
s.dao.Exec(c, "truncate av_income_monthly_statis")
s.dao.Exec(c, "truncate up_income")
s.dao.Exec(c, "truncate up_income_weekly")
s.dao.Exec(c, "truncate up_income_monthly")
s.dao.Exec(c, "truncate up_income_statis")
s.dao.Exec(c, "truncate up_income_daily_statis")
s.dao.Exec(c, "truncate up_account")
s.dao.Exec(c, "truncate up_av_daily_statis")
s.dao.Exec(c, "truncate up_column_daily_statis")
s.dao.Exec(c, "truncate column_income_daily_statis")
s.dao.Exec(c, "truncate column_income_weekly_statis")
s.dao.Exec(c, "truncate column_income_monthly_statis")
// s.dao.Exec(c, "truncate up_info_column")
s.dao.Exec(c, "truncate column_income")
s.dao.Exec(c, "truncate column_income_statis")
}
func getAvDailyChargeStruct(date string, uploadDate string, avID, mid, charge int64) *model.AvCharge {
d, _ := time.ParseInLocation(_layout, date, time.Local)
upD, _ := time.ParseInLocation(_layoutSec, uploadDate, time.Local)
ac := &model.AvCharge{
AvID: avID,
MID: mid,
TagID: 1,
IsOriginal: 1,
DanmakuCount: charge,
CommentCount: charge,
CollectCount: charge,
CoinCount: charge,
ShareCount: charge,
ElecPayCount: charge,
TotalPlayCount: charge * int64(3),
WebPlayCount: charge,
AppPlayCount: charge,
H5PlayCount: charge,
LvUnknown: charge,
Lv0: charge,
Lv1: charge,
Lv2: charge,
Lv3: charge,
Lv4: charge,
Lv5: charge,
Lv6: charge,
VScore: charge,
IncCharge: charge,
TotalCharge: 0,
Date: xtime.Time(d.Unix()),
UploadTime: xtime.Time(upD.Unix()),
DBState: _dbInsert,
}
return ac
}
func getColumnDailyChargeStruct(date string, uploadDate string, aid, mid, charge int64) *model.ColumnCharge {
d, _ := time.ParseInLocation(_layout, date, time.Local)
upD, _ := time.ParseInLocation(_layoutSec, uploadDate, time.Local)
cc := &model.ColumnCharge{
ArticleID: aid,
Title: "sssss",
MID: mid,
TagID: 1,
IncCharge: charge,
IncViewCount: 10,
Date: xtime.Time(d.Unix()),
UploadTime: xtime.Time(upD.Unix()),
}
return cc
}
func insertAvDailyCharge(c context.Context, date string, uploadDate string, avID, mid, charge int64) *model.AvCharge {
s.dao.Exec(c, fmt.Sprintf("insert into task_status(type,date,status) values(1,'%s',1) on duplicate key update date=values(date)", date))
ac := getAvDailyChargeStruct(date, uploadDate, avID, mid, charge)
_, err := s.avCharge.avChargeBatchInsert(c, []*model.AvCharge{ac}, fmt.Sprintf("av_daily_charge_%s", strings.Split(date, "-")[1]))
So(err, ShouldBeNil)
return ac
}
func insertBubbleMeta(c context.Context, values string) {
s.dao.Exec(c, fmt.Sprintf("insert into lottery_av_info(av_id,b_type,date) values %s on duplicate key update b_type=values(b_type) date=values(date)", values))
}
func insertAvDailyChargeBatch(c context.Context, date string, acs []*model.AvCharge) {
s.avCharge.avChargeBatchInsert(c, acs, fmt.Sprintf("av_daily_charge_%s", strings.Split(date, "-")[1]))
}
func insertColumnDailyChargeBatch(c context.Context, date string, acs []*model.ColumnCharge) {
s.avCharge.columnChargeBatchInsert(c, acs, "column_daily_charge")
}
func batchInsertUpInfoVideo(c context.Context, mids []int64) {
var buf bytes.Buffer
for _, mid := range mids {
buf.WriteString("(")
buf.WriteString(strconv.FormatInt(mid, 10))
buf.WriteByte(',')
buf.WriteString("1")
buf.WriteByte(',')
buf.WriteString("3")
buf.WriteString(")")
buf.WriteByte(',')
}
if buf.Len() > 0 {
buf.Truncate(buf.Len() - 1)
}
values := buf.String()
buf.Reset()
s.dao.Exec(c, "delete from up_info_video")
s.dao.Exec(c, "delete from up_info_column")
s.dao.Exec(c, fmt.Sprintf("insert into up_info_video(mid,account_type,account_state) values %s", values))
s.dao.Exec(c, fmt.Sprintf("insert into up_info_column(mid,account_type,account_state) values %s", values))
}
// test 2018-09
func BenchmarkRunOneDay(b *testing.B) {
c := context.Background()
deleteAll(c)
date := "2018-09-02"
s.dao.Exec(c, "truncate av_daily_charge_09")
s.dao.Exec(c, "truncate column_daily_charge")
uploadDate := "2018-09-01 21:20:30"
acs := make([]*model.AvCharge, 20000)
ccs := make([]*model.ColumnCharge, 20000)
j := 0
for i := 1; i <= 1000000; i++ {
if j >= 20000 {
insertAvDailyChargeBatch(c, date, acs)
insertColumnDailyChargeBatch(c, date, ccs)
j = 0
}
acs[j] = getAvDailyChargeStruct(date, uploadDate, int64(i), int64(j+1), 100)
ccs[j] = getColumnDailyChargeStruct(date, uploadDate, int64(i), int64(j+1), 100)
j++
}
if j > 0 {
insertAvDailyChargeBatch(c, date, acs[:j])
insertColumnDailyChargeBatch(c, date, ccs[:j])
}
mids := make([]int64, 20000)
for i := 1; i <= 20000; i++ {
mids[i-1] = int64(i)
}
batchInsertUpInfoVideo(c, mids)
fmt.Println("start run...........")
d, _ := time.ParseInLocation("2006-01-02", date, time.Local)
for n := 0; n < b.N; n++ {
s.run(c, d)
}
}