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,43 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"dao.go",
"email.go",
"memcache.go",
"task.go",
"task_log.go",
],
importpath = "go-common/app/interface/main/laser/dao",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/laser/conf:go_default_library",
"//app/interface/main/laser/model:go_default_library",
"//library/cache/memcache:go_default_library",
"//library/database/sql:go_default_library",
"//library/log:go_default_library",
"//vendor/github.com/pkg/errors: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,48 @@
package dao
import (
"context"
"crypto/tls"
"go-common/app/interface/main/laser/conf"
"go-common/library/cache/memcache"
xsql "go-common/library/database/sql"
"gopkg.in/gomail.v2"
)
type Dao struct {
c *conf.Config
db *xsql.DB
mc *memcache.Pool
mcExpire int32
email *gomail.Dialer
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
c: c,
db: xsql.NewMySQL(c.Mysql),
mc: memcache.NewPool(c.Memcache.Laser.Config),
mcExpire: 3600 * 6,
email: gomail.NewDialer(c.Mail.Host, c.Mail.Port, c.Mail.Username, c.Mail.Password),
}
d.email.TLSConfig = &tls.Config{
InsecureSkipVerify: true,
}
return
}
func (d *Dao) Ping(c context.Context) (err error) {
return d.db.Ping(c)
}
func (d *Dao) Close() {
if d.db != nil {
d.db.Close()
}
}
// BeginTran BeginTran.
func (d *Dao) BeginTran(c context.Context) (*xsql.Tx, error) {
return d.db.Begin(c)
}

View File

@@ -0,0 +1,19 @@
package dao
import (
"go-common/library/log"
"gopkg.in/gomail.v2"
)
func (d *Dao) SendEmail(subject string, to string, body string) (err error) {
msg := gomail.NewMessage()
msg.SetHeader("From", d.c.Mail.Username)
msg.SetHeader("To", to)
msg.SetHeader("Subject", subject)
msg.SetBody("text/plain", body)
if err = d.email.DialAndSend(msg); err != nil {
log.Error("s.email.DialAndSend error(%v)", err)
return
}
return
}

View File

@@ -0,0 +1,66 @@
package dao
import (
"context"
"go-common/app/interface/main/laser/model"
"go-common/library/cache/memcache"
"go-common/library/log"
"strconv"
)
const (
_prefix = "taskinfo_"
)
func keyTaskInfo(mid int64) string {
return _prefix + strconv.FormatInt(mid, 10)
}
// TaskInfoCache get taskInfo cache
func (d *Dao) TaskInfoCache(c context.Context, mid int64) (ti *model.TaskInfo, err error) {
var (
conn = d.mc.Get(c)
r *memcache.Item
)
defer conn.Close()
r, err = conn.Get(keyTaskInfo(mid))
if err != nil {
if err == memcache.ErrNotFound {
err = nil
} else {
log.Error("conn Get2(%d) error(%v)", mid, err)
}
return
}
if err = conn.Scan(r, &ti); err != nil {
log.Error("json.Unmarshal(%s) error(%v)", r.Value, err)
ti = nil
}
return
}
// AddTaskInfoCache add taskInfo cache
func (d *Dao) AddTaskInfoCache(c context.Context, mid int64, ti *model.TaskInfo) (err error) {
var (
key = keyTaskInfo(mid)
)
conn := d.mc.Get(c)
defer conn.Close()
if err = conn.Set(&memcache.Item{Key: key, Object: ti, Flags: memcache.FlagJSON, Expiration: d.mcExpire}); err != nil {
log.Error("memcache.Set(%v) error(%v)", key, err)
}
return
}
// RemoveTaskInfoCache remove taskInfo cache
func (d *Dao) RemoveTaskInfoCache(c context.Context, mid int64) (err error) {
var (
key = keyTaskInfo(mid)
)
conn := d.mc.Get(c)
defer conn.Close()
if err = conn.Delete(key); err != nil {
log.Error("memcache.Delete(%v) error(%v)", key, err)
}
return
}

View File

@@ -0,0 +1,68 @@
package dao
import (
"context"
"github.com/pkg/errors"
"database/sql"
"go-common/app/interface/main/laser/model"
xsql "go-common/library/database/sql"
"go-common/library/log"
)
const (
_queryTaskInfoSql = "SELECT mid, log_date, source_type, platform FROM task WHERE state = 0 AND is_deleted = 0 AND mid = ?"
_updateStateSql = "UPDATE task SET state = ? WHERE is_deleted = 0 AND id = ? "
_queryTaskIDSql = "SELECT id FROM task WHERE is_deleted = 0 AND state = 0 and mid = ? "
_selectByPrimaryID = "SELECT id, admin_id, mid, log_date, contact_email, source_type, platform,state, is_deleted, mtime, ctime FROM task WHERE id = ? AND is_deleted = 0"
)
func (d *Dao) QueryUndoneTaskInfo(c context.Context, mid int64) (t *model.TaskInfo, err error) {
t = &model.TaskInfo{}
row := d.db.QueryRow(c, _queryTaskInfoSql, mid)
if err = row.Scan(&t.MID, &t.LogDate, &t.SourceType, &t.Platform); err != nil {
if err == sql.ErrNoRows {
t = nil
err = nil
} else {
err = errors.WithStack(err)
log.Error("row.Scan() error(%v)", err)
}
}
return
}
func (d *Dao) TxUpdateTaskState(c context.Context, tx *xsql.Tx, state int, taskID int64) (rows int64, err error) {
res, err := tx.Exec(_updateStateSql, state, taskID)
if err != nil {
err = errors.WithStack(err)
return
}
rows, err = res.RowsAffected()
return
}
func (d *Dao) QueryTaskID(c context.Context, mid int64) (taskID int64, err error) {
row := d.db.QueryRow(c, _queryTaskIDSql, mid)
if err = row.Scan(&taskID); err != nil {
if err == sql.ErrNoRows {
err = nil
} else {
err = errors.WithStack(err)
log.Error("row.Scan() error(%v)", err)
}
}
return
}
func (d *Dao) DetailTask(c context.Context, taskID int64) (t *model.Task, err error) {
t = &model.Task{}
row := d.db.QueryRow(c, _selectByPrimaryID, taskID)
if err = row.Scan(&t.ID, &t.AdminID, &t.MID, &t.LogDate, &t.ContactEmail, &t.SourceType, &t.Platform, &t.State, &t.IsDeleted, &t.CTime, &t.MTime); err != nil {
err = errors.WithStack(err)
log.Error("rows.Scan error(%v)", err)
return
}
return
}

View File

@@ -0,0 +1,24 @@
package dao
import (
"context"
"github.com/pkg/errors"
xsql "go-common/library/database/sql"
)
const (
_addTaskLogSql = "INSERT INTO task_log (task_id, mid, build, platform, task_state, reason) VALUES ( ?, ?, ?, ?, ?, ? )"
)
func (d *Dao) TxAddTaskLog(c context.Context, tx *xsql.Tx, taskID int64, mid int64, build string, platform int, taskState int, reason string) (insertID int64, err error) {
res, err := tx.Exec(_addTaskLogSql, taskID, mid, build, platform, taskState, reason)
if err != nil {
err = errors.WithStack(err)
return
}
if insertID, err = res.LastInsertId(); err == nil {
insertID = int64(insertID)
}
return
}