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,52 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["dao_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = [
"//app/job/main/up/conf:go_default_library",
"//library/ecode:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"account_cache.go",
"dao.go",
"rpc.go",
],
importpath = "go-common/app/job/main/up/dao/account",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/job/main/up/conf:go_default_library",
"//app/service/main/account/model:go_default_library",
"//app/service/main/account/rpc/client:go_default_library",
"//library/ecode:go_default_library",
"//library/log: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,76 @@
package account
import (
"context"
"sync"
"time"
account "go-common/app/service/main/account/model"
"go-common/library/log"
)
var (
infoCache = make(map[int64]*account.Info)
nextClearCacheTime time.Time
lock = sync.Mutex{}
)
const (
cacheClearInterval = 60 * time.Minute
)
//GetCachedInfos get cache info
func (d *Dao) GetCachedInfos(c context.Context, mids []int64, ip string) (infos map[int64]*account.Info, err error) {
d.checkClearCache()
var needFindMids []int64
infos = make(map[int64]*account.Info)
lock.Lock()
for _, v := range mids {
var info, ok = infoCache[v]
if !ok {
needFindMids = append(needFindMids, v)
continue
}
log.Info("hit cache! mid=%d", v)
infos[v] = info
}
lock.Unlock()
if len(needFindMids) == 0 {
return
}
var findinfo, e = d.Infos(c, needFindMids, ip)
err = e
if e != nil {
log.Error("try get uid info fail, err=%v", e)
return
}
lock.Lock()
for k, v := range findinfo {
infos[k] = v
infoCache[k] = v
}
lock.Unlock()
return
}
func (d *Dao) checkClearCache() {
var now = time.Now()
if now.Before(nextClearCacheTime) {
return
}
d.clearCache()
}
func (d *Dao) clearCache() {
nextClearCacheTime = time.Now().Add(cacheClearInterval)
if len(infoCache) == 0 {
return
}
lock.Lock()
infoCache = make(map[int64]*account.Info)
lock.Unlock()
}

View File

@@ -0,0 +1,70 @@
package account
import (
"context"
"go-common/app/job/main/up/conf"
"go-common/app/service/main/account/model"
account "go-common/app/service/main/account/rpc/client"
"go-common/library/ecode"
"go-common/library/log"
)
// Dao dao is account dao.
type Dao struct {
// config
c *conf.Config
// rpc
acc *account.Service3
}
// New new a account dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// config
c: c,
// rpc
acc: account.New3(c.AccountRPC),
}
return
}
// Close close resource.
func (d *Dao) Close() {
}
// Ping ping success.
func (d *Dao) Ping(c context.Context) (err error) {
return
}
// IdentifyInfo 获取用户实名认证状态
func (d *Dao) IdentifyInfo(c context.Context, ak, ck, ip string, mid int64) (err error) {
var mf *model.Profile
if mf, err = d.Profile(c, mid, ip); err != nil {
log.Error("d.Profile mid(%d),ip(%s),error(%v)", mid, ip, err)
err = ecode.CreativeAccServiceErr
return
}
if mf.Identification == 1 {
return
}
//switch for FrontEnd return json format, return OldPhone, and newError
if err = d.switchIDInfoRet(mf.TelStatus); err != nil {
log.Error("switchIDInfoRet url(%s) res(%v)", mf.TelStatus)
return
}
return
}
func (d *Dao) switchIDInfoRet(phoneRet int32) (err error) {
switch phoneRet {
case 0:
err = ecode.UserCheckNoPhone
case 1:
err = nil
case 2:
err = ecode.UserCheckInvalidPhone
}
return
}

View File

