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 }