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.
85 lines
1.8 KiB
85 lines
1.8 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"strings" |
|
|
|
"go-common/app/admin/main/growup/model" |
|
) |
|
|
|
// InsertNotice insert notice |
|
func (s *Service) InsertNotice(c context.Context, title string, typ int, platform int, link string, status int) (err error) { |
|
notice := &model.Notice{ |
|
Title: title, |
|
Type: typ, |
|
Platform: platform, |
|
Link: link, |
|
Status: status, |
|
} |
|
_, err = s.dao.InsertNotice(c, notice) |
|
return |
|
} |
|
|
|
// Notices notices |
|
func (s *Service) Notices(c context.Context, typ int, status int, platform int, from int, limit int) (total int, notices []*model.Notice, err error) { |
|
query := queryStr(typ, status, platform) |
|
total, err = s.dao.NoticeCount(c, query) |
|
if err != nil { |
|
return |
|
} |
|
notices, err = s.dao.Notices(c, query, from, limit) |
|
if notices == nil { |
|
notices = make([]*model.Notice, 0) |
|
} |
|
return |
|
} |
|
|
|
func queryStr(typ int, status int, platform int) (query string) { |
|
if typ != 0 { |
|
query += " AND " |
|
query += fmt.Sprintf("type=%d", typ) |
|
} |
|
if status != 0 { |
|
query += " AND " |
|
query += fmt.Sprintf("status=%d", status) |
|
} |
|
|
|
if platform != 0 { |
|
query += " AND " |
|
query += fmt.Sprintf("platform=%d", platform) |
|
} |
|
query += " AND is_deleted = 0" |
|
return |
|
} |
|
|
|
// UpdateNotice update notice |
|
func (s *Service) UpdateNotice(c context.Context, typ int, platform int, title string, link string, id int64, status int) (err error) { |
|
var kv string |
|
if typ != 0 { |
|
kv += fmt.Sprintf("type=%d,", typ) |
|
} |
|
|
|
if platform != 0 { |
|
kv += fmt.Sprintf("platform=%d,", platform) |
|
} |
|
|
|
if len(title) != 0 { |
|
kv += fmt.Sprintf("title='%s',", title) |
|
} |
|
|
|
if len(link) != 0 { |
|
kv += fmt.Sprintf("link='%s',", link) |
|
} |
|
|
|
if status != 0 { |
|
kv += fmt.Sprintf("status=%d,", status) |
|
} |
|
|
|
if len(kv) == 0 { |
|
return |
|
} |
|
kv = strings.TrimRight(kv, ",") |
|
_, err = s.dao.UpdateNotice(c, kv, id) |
|
return |
|
}
|
|
|