Browse Source

修改bug

duyong mac 1 year ago
parent
commit
6f9ef7215a

+ 17 - 3
internal/pcmserver/bus/service/home_client.go

@@ -71,6 +71,20 @@ func (hc *HomeClient) ReadMessage() {
 			sendData := &HomeMsg{DeptID: 0, MsgType: pong}
 
 			hc.send <- sendData
+		case wsLeaveReq:
+			// 解析数据
+			var leaveReq WSLeaveReq
+			err = json.Unmarshal([]byte(receiveData.Data), &leaveReq)
+			if err != nil {
+				log.Error(code.ErrCodeMap[code.ErrTokenInvalidCode].Error())
+				continue
+			}
+			// 发送请假详情
+			err = sendLeaveInfo(leaveReq.StaffID)
+			if err != nil {
+				log.Error(err.Error())
+				continue
+			}
 		case clientToken:
 			// 解析客户端发来的token
 			claims, err := global.JWT.ParseToken(receiveData.Data)
@@ -79,19 +93,19 @@ func (hc *HomeClient) ReadMessage() {
 					sendData := &HomeMsg{DeptID: 0, MsgType: clientToken, Data: code.ErrCodeMap[code.ErrTokenExpiredCode].Error()}
 					hc.send <- sendData
 					log.Error(code.ErrCodeMap[code.ErrTokenExpiredCode].Error())
-					return
+					continue
 				}
 				sendData := &HomeMsg{DeptID: 0, MsgType: clientToken, Data: code.ErrCodeMap[code.ErrTokenInvalidCode].Error()}
 				hc.send <- sendData
 				log.Error(code.ErrCodeMap[code.ErrTokenInvalidCode].Error())
-				return
+				continue
 			}
 			deptIds, err := systemService.ServicesGroupApp.GetSonDeptIds(claims.DeptID)
 			if err != nil {
 				sendData := &HomeMsg{DeptID: 0, MsgType: clientToken, Data: err.Error()}
 				hc.send <- sendData
 				log.Error(err.Error())
-				return
+				continue
 			}
 			deptMap := make(map[int]struct{})
 			for _, dep := range deptIds {

+ 29 - 2
internal/pcmserver/bus/service/home_client_proto.go

@@ -89,7 +89,16 @@ type WSGridUpdate struct {
 
 // WSLeaveReq 请假请求
 type WSLeaveReq struct {
-	StaffID int
+	StaffID int `json:"StaffId"`
+}
+
+// WSLeaveRes 请假响应
+type WSLeaveRes struct {
+	Type         string  `json:"type"`
+	StartTimeStr string  `json:"startTimeStr" `
+	EndTimeStr   string  `json:"endTimeStr" `
+	Duration     float32 `json:"duration"`
+	Reason       string  `json:"reason"`
 }
 
 // sendDeptTree 推送左侧部门树,每次新连接推送一次,期间有更新或者删除无法重新推送
@@ -253,7 +262,25 @@ func sendUpdateGrid(deptId int, cabinetId int, gridDeviceId int, update bool) er
 	return pushWsClients(&HomeMsg{DeptID: deptId, Update: update, MsgType: wsGridUpdate, Data: string(dataMsg)})
 }
 
-// 请假信息推送
+// sendLeaveInfo 请假信息推送
+func sendLeaveInfo(staffId int) error {
+	leaveLog, err := ServicesGroupApp.LeaveLogService.getLeaveByStaffID(staffId)
+	if err != nil {
+		return err
+	}
+	leaveInfo := WSLeaveRes{
+		Type:         leaveLog.Type,
+		StartTimeStr: leaveLog.StartTimeStr,
+		EndTimeStr:   leaveLog.EndTimeStr,
+		Duration:     leaveLog.Duration,
+		Reason:       leaveLog.Reason,
+	}
+	dataMsg, err := json.Marshal(leaveInfo)
+	if err != nil {
+		return err
+	}
+	return pushWsClients(&HomeMsg{DeptID: 0, Update: false, MsgType: wstLeaveRes, Data: string(dataMsg)})
+}
 
 func pushWsClients(homeMessages ...*HomeMsg) error {
 	if len(homeMessages) == 0 {

+ 13 - 0
internal/pcmserver/bus/service/leave_log.go

@@ -289,6 +289,19 @@ func (lls *LeaveLogService) GetLeaveLogList(info request.LeaveLogRecordSearch, d
 	return
 }
 
+func (lls *LeaveLogService) getLeaveByStaffID(staffId int) (leaveLog *model.LeaveLog, err error) {
+	var record model.LeaveLog
+	err = global.DB.Where("staff_id = ?", staffId).Where("status = ?", model.StatusExecuting).First(&record).Error
+	if err != nil {
+		if err != gorm.ErrRecordNotFound {
+			return nil, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
+		} else {
+			return nil, nil
+		}
+	}
+	return &record, nil
+}
+
 func parseLeaveCronTab(db *gorm.DB, leaveLog model.LeaveLog) error {
 	// 删除原来的定时任务
 	leaveJobName := strconv.Itoa(leaveLog.ID) + "-" + strconv.Itoa(int(LeaveJob))