Commit ee4ea046 by chenxianqi

update

parent ee74ac5c
...@@ -30,6 +30,16 @@ func (c *MessageController) Finish() {} ...@@ -30,6 +30,16 @@ func (c *MessageController) Finish() {}
// List get messages // List get messages
func (c *MessageController) List() { func (c *MessageController) List() {
messageList(c, false)
}
// HistoryList get History messages
func (c *MessageController) HistoryList() {
messageList(c, true)
}
// messageList get messages
func messageList(c *MessageController, isHistory bool) {
messagePaginationDto := models.MessagePaginationDto{} messagePaginationDto := models.MessagePaginationDto{}
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &messagePaginationDto); err != nil { if err := json.Unmarshal(c.Ctx.Input.RequestBody, &messagePaginationDto); err != nil {
...@@ -57,7 +67,13 @@ func (c *MessageController) List() { ...@@ -57,7 +67,13 @@ func (c *MessageController) List() {
} }
// query messages // query messages
returnMessagePaginationDto, err := c.MessageRepository.GetAdminMessages(messagePaginationDto) var returnMessagePaginationDto *models.MessagePaginationDto
var err error
if !isHistory {
returnMessagePaginationDto, err = c.MessageRepository.GetAdminMessages(messagePaginationDto)
} else {
returnMessagePaginationDto, err = c.MessageRepository.GetAdminHistoryMessages(messagePaginationDto)
}
if err != nil { if err != nil {
c.JSON(configs.ResponseFail, "fail", err.Error()) c.JSON(configs.ResponseFail, "fail", err.Error())
} }
......
...@@ -6,7 +6,7 @@ type Contact struct { ...@@ -6,7 +6,7 @@ type Contact struct {
FromAccount int64 `orm:"type(bigint);column(from_account)" json:"from_account"` // 接收者Account FromAccount int64 `orm:"type(bigint);column(from_account)" json:"from_account"` // 接收者Account
ToAccount int64 `orm:"type(bigint);column(to_account)" json:"to_account"` // 发送者Account ToAccount int64 `orm:"type(bigint);column(to_account)" json:"to_account"` // 发送者Account
LastAccount int64 `orm:"type(bigint);column(last_account)" json:"last_account"` // 最后一条消息者Account LastAccount int64 `orm:"type(bigint);column(last_account)" json:"last_account"` // 最后一条消息者Account
IsSessionEnd int `orm:"default(0),column(is_session_end)" json:"is_session_end"` // 1 已结束对话 0 未结束对话 IsSessionEnd int `orm:"default(0);column(is_session_end)" json:"is_session_end"` // 1 已结束对话 0 未结束对话
LastMessage string `orm:"null;type(text);column(last_message)" json:"last_message"` // 最后一条消息内容 LastMessage string `orm:"null;type(text);column(last_message)" json:"last_message"` // 最后一条消息内容
Delete int `orm:"default(0);column(delete)" json:"delete"` // 1 已删除 0 未删除 Delete int `orm:"default(0);column(delete)" json:"delete"` // 1 已删除 0 未删除
LastMessageType string `orm:"null;type(text);column(last_message_type)" json:"last_message_type"` // 最后一条消息类型 LastMessageType string `orm:"null;type(text);column(last_message_type)" json:"last_message_type"` // 最后一条消息类型
......
...@@ -7,7 +7,7 @@ type KnowledgeBase struct { ...@@ -7,7 +7,7 @@ type KnowledgeBase struct {
Title string `orm:"unique;type(char);column(title)" json:"title"` // 标题 Title string `orm:"unique;type(char);column(title)" json:"title"` // 标题
SubTitle string `orm:"null;type(content);column(sub_title)" json:"sub_title"` // 子标题 SubTitle string `orm:"null;type(content);column(sub_title)" json:"sub_title"` // 子标题
Content string `orm:"null;type(text);column(content)" json:"content"` // 内容 Content string `orm:"null;type(text);column(content)" json:"content"` // 内容
Platform int64 `orm:"default(1),type(bigint);column(platform)" json:"platform"` // 0是匹配所有,其它 Platform int64 `orm:"default(1);type(bigint);column(platform)" json:"platform"` // 0是匹配所有,其它
UpdateAt int64 `orm:"type(bigint);column(update_at)" json:"update_at"` // 更新时间 UpdateAt int64 `orm:"type(bigint);column(update_at)" json:"update_at"` // 更新时间
CreateAt int64 `orm:"type(bigint);column(create_at)" json:"create_at"` // 创建时间 CreateAt int64 `orm:"type(bigint);column(create_at)" json:"create_at"` // 创建时间
} }
...@@ -2,19 +2,19 @@ package models ...@@ -2,19 +2,19 @@ package models
// WorkOrder model // WorkOrder model
type WorkOrder struct { type WorkOrder struct {
ID int64 `orm:"auto;pk;type(bigint);column(id)" json:"id"` // ID ID int64 `orm:"auto;pk;type(bigint);column(id)" json:"id"` // ID
UID int64 `orm:"type(bigint);column(uid)" json:"uid"` // 用户ID UID int64 `orm:"type(bigint);column(uid)" json:"uid"` // 用户ID
TID int64 `orm:"type(bigint);column(tid))" json:"tid"` // 工单类型ID TID int64 `orm:"type(bigint);column(tid)" json:"tid"` // 工单类型ID
Title string `orm:"column(title)" json:"title"` // 工单标题 Title string `orm:"column(title)" json:"title"` // 工单标题
Content string `orm:"type(text);column(content)" json:"content"` // 内容 Content string `orm:"type(text);column(content)" json:"content"` // 内容
Phone string `orm:"type(char);null;column(phone)" json:"phone"` // 用户联系电话 Phone string `orm:"type(char);null;column(phone)" json:"phone"` // 用户联系电话
Email string `orm:"type(varchar);null;column(email)" json:"email"` // 邮箱(可用于客服回复后发提醒邮件给客户) Email string `orm:"type(varchar);null;column(email)" json:"email"` // 邮箱(可用于客服回复后发提醒邮件给客户)
Status int `orm:"default(0);column(status)" json:"status"` // 当前状态 ( 0=待处理 | 1=客服已回复 | 2=客户已回复 | 3=已结单 ) Status int `orm:"default(0);column(status)" json:"status"` // 当前状态 ( 0=待处理 | 1=客服已回复 | 2=客户已回复 | 3=已结单 )
LastReply int64 `orm:"type(bigint);column(last_reply))" json:"last_reply"` // 最后回复的客服ID LastReply int64 `orm:"type(bigint);column(last_reply)" json:"last_reply"` // 最后回复的客服ID
CID int64 `orm:"type(bigint);column(cid))" json:"cid"` // 结单客服ID CID int64 `orm:"type(bigint);column(cid)" json:"cid"` // 结单客服ID
CloseAt int64 `orm:"type(bigint);column(close_at)" json:"close_at"` // 结单时间 CloseAt int64 `orm:"type(bigint);column(close_at)" json:"close_at"` // 结单时间
Remark string `orm:"column(remark)" json:"remark"` // 结单原因 Remark string `orm:"column(remark)" json:"remark"` // 结单原因
UpdateAt int64 `orm:"type(bigint);column(update_at)" json:"update_at"` // 更新时间 UpdateAt int64 `orm:"type(bigint);column(update_at)" json:"update_at"` // 更新时间
Delete int `orm:"default(0);column(delete)" json:"delete"` // 是否已删除 0 未删除, 1已删除 (未结单状态不能删除) Delete int `orm:"default(0);column(delete)" json:"delete"` // 是否已删除 0 未删除, 1已删除 (未结单状态不能删除)
CreateAt int64 `orm:"type(bigint);column(create_at)" json:"create_at"` // 提交时间 CreateAt int64 `orm:"type(bigint);column(create_at)" json:"create_at"` // 提交时间
} }
...@@ -3,8 +3,8 @@ package models ...@@ -3,8 +3,8 @@ package models
// WorkOrderComment model // WorkOrderComment model
type WorkOrderComment struct { type WorkOrderComment struct {
ID int64 `orm:"auto;pk;type(bigint);column(id)" json:"id"` // ID ID int64 `orm:"auto;pk;type(bigint);column(id)" json:"id"` // ID
UID int64 `orm:"type(bigint);column(uid))" json:"uid"` // 用户ID UID int64 `orm:"type(bigint);column(uid)" json:"uid"` // 用户ID
AID int64 `orm:"type(bigint);column(aid))" json:"aid"` // 客服ID AID int64 `orm:"type(bigint);column(aid)" json:"aid"` // 客服ID
WID int64 `orm:"type(bigint);column(wid)" json:"wid"` // 关联(WorkOrder ID) WID int64 `orm:"type(bigint);column(wid)" json:"wid"` // 关联(WorkOrder ID)
Content string `orm:"type(text);null;column(content)" json:"content"` // 内容 Content string `orm:"type(text);null;column(content)" json:"content"` // 内容
CreateAt int64 `orm:"type(bigint);column(create_at)" json:"create_at"` // 提交时间 CreateAt int64 `orm:"type(bigint);column(create_at)" json:"create_at"` // 提交时间
......
...@@ -75,6 +75,7 @@ func routers(prefix string) *beego.Namespace { ...@@ -75,6 +75,7 @@ func routers(prefix string) *beego.Namespace {
beego.NSNamespace("/message", beego.NSNamespace("/message",
beego.NSBefore(filters.FilterToken), beego.NSBefore(filters.FilterToken),
beego.NSRouter("/list", &controllers.MessageController{}, "post:List"), beego.NSRouter("/list", &controllers.MessageController{}, "post:List"),
beego.NSRouter("/history", &controllers.MessageController{}, "post:HistoryList"),
beego.NSRouter("/remove", &controllers.MessageController{}, "post:Remove"), beego.NSRouter("/remove", &controllers.MessageController{}, "post:Remove"),
), ),
......
...@@ -12,6 +12,7 @@ import ( ...@@ -12,6 +12,7 @@ import (
// MessageRepositoryInterface interface // MessageRepositoryInterface interface
type MessageRepositoryInterface interface { type MessageRepositoryInterface interface {
GetAdminMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error) GetAdminMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error)
GetAdminHistoryMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error)
GetUserMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error) GetUserMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error)
Delete(removeRequestDto models.RemoveMessageRequestDto) (int64, error) Delete(removeRequestDto models.RemoveMessageRequestDto) (int64, error)
Add(message *models.Message) (int64, error) Add(message *models.Message) (int64, error)
...@@ -153,9 +154,8 @@ func (r *MessageRepository) GetUserMessages(messagePaginationDto models.MessageP ...@@ -153,9 +154,8 @@ func (r *MessageRepository) GetUserMessages(messagePaginationDto models.MessageP
return &messagePaginationDto, nil return &messagePaginationDto, nil
} }
// GetAdminMessages get admin messages // getAdminMessages
func (r *MessageRepository) GetAdminMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error) { func getAdminMessages(r *MessageRepository, table string, messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error) {
var err error var err error
var msgCount int64 var msgCount int64
var messages []*models.Message var messages []*models.Message
...@@ -174,21 +174,25 @@ func (r *MessageRepository) GetAdminMessages(messagePaginationDto models.Message ...@@ -174,21 +174,25 @@ func (r *MessageRepository) GetAdminMessages(messagePaginationDto models.Message
accounts = append(accounts, robot.ID) accounts = append(accounts, robot.ID)
inExp = inExp + ",?" inExp = inExp + ",?"
} }
type MessageCount struct {
msgCount, err = r.q.Filter("timestamp__lt", messagePaginationDto.Timestamp).Filter("to_account__in", accounts).Filter("from_account__in", accounts).Count() Count int64
}
var messageCount MessageCount
err = r.o.Raw("SELECT COUNT(*) AS `count` FROM `"+table+"` WHERE `timestamp` < ? AND to_account IN("+inExp+") AND from_account IN("+inExp+")", messagePaginationDto.Timestamp, accounts, accounts).QueryRow(&messageCount)
if err != nil { if err != nil {
logs.Warn("GetMessages get one service message list1------------", err) logs.Warn("GetMessages get one service message list1------------", err)
} }
msgCount = messageCount.Count
// Paging // Paging
end := msgCount end := msgCount
start := int(msgCount) - messagePaginationDto.PageSize start := int(messageCount.Count) - messagePaginationDto.PageSize
if start <= 0 { if start <= 0 {
start = 0 start = 0
} }
if msgCount > 0 { if msgCount > 0 {
_, err = r.o.Raw("SELECT * FROM `message` WHERE to_account IN ("+inExp+") AND from_account IN ("+inExp+") AND `timestamp` < ? ORDER BY `sequence` ASC LIMIT ?,?", accounts, accounts, messagePaginationDto.Timestamp, start, end).QueryRows(&messages) _, err = r.o.Raw("SELECT * FROM `"+table+"` WHERE to_account IN ("+inExp+") AND from_account IN ("+inExp+") AND `timestamp` < ? ORDER BY `sequence` ASC LIMIT ?,?", accounts, accounts, messagePaginationDto.Timestamp, start, end).QueryRows(&messages)
if err != nil { if err != nil {
logs.Warn("GetMessages get one service message list2------------", err) logs.Warn("GetMessages get one service message list2------------", err)
return nil, err return nil, err
...@@ -198,12 +202,23 @@ func (r *MessageRepository) GetAdminMessages(messagePaginationDto models.Message ...@@ -198,12 +202,23 @@ func (r *MessageRepository) GetAdminMessages(messagePaginationDto models.Message
logs.Warn("GetMessages get one service message list3------------", err) logs.Warn("GetMessages get one service message list3------------", err)
return nil, err return nil, err
} }
total, _ := r.q.Filter("to_account__in", accounts).Filter("from_account__in", accounts).Count() var messageCount1 MessageCount
r.o.Raw("SELECT COUNT(*) AS `count` FROM `"+table+"` WHERE to_account IN("+inExp+") AND from_account IN("+inExp+")", accounts, accounts).QueryRow(&messageCount1)
messagePaginationDto.List = messages messagePaginationDto.List = messages
messagePaginationDto.Total = total messagePaginationDto.Total = messageCount1.Count
} else { } else {
messagePaginationDto.List = []models.Message{} messagePaginationDto.List = []models.Message{}
messagePaginationDto.Total = 0 messagePaginationDto.Total = 0
} }
return &messagePaginationDto, nil return &messagePaginationDto, nil
} }
// GetAdminHistoryMessages get admin messages history
func (r *MessageRepository) GetAdminHistoryMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error) {
return getAdminMessages(r, "message_history", messagePaginationDto)
}
// GetAdminMessages get admin messages
func (r *MessageRepository) GetAdminMessages(messagePaginationDto models.MessagePaginationDto) (*models.MessagePaginationDto, error) {
return getAdminMessages(r, "message", messagePaginationDto)
}
...@@ -28,7 +28,7 @@ func GetWorkOrderCommentRepositoryInstance() *WorkOrderCommentRepository { ...@@ -28,7 +28,7 @@ func GetWorkOrderCommentRepositoryInstance() *WorkOrderCommentRepository {
// GetWorkOrderComments get WorkOrderComments // GetWorkOrderComments get WorkOrderComments
func (r *WorkOrderCommentRepository) GetWorkOrderComments(wid int64) ([]models.WorkOrderCommentDto, error) { func (r *WorkOrderCommentRepository) GetWorkOrderComments(wid int64) ([]models.WorkOrderCommentDto, error) {
var workOrderComments []models.WorkOrderCommentDto var workOrderComments []models.WorkOrderCommentDto
_, err := r.o.Raw("SELECT * FROM (SELECT w.*,w.id AS i_d,w.a_i_d AS `aid`,w.wid AS `w_i_d`,u.nickname AS u_nickname,a.nickname AS a_nickname,a.avatar AS a_avatar,u.avatar AS u_avatar FROM work_order_comment w LEFT JOIN (SELECT * FROM admin) a ON w.a_i_d = a.id LEFT JOIN (SELECT * FROM `user`) u ON w.u_i_d = u.id AND w.wid = ? ORDER BY w.id ASC) b WHERE wid = ?", wid, wid).QueryRows(&workOrderComments) _, err := r.o.Raw("SELECT * FROM (SELECT w.*,w.id AS i_d,u.nickname AS u_nickname,a.nickname AS a_nickname,a.avatar AS a_avatar,u.avatar AS u_avatar FROM work_order_comment w LEFT JOIN (SELECT * FROM admin) a ON w.aid = a.id LEFT JOIN (SELECT * FROM `user`) u ON w.uid = u.id AND w.wid = ? ORDER BY w.id ASC) b WHERE wid = ?", wid, wid).QueryRows(&workOrderComments)
if err != nil { if err != nil {
logs.Warn("GetWorkOrderComments get WorkOrderComments-----------", err) logs.Warn("GetWorkOrderComments get WorkOrderComments-----------", err)
} }
......
...@@ -78,7 +78,7 @@ func (r *WorkOrderRepository) GetUserWorkOrders(uid int64) ([]models.WorkOrder, ...@@ -78,7 +78,7 @@ func (r *WorkOrderRepository) GetUserWorkOrders(uid int64) ([]models.WorkOrder,
// GetCounts get WorkOrder counts // GetCounts get WorkOrder counts
func (r *WorkOrderRepository) GetCounts() (models.WorkOrderCountDto, error) { func (r *WorkOrderRepository) GetCounts() (models.WorkOrderCountDto, error) {
var workOrderCouns models.WorkOrderCountDto var workOrderCouns models.WorkOrderCountDto
err := r.o.Raw("SELECT * FROM ((SELECT count(*) AS status0 FROM work_order WHERE `status` = 0) w1,(SELECT count(*) AS status2 FROM work_order WHERE `status` = 2) w2,(SELECT count(*) AS status3 FROM work_order WHERE `status` = 3) w3,(SELECT count(*) AS delete_count FROM work_order WHERE `delete` = 1) w4)").QueryRow(&workOrderCouns) err := r.o.Raw("SELECT * FROM ((SELECT count(*) AS status0 FROM work_order WHERE `status` = 0 AND `delete` = 0) w1,(SELECT count(*) AS status2 FROM work_order WHERE `status` = 2 AND `delete` = 0) w2,(SELECT count(*) AS status3 FROM work_order WHERE `status` = 3 AND `delete` = 0) w3,(SELECT count(*) AS delete_count FROM work_order WHERE `delete` = 1) w4)").QueryRow(&workOrderCouns)
if err != nil { if err != nil {
logs.Warn(" GetCounts get WorkOrder count", err) logs.Warn(" GetCounts get WorkOrder count", err)
} }
...@@ -88,7 +88,7 @@ func (r *WorkOrderRepository) GetCounts() (models.WorkOrderCountDto, error) { ...@@ -88,7 +88,7 @@ func (r *WorkOrderRepository) GetCounts() (models.WorkOrderCountDto, error) {
// GetWorkOrder get WorkOrder // GetWorkOrder get WorkOrder
func (r *WorkOrderRepository) GetWorkOrder(id int64) (models.WorkOrderDto, error) { func (r *WorkOrderRepository) GetWorkOrder(id int64) (models.WorkOrderDto, error) {
var workOrder models.WorkOrderDto var workOrder models.WorkOrderDto
err := r.o.Raw("SELECT * FROM (SELECT w.*,w.id AS i_d, w.uid AS u_i_d,u.nickname AS u_nickname FROM work_order w LEFT JOIN (SELECT * FROM `user`) u ON w.uid = u.id) w WHERE w.id = ?", id).QueryRow(&workOrder) err := r.o.Raw("SELECT * FROM (SELECT w.*,w.id AS i_d, w.uid AS u_i_d, w.tid AS t_i_d, w.cid AS c_i_d,u.nickname AS u_nickname FROM work_order w LEFT JOIN (SELECT * FROM `user`) u ON w.uid = u.id) w WHERE w.id = ?", id).QueryRow(&workOrder)
if err != nil { if err != nil {
logs.Warn("GetWorkOrder get WorkOrder------------", err) logs.Warn("GetWorkOrder get WorkOrder------------", err)
} }
...@@ -103,7 +103,7 @@ func (r *WorkOrderRepository) GetWorkOrders(request models.WorkOrderPaginationDt ...@@ -103,7 +103,7 @@ func (r *WorkOrderRepository) GetWorkOrders(request models.WorkOrderPaginationDt
} }
tidSQL := "" tidSQL := ""
if request.Tid != 0 && request.Tid != -1 && request.Tid != -2 { if request.Tid != 0 && request.Tid != -1 && request.Tid != -2 {
tidSQL = " AND `t_i_d` = " + strconv.FormatInt(request.Tid, 10) + " " tidSQL = " AND `tid` = " + strconv.FormatInt(request.Tid, 10) + " "
} }
if request.PageSize == 0 { if request.PageSize == 0 {
request.PageSize = 10 request.PageSize = 10
...@@ -113,8 +113,8 @@ func (r *WorkOrderRepository) GetWorkOrders(request models.WorkOrderPaginationDt ...@@ -113,8 +113,8 @@ func (r *WorkOrderRepository) GetWorkOrders(request models.WorkOrderPaginationDt
} }
del := strconv.Itoa(request.Del) del := strconv.Itoa(request.Del)
var workOrders []models.WorkOrderDto var workOrders []models.WorkOrderDto
SQLSUB := "SELECT w.*,u.nickname AS u_nickname,a.nickname AS a_nickname,w.id AS i_d,w.uid AS u_i_d FROM work_order w LEFT JOIN (SELECT id, nickname FROM `user`) u ON w.uid = u.id LEFT JOIN (SELECT id, nickname FROM `admin`) a ON w.last_reply = a.id" SQLSUB := "SELECT w.*,u.nickname AS u_nickname,a.nickname AS a_nickname,w.id AS i_d,w.uid AS u_i_d,w.tid AS t_i_d,w.cid AS c_i_d FROM work_order w LEFT JOIN (SELECT id, nickname FROM `user`) u ON w.uid = u.id LEFT JOIN (SELECT id, nickname FROM `admin`) a ON w.last_reply = a.id"
SQL := "SELECT *,t_i_d AS tid,c_i_d AS cid FROM (" + SQLSUB + ") w WHERE `delete` = " + del + statusSQL + tidSQL + " ORDER BY status ASC, create_at DESC" SQL := "SELECT * FROM (" + SQLSUB + ") w WHERE `delete` = " + del + statusSQL + tidSQL + " ORDER BY status ASC, create_at DESC"
_, err := r.o.Raw(SQL+" LIMIT ? OFFSET ?", request.PageSize, (request.PageOn-1)*request.PageSize).QueryRows(&workOrders) _, err := r.o.Raw(SQL+" LIMIT ? OFFSET ?", request.PageSize, (request.PageOn-1)*request.PageSize).QueryRows(&workOrders)
if err != nil { if err != nil {
logs.Warn("GetWorkOrders get WorkOrders------------", err) logs.Warn("GetWorkOrders get WorkOrders------------", err)
......
...@@ -87,7 +87,7 @@ func (r *WorkOrderTypeRepository) GetWorkOrderTypes() []models.WorkOrderType { ...@@ -87,7 +87,7 @@ func (r *WorkOrderTypeRepository) GetWorkOrderTypes() []models.WorkOrderType {
// GetWorkOrderTypesAndCountWorkorder get all // GetWorkOrderTypesAndCountWorkorder get all
func (r *WorkOrderTypeRepository) GetWorkOrderTypesAndCountWorkorder() []models.WorkOrderTypeDto { func (r *WorkOrderTypeRepository) GetWorkOrderTypesAndCountWorkorder() []models.WorkOrderTypeDto {
var workOrderTypes []models.WorkOrderTypeDto var workOrderTypes []models.WorkOrderTypeDto
_, err := r.o.Raw("SELECT t.*,IFNULL(w.count,0) as `count` FROM work_order_type t LEFT JOIN (SELECT t_i_d,COUNT(*) AS `count` FROM `work_order` WHERE `delete` = 0 AND status != 3 GROUP BY `t_i_d`) w ON t.id = w.t_i_d").QueryRows(&workOrderTypes) _, err := r.o.Raw("SELECT t.*,IFNULL(w.count,0) as `count` FROM work_order_type t LEFT JOIN (SELECT tid,COUNT(*) AS `count` FROM `work_order` WHERE `delete` = 0 AND status != 3 GROUP BY `tid`) w ON t.id = w.tid").QueryRows(&workOrderTypes)
if err != nil { if err != nil {
logs.Warn("GetWorkOrderTypes get all------------", err) logs.Warn("GetWorkOrderTypes get all------------", err)
return []models.WorkOrderTypeDto{} return []models.WorkOrderTypeDto{}
......
...@@ -187,7 +187,8 @@ export default { ...@@ -187,7 +187,8 @@ export default {
dialogFormVisible: false, dialogFormVisible: false,
messageRecord: { messageRecord: {
list: [] list: []
} },
isFirstRequestMessageEnd: false,
}; };
...@@ -275,6 +276,7 @@ export default { ...@@ -275,6 +276,7 @@ export default {
openModal(scope){ openModal(scope){
this.selectUser = scope.row this.selectUser = scope.row
this.isMessageEnd = false this.isMessageEnd = false
this.isFirstRequestMessageEnd = false
this.dialogFormVisible = true this.dialogFormVisible = true
this.messageRecord = { this.messageRecord = {
list: [] list: []
...@@ -295,14 +297,18 @@ export default { ...@@ -295,14 +297,18 @@ export default {
}) })
.then(response => { .then(response => {
this.getMessageRecordLoading = false this.getMessageRecordLoading = false
if(response.data.data.list.length < this.getMessageRecordPageSize){ let messages = response.data.data.list
this.isMessageEnd = true for(var i=0; i<messages.length; i++){
messages[i].payload = window.Base64.decode(messages[i].payload)
} }
if(this.messageRecord.list.length == 0 || timestamp == 0){ if(messages.length < this.getMessageRecordPageSize){
this.isFirstRequestMessageEnd = true
}
if(messages.length == 0 || timestamp == 0){
this.messageRecord = response.data.data this.messageRecord = response.data.data
this.scrollIntoBottom() this.scrollIntoBottom()
}else{ }else{
response.data.data.list = response.data.data.list.concat(this.messageRecord.list) response.data.data.list = messages.concat(this.messageRecord.list)
this.messageRecord = response.data.data this.messageRecord = response.data.data
} }
setTimeout(()=>this.$previewRefresh(), 500) setTimeout(()=>this.$previewRefresh(), 500)
...@@ -312,14 +318,44 @@ export default { ...@@ -312,14 +318,44 @@ export default {
this.getMessageRecordLoading = false this.getMessageRecordLoading = false
}); });
}, },
// 获取聊天记录
getHistoryMessageRecord(timestamp){
this.getMessageRecordLoading = true
if(timestamp == undefined || timestamp == 0){
this.isMessageEnd = true
return
}
axios.post('/message/history', {
"timestamp": timestamp,
"page_size": this.getMessageRecordPageSize,
"service": parseInt(this.selectCustomerId),
"account": parseInt(this.selectUser.user_account)
})
.then(response => {
let messages = response.data.data.list
for(var i=0; i<messages.length; i++){
messages[i].payload = window.Base64.decode(messages[i].payload)
}
this.getMessageRecordLoading = false
if(messages.length < this.getMessageRecordPageSize){
this.isMessageEnd = true
}
response.data.data.list = messages.concat(this.messageRecord.list)
this.messageRecord = response.data.data
setTimeout(()=>this.$previewRefresh(), 1000)
})
.catch(() => {
this.getMessageRecordLoading = false
});
},
// 加载更多数据 // 加载更多数据
onLoadMor(){ onLoadMor(){
if(this.getMessageRecordLoading) return if(this.getMessageRecordLoading) return
if(this.messageRecord.list.length >= this.messageRecord.total || this.messageRecord.total <= this.getMessageRecordPageSize){ if(this.isFirstRequestMessageEnd){
this.isMessageEnd = true this.getHistoryMessageRecord(this.messageRecord.list[0].timestamp)
return }else{
this.getMessageRecord(this.messageRecord.list[0].timestamp)
} }
this.getMessageRecord(this.messageRecord.list[0].timestamp)
setTimeout(()=>{ setTimeout(()=>{
var chatBody = document.getElementById("chatBody") var chatBody = document.getElementById("chatBody")
chatBody.scrollTop = 500 chatBody.scrollTop = 500
......
...@@ -241,7 +241,8 @@ export default { ...@@ -241,7 +241,8 @@ export default {
inputPongIngString: "对方正在输入...", inputPongIngString: "对方正在输入...",
isPush: false, // 是否可以推送消息 isPush: false, // 是否可以推送消息
isMessageEnd: false, isMessageEnd: false,
mousemoveTimerout: null mousemoveTimerout: null,
isFirstRequestMessageEnd: false,
} }
}, },
computed: { computed: {
...@@ -745,6 +746,7 @@ export default { ...@@ -745,6 +746,7 @@ export default {
href = href.substr(0, index != -1 ? index : href.length) href = href.substr(0, index != -1 ? index : href.length)
history.replaceState(null, null, href + '#/workbench?uid=' + user.from_account) history.replaceState(null, null, href + '#/workbench?uid=' + user.from_account)
this.isMessageEnd = false this.isMessageEnd = false
this.isFirstRequestMessageEnd = false
if(this.seviceCurrentUser.from_account != user.from_account){ if(this.seviceCurrentUser.from_account != user.from_account){
this.messageRecord.list = [] this.messageRecord.list = []
this.$store.commit("onChangeSeviceCurrentUser", user) this.$store.commit("onChangeSeviceCurrentUser", user)
...@@ -775,7 +777,7 @@ export default { ...@@ -775,7 +777,7 @@ export default {
} }
this.getMessageRecordLoading = false this.getMessageRecordLoading = false
if(messages.length < this.getMessageRecordPageSize){ if(messages.length < this.getMessageRecordPageSize){
this.isMessageEnd = true this.isFirstRequestMessageEnd = true
} }
if(this.messageRecord.list.length == 0 || timestamp == 0){ if(this.messageRecord.list.length == 0 || timestamp == 0){
this.$store.commit("onChangeMessageRecord", response.data.data) this.$store.commit("onChangeMessageRecord", response.data.data)
...@@ -791,19 +793,50 @@ export default { ...@@ -791,19 +793,50 @@ export default {
this.getMessageRecordLoading = false this.getMessageRecordLoading = false
}); });
}, },
// 获取聊天记录
getHistoryMessageRecord(timestamp){
this.getMessageRecordLoading = true
if(timestamp == undefined || timestamp == 0){
this.isMessageEnd = true
return
}
var account = parseInt(this.seviceCurrentUser.from_account)
if(!account) return
axios.post('/message/history', {
"timestamp": timestamp,
"page_size": this.getMessageRecordPageSize,
"account": account
})
.then(response => {
let messages = response.data.data.list
for(var i=0; i<messages.length; i++){
messages[i].payload = window.Base64.decode(messages[i].payload)
}
this.getMessageRecordLoading = false
if(messages.length < this.getMessageRecordPageSize){
this.isMessageEnd = true
}
response.data.data.list = messages.concat(this.messageRecord.list)
this.$store.commit("onChangeMessageRecord", response.data.data)
setTimeout(()=>this.$previewRefresh(), 1000)
this.$store.dispatch('ON_GET_CONTACTS')
})
.catch(() => {
this.getMessageRecordLoading = false
});
},
//获取更多消息 //获取更多消息
onLoadMorMessage(){ onLoadMorMessage(){
if(this.getMessageRecordLoading) return if(this.getMessageRecordLoading) return
if(this.messageRecord.list.length >= this.messageRecord.total || this.messageRecord.total <= this.getMessageRecordPageSize){ if(this.isFirstRequestMessageEnd){
this.isMessageEnd = true this.getHistoryMessageRecord(this.messageRecord.list[0].timestamp)
return }else{
this.getMessageRecord(this.messageRecord.list[0].timestamp)
} }
this.getMessageRecord(this.messageRecord.list[0].timestamp)
setTimeout(()=>{ setTimeout(()=>{
var chatBody = document.getElementById("chatBody") var chatBody = document.getElementById("chatBody")
chatBody.scrollTop = 500 chatBody.scrollTop = 500
}, 50) }, 50)
}, },
// 显示正在输入 // 显示正在输入
inputPongIng(){ inputPongIng(){
......
...@@ -6,7 +6,9 @@ ...@@ -6,7 +6,9 @@
<i class="el-icon-tickets"></i> <i class="el-icon-tickets"></i>
<span slot="title">工单管理</span> <span slot="title">工单管理</span>
<span style="font-size:15px;margin-left: 30px;color:#e7a646"> <span style="font-size:15px;margin-left: 30px;color:#e7a646">
当前有: <template v-if="workOrderCounts.status0 > 0 || workOrderCounts.status2">
当前有:
</template>
<template v-if="workOrderCounts.status0 > 0"> <template v-if="workOrderCounts.status0 > 0">
<strong style="color: #f56c6c">{{workOrderCounts.status0}}</strong>条待处理 , <strong style="color: #f56c6c">{{workOrderCounts.status0}}</strong>条待处理 ,
</template> </template>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment