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 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,
|
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)
|
val result = userinfoMapper.selectByExample(example)
|
return if (result.isNotEmpty()) {
|
result[0]
|
} else {
|
userinfo.apply {
|
guid = "null"
|
usertypeid = -1
|
}
|
}
|
}
|
|
override fun findByType(typeId: Byte): List<Userinfo> {
|
val result = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
|
createCriteria().andEqualTo("usertypeid", typeId)
|
})
|
|
return result
|
}
|
|
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 {
|
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 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 Userinfo()
|
|
val sceneName = it.name ?: return Userinfo()
|
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) {
|
return userInfo
|
} else {
|
return Userinfo()
|
}
|
}
|
}
|
|
override fun createAccountTZ(userinfo: Userinfo, scence: Scense): UserinfoTZ {
|
val userinfoTZ = UserinfoTZ()
|
BeanUtils.copyProperties(userinfo, userinfoTZ)
|
// 使用新的id
|
userinfoTZ.guid = UUIDGenerator.generate16ShortUUID()
|
// 添加区县描述
|
// FIXME: 2024/4/23 目前在BaseInfo基础信息中已存储完整的行政区划,后续应将此处记录去除
|
userinfoTZ.extension1 = userinfoTZ.remark
|
userinfoTZ.remark = null
|
// 场景类型转换
|
userinfoTZ.extension2 = Constant.SceneType.typeMap(scence.typeid)?.toString()
|
// 根据acountname和realname进行重复判断
|
userInfoTZRep.findOne(UserinfoTZ().apply {
|
acountname = userinfoTZ.acountname
|
realname = userinfoTZ.realname
|
}).takeIf { it == null }.run {
|
// 当没有查询结果时,插入新账户信息
|
userInfoTZRep.insert(userinfoTZ)
|
}
|
return userinfoTZ
|
}
|
}
|