You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.7 KiB
98 lines
2.7 KiB
package upcrmdao |
|
|
|
import ( |
|
"github.com/jinzhu/gorm" |
|
"go-common/app/service/main/upcredit/conf" |
|
|
|
"context" |
|
"fmt" |
|
"go-common/app/service/main/upcredit/model/upcrmmodel" |
|
"go-common/library/log" |
|
) |
|
|
|
//Dao upcrm dao |
|
type Dao struct { |
|
conf *conf.Config |
|
crmdb *gorm.DB |
|
} |
|
|
|
//New create |
|
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 |
|
} |
|
d.crmdb = crmdb |
|
crmdb.SingularTable(true) |
|
d.crmdb.LogMode(c.IsTest) |
|
return d |
|
} |
|
|
|
//Close close |
|
func (d *Dao) Close() { |
|
if d.crmdb != nil { |
|
d.crmdb.Close() |
|
} |
|
} |
|
|
|
//AddLog add log |
|
func (d *Dao) AddLog(arg *upcrmmodel.ArgCreditLogAdd) error { |
|
var creditLog = &upcrmmodel.CreditLog{} |
|
creditLog.CopyFrom(arg) |
|
return d.crmdb.Create(creditLog).Error |
|
} |
|
|
|
//AddCreditScore add score |
|
func (d *Dao) AddCreditScore(creditScore *upcrmmodel.UpScoreHistory) error { |
|
return d.crmdb.Create(creditScore).Error |
|
} |
|
|
|
//AddOrUpdateCreditScore update score |
|
func (d *Dao) AddOrUpdateCreditScore(creditScore *upcrmmodel.UpScoreHistory) (err error) { |
|
var tablename = creditScore.TableName() |
|
var insertSQL = fmt.Sprintf("insert into %s (mid, score_type, score, generate_date, ctime) values (?,?,?,?,?) "+ |
|
"on duplicate key update score=?", tablename) |
|
err = d.crmdb.Exec( |
|
insertSQL, |
|
creditScore.Mid, creditScore.ScoreType, creditScore.Score, creditScore.GenerateDate, creditScore.CTime, |
|
creditScore.Score).Error |
|
if err != nil { |
|
log.Error("add credit score fail, mid=%d, err=%+v", creditScore.Mid, err) |
|
} |
|
return |
|
} |
|
|
|
//GetCreditScore get score |
|
func (d *Dao) GetCreditScore(c context.Context, arg *upcrmmodel.GetScoreParam) (results []*upcrmmodel.UpScoreHistory, err error) { |
|
var mod = upcrmmodel.UpScoreHistory{ |
|
Mid: arg.Mid, |
|
} |
|
err = d.crmdb.Table(mod.TableName()).Select("score, generate_date"). |
|
Where("mid=? AND generate_date>=? AND generate_date<=? AND score_type=?", arg.Mid, arg.FromDate, arg.ToDate, arg.ScoreType). |
|
Find(&results).Error |
|
if err != nil { |
|
log.Error("get score history fail, arg=%+v, err=%+v", arg, err) |
|
} |
|
return |
|
} |
|
|
|
//GetCreditLog get log |
|
func (d *Dao) GetCreditLog(c context.Context, arg *upcrmmodel.ArgGetLogHistory) (results []*upcrmmodel.SimpleCreditLogWithContent, err error) { |
|
var mod = upcrmmodel.SimpleCreditLogWithContent{} |
|
mod.Mid = arg.Mid |
|
|
|
err = d.crmdb.Table(mod.TableName()).Select("type, op_type, reason, business_type, ctime, content, oid"). |
|
//Limit(arg.Limit). |
|
//Offset(arg.Offset). |
|
Where("mid=? AND ctime>=? AND ctime<=?", arg.Mid, arg.FromDate, arg.ToDate). |
|
Order("ctime"). |
|
Find(&results).Error |
|
if err != nil { |
|
log.Error("get log history fail, arg=%+v, err=%+v", arg, err) |
|
} |
|
return |
|
}
|
|
|