Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = [
"credit_log_test.go",
"dao_test.go",
"scoresection_test.go",
"sign_up_test.go",
"task_info_test.go",
"up_base_info_test.go",
"up_play_info_test.go",
"up_rank_test.go",
"up_scores_history_test.go",
"up_stats_history_test.go",
],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/admin/main/up/conf:go_default_library",
"//app/admin/main/up/model/signmodel:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//vendor/github.com/jinzhu/gorm:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
"//vendor/gopkg.in/h2non/gock.v1:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"credit_log.go",
"dao.go",
"scoresection.go",
"sign_up.go",
"task_info.go",
"up_base_info.go",
"up_play_info.go",
"up_rank.go",
"up_scores_history.go",
"up_stats_history.go",
],
importpath = "go-common/app/admin/main/up/dao/upcrm",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/up/conf:go_default_library",
"//app/admin/main/up/model/signmodel:go_default_library",
"//app/admin/main/up/model/upcrmmodel:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/time:go_default_library",
"//vendor/github.com/jinzhu/gorm:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,55 @@
package upcrm
import (
"context"
"fmt"
"net/url"
"go-common/app/admin/main/up/model/upcrmmodel"
"go-common/library/log"
)
const (
creditLogURL = "http://api.bilibili.co/x/internal/upcredit/log/get"
)
//
//type ArgGetLogHistory struct {
// Mid int64 `params:"mid;Required"`
// FromDate systime.Time `params:"from_date"`
// ToDate systime.Time `params:"to_date"`
// Limit int `params:"limit" default:"20"`
//}
//LogList it's log list
type LogList struct {
LogList []upcrmmodel.SimpleCreditLogWithContent `json:"log_list"`
}
//CreditLogHTTPResult it's log result from http server
type CreditLogHTTPResult struct {
Code int `json:"code"`
Data LogList `json:"data"`
Msg string `json:"message"`
}
//GetCreditLog get credit log from upcredit server
func (d *Dao) GetCreditLog(mid int64, limit int) (result []upcrmmodel.SimpleCreditLogWithContent, err error) {
params := url.Values{}
params.Set("mid", fmt.Sprintf("%d", mid))
//params.Set("from_date", fromDate.Time().Format("2006-01-02"))
//params.Set("to_date", toDate.Time().Format("2006-01-02"))
params.Set("limit", fmt.Sprintf("%d", limit))
var c = context.Background()
var httpResult = CreditLogHTTPResult{}
err = d.httpClient.Get(c, creditLogURL, "", params, &httpResult)
if err != nil {
log.Error("get credit log http fail, request=%s?%s, err=%+v", creditLogURL, params.Encode(), err)
return
}
log.Info("get credit log http ok, result=%+v", httpResult)
result = httpResult.Data.LogList
return
}

View File

@@ -0,0 +1,23 @@
package upcrm
import (
"testing"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmGetCreditLog(t *testing.T) {
convey.Convey("GetCreditLog", t, func(ctx convey.C) {
var (
mid = int64(1)
limit = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetCreditLog(mid, limit)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldBeNil)
})
})
})
}

View File

@@ -0,0 +1,51 @@
package upcrm
import (
"context"
"go-common/app/admin/main/up/conf"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"github.com/jinzhu/gorm"
)
//Dao upcrm dao
type Dao struct {
// config
conf *conf.Config
// db
crmdb *gorm.DB
httpClient *bm.Client
}
//New new dao
func New(c *conf.Config) *Dao {
var d = &Dao{
conf: c,
}
crmdb, err := gorm.Open("mysql", c.DB.Upcrm.DSN)
if crmdb == nil {
log.Error("connect to db fail, err=%v", err)
return nil
}
crmdb.SingularTable(true)
d.crmdb = crmdb
d.crmdb.LogMode(c.IsTest)
return d
}
//SetHTTPClient set http client
func (d *Dao) SetHTTPClient(client *bm.Client) {
d.httpClient = client
}
//GetDb get current gorm db
func (d *Dao) GetDb() *gorm.DB {
return d.crmdb
}
// BeginTran begin transcation.
func (d *Dao) BeginTran(c context.Context) (tx *gorm.DB) {
return d.crmdb.Begin()
}

View File

