From a3cc1d220f8a1de11874bebceba0130d32157ff1 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 30 九月 2025 09:26:32 +0800
Subject: [PATCH] 2025.9.30 1. 联合前端调试数据产品接口(待完成)

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserinfoServiceImpl.kt |  166 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 105 insertions(+), 61 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserinfoServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserinfoServiceImpl.kt
index bf8a593..49b9890 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserinfoServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserinfoServiceImpl.kt
@@ -1,24 +1,41 @@
 package cn.flightfeather.supervision.lightshare.service.impl
 
+import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.common.utils.PinYin
 import cn.flightfeather.supervision.common.utils.UUIDGenerator
 import cn.flightfeather.supervision.domain.ds1.entity.Scense
 import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
 import cn.flightfeather.supervision.domain.ds1.mapper.ScenseMapper
 import cn.flightfeather.supervision.domain.ds1.mapper.UserinfoMapper
+import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
+import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
+import cn.flightfeather.supervision.domain.ds1.repository.UserInfoSVRep
+import cn.flightfeather.supervision.domain.ds2.entity.UserinfoTZ
+import cn.flightfeather.supervision.domain.ds2.repository.UserInfoTZRep
 import cn.flightfeather.supervision.lightshare.service.UserinfoService
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import cn.flightfeather.supervision.lightshare.vo.DataHead
+import com.github.pagehelper.PageHelper
+import org.springframework.beans.BeanUtils
 import org.springframework.stereotype.Service
 import tk.mybatis.mapper.entity.Example
+import kotlin.random.Random
+import kotlin.random.nextInt
 
 @Service