@@ -0,0 +1,62 @@
package account
import (
"context"
"flag"
"path/filepath"
"testing"
"go-common/library/ecode"
. "github.com/smartystreets/goconvey/convey"
"go-common/app/job/main/up/conf"
)
var (
d *Dao
)
func init() {
dir, _ := filepath.Abs("../../cmd/up-admin.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
}
func WithDao(f func(d *Dao)) func() {
return func() {
Reset(func() {})
f(d)
}
}
func Test_IdentifyInfo(t *testing.T) {
var (
c = context.Background()
err error
mid = int64(27515256)
ak = "efbf2e093c3c04008acbd9906ba970db"
ck = ""
ip = "127.0.0.1"
)
Convey("IdentifyInfo", t, WithDao(func(d *Dao) {
err = d.IdentifyInfo(c, ak, ck, ip, mid)
So(err, ShouldNotBeNil)
So(err, ShouldEqual, ecode.CreativeAccServiceErr)
}))
}
func Test_GetCachedInfos(t *testing.T) {
var (
c = context.Background()
err error
mids = []int64{1234, 12345}
ip = "127.0.0.1"
)
Convey("GetCachedInfos", t, WithDao(func(d *Dao) {
_, err = d.GetCachedInfos(c, mids, ip)
So(err, ShouldNotBeNil)
}))
}

View File

@@ -0,0 +1,33 @@
package account
import (
"context"
account "go-common/app/service/main/account/model"
"go-common/library/ecode"
"go-common/library/log"
)
// Profile get profile from rpc
func (d *Dao) Profile(c context.Context, mid int64, ip string) (p *account.Profile, err error) {
arg := &account.ArgMid{
Mid: mid,
}
if p, err = d.acc.Profile3(c, arg); err != nil {
log.Error("d.acc.Profile3 error(%v) | mid(%d) ip(%s) arg(%v)", err, mid, ip, arg)
err = ecode.CreativeAccServiceErr
}
return
}
//Infos get up infos
func (d *Dao) Infos(c context.Context, mids []int64, ip string) (infos map[int64]*account.Info, err error) {
arg := &account.ArgMids{
Mids: mids,
}
if infos, err = d.acc.Infos3(c, arg); err != nil {
log.Error("d.acc.info3 error(%v) arg(%v)", err, arg)
err = ecode.CreativeAccServiceErr
}
return
}

View File

@@ -0,0 +1,45 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["dao_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = ["//vendor/github.com/smartystreets/goconvey/convey:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = [
"dao.go",
"email.go",
],
importpath = "go-common/app/job/main/up/dao/email",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/job/main/up/conf:go_default_library",
"//library/log:go_default_library",
"//vendor/gopkg.in/gomail.v2: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,26 @@
package email
import (
"crypto/tls"
"go-common/app/job/main/up/conf"
gomail "gopkg.in/gomail.v2"
)
// Dao is redis dao.
type Dao struct {
email *gomail.Dialer
}
// New is new redis dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// mail
email: gomail.NewDialer(c.MailConf.Host, c.MailConf.Port, c.MailConf.Username, c.MailConf.Password),
}
d.email.TLSConfig = &tls.Config{
InsecureSkipVerify: true,
}
return
}

View File

@@ -0,0 +1,11 @@
package email
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func Test_Temp(t *testing.T) {
Convey("temp test", t, func() {})
}

View File

@@ -0,0 +1,39 @@
package email
import (
"go-common/library/log"
"os"
"go-common/app/job/main/up/conf"
"gopkg.in/gomail.v2"
)
//SendMail send the email.
func (d *Dao) SendMail(body string, subject string, send []string) (err error) {
log.Info("send mail send:%v", send)
msg := gomail.NewMessage()
msg.SetHeader("From", conf.Conf.MailConf.Username)
msg.SetHeader("To", send...)
msg.SetHeader("Subject", subject)
msg.SetBody("text/html", body, gomail.SetPartEncoding(gomail.Base64))
if err = d.email.DialAndSend(msg); err != nil {
log.Error("s.email.DialAndSend error(%v)", err)
return
}
return
}
//SendMailAttach send the email.
func (d *Dao) SendMailAttach(filename string, subject string, send []string) (err error) {
msg := gomail.NewMessage()
msg.SetHeader("From", conf.Conf.MailConf.Username)
msg.SetHeader("To", send...)
msg.SetHeader("Subject", subject)
msg.Attach(filename)
if err = d.email.DialAndSend(msg); err != nil {
log.Error("s.email.DialAndSend error(%v)", err)
return
}
err = os.Remove(filename)
return
}

