Files
jx-callback/business/model/dao/event.go
2020-01-14 14:50:01 +08:00

102 lines
2.6 KiB
Go

package dao
import (
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
)
type OperateEventExt struct {
model.OperateEvent
Detail []*model.OperateEventDetail
Name string `json:"name"`
}
func DeleteOperateEventDetail(db *DaoDB, deleteTime time.Time) (err error) {
sql := `
DELETE FROM a
USING operate_event_detail a,operate_event b
WHERE a.access_uuid = b.access_uuid
AND b.created_at < ?
`
sqlParams := []interface{}{
deleteTime,
}
_, err = ExecuteSQL(db, sql, sqlParams...)
return err
}
func DeleteOperateEvent(db *DaoDB, deleteTime time.Time) (err error) {
sql := `
DELETE FROM operate_event
WHERE created_at < ?
`
sqlParams := []interface{}{
deleteTime,
}
_, err = ExecuteSQL(db, sql, sqlParams...)
return err
}
func GetOperateEvents(db *DaoDB, apiFunction, name string, operateType int, skuIDs, storeIDs []int, fromTime, toTime time.Time, offset, pageSize int) (operateEventExt []*OperateEventExt, totalCount int, err error) {
sql := `
SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name
FROM operate_event a
LEFT JOIN operate_event_detail b ON a.access_uuid = b.access_uuid
LEFT JOIN user c ON c.user_id = a.user_id
WHERE 1=1
`
sqlParams := []interface{}{}
if name != "" {
sql += " AND c.name LIKE ?"
sqlParams = append(sqlParams, "%"+name+"%")
}
if !utils.IsTimeZero(fromTime) {
sql += " AND a.created_at >= ?"
sqlParams = append(sqlParams, fromTime)
}
if !utils.IsTimeZero(toTime) {
sql += " AND a.created_at <= ?"
sqlParams = append(sqlParams, toTime)
}
if apiFunction != "" {
sql += " AND a.api_function = ?"
sqlParams = append(sqlParams, apiFunction)
}
if operateType != 0 {
sql += " AND b.operate_type = ?"
sqlParams = append(sqlParams, operateType)
}
if len(skuIDs) > 0 {
sql += " AND b.thing_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
sqlParams = append(sqlParams, skuIDs)
}
if len(storeIDs) > 0 {
sql += " AND b.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &operateEventExt, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db)
}
for _, v := range operateEventExt {
var details []*model.OperateEventDetail
sql := `
SELECT *
FROM operate_event_detail
WHERE access_uuid = ?
`
sqlParams := []interface{}{
v.AccessUUID,
}
err = GetRows(db, &details, sql, sqlParams...)
v.Detail = details
}
return operateEventExt, totalCount, err
}