-class UserinfoServiceImpl(val userinfoMapper: UserinfoMapper, private val scenseMapper: ScenseMapper) : UserinfoService {
+class UserinfoServiceImpl(
+    val userinfoMapper: UserinfoMapper,
+    private val scenseMapper: ScenseMapper,
+    private val userInfoSVRep: UserInfoSVRep,
+    private val userInfoTZRep: UserInfoTZRep,
+) : UserinfoService {
 
     //鏍规嵁userinfo鏉′欢鏌ヨ
     override fun findOneByName(userinfo: Userinfo): Userinfo? {
         val example = Example(Userinfo::class.java)
         val criteria = example.createCriteria()
         criteria.andEqualTo("acountname", userinfo.acountname)
-                .andEqualTo("password", userinfo.password)
+            .andEqualTo("password", userinfo.password)
         val result = userinfoMapper.selectByExample(example)
         return if (result.isNotEmpty()) {
             result[0]
@@ -30,31 +47,92 @@
         }
     }
 
-    override fun findByType(typeId: Byte): List<Userinfo> {
+    override fun findByType(typeId: Byte, enable: Boolean?): List<Userinfo> {
         val result = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
             createCriteria().andEqualTo("usertypeid", typeId)
+                .apply {
+                    enable?.let { andEqualTo("isenable", it) }
+                }
         })
 
         return result
     }
 
-    override fun findOne(id: String): Userinfo = userinfoMapper.selectByPrimaryKey(id)
+    override fun findOne(id: String): Userinfo? = userinfoMapper.selectByPrimaryKey(id)
 
     override fun findAll(): MutableList<Userinfo> = userinfoMapper.selectAll()
 
     override fun save(userinfo: Userinfo): Int = userinfoMapper.insert(userinfo)
 
-    override fun update(userinfo: Userinfo): Int = userinfoMapper.updateByPrimaryKey(userinfo)
+    override fun update(userinfo: Userinfo): Int {
+        return if (userinfo.guid.isNullOrBlank() || userinfo.acountname.isNullOrBlank() || userinfo.password.isNullOrBlank()) {
+            0
+        } else {
+            userinfoMapper.updateByPrimaryKeySelective(userinfo)
+        }
+    }
 
     override fun delete(id: String): Int = userinfoMapper.deleteByPrimaryKey(id)
+
+    override fun search(areaVo: AreaVo, keyword: String, userType: Int?, page: Int?, perPage: Int?)
+            : Pair<DataHead, List<Userinfo?>> {
+        val p = PageHelper.startPage<Userinfo>(page ?: 1, perPage ?: 30)
+        val result = userInfoSVRep.searchUser(areaVo, keyword.trim(), Constant.UserType.fromValue(userType))
+        result.forEach { it?.password = null }
+        return DataHead(p.pageNum, p.pages, p.total) to result
+    }
 
     override fun createAccount(sceneId: String): Userinfo {
         findByScene(sceneId)?.let { return it }
 
         scenseMapper.selectByPrimaryKey(sceneId)?.let {
+            createAccount(it)
+        }
+        return Userinfo()
+    }
+
+    override fun findByScene(sceneId: String): Userinfo? {
+        userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
+            createCriteria().andEqualTo("dGuid", sceneId)
+        })?.takeIf { it.isNotEmpty() }?.let { return it[0] }
+        return null
+    }
+
+    override fun getUName(sceneName: String): String {
+        var uName = PinYin.getPinYinHeader(sceneName)
+        var suffix = ""
+        var repeated: Boolean
+        var i = 1
+        do {
+            userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
+                createCriteria().andEqualTo("acountname", uName + suffix)
+            }).let {
+                repeated = it.isNotEmpty()
+                if (repeated) {
+                    suffix = Random.nextInt(100..999).toString()
+                }
+            }
+            i++
+        } while (repeated && i < 20)
+        if (repeated) uName = UUIDGenerator.generateShortUUID()
+        return uName + suffix
+    }
+
+    override fun autoCreateAccount() {
+        val sceneList = scenseMapper.selectNoAccountScene()
+        sceneList.forEach {
+            createAccount(it)
+        }
+    }
+
+    override fun createAccount(scence: Scense):Userinfo {
+        scence.let {
+            // 鍒ゆ柇璇ュ満鏅槸鍚﹀凡鏈夊搴旇处鎴�
+            val user = userInfoSVRep.findUser(it.guid)
+            if (user != null) return user
+
             val sceneName = it.name ?: return Userinfo()
             val uName = getUName(sceneName)
-
             val userInfo = Userinfo().apply {
                 guid = UUIDGenerator.generate16ShortUUID()
                 acountname = uName
@@ -71,65 +149,31 @@
             val r = userinfoMapper.insert(userInfo)
             if (r == 1) {
                 return userInfo
+            } else {
+                return Userinfo()
             }
         }
-        return Userinfo()
     }
 
-    override fun findByScene(sceneId: String): Userinfo? {
-        userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
-            createCriteria().andEqualTo("dGuid", sceneId)
-        })?.takeIf { it.isNotEmpty() }?.let { return it[0] }
-        return null
-    }
-
-    private fun getUName(sceneName: String): String {
-        var uName = PinYin.getPinYinHeader(sceneName)
-        var repeated = false
-        var i = 1
-        do {
-            userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
-                createCriteria().andEqualTo("acountname", uName)
-            }).let {
-                repeated = it.isNotEmpty()
-                if (repeated) {
-                    uName += i
-                }
-            }
-            i++
-        } while (repeated && i < 20)
-        return uName
-    }
-
-    override fun autoCreateAccount() {
-        val sceneList = scenseMapper.selectNoAccountScene()
-        sceneList.forEach {
-            createAccount(it)
+    override fun createAccountTZ(userinfo: Userinfo, scence: Scense): UserinfoTZ {
+        val userinfoTZ = UserinfoTZ()
+        BeanUtils.copyProperties(userinfo, userinfoTZ)
+        // 浣跨敤鏂扮殑id
+        userinfoTZ.guid = UUIDGenerator.generate16ShortUUID()
+        // 娣诲姞鍖哄幙鎻忚堪
+        // FIXME: 2024/4/23 鐩墠鍦˙aseInfo鍩虹淇℃伅涓凡瀛樺偍瀹屾暣鐨勮鏀垮尯鍒掞紝鍚庣画搴斿皢姝ゅ璁板綍鍘婚櫎
+        userinfoTZ.extension1 = userinfoTZ.remark
+        userinfoTZ.remark = null
+        // 鍦烘櫙绫诲瀷杞崲
+        userinfoTZ.extension2 = Constant.SceneType.typeMap(scence.typeid)?.toString()
+        // 鏍规嵁acountname鍜宺ealname杩涜閲嶅鍒ゆ柇
+        userInfoTZRep.findOne(UserinfoTZ().apply {
+            acountname = userinfoTZ.acountname
+            realname = userinfoTZ.realname
+        }).takeIf { it == null }.run {
+            // 褰撴病鏈夋煡璇㈢粨鏋滄椂锛屾彃鍏ユ柊璐︽埛淇℃伅
+            userInfoTZRep.insert(userinfoTZ)
         }
-    }
-
-    private fun createAccount(sence: Scense) {
-        sence.let {
-            val sceneName = it.name ?: return
-            val uName = getUName(sceneName)
-
-            val userInfo = Userinfo().apply {
-                guid = UUIDGenerator.generate16ShortUUID()
-                acountname = uName
-                realname = sceneName
-                password = "123456"
-                usertypeid = 3
-                usertype = "浼佷笟"
-                dGuid = it.guid
-                departmentname = sceneName
-                isenable = true
-                remark = it.districtname
-            }
-
-            val r = userinfoMapper.insert(userInfo)
-            if (r == 1) {
-                println("${userInfo.guid}--${userInfo.acountname}--${userInfo.realname}")
-            }
-        }
+        return userinfoTZ
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3