feiyu02
2026-01-21 fe031e01cc1737c2f05a133fde7c36c7a2a7b4b4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package cn.flightfeather.supervision.domain.repository
 
import cn.flightfeather.supervision.common.exception.BizException
import cn.flightfeather.supervision.domain.entity.BaseInfo
import cn.flightfeather.supervision.domain.entity.UserConfig
import cn.flightfeather.supervision.domain.entity.UserSetting
import cn.flightfeather.supervision.domain.entity.Userinfo
import cn.flightfeather.supervision.domain.mapper.BaseInfoMapper
import cn.flightfeather.supervision.domain.mapper.UserConfigMapper
import cn.flightfeather.supervision.domain.mapper.UserSettingMapper
import cn.flightfeather.supervision.domain.mapper.UserinfoMapper
import org.springframework.stereotype.Repository
import tk.mybatis.mapper.entity.Example
 
@Repository
class UserConfigRep(
    private val userConfigMapper: UserConfigMapper,
    private val userinfoMapper: UserinfoMapper,
    private val baseInfoMapper: BaseInfoMapper,
    private val userSettingMapper: UserSettingMapper,
) {
 
    fun select(configId: Int): UserConfig? {
        return userConfigMapper.selectByPrimaryKey(configId)
    }
 
    /**
     * 获取用户对应的用户配置信息
     * 针对企业用户
     */
    fun getUserConfig(userInfo: Userinfo, baseInfo: BaseInfo?): List<UserConfig?> {
        val res = userConfigMapper.selectByExample(Example(UserConfig::class.java).apply {
            createCriteria().andEqualTo("ucUserTypeId", userInfo.usertypeid)
            userInfo.userSubTypeId?.let {
                and(createCriteria().orEqualTo("ucUserSubtypeId", it)
                    .orIsNull("ucUserSubtypeId"))
            }
            userInfo.extension1?.let {
                and(createCriteria().orEqualTo("ucDistrictName", it)
                    .orIsNull("ucDistrictName"))
            }
            userInfo.extension2?.let {
                and(createCriteria().orEqualTo("ucSceneRange", it)
                    .orIsNull("ucSceneRange"))
            }
            baseInfo?.biProvinceCode?.let {
                and(createCriteria().orEqualTo("ucProvinceCode", it)
                    .orIsNull("ucProvinceCode"))
            }
            baseInfo?.biCityCode?.let {
                and(createCriteria().orEqualTo("ucCityCode", it)
                    .orIsNull("ucCityCode"))
            }
            baseInfo?.biDistrictCode?.let {
                and(createCriteria().orEqualTo("ucDistrictCode", it)
                    .orIsNull("ucDistrictCode"))
            }
            baseInfo?.biTownCode?.let {
                and(createCriteria().orEqualTo("ucTownCode", it)
                    .orIsNull("ucTownCode"))
            }
            baseInfo?.biAreaCode?.let {
                and(createCriteria().orEqualTo("ucAreaCode", it)
                    .orIsNull("ucAreaCode"))
            }
            baseInfo?.biManagementCompanyId?.let {
                and(createCriteria().orEqualTo("ucManagementCompanyId", it)
                    .orIsNull("ucManagementCompanyId"))
            }
        })
//        return if (res.isNotEmpty()) res[0] else null
        return res
    }
 
    fun getUserConfig(userId: String): List<UserConfig?> {
        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList()
        val baseInfo = baseInfoMapper.selectByPrimaryKey(userId)
        return getUserConfig(userInfo, baseInfo)
    }
 
    fun getUserConfigBySubType(userId: String): UserConfig? {
        val configId = userinfoMapper.selectByPrimaryKey(userId)?.userSubTypeId ?: return null
        return userConfigMapper.selectByPrimaryKey(configId)
    }
 
    fun getUserSetting(userId: String): UserSetting? {
        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: throw BizException("该用户不存在")
        val baseInfo = baseInfoMapper.selectByPrimaryKey(userId)
        val userSetting = UserSetting().apply {
            userTypeId = userInfo.usertypeid?.toInt()
            provinceName = baseInfo?.biProvinceName
            cityName = baseInfo?.biCityName
            districtName = baseInfo?.biDistrictName ?: userInfo.extension1
            sceneTypeId = userInfo.extension2?.toInt()
        }
        val res = userSettingMapper.selectBestConfig(userSetting)
 
//        return if (res.isNotEmpty()) res[0] else null
        return res
    }
}