View File

@@ -0,0 +1,52 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["dao_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = ["//app/job/main/up/conf:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = [
"dao.go",
"sign_up.go",
"task_info.go",
"up_base_info.go",
],
importpath = "go-common/app/job/main/up/dao/upcrm",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/up/util/now:go_default_library",
"//app/job/main/up/conf:go_default_library",
"//app/job/main/up/model/signmodel:go_default_library",
"//app/job/main/up/model/upcrmmodel: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"
"go-common/app/job/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.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
}
// Close close resource.
func (d *Dao) Close() {
d.crmdb.Close()
}
// Ping ping success.
func (d *Dao) Ping(c context.Context) (err error) {
return
}

View File

@@ -0,0 +1,50 @@
package upcrm
import (
"flag"
"os"
"testing"
"time"
"go-common/app/job/main/up/conf"
)
var (
d *Dao
)
func TestMain(m *testing.M) {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.archive.mcn-admin")
flag.Set("conf_token", "220af473858ad67f75586b66bece0e6b")
flag.Set("tree_id", "58930")
flag.Set("conf_version", "docker-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")
}
flag.Set("conf", "../../cmd/up-job.toml")
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
m.Run()
os.Exit(0)
}
func TestGetDueTask(t *testing.T) {
var date, _ = time.Parse("2006-01-02", "2018-11-02")
var res, err = d.GetDueTask(date)
if err != nil {
t.Errorf("err get tasks, err=%v", err)
t.FailNow()
}
for i, v := range res {
t.Logf("[%d]res=%+v", i, v)
}
}

View File

