From 196bb14112448857a885e32dc4149e308e00b01a Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 15 八月 2024 11:57:15 +0800
Subject: [PATCH] 2024.8.15 各项修正

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/NotificationServiceImpl.kt |  224 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 149 insertions(+), 75 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/NotificationServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/NotificationServiceImpl.kt
index b74776f..fde3160 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/NotificationServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/NotificationServiceImpl.kt
@@ -13,6 +13,8 @@
 import cn.flightfeather.supervision.domain.enumeration.SceneType
 import cn.flightfeather.supervision.domain.mapper.*
 import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator
+import cn.flightfeather.supervision.lightshare.vo.BaseResponse
+import cn.flightfeather.supervision.lightshare.vo.DataHead
 import com.flightfeather.taizhang.model.enumeration.NotificationType
 import com.flightfeather.taizhang.model.enumeration.WorkSubType
 import com.github.pagehelper.PageHelper
@@ -25,15 +27,43 @@
 
 @Service
 class NotificationServiceImpl(
-        val notificationMapper: NotificationMapper,
-        val noticeMapper: NoticeMapper,
-        val noticeReadStateMapper: NoticeReadStateMapper,
-        val userinfoMapper: UserinfoMapper,
-        val meetingParticipantRepository: MeetingParticipantRepository,
-        val templateManager: TemplateManager
+    val notificationMapper: NotificationMapper,
+    val noticeMapper: NoticeMapper,
+    val noticeReadStateMapper: NoticeReadStateMapper,
+    val noticeTemplateMapper: NoticeTemplateMapper,
+    val userinfoMapper: UserinfoMapper,
+    val meetingParticipantRepository: MeetingParticipantRepository,
+    val templateManager: TemplateManager,
 ) : NotificationService {
 
-    override fun getNotificationUnRead(userId: String, page: Int, per_page: Int, response: HttpServletResponse): List<NotificationVo> {
+    override fun getAllNotices(
+        userId: String,
+        noticeConfig: NoticeConfig,
+        page: Int,
+        perPage: Int,
+    ): BaseResponse<List<Notice>> {
+//        val userInfo = userinfoMapper.selectByPrimaryKey(userId)
+        val p = PageHelper.startPage<Notice>(page, perPage)
+        val nList = noticeMapper.selectByExample(Example(Notice::class.java).apply {
+            createCriteria().apply {
+                if (noticeConfig.ecNoticetype != null && noticeConfig.ecNoticetype != 0) {
+                    andEqualTo("ecNoticetype", noticeConfig.ecNoticetype)
+                }
+                if (noticeConfig.ecNoticesubtype != null && noticeConfig.ecNoticesubtype != 0) {
+                    andEqualTo("ecNoticesubtype", noticeConfig.ecNoticesubtype)
+                }
+            }
+            orderBy("ecUpdatedate").desc()
+        })
+        return BaseResponse(true, head = DataHead(p.pageNum, p.pages, p.total), data = nList)
+    }
+
+    override fun getNotificationUnRead(
+        userId: String,
+        page: Int,
+        per_page: Int,
+        response: HttpServletResponse,
+    ): List<NotificationVo> {
         val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList()
         val userTypeId = userInfo.usertypeid
         val district = userInfo.extension1
@@ -42,7 +72,8 @@
 
         when (userTypeId?.toInt()) {
             UserType.Admin.value,
-            UserType.Insider.value -> {
+            UserType.Insider.value,
+            -> {
                 districtCode = null
                 sceneTypeId = null
             }
@@ -57,17 +88,15 @@
         val myPage = PageHelper.startPage<Notice>(page, per_page)
 
         val noticeIdList = mutableListOf<String?>()
-        val resultList = noticeMapper.getUnReadNotification(userId, districtCode, sceneTypeId).also {
-            it.forEach {vo->
-                noticeIdList.add(vo.id)
-            }
+        val resultList = noticeMapper.getUnReadNotification(userId, districtCode, sceneTypeId, userTypeId).onEach { vo ->
+            noticeIdList.add(vo.id)
         }
         if (noticeIdList.isEmpty()) {
             return resultList
         }
         val readStateList = noticeReadStateMapper.selectByExample(Example(NoticeReadState::class.java).apply {
             createCriteria().andEqualTo("nrUserid", userId)
-                    .andIn("ecGuid", noticeIdList)
+                .andIn("ecGuid", noticeIdList)
         })
 
         resultList.forEach {
@@ -96,7 +125,7 @@
                 nrSignstate = it.hasSigned
                 val example = Example(NoticeReadState::class.java)
                 example.createCriteria().andEqualTo("nrUserid", nrUserid)
-                        .andEqualTo("ecGuid", ecGuid)
+                    .andEqualTo("ecGuid", ecGuid)
                 val result = noticeReadStateMapper.selectByExample(example)
                 if (result.isEmpty()) {
                     noticeReadStateMapper.insert(this)
@@ -140,7 +169,8 @@
 
         when (userTypeId?.toInt()) {
             UserType.Admin.value,
-            UserType.Insider.value -> {
+            UserType.Insider.value,
+            -> {
                 districtCode = null
                 sceneTypeId = null
             }
@@ -153,8 +183,8 @@
         }
 
         val noticeIdList = mutableListOf<String?>()
-        val resultList = noticeMapper.getUnReadNotification(userId, districtCode, sceneTypeId).also {
-            it.forEach {vo->
+        val resultList = noticeMapper.getUnReadNotification(userId, districtCode, sceneTypeId, userTypeId).also {
+            it.forEach { vo ->
                 noticeIdList.add(vo.id)
             }
         }
@@ -178,10 +208,16 @@
         return totalCount
     }
 
-    override fun pushMeetingReleaseNotification(meetingVo: MeetingInfo, roomVo: VMRoom?, userId: String, title: String, body: String) {
+    override fun pushMeetingReleaseNotification(
+        meetingVo: MeetingInfo,
+        roomVo: VMRoom?,
+        userId: String,
+        title: String,
+        body: String,
+    ) {
         val accountList = mutableListOf<String>()
         meetingParticipantRepository.getParticipantByType(meetingVo.miGuid
-                ?: "", roomVo?.vmrGuid, ParticipantType.All.value).forEach {
+            ?: "", roomVo?.vmrGuid, ParticipantType.All.value).forEach {
             if (it.mpParticipantid != userId) {
                 accountList.add(it.mpParticipantid)
             }
@@ -201,19 +237,19 @@
         val user = userinfoMapper.selectByPrimaryKey(userId)
 
         val notificationVo = NotificationVo(
-                UUIDGenerator.generate16ShortUUID(),
-                user.guid,
-                user.realname,
-                user.headIconUrl,
-                NotificationType.Work.value.toString(),
-                NotificationType.Work.des,
-                WorkSubType.Meeting.value.toString(),
-                WorkSubType.Meeting.des,
-                meetingVo.miTitle ?: title,
-                body,
-                receiverType = "-1",
-                receiverId = receiverId.toString(),
-                district = "-1"
+            UUIDGenerator.generate16ShortUUID(),
+            user?.guid,
+            user?.realname,
+            user?.headIconUrl,
+            NotificationType.Work.value.toString(),
+            NotificationType.Work.des,
+            WorkSubType.Meeting.value.toString(),
+            WorkSubType.Meeting.des,
+            meetingVo.miTitle ?: title,
+            body,
+            receiverType = "-1",
+            receiverId = receiverId.toString(),
+            district = "-1"
         )
 
         releaseNotice(userId, notificationVo)
@@ -222,7 +258,7 @@
     override fun releaseNotice(userId: String, noticeVo: NotificationVo): Boolean {
         val notice = Notice().apply {
             noticeVo.let {
-                ecGuid = it.id
+                ecGuid = if (it.id == null) UUIDGenerator.generate16ShortUUID() else it.id
                 ecNoticetype = it.typeId?.toInt()
                 ecNoticetypename = it.typeName
                 ecNoticesubtype = it.subTypeId?.toInt()
@@ -244,52 +280,90 @@
                 ecExtension1 = it.district
             }
         }
-        Executors.newSingleThreadExecutor().execute {
-            PushService().run {
-                if (noticeVo.receiverId?.isNotBlank() == true) {
-                    val accountList = noticeVo.receiverId!!.split(";")
-                    pushByAccount(accountList)
-                } else {
-                    val accountList = mutableListOf<String>()
-                    val districts = mutableListOf<String>()
-                    val sceneTypes = mutableListOf<String>()
-                    noticeVo.district?.split(";")?.forEach {
-                        if (it.isNotBlank()) {
-                            districts.add(it)
-                        }
-                    }
-                    noticeVo.receiverType.split(";")?.forEach {
-                        if (it.isNotBlank()) {
-                            sceneTypes.add(it)
-                        }
-                    }
-                    val districtCodeList = mutableListOf<String>()
-                    districts.forEach {
-                        DistrictType.getDes(it)?.let { d-> districtCodeList.add(d)}
-                    }
-                    userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
-                        createCriteria()
-                                .apply {
-                                    if (districts.isNotEmpty()) {
-                                        andIn("extension1", districtCodeList)
-                                    }
-                                    if (noticeVo.receiverType != SceneType.NoType.value.toString()) {
-                                        andIn("extension2", sceneTypes)
-                                    }
-                                }
-                    }).forEach {
-                        accountList.add(it.guid ?: "")
-                    }
-                    pushByAccount(accountList)
-                }
-                push(noticeVo.title?:"鏂伴�氱煡", noticeVo.content?:"鏂伴�氱煡")
-            }
-        }
+//        Executors.newSingleThreadExecutor().execute {
+//            PushService().run {
+//                if (noticeVo.receiverId?.isNotBlank() == true) {
+//                    val accountList = noticeVo.receiverId!!.split(";")
+//                    pushByAccount(accountList)
+//                } else {
+//                    val accountList = mutableListOf<String>()
+//                    val districts = mutableListOf<String>()
+//                    val sceneTypes = mutableListOf<String>()
+//                    noticeVo.district?.split(";")?.forEach {
+//                        if (it.isNotBlank()) {
+//                            districts.add(it)
+//                        }
+//                    }
+//                    noticeVo.receiverType.split(";")?.forEach {
+//                        if (it.isNotBlank()) {
+//                            sceneTypes.add(it)
+//                        }
+//                    }
+//                    val districtCodeList = mutableListOf<String>()
+//                    districts.forEach {
+//                        DistrictType.getDes(it)?.let { d-> districtCodeList.add(d)}
+//                    }
+//                    userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
+//                        createCriteria()
+//                                .apply {
+//                                    if (districts.isNotEmpty()) {
+//                                        andIn("extension1", districtCodeList)
+//                                    }
+//                                    if (noticeVo.receiverType != SceneType.NoType.value.toString()) {
+//                                        andIn("extension2", sceneTypes)
+//                                    }
+//                                }
+//                    }).forEach {
+//                        accountList.add(it.guid ?: "")
+//                    }
+//                    pushByAccount(accountList)
+//                }
+//                push(noticeVo.title?:"鏂伴�氱煡", noticeVo.content?:"鏂伴�氱煡")
+//            }
+//        }
         return noticeMapper.insert(notice) == 1
     }
 
+    override fun releaseNotice2(userId: String, noticeVo: NotificationVo): Notice {
+        val notice = Notice().apply {
+            noticeVo.let {
+                ecGuid = if (it.id == null) UUIDGenerator.generate16ShortUUID() else it.id
+                ecNoticetype = it.typeId?.toInt()
+                ecNoticetypename = NotificationType.getByValue(ecNoticetype)
+                ecNoticesubtype = it.subTypeId?.toInt()
+                ecNoticesubtypename = WorkSubType.getByValue(ecNoticetype, ecNoticesubtype)
+                ecNoticetitle = it.title
+                ecNoticecontent = it.content
+                ecIsinuse = true
+                ecCreatedate = Date()
+                ecCreatorid = it.authorId
+                ecCreator = it.authorName
+                ecUpdatedate = Date()
+                ecModifierid = it.authorId
+                ecModifier = it.authorName
+                ecReceivertype = if (it.receiverType != "-1") it.receiverType + ";" else "-1"
+                ecReceiverid = it.receiverId
+                ecPicurl = it.picUrl
+                ecBodyurl = it.bodyUrl
+                ecNeedsign = it.needSigned
+                ecExtension1 = if (it.district != "-1") it.district + ";" else "-1"
+            }
+        }
+        noticeMapper.insert(notice)
+        return notice
+    }
+
     override fun pushMsgWx(templateId: Int): String {
-        val res = templateManager.sendMsg(templateId, "otZkc5VRlwauEMPqMluQYdVa4zuE", listOf("鍙拌处涓婁紶", "2022骞�10鏈�10鏃�", "3", "璇烽噸鐐瑰叧娉ㄧ幇鍦鸿嚜瀵绘煡閮ㄥ垎"))
+        val res = templateManager.sendMsg(templateId,
+            "otZkc5VRlwauEMPqMluQYdVa4zuE",
+            listOf("鍙拌处涓婁紶", "2022骞�10鏈�10鏃�", "3", "璇烽噸鐐瑰叧娉ㄧ幇鍦鸿嚜瀵绘煡閮ㄥ垎"))
         return if (res) "success" else "fail"
     }
+
+    override fun getTemplate(typeId: Int, subTypeId: Int): BaseResponse<List<NoticeTemplate?>> {
+        val res = noticeTemplateMapper.selectByExample(Example(NoticeTemplate::class.java).apply {
+            createCriteria().andEqualTo("ntNoticeType", typeId).andEqualTo("ntNoticeSubType", subTypeId)
+        })
+        return BaseResponse(true, data = res)
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3