1
This commit is contained in:
272
business/dao/event.go
Normal file
272
business/dao/event.go
Normal file
@@ -0,0 +1,272 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
type OperateEventExt struct {
|
||||
model.OperateEvent
|
||||
Detail []*model.OperateEventDetail `json:"detail"`
|
||||
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, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime time.Time, keyword string, errType, offset, pageSize int) (operateEventExt []*OperateEventExt, totalCount int, err error) {
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name
|
||||
FROM operate_event a
|
||||
`
|
||||
if len(operateTypes) > 0 || len(skuIDs) > 0 || len(storeIDs) > 0 || keyword != "" {
|
||||
sql += " LEFT JOIN operate_event_detail b ON a.access_uuid = b.access_uuid"
|
||||
}
|
||||
sql += `
|
||||
LEFT JOIN user c ON c.user_id = a.user_id
|
||||
WHERE 1=1
|
||||
`
|
||||
sqlParams := []interface{}{}
|
||||
if errType == 1 {
|
||||
sql += " AND a.err_msg = ''"
|
||||
}
|
||||
if errType == -1 {
|
||||
sql += " AND a.err_msg <> ''"
|
||||
}
|
||||
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 len(apiFunctions) > 0 {
|
||||
sql += " AND a.api_function IN (" + GenQuestionMarks(len(apiFunctions)) + ")"
|
||||
sqlParams = append(sqlParams, apiFunctions)
|
||||
}
|
||||
if len(operateTypes) > 0 {
|
||||
sql += " AND b.operate_type IN (" + GenQuestionMarks(len(operateTypes)) + ")"
|
||||
sqlParams = append(sqlParams, operateTypes)
|
||||
}
|
||||
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)
|
||||
}
|
||||
if keyword != "" {
|
||||
sql += " AND ("
|
||||
var apiList []string
|
||||
for k, v := range model.ApiFunctionName {
|
||||
if strings.Contains(v, keyword) {
|
||||
apiList = append(apiList, k)
|
||||
}
|
||||
}
|
||||
if len(apiList) > 0 {
|
||||
sql += "a.api_function IN (" + GenQuestionMarks(len(apiList)) + ") OR"
|
||||
sqlParams = append(sqlParams, apiList)
|
||||
}
|
||||
sql += " a.err_msg LIKE ? OR b.thing_id LIKE ? OR b.store_id LIKE ? OR c.name LIKE ? OR a.user_id LIKE ?)"
|
||||
sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
|
||||
}
|
||||
sql += `
|
||||
ORDER BY a.created_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
txDB, _ := Begin(db)
|
||||
defer Commit(db, txDB)
|
||||
if err = GetRowsTx(txDB, &operateEventExt, sql, sqlParams...); err == nil {
|
||||
totalCount = GetLastTotalRowCountTx(txDB)
|
||||
}
|
||||
var (
|
||||
accessUUidList []string
|
||||
details []*model.OperateEventDetail
|
||||
detailMap = make(map[string][]*model.OperateEventDetail)
|
||||
)
|
||||
for _, v := range operateEventExt {
|
||||
accessUUidList = append(accessUUidList, v.AccessUUID)
|
||||
}
|
||||
if len(accessUUidList) == 0 {
|
||||
return operateEventExt, totalCount, err
|
||||
}
|
||||
sql2 := `
|
||||
SELECT *
|
||||
FROM operate_event_detail
|
||||
WHERE access_uuid IN (` + GenQuestionMarks(len(accessUUidList)) + `)
|
||||
`
|
||||
sqlParams2 := []interface{}{accessUUidList}
|
||||
err = GetRows(db, &details, sql2, sqlParams2...)
|
||||
for _, v := range details {
|
||||
detailMap[v.AccessUUID] = append(detailMap[v.AccessUUID], v)
|
||||
}
|
||||
for _, v := range operateEventExt {
|
||||
if detailMap[v.AccessUUID] != nil {
|
||||
v.Detail = detailMap[v.AccessUUID]
|
||||
}
|
||||
}
|
||||
return operateEventExt, totalCount, err
|
||||
}
|
||||
|
||||
type GetMessageGroupsResult struct {
|
||||
model.MessageGroup
|
||||
Avatar string `json:"avatar"`
|
||||
LastMessageType int `json:"lastMessageType"`
|
||||
LastContent string `json:"lastContent"`
|
||||
LastTime time.Time `json:"lastTime"`
|
||||
LastUserName string `json:"lastUserName"`
|
||||
UserName string `json:"userName"`
|
||||
UnReadMessageCount int `json:"unReadMessageCount"`
|
||||
MessageGroupMembers []*GetMessageGroupsMemberResult `json:"messageGroupMembers"`
|
||||
}
|
||||
|
||||
type GetMessageGroupsMemberResult struct {
|
||||
model.User
|
||||
model.MessageGroupMember
|
||||
}
|
||||
|
||||
func GetMessageGroups(db *DaoDB, userID string, groupID, groupType int, isMember bool, userID2 string) (messageGroupsResult []*GetMessageGroupsResult, err error) {
|
||||
sql := `
|
||||
SELECT a.*, b.name user_name, b.avatar
|
||||
FROM message_group a
|
||||
LEFT JOIN user b ON b.user_id = a.user_id
|
||||
WHERE a.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{utils.DefaultTimeValue}
|
||||
if userID != "" {
|
||||
sql += " AND a.user_id = ?"
|
||||
sqlParams = append(sqlParams, userID)
|
||||
}
|
||||
if groupType != 0 {
|
||||
sql += " AND a.type = ?"
|
||||
sqlParams = append(sqlParams, groupType)
|
||||
}
|
||||
if groupID != 0 {
|
||||
sql += " AND a.group_id LIKE ?"
|
||||
sqlParams = append(sqlParams, utils.Int2Str(groupID)+"%")
|
||||
}
|
||||
if err = GetRows(db, &messageGroupsResult, sql, sqlParams); err == nil {
|
||||
if isMember {
|
||||
for _, v := range messageGroupsResult {
|
||||
var messageGroupMembers []*GetMessageGroupsMemberResult
|
||||
sql2 := `
|
||||
SELECT a.*, b.*
|
||||
FROM message_group_member a
|
||||
LEFT JOIN user b ON b.user_id = a.member_user_id
|
||||
WHERE a.group_id = ?
|
||||
AND a.deleted_at = ?
|
||||
`
|
||||
sqlParams2 := []interface{}{v.GroupID, utils.DefaultTimeValue}
|
||||
if userID2 != "" {
|
||||
sql2 += ` AND member_user_id = ?`
|
||||
sqlParams2 = append(sqlParams2, userID2)
|
||||
}
|
||||
if err = GetRows(db, &messageGroupMembers, sql2, sqlParams2); err == nil {
|
||||
v.MessageGroupMembers = messageGroupMembers
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return messageGroupsResult, err
|
||||
}
|
||||
|
||||
func GetMessageGroupMembers(db *DaoDB, groupID, groupType int, memberUserID string) (messageGroupMembers []*model.MessageGroupMember, err error) {
|
||||
sqlParams := []interface{}{}
|
||||
sql := `
|
||||
SELECT a.*
|
||||
FROM message_group_member a
|
||||
`
|
||||
if groupType != 0 {
|
||||
sql += ` JOIN message_group b ON b.group_id = a.group_id AND b.type = ? AND b.deleted_at = ?`
|
||||
sqlParams = append(sqlParams, groupType, utils.DefaultTimeValue)
|
||||
}
|
||||
sql += `
|
||||
WHERE a.deleted_at = ?
|
||||
`
|
||||
sqlParams = append(sqlParams, utils.DefaultTimeValue)
|
||||
if groupID != 0 {
|
||||
sql += " AND a.group_id = ?"
|
||||
sqlParams = append(sqlParams, groupID)
|
||||
}
|
||||
if memberUserID != "" {
|
||||
sql += " AND a.member_user_id = ?"
|
||||
sqlParams = append(sqlParams, memberUserID)
|
||||
}
|
||||
err = GetRows(db, &messageGroupMembers, sql, sqlParams)
|
||||
return messageGroupMembers, err
|
||||
}
|
||||
|
||||
//得到某个用户所在所有群组
|
||||
func GetUserMessageGroups(db *DaoDB, userID string) (messageGroup []*model.MessageGroup, err error) {
|
||||
sql := `
|
||||
SELECT group_id
|
||||
FROM message_group
|
||||
WHERE deleted_at = ? AND user_id = ?
|
||||
UNION
|
||||
SELECT group_id
|
||||
FROM message_group_member
|
||||
WHERE deleted_at = ? AND member_user_id = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
utils.DefaultTimeValue, userID,
|
||||
utils.DefaultTimeValue, userID,
|
||||
}
|
||||
err = GetRows(db, &messageGroup, sql, sqlParams)
|
||||
messageGroup = append(messageGroup, &model.MessageGroup{
|
||||
GroupID: model.SysGroupID,
|
||||
})
|
||||
return messageGroup, err
|
||||
}
|
||||
|
||||
func GetMessageGroupRead(db *DaoDB, userID string, groupID int) (messageGroupReads []*model.MessageGroupRead, err error) {
|
||||
sql := `
|
||||
SELECT *
|
||||
FROM message_group_read a
|
||||
WHERE 1 = 1
|
||||
`
|
||||
sqlParams := []interface{}{}
|
||||
if userID != "" {
|
||||
sql += ` AND a.user_id = ?`
|
||||
sqlParams = append(sqlParams, userID)
|
||||
}
|
||||
if groupID != 0 {
|
||||
sql += ` AND a.group_id = ?`
|
||||
sqlParams = append(sqlParams, groupID)
|
||||
}
|
||||
err = GetRows(db, &messageGroupReads, sql, sqlParams...)
|
||||
return messageGroupReads, err
|
||||
}
|
||||
Reference in New Issue
Block a user