@@ -0,0 +1,43 @@
package upcrm
import (
"flag"
"os"
"testing"
"go-common/app/admin/main/up/conf"
"go-common/library/net/http/blademaster"
"gopkg.in/h2non/gock.v1"
)
var (
d *Dao
)
func TestMain(m *testing.M) {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.archive.up-admin")
flag.Set("conf_token", "930697bb7def4df0713ef8080596b863")
flag.Set("tree_id", "36438")
flag.Set("conf_version", "1")
flag.Set("deploy_env", "uat")
flag.Set("conf_host", "config.bilibili.co")
flag.Set("conf_path", "/tmp")
flag.Set("region", "sh")
flag.Set("zone", "sh001")
} else {
flag.Set("conf", "../../cmd/up-admin.toml")
}
if os.Getenv("UT_LOCAL_TEST") != "" {
flag.Set("conf", "../../cmd/up-admin.toml")
}
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
d.httpClient = blademaster.NewClient(conf.Conf.HTTPClient.Normal)
d.httpClient.SetTransport(gock.DefaultTransport)
os.Exit(m.Run())
}

View File

@@ -0,0 +1,42 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/model/upcrmmodel"
"go-common/library/ecode"
)
const (
//ScoreTypeQuality 质量分
ScoreTypeQuality = 1
//ScoreTypePr 影响力
ScoreTypePr = 2
//ScoreTypeCredit 信用分
ScoreTypeCredit = 3
//ScoreSectionTableName table name
ScoreSectionTableName = "score_section_history"
)
//ScoreQueryHistory get history
func (d *Dao) ScoreQueryHistory(scoreType int, date time.Time) (result upcrmmodel.ScoreSectionHistory, err error) {
err = d.crmdb.Model(&result).
Where("score_type=? AND generate_date = ?", scoreType, date.Format("2006-01-02")).
Find(&result).Error
if err == ecode.NothingFound {
err = nil
}
return
}
//GetLastHistory get last update date
func (d *Dao) GetLastHistory(scoreType int) (lastHistoryDate time.Time, err error) {
var model upcrmmodel.ScoreSectionHistory
err = d.crmdb.Table(ScoreSectionTableName).Select("generate_date").Where("score_type=?", scoreType).Order("generate_date desc").Limit(1).Find(&model).Error
if err != nil {
return
}
lastHistoryDate = model.GenerateDate.Time()
return
}

View File

