From 8a0a8adfbe53db564df7aaaf561a60be7d4d8dd0 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 26 九月 2024 17:52:24 +0800
Subject: [PATCH] 1. 新增监管系统中用户模糊搜索功能 2. 新增监测设备和用户的匹配关系搜索功能

---
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/UserInfoSVRep.kt         |   34 ++++++
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/ScenseMapper.kt              |    2 
 src/main/resources/application-test.yml                                                     |    4 
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/UserinfoMapper.kt            |    5 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/DeviceService.kt            |    9 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt           |   19 +++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserMapController.kt            |   10 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserMapService.kt           |    2 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt          |   12 ++
 src/main/resources/mapper/ds1/UserinfoMapper.xml                                            |   87 +++++++++++++++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserinfoServiceImpl.kt |   10 ++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AreaVo.kt                        |   45 ++++++--
 src/main/kotlin/cn/flightfeather/supervision/common/utils/Constant.kt                       |   13 ++
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt              |    4 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DeviceController.kt             |   14 ++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DeviceServiceImpl.kt   |    9 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserMapServiceImpl.kt  |    2 
 17 files changed, 263 insertions(+), 18 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/utils/Constant.kt b/src/main/kotlin/cn/flightfeather/supervision/common/utils/Constant.kt
index 830d9ed..0e08474 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/common/utils/Constant.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/utils/Constant.kt
@@ -7,7 +7,18 @@
         ADMIN(0, "绠$悊鍛�"),
         INSIDER(1, "鍐呴儴浜哄憳"),
         GOV(2, "鏀垮簻閮ㄩ棬"),
-        ENTERPRISE(3, "浼佷笟")
+        ENTERPRISE(3, "浼佷笟");
+
+        companion object {
+            fun fromValue(value: Int?) = when (value) {
+                -1 -> ALL_USER
+                0 -> ADMIN
+                1 -> INSIDER
+                2 -> GOV
+                3 -> ENTERPRISE
+                else -> ALL_USER
+            }
+        }
     }
     //瑙勮寖绫诲埆
     enum class RuleType(val value: Byte, val text: String){
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/ScenseMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/ScenseMapper.kt
index a576989..45d7742 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/ScenseMapper.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/ScenseMapper.kt
@@ -6,7 +6,7 @@
 import org.apache.ibatis.annotations.Select
 
 @Mapper
-interface ScenseMapper:MyMapper<Scense>, MutableList<Scense> {
+interface ScenseMapper : MyMapper<Scense> {
 
     /**
      * 鑾峰彇鏈垱寤虹敤鎴风殑鍦烘櫙
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/UserinfoMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/UserinfoMapper.kt
index 00bd0a8..3141df8 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/UserinfoMapper.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/UserinfoMapper.kt
@@ -2,9 +2,14 @@
 
 import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
 import cn.flightfeather.supervision.domain.util.MyMapper
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import org.apache.ibatis.annotations.Mapper
 
 @Mapper
 interface UserinfoMapper:MyMapper<Userinfo> {
 
+    /**
+     * 鐢ㄦ埛妯$硦鎼滅储
+     */
+    fun searchUser(areaVo: AreaVo, keyword: String, userTypeId: Int): List<Userinfo?>
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
index 7db939a..56e16a5 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
@@ -38,6 +38,10 @@
         })
     }
 
