123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- package service
- import (
- systemDao "iot_manager_service/app/system/dao"
- systemService "iot_manager_service/app/system/service"
- "iot_manager_service/app/warn/dao"
- "iot_manager_service/app/warn/model"
- "strconv"
- "strings"
- )
- var NoticeSetService = new(noticeSetService)
- type noticeSetService struct{}
- func (s noticeSetService) GetList(tenantId string, searchValue string) ([]model.NoticeSetRecords, error) {
- code := dao.ViewsAllCode{TenantId: tenantId}
- deviceTypeGroups, _ := code.GetGroupByDeviceType(searchValue)
- var deviceTypeGroupsNew []model.NoticeSetRecords
- noteiceSets := s.getNoteiceSets(tenantId)
- for _, group := range deviceTypeGroups {
- var deviceNew []model.NoticeSetRecords
- code.DeviceType = group.DeviceType
- devices, _ := code.GetDatasByDeviceType(searchValue)
- for _, device := range devices {
- key := tenantId + strconv.Itoa(3) + strconv.Itoa(device.DeviceType) + strconv.Itoa(device.DeviceId)
- set := noteiceSets[key]
- deviceNew = append(deviceNew, model.NoticeSetRecords{
- Rtype: 3,
- RtypeName: device.DeviceName + "(" + device.Sn + ")",
- DeviceType: device.DeviceType,
- DeviceId: device.DeviceId,
- ID: device.Sn,
- DevUserNoticeModesName: set.DevUserNoticeModesName,
- BusinessNoticeModesName: set.BusinessNoticeModesName,
- DevUserIdsName: set.DevUserIdsName,
- BusinessUserIdsName: set.BusinessUserIdsName,
- DevUserIds: set.DevUserIds,
- BusinessUserIds: set.BusinessUserIds,
- })
- }
- key := (tenantId) + strconv.Itoa(2) + strconv.Itoa(group.DeviceType) + strconv.Itoa(999999)
- set := noteiceSets[key]
- deviceTypeGroupsNew = append(deviceTypeGroupsNew, model.NoticeSetRecords{
- Rtype: 2,
- RtypeName: group.DeviceTypeName + "(" + strconv.Itoa(len(deviceNew)) + "台)",
- Children: deviceNew,
- DeviceType: group.DeviceType,
- DeviceId: 0,
- ID: strconv.Itoa(group.DeviceType),
- DevUserNoticeModesName: set.DevUserNoticeModesName,
- BusinessNoticeModesName: set.BusinessNoticeModesName,
- DevUserIdsName: set.DevUserIdsName,
- BusinessUserIdsName: set.BusinessUserIdsName,
- DevUserIds: set.DevUserIds,
- BusinessUserIds: set.BusinessUserIds,
- })
- }
- key := tenantId + strconv.Itoa(1) + strconv.Itoa(0) + strconv.Itoa(999999)
- set := noteiceSets[key]
- data := []model.NoticeSetRecords{
- {
- Rtype: 0,
- RtypeName: "全部设备",
- Children: deviceTypeGroupsNew,
- DeviceType: 0,
- DeviceId: 0,
- ID: "999999",
- DevUserNoticeModesName: set.DevUserNoticeModesName,
- BusinessNoticeModesName: set.BusinessNoticeModesName,
- DevUserIdsName: set.DevUserIdsName,
- BusinessUserIdsName: set.BusinessUserIdsName,
- DevUserIds: set.DevUserIds,
- BusinessUserIds: set.BusinessUserIds,
- },
- }
- return data, nil
- }
- func (s noticeSetService) Update(post model.NoticeUpdateData, tenantId string) error {
- rtype := post.Rtype
- if rtype == 0 {
- rtype = 1
- }
- deviceId := 999999
- if rtype == 3 {
- deviceId = post.DeviceID
- }
- set := dao.NoticeSet{
- TenantId: tenantId,
- DeviceType: post.DeviceType,
- DeviceId: deviceId,
- DeviceSn: post.ID,
- RType: rtype,
- DevUserNoticeModes: post.NoticeOperationType,
- BusinessNoticeModes: post.NoticeBusinessType,
- DevUserNoticeModesName: post.ShowOperationTypeName,
- BusinessNoticeModesName: post.ShowBusinessTypeName,
- DevUserIds: post.NoticeOperationMan,
- BusinessUserIds: post.NoticeBusinessMan,
- DevUserIdsName: s.getUserName(post.NoticeOperationMan),
- BusinessUserIdsName: s.getUserName(post.NoticeBusinessMan),
- }
- return set.UpdateOrSave()
- }
- func (s noticeSetService) getNoteiceSets(tenantId string) map[string]dao.NoticeSet {
- noticeSet := dao.NoticeSet{TenantId: tenantId}
- list, _ := noticeSet.GetList()
- news := make(map[string]dao.NoticeSet)
- for _, set := range list {
- key := set.TenantId + strconv.Itoa(set.RType) + strconv.Itoa(set.DeviceType) + strconv.Itoa(set.DeviceId)
- set.BusinessUserIdsName = strings.ReplaceAll(set.BusinessUserIdsName, " | ", ",")
- set.DevUserIdsName = strings.ReplaceAll(set.DevUserIdsName, " | ", ",")
- news[key] = set
- }
- return news
- }
- func (s noticeSetService) GetById(id string) (*model.NoticeSetDetail, error) {
- noticeSet := dao.NoticeSet{DeviceSn: id}
- data, err := noticeSet.GetById()
- if err != nil {
- return nil, err
- }
- detail := &model.NoticeSetDetail{
- ID: data.DeviceSn,
- RidType: data.RType,
- NoticeOperationType: data.DevUserNoticeModes,
- NoticeBusinessType: data.BusinessNoticeModes,
- NoticeOperationMan: data.DevUserIds,
- NoticeBusinessMan: data.BusinessUserIds,
- }
- return detail, nil
- }
- func (s noticeSetService) UserList(account string, name string, current int, size int) ([]model.NoticeSetDUserList, error) {
- var list []model.NoticeSetDUserList
- userList, _, _ := systemService.UserService.List(account, name, current, size)
- for _, user := range userList {
- idStr := strconv.Itoa(int(user.ID))
- list = append(list, model.NoticeSetDUserList{ID: idStr, Name: user.Name})
- }
- return list, nil
- }
- func (s noticeSetService) getUserName(ids string) string {
- split := strings.Split(ids, ",")
- fm := make(map[string]int)
- for i, v := range split {
- fm[v] = i
- }
- //<<<<<<< HEAD
- userList, _, _ := systemService.UserService.List("", "", 0, 1000)
- //new := []string{}
- //=======
- //userList, _ := systemService.UserService.List("", "", 0, 1000)
- var nameList []string
- //>>>>>>> fdc014add9a1761732ad176375e06591f726e001
- for _, detail := range userList {
- id := strconv.Itoa(int(detail.ID))
- if _, ok := fm[id]; ok {
- nameList = append(nameList, detail.Name)
- }
- }
- return strings.Join(nameList, ",")
- }
- func (s noticeSetService) Remove(id string, tenantId string) error {
- noticeSet := dao.NoticeSet{DeviceSn: id, TenantId: tenantId}
- return noticeSet.Delete()
- }
- // GetReceiveList 查出接收人
- func (s noticeSetService) GetReceiveList(deviceType int, sn string, armSource int) (map[string]model.ReceiveList, error) {
- list, _ := dao.NoticeSet{}.GetNoticeList(deviceType, sn)
- receives := make(map[string]model.ReceiveList)
- for _, set := range list {
- userIds := set.BusinessUserIds //接收用户
- noticeModes := set.BusinessNoticeModes //接收的通知方式
- if armSource == 1 {
- userIds = set.DevUserIds
- noticeModes = set.DevUserNoticeModes
- }
- usersArr := strings.Split(userIds, ",")
- noticeModesArr := strings.Split(noticeModes, ",")
- for _, userId := range usersArr {
- var user systemDao.User
- parseInt, _ := strconv.Atoi(userId)
- user.ID = parseInt
- user.GetUser()
- for _, noticeModeStr := range noticeModesArr {
- noticeModeNum, _ := strconv.ParseInt(noticeModeStr, 10, 64)
- account := user.Email
- if noticeModeStr == "1" {
- account = user.Phone
- }
- receives[userId+noticeModeStr] = model.ReceiveList{
- NoticeSetId: int(set.ID),
- UserName: user.Name,
- NoticeMode: int(noticeModeNum),
- NoticeReceiveAccount: account,
- }
- }
- }
- }
- return receives, nil
- }
|