package cn.flightfeather.supervision.lightshare.service.Impl
|
|
import cn.flightfeather.supervision.common.exception.BizException
|
import cn.flightfeather.supervision.domain.entity.CommitmentTemplate
|
import cn.flightfeather.supervision.domain.entity.SceneType
|
import cn.flightfeather.supervision.domain.entity.UserConfig
|
import cn.flightfeather.supervision.domain.mapper.*
|
import cn.flightfeather.supervision.domain.repository.UserConfigRep
|
import cn.flightfeather.supervision.lightshare.service.ConfigService
|
import cn.flightfeather.supervision.lightshare.vo.UserSearchCondition
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
|
@Service
|
class ConfigServiceImpl(
|
private val userinfoMapper: UserinfoMapper,
|
private val userConfigMapper: UserConfigMapper,
|
private val baseInfoMapper: BaseInfoMapper,
|
private val commitmentTemplateMapper: CommitmentTemplateMapper,
|
private val sceneTypeMapper: SceneTypeMapper,
|
private val userConfigRep: UserConfigRep
|
) : ConfigService {
|
|
override fun getSceneRange(userId: String): List<Pair<String?, String?>>? {
|
val config = userConfigRep.getUserConfigBySubType(userId)
|
// 用户没有关联配置或者配置中可访问的场景类型为空时,返回所有类型
|
val result = if (config == null || config.ucSceneRange == null) {
|
val types = sceneTypeMapper.selectByExample(Example(SceneType::class.java).apply {
|
createCriteria().andIsNull("scTag")
|
orderBy("scIndex")
|
})
|
if (types.isNotEmpty()) {
|
types.map { Pair(it?.scId.toString(), it?.scName) }
|
} else {
|
cn.flightfeather.supervision.domain.enumeration.SceneType.toPairList()
|
}
|
} else {
|
config.ucSceneRange?.split(";")?.let {sr ->
|
sceneTypeMapper.selectByExample(Example(SceneType::class.java).apply {
|
createCriteria().andIn("scId", sr)
|
orderBy("scIndex")
|
}).map { Pair(it?.scId.toString(), it?.scName) }
|
}
|
}
|
return result
|
}
|
|
override fun getCommitmentTemplate(condition: UserSearchCondition): CommitmentTemplate? {
|
commitmentTemplateMapper.selectByExample(Example(CommitmentTemplate::class.java).apply {
|
createCriteria().andEqualTo("ctProvinceCode", condition.provinceCode)
|
.andEqualTo("ctProvinceName", condition.provinceName)
|
.andEqualTo("ctCityCode", condition.cityCode)
|
.andEqualTo("ctCityName", condition.cityName)
|
.andEqualTo("ctDistrictCode", condition.districtCode)
|
.andEqualTo("ctDistrictName", condition.districtName)
|
.andEqualTo("ctTownCode", condition.townCode)
|
.andEqualTo("ctTownName", condition.townName)
|
.andIn("ctSceneTypeId", condition.sceneTypes)
|
}).let {
|
if (it.isEmpty()) {
|
throw BizException("无相关承诺书模板")
|
}
|
return it[0]
|
}
|
}
|
|
override fun getUserConfig(userId: String): UserConfig? {
|
return userConfigRep.getUserConfigBySubType(userId)
|
}
|
}
|