1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package dao
- import (
- "context"
- "fmt"
- "go-common/app/service/live/xlottery/model"
- "strings"
- "go-common/library/database/sql"
- "go-common/library/log"
- )
- const (
- _getExtraDataByTypeMysql = "select type, item_value, item_extra, ctime, mtime from capsule_extra_data where uid = ? and type in (%v)"
- _addExtraDataMysql = "insert into capsule_extra_data(uid,type,item_value,item_extra) values "
- _updateExtraValueMysql = "update capsule_extra_data set item_value = ? where uid = ? and type = ?"
- )
- // GetExtraDataByType 添加数据
- func (d *Dao) GetExtraDataByType(ctx context.Context, uid int64, types []string) (extraData []*model.ExtraData, err error) {
- var rows *sql.Rows
- var typeString []string
- for _, etype := range types {
- typeString = append(typeString, "'"+etype+"'")
- }
- sqlStr := fmt.Sprintf(_getExtraDataByTypeMysql, strings.Join(typeString, ","))
- if rows, err = d.db.Query(ctx, sqlStr, uid); err != nil {
- log.Error("[dao.extra | GetExtraDataByType] query(%s) error (%v)", sqlStr, err)
- return
- }
- defer rows.Close()
- extraData = make([]*model.ExtraData, 0)
- for rows.Next() {
- p := &model.ExtraData{}
- if err = rows.Scan(&p.Type, &p.ItemValue, &p.ItemExtra, &p.Ctime, &p.Mtime); err != nil {
- log.Error("[dao.extra | GetExtraDataByType] scan error, err %v", err)
- return
- }
- extraData = append(extraData, p)
- }
- return
- }
- // AddExtraData 添加数据
- func (d *Dao) AddExtraData(ctx context.Context, extraData []*model.ExtraData) (status bool, err error) {
- sqlStr := _addExtraDataMysql + strings.Repeat("(?,?,?,?),", len(extraData))
- slen := len(sqlStr) - 1
- sqlStr = sqlStr[0:slen]
- values := make([]interface{}, len(extraData)*4)
- for i, extra := range extraData {
- values[i*4] = extra.Uid
- values[i*4+1] = extra.Type
- values[i*4+2] = extra.ItemValue
- values[i*4+3] = extra.ItemExtra
- }
- res, err := d.db.Exec(ctx, sqlStr, values...)
- if err != nil {
- log.Error("[dao.extra | AddExtraData] add(%s) error (%v)", sqlStr, err)
- return
- }
- rows, _ := res.RowsAffected()
- status = rows > 0
- return
- }
- // UpdateExtraValue 更新数据
- func (d *Dao) UpdateExtraValue(ctx context.Context, uid int64, etype string, itemValue int64) (status bool, err error) {
- res, err := d.db.Exec(ctx, _updateExtraValueMysql, itemValue, uid, etype)
- if err != nil {
- log.Error("[dao.extra | UpdateExtraValue] update(%s) error(%v)", _updateExtraValueMysql, err)
- return false, err
- }
- var rows int64
- rows, err = res.RowsAffected()
- if err != nil {
- log.Error("[dao.extra | UpdateExtraValue] err %v", err)
- return false, err
- }
- return rows > 0, nil
- }
|