+    fun findSceneList(scene: Scense): List<Scense?> {
+        return scenseMapper.select(scene)
+    }
+
     fun findSceneList(nameList: List<String?>): List<Scense?> {
         return scenseMapper.selectByExample(Example(Scense::class.java).apply {
             createCriteria().andIn("name", nameList)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/UserInfoSVRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/UserInfoSVRep.kt
index d3bc67d..a2fac40 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/UserInfoSVRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/UserInfoSVRep.kt
@@ -1,8 +1,10 @@
 package cn.flightfeather.supervision.domain.ds1.repository
 
+import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.domain.ds1.entity.Scense
 import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
 import cn.flightfeather.supervision.domain.ds1.mapper.UserinfoMapper
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import org.springframework.stereotype.Repository
 import tk.mybatis.mapper.entity.Example
 
@@ -12,6 +14,7 @@
 @Repository
 class UserInfoSVRep(
     private val userinfoMapper: UserinfoMapper,
+    private val sceneRep: SceneRep,
 ) {
 
     /**
@@ -31,4 +34,35 @@
             null
         }
     }
+
+    /**
+     * 妯$硦鎼滅储鐢ㄦ埛
+     * @param areaVo 鏌ヨ鍖哄煙鑼冨洿
+     * @param keyword 鎼滅储鍏抽敭瀛楋紝鍖归厤璐︽埛[Userinfo.acountname]鍜屾樀绉癧Userinfo.realname]
+     * @param userType 鐢ㄦ埛绫诲瀷锛岄粯璁や紒涓歔Constant.UserType.ENTERPRISE]
+     */
+    fun searchUser(
+        areaVo: AreaVo, keyword: String,
+        userType: Constant.UserType = Constant.UserType.ENTERPRISE,
+    ): List<Userinfo?> {
+        return userinfoMapper.searchUser(areaVo, keyword, userType.value)
+//        val userList = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
+//            createCriteria().orLike("realname", "%${keyword}%")
+//                .orLike("acountname", "%${keyword}%")
+//        })
+//        val sceneList = sceneRep.findSceneList(Scense().apply {
+//            provincecode = areaVo.provincecode
+//            citycode = areaVo.citycode
+//            districtcode = areaVo.districtcode
+//            towncode = areaVo.towncode
+//            typeid = areaVo.scensetypeid?.toByteOrNull()
+//            extension1 = if (areaVo.online == true) "1" else "0"
+//        })
+//        return userList.filter { u ->
+//            val scene = sceneList.find { s ->
+//                return@find s?.guid == u.dGuid
+//            }
+//            return@filter scene != null
+//        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/DeviceService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/DeviceService.kt
index fceaf90..096e42a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/DeviceService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/DeviceService.kt
@@ -3,6 +3,11 @@
 import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.domain.ds1.entity.BaseDevice
 import cn.flightfeather.supervision.domain.ds1.entity.DeviceStatus
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import cn.flightfeather.supervision.lightshare.vo.DataHead
+import cn.flightfeather.supervision.lightshare.vo.MonitorDeviceInfoVo
+import io.swagger.annotations.ApiParam
+import org.springframework.web.bind.annotation.RequestParam
 import org.springframework.web.multipart.MultipartFile
 
 interface DeviceService {
@@ -39,4 +44,8 @@
      *鏇存柊璁惧鍙婂浘鐗�
      */
     fun updateDeviceLocation(deviceLocation: String, deleteImg: List<String>, files: Array<MultipartFile>): Int
+
+    fun searchExternalDevice(
+        areaVo: AreaVo, keyword: String, page: Int?, perPage: Int?,
+    ): Pair<DataHead, MonitorDeviceInfoVo>
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserMapService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserMapService.kt
index 41d0c3d..1d418bb 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserMapService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserMapService.kt
@@ -20,5 +20,5 @@
 
     fun autoCreateMap(userList: List<Userinfo?>)
 
-    fun fetchDeviceMap(areaVo: AreaVo): List<DeviceMapVo?>
+    fun fetchDeviceMap(page: Int?, perPage: Int?, areaVo: AreaVo): List<DeviceMapVo?>
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt
index df41591..529580d 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt
@@ -3,6 +3,9 @@
 import cn.flightfeather.supervision.domain.ds1.entity.Scense
 import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
 import cn.flightfeather.supervision.domain.ds2.entity.UserinfoTZ
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import cn.flightfeather.supervision.lightshare.vo.DataHead
+import org.springframework.web.bind.annotation.RequestBody
 
 interface UserinfoService {
     fun findOne(id: String): Userinfo?
@@ -17,12 +20,21 @@
 
     fun delete(id: String): Int
 
+    /**
+     * 鏍规嵁璐︽埛鍚嶇О妯$硦鎼滅储
+     */
+    fun search(areaVo: AreaVo, keyword: String, userType: Int?, page: Int?, perPage: Int?)
+            : Pair<DataHead, List<Userinfo?>>
+
     fun findOneByName(userinfo: Userinfo): Userinfo?
 
     fun createAccount(sceneId: String): Userinfo
 
     fun findByScene(sceneId: String): Userinfo?
 
+    /**
+     * 鏍规嵁鍦烘櫙鍚嶇О锛岃幏鍙栧悎閫傜殑璐︽埛鍚�
+     */
     fun getUName(sceneName: String): String
 
     fun autoCreateAccount()
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DeviceServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DeviceServiceImpl.kt
index 619c65d..9dea773 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DeviceServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DeviceServiceImpl.kt
@@ -8,6 +8,9 @@
 import cn.flightfeather.supervision.domain.ds1.entity.*
 import cn.flightfeather.supervision.domain.ds1.repository.DeviceRep
 import cn.flightfeather.supervision.lightshare.service.DeviceService
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import cn.flightfeather.supervision.lightshare.vo.DataHead
+import cn.flightfeather.supervision.lightshare.vo.MonitorDeviceInfoVo
 import com.google.gson.Gson
 import org.springframework.beans.factory.annotation.Value
 import org.springframework.stereotype.Service
@@ -112,4 +115,10 @@
         obj.dlPicUrl = oldImg.joinToString(";")
         return deviceRep.updateStatus(obj)
     }
+
+    override fun searchExternalDevice(
+        areaVo: AreaVo, keyword: String, page: Int?, perPage: Int?,
+    ): Pair<DataHead, MonitorDeviceInfoVo> {
+        TODO("Not yet implemented")
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserMapServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserMapServiceImpl.kt
index 348af4d..234838d 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserMapServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/UserMapServiceImpl.kt
@@ -96,7 +96,7 @@
         }
     }
 
-    override fun fetchDeviceMap(areaVo: AreaVo): List<DeviceMapVo?> {
+    override fun fetchDeviceMap(page: Int?, perPage: Int?, areaVo: AreaVo): List<DeviceMapVo?> {
         // 1.閫氳繃鍖哄煙鏉′欢鑾峰彇涓讳綋鐢ㄦ埛
         val userIdList = when (areaVo.sourceType) {
             //浠ラ缇界幆澧冪郴缁熶腑鐨勭敤鎴蜂负涓讳綋
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 9b20267..6de4b92 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
@@ -14,6 +14,8 @@
 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
@@ -69,6 +71,14 @@
 
     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 }
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AreaVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AreaVo.kt
index 972d163..104ab39 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AreaVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AreaVo.kt
@@ -2,43 +2,66 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat
 import com.fasterxml.jackson.annotation.JsonInclude
+import io.swagger.annotations.ApiModel
+import io.swagger.annotations.ApiModelProperty
 import java.time.LocalDateTime
 
 /**
  * 鍖哄煙鏉′欢
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
-open class AreaVo{
-    // 琛屾斂鍖哄垝
+@ApiModel("鍖哄煙鏉′欢")
+open class AreaVo {
+    @ApiModelProperty("鐪佷唤缂栫爜")
     var provincecode: String? = null
+
+    @ApiModelProperty("鐪佷唤鍚嶇О")
     var provincename: String? = null
+
+    @ApiModelProperty("鍩庡競缂栫爜")
     var citycode: String? = null
+
+    @ApiModelProperty("鍩庡競鍚嶇О")
     var cityname: String? = null
+
+    @ApiModelProperty("鍖哄幙缂栫爜")
     var districtcode: String? = null
+
+    @ApiModelProperty("鍖哄幙鍚嶇О")
     var districtname: String? = null
+
+    @ApiModelProperty("琛楅晣缂栫爜")
     var towncode: String? = null
+
+    @ApiModelProperty("琛楅晣鍚嶇О")
     var townname: String? = null
 
-    // 鏃堕棿鑼冨洿,鏍煎紡yyyy-MM-dd HH:mm:ss
+    @ApiModelProperty("璧峰鏃堕棿锛屾牸寮� yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     var starttime: LocalDateTime? = null
+
+    @ApiModelProperty("缁撴潫鏃堕棿锛屾牸寮� yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     var endtime: LocalDateTime? = null
 
-    // 鍦烘櫙id
+    @ApiModelProperty("鍦烘櫙涓婚敭id")
     var sceneId: String? = null
-    // 鍦烘櫙鍚嶇О
+
+    @ApiModelProperty("鍦烘櫙鍚嶇О")
     var sceneName: String? = null
-    // 鍦烘櫙绫诲瀷
+
+    @ApiModelProperty("鍦烘櫙绫诲瀷id")
     var scensetypeid: String? = null
 
-    // 鏄惁涓婄嚎
+    @ApiModelProperty("鏄惁涓婄嚎")
     var online: Boolean? = null
 
-    // 涓绘暟鎹簮锛�1锛氫互椋炵窘鐜绯荤粺涓殑鐢ㄦ埛涓轰富浣擄紱2锛氫互椋炵窘鐩戠绯荤粺涓殑鐢ㄦ埛涓轰富浣�
-    var sourceType:Int = 1
+    @ApiModelProperty("涓绘暟鎹簮", allowableValues = "1锛氫互椋炵窘鐜绯荤粺涓殑鐢ㄦ埛涓轰富浣擄紱2锛氫互椋炵窘鐩戠绯荤粺涓殑鐢ㄦ埛涓轰富浣�")
+    var sourceType: Int = 1
 
-    // 鏌ヨ鎺掑簭
-    var sort:String? = "asc"
+    @ApiModelProperty("鏌ヨ鎺掑簭", allowableValues = "asc锛氭搴�, desc锛氬�掑簭")
+    var sort: String? = "asc"
+
+    @ApiModelProperty("鎺掑簭瀛楁", allowableValues = "pro: 鎸夌収闂鏁版帓搴忥紝changePer锛氭寜鐓ф暣鏀圭巼鎺掑簭")
     var sortBy: String? = null
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DeviceController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DeviceController.kt
index c20ade5..96e94e5 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DeviceController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DeviceController.kt
@@ -3,6 +3,7 @@
 import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.domain.ds1.entity.MonitorDeviceInfo
 import cn.flightfeather.supervision.lightshare.service.DeviceService
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import io.swagger.annotations.Api
 import io.swagger.annotations.ApiOperation
 import io.swagger.annotations.ApiParam
@@ -57,4 +58,17 @@
         @ApiParam("鍒犻櫎鐨勮澶囧浘鐗囪矾寰�") @RequestParam("deleteImg") deleteImg: List<String>,
         @ApiParam("璁惧鍥剧墖") @RequestPart("images") images: Array<MultipartFile>,
     ) = resPack { deviceService.updateDeviceLocation(status, deleteImg, images) }
+
+    @ApiOperation("鏌ヨ浠庡閮ㄨ幏鍙栫殑璁惧淇℃伅")
+    @PostMapping("/external/search")
+    fun searchExternalDevice(
+        @ApiParam("鍖哄煙鏉′欢淇℃伅") @RequestBody
+        areaVo: AreaVo,
+        @ApiParam("鎼滅储鍏抽敭瀛楋紝鍖归厤璁惧缂栧彿鍜岀偣浣嶅悕绉�") @RequestParam
+        keyword: String,
+        @ApiParam("鏌ヨ椤电爜", defaultValue = "1", required = false) @RequestParam("page", required = false)
+        page: Int?,
+        @ApiParam("鍗曢〉鏁版嵁閲�", defaultValue = "30", required = false) @RequestParam("per_page", required = false)
+        perPage: Int?,
+    ) = resPack { deviceService.searchExternalDevice(areaVo, keyword, page, perPage) }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserMapController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserMapController.kt
index 3d31eaf..31e8f9d 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserMapController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserMapController.kt
@@ -4,6 +4,7 @@
 import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import io.swagger.annotations.Api
 import io.swagger.annotations.ApiOperation
+import io.swagger.annotations.ApiParam
 import org.springframework.web.bind.annotation.*
 
 @Api(tags = ["UserMapController"], description = "鐢ㄦ埛id瀵瑰簲API鎺ュ彛")
@@ -21,5 +22,12 @@
 
     @ApiOperation(value = "鑾峰彇鍖哄煙鐢ㄦ埛鐨勭洃娴嬭澶囧拰椋炵窘鐩戠绯荤粺銆侀缇界幆澧冪郴缁熺殑鍖归厤璁板綍")
     @PostMapping("/device")
-    fun fetchDeviceMap(@RequestBody areaVo: AreaVo) = resPack { userMapService.fetchDeviceMap(areaVo) }
+    fun fetchDeviceMap(
+        @ApiParam("鏌ヨ椤电爜", defaultValue = "1", required = false) @RequestParam("page", required = false)
+        page: Int?,
+        @ApiParam("鍗曢〉鏁版嵁閲�", defaultValue = "30", required = false) @RequestParam("per_page", required = false)
+        perPage: Int?,
+        @ApiParam("鍖哄煙鏉′欢淇℃伅") @RequestBody
+        areaVo: AreaVo
+    ) = resPack { userMapService.fetchDeviceMap(page, perPage, areaVo) }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt
index 4f7e412..c9ad232 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt
@@ -2,7 +2,10 @@
 
 import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
 import cn.flightfeather.supervision.lightshare.service.UserinfoService
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import io.swagger.annotations.Api
+import io.swagger.annotations.ApiOperation
+import io.swagger.annotations.ApiParam
 import org.springframework.web.bind.annotation.*
 
 @Api(tags = ["UserinfoController"], description = "鐢ㄦ埛淇℃伅API鎺ュ彛")
@@ -28,6 +31,22 @@
     @DeleteMapping("/{id}")
     fun delete(@PathVariable id: String) = userinfoService.delete(id)
 
+    @ApiOperation(value = "妯$硦鎼滅储鐢ㄦ埛淇℃伅")
+    @PostMapping("/search")
+    fun search(
+        @ApiParam("鍖哄煙鏉′欢淇℃伅") @RequestBody
+        areaVo: AreaVo,
+        @ApiParam("鎼滅储鍏抽敭瀛楋紝鍖归厤鐢ㄦ埛璐︽埛鍚嶅拰鏄电О") @RequestParam
+        keyword: String,
+        @ApiParam("鐢ㄦ埛绫诲瀷", example = "0:绠$悊鍛�;1:鍐呴儴浜哄憳;2:鏀垮簻閮ㄩ棬;3:浼佷笟", defaultValue = "3", required = false)
+        @RequestParam(required = false)
+        userType: Int?,
+        @ApiParam("鏌ヨ椤电爜", defaultValue = "1", required = false) @RequestParam("page", required = false)
+        page: Int?,
+        @ApiParam("鍗曢〉鏁版嵁閲�", defaultValue = "30", required = false) @RequestParam("per_page", required = false)
+        perPage: Int?,
+    ) = resPack { userinfoService.search(areaVo, keyword, userType, page, perPage) }
+
     @PostMapping("/login")
     fun getByName(@RequestBody userinfo: Userinfo) = userinfoService.findOneByName(userinfo)
 
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 7541789..aa6b7d0 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -11,12 +11,12 @@
       #      username: root
       #      password: cn.FLIGHTFEATHER
 
-      #-杩滅▼娴嬭瘯鏈嶅姟鍣�-
+      #-杩滅▼姝e紡鏈嶅姟鍣紙鏆傚仛娴嬭瘯锛�-
       url: jdbc:mysql://47.100.191.150:3306/supervision?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
       username: remoteU1
       password: eSoF8DnzfGTlhAjE
     ds2:
-      #-杩滅▼娴嬭瘯鏈嶅姟鍣�-
+      #-杩滅▼姝e紡鏈嶅姟鍣紙鏆傚仛娴嬭瘯锛�-
       url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
       username: remoteU1
       password: eSoF8DnzfGTlhAjE
diff --git a/src/main/resources/mapper/ds1/UserinfoMapper.xml b/src/main/resources/mapper/ds1/UserinfoMapper.xml
new file mode 100644
index 0000000..1344052
--- /dev/null
+++ b/src/main/resources/mapper/ds1/UserinfoMapper.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.flightfeather.supervision.domain.ds1.mapper.UserinfoMapper">
+  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.ds1.entity.Userinfo">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="UI_GUID" jdbcType="VARCHAR" property="guid" />
+    <result column="UI_AcountName" jdbcType="VARCHAR" property="acountname" />
+    <result column="UI_RealName" jdbcType="VARCHAR" property="realname" />
+    <result column="UI_Password" jdbcType="VARCHAR" property="password" />
+    <result column="UI_UserTypeID" jdbcType="TINYINT" property="usertypeid" />
+    <result column="UI_UserType" jdbcType="VARCHAR" property="usertype" />
+    <result column="D_GUID" jdbcType="VARCHAR" property="dGuid" />
+    <result column="UI_DepartmentName" jdbcType="VARCHAR" property="departmentname" />
+    <result column="UI_IsEnable" jdbcType="BIT" property="isenable" />
+    <result column="UI_WorkNo" jdbcType="VARCHAR" property="workno" />
+    <result column="UI_Telephone" jdbcType="VARCHAR" property="telephone" />
+    <result column="UI_WechatID" jdbcType="VARCHAR" property="wechatid" />
+    <result column="UI_Extension1" jdbcType="VARCHAR" property="extension1" />
+    <result column="UI_Extension2" jdbcType="VARCHAR" property="extension2" />
+    <result column="UI_Extension3" jdbcType="VARCHAR" property="extension3" />
+    <result column="UI_Remark" jdbcType="VARCHAR" property="remark" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    UI_GUID, UI_AcountName, UI_RealName, UI_Password, UI_UserTypeID,
+    UI_UserType, D_GUID, UI_DepartmentName, UI_IsEnable,
+    UI_WorkNo, UI_Telephone, UI_WechatID, UI_Extension1,
+    UI_Extension2, UI_Extension3, UI_Remark
+  </sql>
+
+  <select id="searchUser" resultMap="BaseResultMap">
+    SELECT
+    a.*
+    FROM
+    sm_t_userinfo AS a
+    LEFT JOIN sm_t_scense AS b ON a.D_GUID = b.S_GUID
+    WHERE
+    (a.UI_WorkNo IS NULL OR a.UI_WorkNo != 'test')
+    <if test="areaVo.provincecode != null">
+      AND b.S_ProvinceCode = #{areaVo.provincecode}
+    </if>
+    <if test="areaVo.provincename != null">
+      AND b.S_ProvinceName = #{areaVo.provincename}
+    </if>
+    <if test="areaVo.citycode != null">
+      AND b.S_CityCode = #{areaVo.citycode}
+    </if>
+    <if test="areaVo.cityname != null">
+      AND b.S_CityName = #{areaVo.cityname}
+    </if>
+    <if test="areaVo.districtcode != null">
+      AND b.S_DistrictCode = #{areaVo.districtcode}
+    </if>
+    <if test="areaVo.districtname != null">
+      AND b.S_DistrictName = #{areaVo.districtname}
+    </if>
+    <if test="areaVo.towncode != null">
+      AND b.S_TownCode = #{areaVo.towncode}
+    </if>
+    <if test="areaVo.townname != null">
+      AND b.S_TownName = #{areaVo.townname}
+    </if>
+    <if test="areaVo.scensetypeid != null">
+      AND b.S_TypeID = #{areaVo.scensetypeid}
+    </if>
+    <if test="areaVo.online == true">
+      AND b.S_Extension1 = '1'
+    </if>
+    <if test="areaVo.online == false">
+      AND b.S_Extension1 = '0'
+    </if>
+    <if test="userTypeId != null">
+      AND a.UI_UserTypeID = #{userTypeId}
+    </if>
+    <if test="keyword != null and keyword != ''">
+      AND (
+        a.UI_AcountName LIKE CONCAT('%', #{keyword}, '%')
+        OR
+        a.UI_RealName LIKE CONCAT('%', #{keyword}, '%')
+      )
+    </if>
+  </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3