@@ -0,0 +1,39 @@
package upcrm
import (
"testing"
"time"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmScoreQueryHistory(t *testing.T) {
convey.Convey("ScoreQueryHistory", t, func(ctx convey.C) {
var (
scoreType = int(0)
date = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.ScoreQueryHistory(scoreType, date)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetLastHistory(t *testing.T) {
convey.Convey("GetLastHistory", t, func(ctx convey.C) {
var (
scoreType = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
lastHistoryDate, err := d.GetLastHistory(scoreType)
ctx.Convey("Then err should be nil.lastHistoryDate should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(lastHistoryDate, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,363 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/model/signmodel"
"go-common/app/admin/main/up/model/upcrmmodel"
"go-common/library/log"
xtime "go-common/library/time"
"github.com/jinzhu/gorm"
)
const (
// PayStateUnpay not pay
PayStateUnpay = 0
// PayStatePayed payed
PayStatePayed = 1
)
// InsertSignUp insert sign up
func (d *Dao) InsertSignUp(db *gorm.DB, up *signmodel.SignUp) (affectedRow int64, err error) {
var handle = db.Save(up)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// InsertPayInfo inert pay
func (d *Dao) InsertPayInfo(db *gorm.DB, info *signmodel.SignPay) (affectedRow int64, err error) {
var handle = db.Save(info)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// InsertTaskInfo insert task
func (d *Dao) InsertTaskInfo(db *gorm.DB, info *signmodel.SignTask) (affectedRow int64, err error) {
var handle = db.Save(info)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// InsertContractInfo insert contract
func (d *Dao) InsertContractInfo(db *gorm.DB, info interface{}) (affectedRow int64, err error) {
var handle = db.Save(info)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// DelPayInfo update payinfo
func (d *Dao) DelPayInfo(db *gorm.DB, ids []int64) (affectedRow int64, err error) {
var handle = db.Model(&signmodel.SignPay{}).Where("id IN (?)", ids).Update("state", 100)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// DelTaskInfo update taskInfo
func (d *Dao) DelTaskInfo(db *gorm.DB, ids []int64) (affectedRow int64, err error) {
var handle = db.Model(&signmodel.SignTask{}).Where("id IN (?)", ids).Update("state", 100)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// DelSignContract update signcontract
func (d *Dao) DelSignContract(db *gorm.DB, ids []int64) (affectedRow int64, err error) {
var handle = db.Model(&signmodel.SignContract{}).Where("id IN (?)", ids).Update("state", 100)
err = handle.Error
affectedRow = handle.RowsAffected
return
}
// SignUpID .
func (d *Dao) SignUpID(sigID int64) (su *signmodel.SignUp, msp map[int64]*signmodel.SignPay, mst map[int64]*signmodel.SignTask, msc map[int64]*signmodel.SignContract, err error) {
su = &signmodel.SignUp{}
if err = d.crmdb.Table(signmodel.TableSignUp).Where("id = ? AND state IN (0,1)", sigID).Find(su).Error; err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
return
}
if err == gorm.ErrRecordNotFound {
err = nil
su, msp, mst, msc = nil, nil, nil, nil
return
}
var (
sps []*signmodel.SignPay
sts []*signmodel.SignTask
scs []*signmodel.SignContract
)
msp = make(map[int64]*signmodel.SignPay)
if err = d.crmdb.Table(signmodel.TableSignPay).Where("sign_id = ? AND state IN (0,1)", sigID).Find(&sps).Error; err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
return
}
for _, v := range sps {
msp[v.ID] = v
}
mst = make(map[int64]*signmodel.SignTask)
if err = d.crmdb.Table(signmodel.TableSignTask).Where("sign_id = ? AND state = 0", sigID).Find(&sts).Error; err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
return
}
for _, v := range sts {
mst[v.ID] = v
}
msc = make(map[int64]*signmodel.SignContract)
if err = d.crmdb.Table(signmodel.TableSignContract).Where("sign_id = ? AND state = 0", sigID).Find(&scs).Error; err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
return
}
for _, v := range scs {
msc[v.ID] = v
}
return
}
// GetSignIDByCondition get sign id
// arg query args
func (d *Dao) GetSignIDByCondition(arg *signmodel.SignQueryArg) (signIDs []uint32, err error) {
var signIDMap = map[uint32]struct{}{}
switch {
default:
// 如果是mid则不进行其他的查询
if arg.Mid != 0 {
var result []signmodel.SignUpOnlyID
var db = d.crmdb.Table("sign_up").Where("mid=?", arg.Mid)
err = db.Select("id").Find(&result).Error
if err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
return
}
for _, v := range result {
signIDMap[v.ID] = struct{}{}
}
break
}
var now = time.Now()
// 1.增加查询条件
if arg.DuePay == 1 {
var duedate = now.AddDate(0, 0, 7)
var result []signmodel.SignUpOnlySignID
// due_date and state = PayStateUnpay
err = d.crmdb.Table("sign_pay").Select("sign_id").Where("due_date <= ? and state = 0", duedate.Format(upcrmmodel.TimeFmtDate)).Where("state != 100").
Find(&result).Error
if err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
} else {
for _, v := range result {
signIDMap[v.SignID] = struct{}{}
}
}
}
if arg.DueSign == 1 || arg.ExpireSign == 1 {
var duedate = now.AddDate(0, 0, 30)
var result []signmodel.SignUpOnlyID
var db = d.crmdb.Table("sign_up").Select("id")
if arg.DueSign == 1 && arg.ExpireSign == 1 {
db = db.Where("end_date < ?", duedate.Format(upcrmmodel.TimeFmtDate)).Where("state != 100") // 去掉已删除的
} else {
if arg.DueSign == 1 {
db = db.Where("end_date >= ? and end_date <= ?", now.Format(upcrmmodel.TimeFmtDate), duedate.Format(upcrmmodel.TimeFmtDate))
} else if arg.ExpireSign == 1 {
db = db.Where("end_date < ?", now.Format(upcrmmodel.TimeFmtDate))
}
}
err = db.
Find(&result).Error
if err != nil && err != gorm.ErrRecordNotFound {
log.Error("db fail, err=%+v", err)
} else {
for _, v := range result {
signIDMap[v.ID] = struct{}{}
}
}
}
}
for k := range signIDMap {
signIDs = append(signIDs, k)
}
return
}
//GetSignUpByID signid 可以是nil如果是nil则会取所有的信息
// query, args, 额外的查询条件
func (d *Dao) GetSignUpByID(signID []uint32, order string, offset int, limit int, query interface{}, args ...interface{}) (result []signmodel.SignUp, err error) {
var db = d.crmdb.Table("sign_up")
if signID != nil {
db = db.Where("id in (?)", signID)
}
if query != nil {
db = db.Where(query, args)
}
if order != "" {
db = db.Order(order)
}
err = db.
Offset(offset).
Limit(limit).
Find(&result).Error
if err == gorm.ErrRecordNotFound {
err = nil
}
return
}
//GetSignUpCount get sign up's count
func (d *Dao) GetSignUpCount(query string, args ...interface{}) (count int) {
d.crmdb.Table(signmodel.TableSignUp).Where(query, args).Count(&count)
return
}
//GetTask get task by sign id and state
func (d *Dao) GetTask(signID []uint32, state ...int) (result []signmodel.SignTask, err error) {
err = d.crmdb.Table(signmodel.TableSignTask).Where("sign_id in (?) and state = ?", signID, state).Find(&result).Error
if err == gorm.ErrRecordNotFound {
err = nil
}
return
}
//GetPay get get sign id
func (d *Dao) GetPay(signID []uint32) (result []signmodel.SignPay, err error) {
err = d.crmdb.Table(signmodel.TableSignPay).Where("sign_id in (?)", signID).Find(&result).Error
if err == gorm.ErrRecordNotFound {
err = nil
}
return
}
//GetContract get get sign id
func (d *Dao) GetContract(signID []uint32) (result []signmodel.SignContract, err error) {
err = d.crmdb.Table(signmodel.TableSignContract).Where("sign_id in (?)", signID).Find(&result).Error
if err == gorm.ErrRecordNotFound {
err = nil
}
return
}
//PayComplete finish pay by pay id
func (d *Dao) PayComplete(ids []int64) (affectedRow int64, err error) {
var db = d.crmdb.Table(signmodel.TableSignPay).Where("id in (?)", ids).Updates(map[string]interface{}{"state": PayStatePayed})
err = db.Error
if err == nil {
affectedRow = db.RowsAffected
}
return
}
//SignWithName sign with name, used to send mail
type SignWithName struct {
signmodel.SignUp
Name string
}
//GetDueSignUp check due
// expireAfterDays : how many days to expire
func (d *Dao) GetDueSignUp(now time.Time, expireAfterDays int) (result []*SignWithName, err error) {
var dueDate = now.AddDate(0, 0, expireAfterDays)
var db = d.crmdb.Table(signmodel.TableSignUp).Select("id, mid, end_date, admin_id, admin_name")
// email_state = 0 是未发过邮件的意思
db = db.Where("end_date <= ? and end_date >= ? and email_state = 0", dueDate.Format(upcrmmodel.TimeFmtDate), now.Format(upcrmmodel.TimeFmtDate))
err = db.Find(&result).Error
return
}
//PayWithAdmin pay with name, used to send mail
type PayWithAdmin struct {
signmodel.SignPay
Name string
AdminID int
AdminName string
}
//GetDuePay check due
func (d *Dao) GetDuePay(now time.Time, expireAfterDays int) (result []*PayWithAdmin, err error) {
var dueDate = now.AddDate(0, 0, expireAfterDays)
err = d.crmdb.Raw("select p.id, "+
"p.sign_id, "+
"p.mid, "+
"p.due_date, "+
"p.pay_value,"+
"s.admin_id, "+
"s.admin_name"+
" from sign_pay as p left join sign_up as s on p.sign_id = s.id "+
" where p.due_date <= ? and p.email_state = 0 and p.state = 0", dueDate.Format(upcrmmodel.TimeFmtDate)).
Scan(&result).Error
return
}
//UpdateEmailState update email send state
// state : @
func (d *Dao) UpdateEmailState(table string, ids []int64, state int8) (affectedRow int64, err error) {
var db = d.crmdb.Table(table).Where("id in (?)", ids).Update("email_state", state)
err = db.Error
if err == nil {
affectedRow = db.RowsAffected
} else {
log.Error("update email state fail, err=%+v", err)
}
return
}
//CheckUpHasValidContract check if has valid contract
func (d *Dao) CheckUpHasValidContract(mid int64, date time.Time) (exist bool, err error) {
var ids []struct {
ID int
}
err = d.crmdb.Table(signmodel.TableSignUp).Select("id").Where("mid=? and end_date>=?", mid, date.Format(upcrmmodel.TimeFmtDate)).Limit(1).Find(&ids).Error
if err != nil && err != gorm.ErrRecordNotFound {
log.Error("check exist from db fail, err=%+v", err)
return
}
exist = len(ids) > 0
return
}
// GetOrCreateTaskHistory .
func (d *Dao) GetOrCreateTaskHistory(db *gorm.DB, st *signmodel.SignTask) (sth *signmodel.SignTaskHistory, init bool, err error) {
sDate, _ := signmodel.GetTaskDuration(time.Now(), st.TaskType)
sth = new(signmodel.SignTaskHistory)
err = db.Select("*").Where("task_template_id=? and generate_date=?", st.ID, sDate).Find(&sth).Error
// 创建一条,如果没找到的话
if err == gorm.ErrRecordNotFound {
sth = &signmodel.SignTaskHistory{
Mid: st.Mid,
SignID: int64(st.SignID),
TaskTemplateID: int(st.ID),
TaskType: st.TaskType,
TaskCondition: int(st.TaskCondition),
GenerateDate: xtime.Time(sDate.Unix()),
Attribute: st.Attribute,
State: signmodel.SignTaskStateRunning,
}
if err = db.Save(&sth).Error; err != nil {
log.Error("create task history fail, err=%v, task=%v", err, st)
}
init = true
}
return
}
// UpSignTaskHistory .
func (d *Dao) UpSignTaskHistory(db *gorm.DB, sth *signmodel.SignTaskHistory) (err error) {
if err = db.Table(signmodel.TableSignTaskHistory).Where("id = ?", sth.ID).UpdateColumns(
map[string]interface{}{
"task_type": sth.TaskType,
"task_condition": sth.TaskCondition,
"attribute": sth.Attribute,
"mtime": time.Now(),
}).Error; err != nil {
log.Error("dao.UpSignTaskHistory(%+v) , err=%+v", sth, err)
}
return
}

View File

@@ -0,0 +1,320 @@
package upcrm
import (
"testing"
"time"
"go-common/app/admin/main/up/model/signmodel"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmInsertSignUp(t *testing.T) {
convey.Convey("InsertSignUp", t, func(ctx convey.C) {
var (
db = d.crmdb
up = &signmodel.SignUp{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.InsertSignUp(db, up)
d.crmdb.Delete(up)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmInsertPayInfo(t *testing.T) {
convey.Convey("InsertPayInfo", t, func(ctx convey.C) {
var (
db = d.crmdb
info = &signmodel.SignPay{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.InsertPayInfo(db, info)
d.crmdb.Delete(info)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmInsertTaskInfo(t *testing.T) {
convey.Convey("InsertTaskInfo", t, func(ctx convey.C) {
var (
db = d.crmdb
info = &signmodel.SignTask{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.InsertTaskInfo(db, info)
d.crmdb.Delete(info)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmInsertContractInfo(t *testing.T) {
convey.Convey("InsertContractInfo", t, func(ctx convey.C) {
var (
db = d.crmdb
info = &signmodel.SignContract{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.InsertContractInfo(db, info)
d.crmdb.Delete(info)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmDelPayInfo(t *testing.T) {
convey.Convey("DelPayInfo", t, func(ctx convey.C) {
var (
db = d.crmdb
ids = []int64{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.DelPayInfo(db, ids)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmDelTaskInfo(t *testing.T) {
convey.Convey("DelTaskInfo", t, func(ctx convey.C) {
var (
db = d.crmdb
ids = []int64{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.DelTaskInfo(db, ids)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmDelSignContract(t *testing.T) {
convey.Convey("DelSignContract", t, func(ctx convey.C) {
var (
db = d.crmdb
ids = []int64{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.DelSignContract(db, ids)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmSignUpID(t *testing.T) {
convey.Convey("SignUpID", t, func(ctx convey.C) {
var (
sigID = int64(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
su, msp, mst, msc, err := d.SignUpID(sigID)
ctx.Convey("Then err should be nil.su,msp,mst,msc should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(msc, convey.ShouldBeNil)
ctx.So(mst, convey.ShouldBeNil)
ctx.So(msp, convey.ShouldBeNil)
ctx.So(su, convey.ShouldBeNil)
})
})
})
}
func TestUpcrmGetSignIDByCondition(t *testing.T) {
convey.Convey("GetSignIDByCondition", t, func(ctx convey.C) {
var (
arg = &signmodel.SignQueryArg{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
signIDs, err := d.GetSignIDByCondition(arg)
ctx.Convey("Then err should be nil.signIDs should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(signIDs, convey.ShouldBeNil)
})
})
})
}
func TestUpcrmGetSignUpByID(t *testing.T) {
convey.Convey("GetSignUpByID", t, func(ctx convey.C) {
var (
signID = []uint32{}
order = ""
offset = int(0)
limit = int(0)
query = interface{}(0)
args = interface{}(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetSignUpByID(signID, order, offset, limit, query, args)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetSignUpCount(t *testing.T) {
convey.Convey("GetSignUpCount", t, func(ctx convey.C) {
var (
query = ""
args = interface{}(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
count := d.GetSignUpCount(query, args)
ctx.Convey("Then count should not be nil.", func(ctx convey.C) {
ctx.So(count, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetTask(t *testing.T) {
convey.Convey("GetTask", t, func(ctx convey.C) {
var (
signID = []uint32{}
state = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetTask(signID, state)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetPay(t *testing.T) {
convey.Convey("GetPay", t, func(ctx convey.C) {
var (
signID = []uint32{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetPay(signID)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetContract(t *testing.T) {
convey.Convey("GetContract", t, func(ctx convey.C) {
var (
signID = []uint32{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetContract(signID)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmPayComplete(t *testing.T) {
convey.Convey("PayComplete", t, func(ctx convey.C) {
var (
ids = []int64{1, 2}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.PayComplete(ids)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetDueSignUp(t *testing.T) {
convey.Convey("GetDueSignUp", t, func(ctx convey.C) {
var (
now = time.Now()
expireAfterDays = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetDueSignUp(now, expireAfterDays)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetDuePay(t *testing.T) {
convey.Convey("GetDuePay", t, func(ctx convey.C) {
var (
now = time.Now()
expireAfterDays = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.GetDuePay(now, expireAfterDays)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmUpdateEmailState(t *testing.T) {
convey.Convey("UpdateEmailState", t, func(ctx convey.C) {
var (
table = "sign_up"
ids = []int64{}
state = int8(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.UpdateEmailState(table, ids, state)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldEqual, 0)
})
})
})
}
func TestUpcrmCheckUpHasValidContract(t *testing.T) {
convey.Convey("CheckUpHasValidContract", t, func(ctx convey.C) {
var (
mid = int64(0)
date = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
exist, err := d.CheckUpHasValidContract(mid, date)
ctx.Convey("Then err should be nil.exist should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(exist, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,45 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/model/upcrmmodel"
"go-common/library/log"
xtime "go-common/library/time"
)
//StartTask start task
func (d *Dao) StartTask(taskType int, now time.Time) (affectedRow int64, err error) {
var task = &upcrmmodel.TaskInfo{}
task.TaskType = int8(taskType)
task.GenerateDate = now.Format(upcrmmodel.TimeFmtDate)
task.StartTime = xtime.Time(now.Unix())
task.TaskState = upcrmmodel.TaskStateStart
var db = d.crmdb.Model(task).Save(task)
err = db.Error
if err != nil {
log.Error("error start task info, err=%+v", err)
return
}
affectedRow = db.RowsAffected
return
}
//FinishTask finish task
func (d *Dao) FinishTask(taskType int, now time.Time, state int) (affectedRow int64, err error) {
var task = &upcrmmodel.TaskInfo{}
task.TaskType = int8(taskType)
task.GenerateDate = now.Format(upcrmmodel.TimeFmtDate)
task.EndTime = xtime.Time(now.Unix())
task.TaskState = int16(state)
var db = d.crmdb.Model(task).Where("generate_date=? and task_type=?", task.GenerateDate, taskType).Update(task)
err = db.Error
if err != nil {
log.Error("error end task info, err=%+v", err)
return
}
affectedRow = db.RowsAffected
return
}

View File

@@ -0,0 +1,42 @@
package upcrm
import (
"testing"
"time"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmStartTask(t *testing.T) {
convey.Convey("StartTask", t, func(ctx convey.C) {
var (
taskType = int(0)
now = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.StartTask(taskType, now)
err = nil
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmFinishTask(t *testing.T) {
convey.Convey("FinishTask", t, func(ctx convey.C) {
var (
taskType = int(0)
now = time.Now()
state = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
affectedRow, err := d.FinishTask(taskType, now, state)
ctx.Convey("Then err should be nil.affectedRow should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(affectedRow, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,21 @@
package upcrm
import "go-common/app/admin/main/up/model/upcrmmodel"
//QueryUpBaseInfo query db
func (d *Dao) QueryUpBaseInfo(mid int64, fields string) (result upcrmmodel.UpBaseInfo, err error) {
err = d.crmdb.Select(fields).Where("mid=?", mid).Find(&result).Error
return
}
//QueryUpBaseInfoBatchByMid query db
func (d *Dao) QueryUpBaseInfoBatchByMid(fields string, mid ...int64) (result []upcrmmodel.UpBaseInfo, err error) {
err = d.crmdb.Select(fields).Where("mid in(?)", mid).Find(&result).Error
return
}
//QueryUpBaseInfoBatchByID query db
func (d *Dao) QueryUpBaseInfoBatchByID(fields string, id ...int64) (result []upcrmmodel.UpBaseInfo, err error) {
err = d.crmdb.Select(fields).Where("id in(?)", id).Find(&result).Error
return
}

View File

@@ -0,0 +1,56 @@
package upcrm
import (
"testing"
"github.com/jinzhu/gorm"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmQueryUpBaseInfo(t *testing.T) {
convey.Convey("QueryUpBaseInfo", t, func(ctx convey.C) {
var (
mid = int64(0)
fields = "*"
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryUpBaseInfo(mid, fields)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldEqual, gorm.ErrRecordNotFound)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryUpBaseInfoBatchByMid(t *testing.T) {
convey.Convey("QueryUpBaseInfoBatchByMid", t, func(ctx convey.C) {
var (
fields = "*"
mid = int64(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryUpBaseInfoBatchByMid(fields, mid)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryUpBaseInfoBatchByID(t *testing.T) {
convey.Convey("QueryUpBaseInfoBatchByID", t, func(ctx convey.C) {
var (
fields = "*"
id = int64(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryUpBaseInfoBatchByID(fields, id)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,15 @@
package upcrm
import "go-common/app/admin/main/up/model/upcrmmodel"
//QueryPlayInfo query db
func (d *Dao) QueryPlayInfo(mid int64, busiType []int) (result []upcrmmodel.UpPlayInfo, err error) {
err = d.crmdb.Where("mid=? and business_type in (?)", mid, busiType).Find(&result).Error
return
}
// QueryPlayInfoBatch query db
func (d *Dao) QueryPlayInfoBatch(mid []int64, busiType int) (result []*upcrmmodel.UpPlayInfo, err error) {
err = d.crmdb.Where("mid in (?) and business_type = ?", mid, busiType).Find(&result).Error
return
}

View File

@@ -0,0 +1,39 @@
package upcrm
import (
"testing"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmQueryPlayInfo(t *testing.T) {
convey.Convey("QueryPlayInfo", t, func(ctx convey.C) {
var (
mid = int64(0)
busiType = []int{}
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryPlayInfo(mid, busiType)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryPlayInfoBatch(t *testing.T) {
convey.Convey("QueryPlayInfoBatch", t, func(ctx convey.C) {
var (
mid = []int64{}
busiType = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryPlayInfoBatch(mid, busiType)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,29 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/model/upcrmmodel"
)
//QueryUpRank query up rank
func (d *Dao) QueryUpRank(rankType int, date time.Time) (result []upcrmmodel.UpRank, err error) {
err = d.crmdb.Model(&upcrmmodel.UpRank{}).Where("type=? and generate_date=?", rankType, date.Format(upcrmmodel.TimeFmtDate)).Find(&result).Error
return
}
//QueryUpRankAll query up rank all
func (d *Dao) QueryUpRankAll(date time.Time) (result []upcrmmodel.UpRank, err error) {
err = d.crmdb.Model(&upcrmmodel.UpRank{}).Where("generate_date=?", date.Format(upcrmmodel.TimeFmtDate)).Find(&result).Error
return
}
//GetUpRankLatestDate get last generate date
func (d *Dao) GetUpRankLatestDate() (date time.Time, err error) {
var rankInfo = upcrmmodel.UpRank{}
err = d.crmdb.Model(&rankInfo).Select("generate_date").Order("generate_date desc").Limit(1).Find(&rankInfo).Error
if err == nil {
date, err = time.Parse(time.RFC3339, rankInfo.GenerateDate)
}
return
}

View File

@@ -0,0 +1,51 @@
package upcrm
import (
"testing"
"time"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmQueryUpRank(t *testing.T) {
convey.Convey("QueryUpRank", t, func(ctx convey.C) {
var (
rankType = int(0)
date = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryUpRank(rankType, date)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryUpRankAll(t *testing.T) {
convey.Convey("QueryUpRankAll", t, func(ctx convey.C) {
var (
date = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryUpRankAll(date)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetUpRankLatestDate(t *testing.T) {
convey.Convey("GetUpRankLatestDate", t, func(ctx convey.C) {
ctx.Convey("When everything goes positive", func(ctx convey.C) {
date, err := d.GetUpRankLatestDate()
ctx.Convey("Then err should be nil.date should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(date, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,32 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/model/upcrmmodel"
)
// QueryUpScoreHistory score type, 1质量分2影响分3信用分,
// 0表示所有
func (d *Dao) QueryUpScoreHistory(mid int64, scoreType []int, fromdate time.Time, todate time.Time) (result []upcrmmodel.UpScoreHistory, err error) {
err = d.crmdb.Table(upcrmmodel.GetUpScoreHistoryTableName(mid)).Where("mid=? and score_type in (?) and generate_date >= ? and generate_date <= ?", mid, scoreType, fromdate.Format(upcrmmodel.TimeFmtDate), todate.Format(upcrmmodel.TimeFmtDate)).Find(&result).Error
return
}
//GetLatestUpScoreDate 获取某个分数的最新记录日期如果出错就返回todate
func (d *Dao) GetLatestUpScoreDate(mid int64, scoreType int, todate time.Time) (date time.Time, err error) {
date = todate
var history upcrmmodel.UpScoreHistory
err = d.crmdb.Table(upcrmmodel.GetUpScoreHistoryTableName(mid)).
Select("generate_date").
Where("mid=? and score_type = ? and generate_date <= ?", mid, scoreType, todate).
Order("generate_date desc").
Limit(1).
Find(&history).
Error
if err != nil {
return
}
date = history.GenerateDate.Time()
return
}

View File

@@ -0,0 +1,44 @@
package upcrm
import (
"testing"
"time"
"github.com/jinzhu/gorm"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmQueryUpScoreHistory(t *testing.T) {
convey.Convey("QueryUpScoreHistory", t, func(ctx convey.C) {
var (
mid = int64(0)
scoreType = []int{}
fromdate = time.Now()
todate = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
result, err := d.QueryUpScoreHistory(mid, scoreType, fromdate, todate)
ctx.Convey("Then err should be nil.result should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(result, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmGetLatestUpScoreDate(t *testing.T) {
convey.Convey("GetLatestUpScoreDate", t, func(ctx convey.C) {
var (
mid = int64(0)
scoreType = int(0)
todate = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
date, err := d.GetLatestUpScoreDate(mid, scoreType, todate)
ctx.Convey("Then err should be nil.date should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldEqual, gorm.ErrRecordNotFound)
ctx.So(date, convey.ShouldNotBeNil)
})
})
})
}

View File

@@ -0,0 +1,71 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/model/upcrmmodel"
"go-common/library/log"
"github.com/jinzhu/gorm"
)
const (
upstatshistory = "up_stats_history"
//ISO8601DATE only date format
ISO8601DATE = "2006-01-02"
)
//GetUpStatLastDate get last update date from db
func (d *Dao) GetUpStatLastDate(date time.Time) (lastday time.Time, err error) {
var lasthistory upcrmmodel.UpStatsHistory
err = d.crmdb.Table(upstatshistory).Select("generate_date").Order("generate_date desc").Limit(1).Find(&lasthistory).Error
if err != nil {
log.Error("get last date fail for up stat history, err=%+v", err)
return
}
lastday = lasthistory.GenerateDate.Time()
return
}
//QueryYesterday query yesterday db
func (d *Dao) QueryYesterday(date time.Time) (res []*upcrmmodel.UpStatsHistory, err error) {
err = d.crmdb.Table(upstatshistory).Where("generate_date = ? AND type in ( ?, ?, ? )", date.Format(ISO8601DATE), upcrmmodel.ActivityType, upcrmmodel.IncrType, upcrmmodel.TotalType).Find(&res).Error
if err == gorm.ErrRecordNotFound {
err = nil
return
}
if err != nil {
return nil, err
}
return
}
//QueryTrend query db
func (d *Dao) QueryTrend(statType int, currentDate time.Time, days int) (res []*upcrmmodel.UpStatsHistory, err error) {
// 这种type有3种子类型需要加起来
if statType == upcrmmodel.ActivityType {
days *= 3
}
err = d.crmdb.Table(upstatshistory).Where("type = ? AND generate_date <=?", statType, currentDate.Format(ISO8601DATE)).Order("generate_date desc").Limit(days).Find(&res).Error
if err == gorm.ErrRecordNotFound {
err = nil
return
}
if err != nil {
return nil, err
}
return
}
//QueryDetail query db
func (d *Dao) QueryDetail(startDate time.Time, endDate time.Time) (res []*upcrmmodel.UpStatsHistory, err error) {
err = d.crmdb.Table(upstatshistory).Where("generate_date BETWEEN ? AND ?", startDate.Format(ISO8601DATE), endDate.Format(ISO8601DATE)).Order("generate_date Desc").Find(&res).Error
if err == gorm.ErrRecordNotFound {
err = nil
return
}
if err != nil {
return nil, err
}
return
}

View File

@@ -0,0 +1,71 @@
package upcrm
import (
"testing"
"time"
"github.com/smartystreets/goconvey/convey"
)
func TestUpcrmGetUpStatLastDate(t *testing.T) {
convey.Convey("GetUpStatLastDate", t, func(ctx convey.C) {
var (
date = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
lastday, err := d.GetUpStatLastDate(date)
ctx.Convey("Then err should be nil.lastday should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(lastday, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryYesterday(t *testing.T) {
convey.Convey("QueryYesterday", t, func(ctx convey.C) {
var (
date = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
res, err := d.QueryYesterday(date)
ctx.Convey("Then err should be nil.res should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(res, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryTrend(t *testing.T) {
convey.Convey("QueryTrend", t, func(ctx convey.C) {
var (
statType = int(0)
currentDate = time.Now()
days = int(0)
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
res, err := d.QueryTrend(statType, currentDate, days)
ctx.Convey("Then err should be nil.res should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(res, convey.ShouldNotBeNil)
})
})
})
}
func TestUpcrmQueryDetail(t *testing.T) {
convey.Convey("QueryDetail", t, func(ctx convey.C) {
var (
startDate = time.Now()
endDate = time.Now()
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
res, err := d.QueryDetail(startDate, endDate)
ctx.Convey("Then err should be nil.res should not be nil.", func(ctx convey.C) {
ctx.So(err, convey.ShouldBeNil)
ctx.So(res, convey.ShouldNotBeNil)
})
})
})
}