|
@@ -0,0 +1,213 @@
|
|
|
+package models
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta_gn/eta_api/global"
|
|
|
+ "eta_gn/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+)
|
|
|
+
|
|
|
+const (
|
|
|
+ ReportMessageTypeWriteNotice = 1 // 撰写通知
|
|
|
+ ReportMessageTypeApprovePass = 2 // 审批通过
|
|
|
+ ReportMessageTypeApproveRefuse = 3 // 审批驳回
|
|
|
+)
|
|
|
+
|
|
|
+type ReportMessage struct {
|
|
|
+ Id int `gorm:"primaryKey;column:id;type:int(10) unsigned;not null"`
|
|
|
+ SendUserId int `gorm:"column:send_user_id" description:"发送人ID"`
|
|
|
+ ReceiveUserId int `gorm:"column:receive_user_id" description:"接受者ID"`
|
|
|
+ Content string `gorm:"column:content" description:"消息内容"`
|
|
|
+ Remark string `gorm:"column:remark" description:"备注信息"`
|
|
|
+ ExtraContent string `gorm:"column:extra_content" description:"额外信息-JSON"`
|
|
|
+ ReportType int `gorm:"column:report_type" description:"报告类型:1-研报;2-PPT"`
|
|
|
+ ReportId int `gorm:"column:report_id" description:"报告/PPT-ID"`
|
|
|
+ MessageType int `gorm:"column:message_type" description:"消息类型:1-撰写通知;2-审批通过;3-审批驳回"`
|
|
|
+ IsRead int `gorm:"column:is_read" description:"是否已读:0-未读;1-已读"`
|
|
|
+ CreateTime time.Time `gorm:"column:create_time" description:"消息时间"`
|
|
|
+ ModifyTime time.Time `gorm:"column:modify_time" description:"更新时间"`
|
|
|
+}
|
|
|
+
|
|
|
+var ReportMessageCols = struct {
|
|
|
+ Id string
|
|
|
+ SendUserId string
|
|
|
+ ReceiveUserId string
|
|
|
+ Content string
|
|
|
+ Remark string
|
|
|
+ ExtraContent string
|
|
|
+ ReportType string
|
|
|
+ ReportId string
|
|
|
+ MessageType string
|
|
|
+ IsRead string
|
|
|
+ CreateTime string
|
|
|
+}{
|
|
|
+ Id: "id",
|
|
|
+ SendUserId: "send_user_id",
|
|
|
+ ReceiveUserId: "receive_user_id",
|
|
|
+ Content: "content",
|
|
|
+ Remark: "remark",
|
|
|
+ ExtraContent: "extra_content",
|
|
|
+ ReportType: "report_type",
|
|
|
+ ReportId: "report_id",
|
|
|
+ MessageType: "message_type",
|
|
|
+ IsRead: "is_read",
|
|
|
+ CreateTime: "create_time",
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) TableName() string {
|
|
|
+ return "report_message"
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) PrimaryId() string {
|
|
|
+ return ReportMessageCols.Id
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) Create() (err error) {
|
|
|
+ err = global.DmSQL["rddp"].Create(m).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) CreateMulti(items []*ReportMessage) (err error) {
|
|
|
+ if len(items) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = global.DmSQL["rddp"].CreateInBatches(items, utils.MultiAddNum).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) Update(cols []string) (err error) {
|
|
|
+ err = global.DmSQL["rddp"].Select(cols).Updates(m).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) Del() (err error) {
|
|
|
+ sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
|
|
|
+ err = global.DmSQL["rddp"].Exec(sql, m.Id).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) MultiDel(menuIds []int) (err error) {
|
|
|
+ if len(menuIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
|
|
|
+ err = global.DmSQL["rddp"].Exec(sql, menuIds).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) GetItemById(id int) (item *ReportMessage, err error) {
|
|
|
+ sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
|
|
|
+ err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *ReportMessage, err error) {
|
|
|
+ order := ``
|
|
|
+ if orderRule != "" {
|
|
|
+ order = ` ORDER BY ` + orderRule
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
|
|
|
+ err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
|
|
|
+ sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
|
|
|
+ err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ReportMessage, err error) {
|
|
|
+ fields := strings.Join(fieldArr, ",")
|
|
|
+ if len(fieldArr) == 0 {
|
|
|
+ fields = `*`
|
|
|
+ }
|
|
|
+ order := `ORDER BY create_time DESC`
|
|
|
+ if orderRule != "" {
|
|
|
+ order = ` ORDER BY ` + orderRule
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
|
|
|
+ err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *ReportMessage) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ReportMessage, err error) {
|
|
|
+ fields := strings.Join(fieldArr, ",")
|
|
|
+ if len(fieldArr) == 0 {
|
|
|
+ fields = `*`
|
|
|
+ }
|
|
|
+ order := `ORDER BY create_time DESC`
|
|
|
+ if orderRule != "" {
|
|
|
+ order = ` ORDER BY ` + orderRule
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
|
|
|
+ pars = append(pars, startSize)
|
|
|
+ pars = append(pars, pageSize)
|
|
|
+ err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// ReportMessageItem 报告消息
|
|
|
+type ReportMessageItem struct {
|
|
|
+ Id int
|
|
|
+ SendUserId int `description:"发送人ID"`
|
|
|
+ ReceiveUserId int `description:"接收者ID"`
|
|
|
+ Content string `description:"消息内容"`
|
|
|
+ Remark string `description:"备注信息"`
|
|
|
+ ReportType int `description:"报告类型:1-研报;2-PPT"`
|
|
|
+ ReportId int `description:"报告/PPT-ID"`
|
|
|
+ ReportState int `description:"报告当前状态"`
|
|
|
+ MessageType int `description:"消息类型:1-撰写通知;2-审批通过;3-审批驳回"`
|
|
|
+ IsRead int `description:"是否已读:0-未读;1-已读"`
|
|
|
+ CreateTime string `description:"消息时间"`
|
|
|
+ ApproveMsg *ReportMessageApproveItem `description:"审批信息"`
|
|
|
+}
|
|
|
+
|
|
|
+// ReportMessageApproveItem 报告消息审批内容
|
|
|
+type ReportMessageApproveItem struct {
|
|
|
+ Title string `description:"报告标题"`
|
|
|
+ ApproveType int `description:"审批类型:1-通过;2-驳回"`
|
|
|
+ ApproveUserId int `description:"审批人ID"`
|
|
|
+ ApproveUserName string `description:"审批人"`
|
|
|
+ ApproveRemark string `description:"审批备注(驳回意见)"`
|
|
|
+}
|
|
|
+
|
|
|
+// FormatReportMessage2Item 格式化报告消息
|
|
|
+func FormatReportMessage2Item(origin *ReportMessage) (item *ReportMessageItem) {
|
|
|
+ item = new(ReportMessageItem)
|
|
|
+ if origin == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ item.Id = origin.Id
|
|
|
+ item.SendUserId = origin.SendUserId
|
|
|
+ item.ReceiveUserId = origin.ReceiveUserId
|
|
|
+ item.Content = origin.Content
|
|
|
+ item.Remark = origin.Remark
|
|
|
+ item.ReportType = origin.ReportType
|
|
|
+ item.ReportId = origin.ReportId
|
|
|
+ item.MessageType = origin.MessageType
|
|
|
+ item.IsRead = origin.IsRead
|
|
|
+ item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// ReportMessageListReq 消息列表请求参数
|
|
|
+type ReportMessageListReq struct {
|
|
|
+ PageSize int `form:"PageSize"`
|
|
|
+ CurrentIndex int `form:"CurrentIndex"`
|
|
|
+}
|
|
|
+
|
|
|
+// ReportMessageListResp 消息列表响应体
|
|
|
+type ReportMessageListResp struct {
|
|
|
+ List []*ReportMessageItem
|
|
|
+ Paging *paging.PagingItem `description:"分页数据"`
|
|
|
+ UnreadTotal int `description:"消息未读数"`
|
|
|
+}
|
|
|
+
|
|
|
+// ReportMessageReadReq 消息已读请求体
|
|
|
+type ReportMessageReadReq struct {
|
|
|
+ MessageId int `description:"消息ID"`
|
|
|
+}
|