@@ -0,0 +1,314 @@
package upcrm
import (
"time"
"go-common/app/admin/main/up/util/now"
"go-common/app/job/main/up/model/signmodel"
"go-common/app/job/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
)
// var days
var (
Day = time.Hour * 24
Day3 = Day * 3
Week = Day * 7
Week3 = Week * 3
)
// GetTaskDuration this will return task duration, [startDate, endDate)
func GetTaskDuration(date time.Time, taskType int8) (startDate, endDate time.Time) {
var ndate = now.New(date)
now.WeekStartDay = time.Monday
switch taskType {
case signmodel.TaskTypeDay:
var begin = ndate.BeginningOfDay()
return begin, begin.AddDate(0, 0, 1)
case signmodel.TaskTypeWeek:
var begin = ndate.BeginningOfWeek()
return begin, begin.AddDate(0, 0, 7)
case signmodel.TaskTypeMonth:
var begin = ndate.BeginningOfMonth()
return begin, begin.AddDate(0, 1, 0)
case signmodel.TaskTypeQuarter:
var begin = ndate.BeginningOfQuarter()
return begin, begin.AddDate(0, 3, 0)
}
return
}
// GetTaskExpireLimit this will return generate date range that needs to send email
func GetTaskExpireLimit(today time.Time, taskType int8) (minDate, maxDate time.Time) {
// 0<=endDate-today)<= limit
// 0<=(generateDate + duration - today) <= limit
// today-duration <= generateDate <= today - duration + limit
// duration = endDate - startDate
switch taskType {
case signmodel.TaskTypeDay:
var tmp = today.AddDate(0, 0, -1)
return tmp, tmp.Add(Day)
case signmodel.TaskTypeWeek:
var tmp = today.AddDate(0, 0, -7)
return tmp, tmp.Add(Day3)
case signmodel.TaskTypeMonth:
var tmp = today.AddDate(0, -1, 0)
return tmp, tmp.Add(Week)
case signmodel.TaskTypeQuarter:
var tmp = today.AddDate(0, -3, 0)
return tmp, tmp.Add(Week3)
}
return
}
//InsertSignUp insert sign up
// up : sign up
func (d *Dao) InsertSignUp(up *signmodel.SignUp) (affectedRow int64, err error) {
var db = d.crmdb.Save(up)
err = db.Error
affectedRow = db.RowsAffected
return
}
//InsertPayInfo inert pay
func (d *Dao) InsertPayInfo(info *signmodel.SignPay) (affectedRow int64, err error) {
var db = d.crmdb.Save(info)
err = db.Error
affectedRow = db.RowsAffected
return
}
//InsertTaskInfo insert task
func (d *Dao) InsertTaskInfo(info *signmodel.SignTask) (affectedRow int64, err error) {
var db = d.crmdb.Save(info)
err = db.Error
affectedRow = db.RowsAffected
return
}
//InsertContractInfo insert contract
func (d *Dao) InsertContractInfo(info interface{}) (affectedRow int64, err error) {
var db = d.crmdb.Save(info)
err = db.Error
affectedRow = db.RowsAffected
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.TableNameSignUp).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.TableNameSignTask).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.TableNameSignPay).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.TableNameSignContract).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 []uint32) (affectedRow int64, err error) {
var db = d.crmdb.Table(signmodel.TableNameSignPay).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
}
//GetEndDate used for template
func (s *SignWithName) GetEndDate() string {
return s.EndDate.Time().Format(upcrmmodel.TimeFmtDate)
}
//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.TableNameSignUp).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
}
//GetEndDate used for template
func (s *PayWithAdmin) GetEndDate() string {
return s.DueDate.Time().Format(upcrmmodel.TimeFmtDate)
}
//GetPayValue for template
func (s *PayWithAdmin) GetPayValue() float64 {
return float64(s.PayValue) / 1000.0
}
//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
}
//TaskWithAdmin task with admin
type TaskWithAdmin struct {
signmodel.SignTaskHistory
Name string
AdminID int
AdminName string
}
//EndDate used for template
func (s *TaskWithAdmin) EndDate() xtime.Time {
var _, end = GetTaskDuration(s.GenerateDate.Time(), s.TaskType)
return xtime.Time(end.Unix())
}
//TypeDesc descrption
func (s *TaskWithAdmin) TypeDesc() string {
return signmodel.TaskTypeStr(int(s.TaskType))
}
var (
//NeedCheckTaskType task type
NeedCheckTaskType = []int8{
signmodel.TaskTypeWeek,
signmodel.TaskTypeMonth,
signmodel.TaskTypeQuarter,
}
)
//GetDueTask get due tasks
func (d *Dao) GetDueTask(now time.Time) (result []*TaskWithAdmin, err error) {
// 到期的任务,
// 从sign_task_history表中查询任务
for _, t := range NeedCheckTaskType {
var min, max = GetTaskExpireLimit(now, t)
// 从sign_task_history中查询min<=generate_date <=max and task_type = t and state != 2
var tasks []*TaskWithAdmin
err = d.crmdb.Raw(`
select t.*, u.admin_id, u.admin_name
from sign_task_history as t
left join sign_up as u
on t.sign_id=u.id
where t.generate_date=? and t.task_type=? and t.state!=2`, // t.generate_date=? 现在只在时间刚好达到时发送邮件,这样可以只发送一次,但是有可能会漏掉那些早已经过期的。
max.Format(upcrmmodel.TimeFmtDate), t).
Find(&tasks).Error
if err != nil {
log.Error("fail to get from db, task type=%d, min=%s, max=%s", t, min, max)
return
}
log.Info("get from db, task type=%d, min=%s, max=%s, len=%d", t, min, max, len(tasks))
result = append(result, tasks...)
}
return
}
//UpdateEmailState update email send state
// state : @
func (d *Dao) UpdateEmailState(table string, ids []uint32, state int8) (affectedRow int64, err error) {
if len(ids) == 0 {
log.Warn("no ids to update email state, state=%d", state)
return
}
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.TableNameSignUp).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
}

View File

@@ -0,0 +1,44 @@
package upcrm
import (
"go-common/app/job/main/up/model/upcrmmodel"
"go-common/library/log"
xtime "go-common/library/time"
"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,21 @@
package upcrm
import "go-common/app/job/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
}