user_msg.go
3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package models
import (
"fmt"
"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/mybeego"
"time"
"github.com/astaxie/beego/orm"
)
type UserMsg struct {
Id int64 `orm:"column(id);pk" description:"消息表id"`
CompanyId int64 `orm:"column(company_id)" description:"公司编号"`
ReceiveUserId int64 `orm:"column(receive_user_id)" description:"接收用户id"`
MsgType int `orm:"column(msg_type)" description:"消息类型 1.公司公告 2.表彰通知 4.互动消息 8.机会审核"`
Message string `orm:"column(message)" description:"消息内容"`
SourceId int64 `orm:"column(source_id)" description:"来源id (机会编号 /评论编号)"`
SourceType int `orm:"column(source_type)"`
IsPublic int8 `orm:"column(is_public)" description:"1:公开 0:不公开"`
IsRead int8 `orm:"column(is_read)" description:"1:已读 0:未读"`
CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now" description:"创建时间"`
}
func (t *UserMsg) TableName() string {
return "user_msg"
}
func init() {
orm.RegisterModel(new(UserMsg))
}
// AddUserMsg insert a new UserMsg into database and returns
// last inserted Id on success.
func AddUserMsg(m *UserMsg) (id int64, err error) {
o := orm.NewOrm()
id, err = o.Insert(m)
return
}
// GetUserMsgById retrieves UserMsg by Id. Returns error if
// Id doesn't exist
func GetUserMsgById(id int64) (v *UserMsg, err error) {
o := orm.NewOrm()
v = &UserMsg{Id: id}
if err = o.Read(v); err == nil {
return v, nil
}
return nil, err
}
// UpdateUserMsg updates UserMsg by Id and returns error if
// the record to be updated doesn't exist
func UpdateUserMsgById(m *UserMsg) (err error) {
o := orm.NewOrm()
v := UserMsg{Id: m.Id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Update(m); err == nil {
fmt.Println("Number of records updated in database:", num)
}
}
return
}
// DeleteUserMsg deletes UserMsg by Id and returns error if
// the record to be deleted doesn't exist
func DeleteUserMsg(id int64) (err error) {
o := orm.NewOrm()
v := UserMsg{Id: id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Delete(&UserMsg{Id: id}); err == nil {
fmt.Println("Number of records deleted in database:", num)
}
}
return
}
func GetUserMsgTotals(userId int64, companyId int64, msgType int, v interface{}) (err error) {
o := orm.NewOrm()
sql := `select COUNT(*) as total,msg_type from user_msg
where (msg_type & ?)>0 and receive_user_id = ? and is_public=1 and is_read=0 and company_id=?
GROUP BY msg_type`
if _, err = o.Raw(sql, msgType, userId, companyId).QueryRows(v); err == nil {
return
}
return
}
func UpdateUserMsgSetRead(userId int64, companyId int64, msgType int, msgId int64) (err error) {
o := orm.NewOrm()
sql := `update user_msg set is_read = 1
where receive_user_id = ? and company_id=? and is_public=1 `
if msgType > 0 {
sql += fmt.Sprintf(" and (msg_type & %v)>0", msgType)
}
if msgId > 0 {
sql += fmt.Sprintf(" and id=%v", msgId)
}
if _, err = o.Raw(sql, userId, companyId).Exec(); err != nil {
return
}
return
}
func GetUserMsgs(userId, companyId int64, msgType int, sourceType int, lastId int64, pageSize int) (v []*UserMsg, total int, err error) {
sql := mybeego.NewSqlExutor().Table("user_msg").Order("create_at desc")
if lastId > 0 {
sql.Where(fmt.Sprintf("id>%d", lastId))
}
if msgType > 0 {
sql.Where(fmt.Sprintf("msg_type=%d", msgType))
}
sql.Where(fmt.Sprintf("receive_user_id=%d", userId))
sql.Where(fmt.Sprintf("company_id=%d", companyId))
if sourceType > 0 {
sql.Where(fmt.Sprintf("source_type=%d", sourceType))
}
if pageSize > 0 {
sql.Limit(0, pageSize)
}
if total, err = sql.Querys(&v); err == nil {
return
}
return
}