12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025 |
- 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)
- }
- }
|