feiyu02
2024-11-19 752e00503f672ddfe2066afb6c235721a3a912b5
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/AuthServiceImpl.kt
@@ -7,6 +7,7 @@
import cn.flightfeather.supervision.infrastructure.utils.PinYin
import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator
import cn.flightfeather.supervision.lightshare.service.AuthService
import cn.flightfeather.supervision.lightshare.vo.AuthSceneIndVo
import cn.flightfeather.supervision.lightshare.vo.AuthSceneRestVo
import cn.flightfeather.supervision.lightshare.vo.AuthSceneVo
import cn.flightfeather.supervision.lightshare.vo.BaseResponse
@@ -14,6 +15,7 @@
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import tk.mybatis.mapper.entity.Example
import java.util.*
@Service
class AuthServiceImpl(
@@ -25,7 +27,9 @@
    private val fumePurifyDeviceMapper: FumePurifyDeviceMapper,
    private val monitorDeviceMapper: MonitorDeviceMapper,
    private val restaurantBaseInfoMapper: RestaurantBaseInfoMapper,
    private val vehicleBaseInfoMapper: VehicleBaseInfoMapper
    private val vehicleBaseInfoMapper: VehicleBaseInfoMapper,
    private val industrialBaseInfoMapper: IndustrialBaseInfoMapper,
    private val vocPurifyDeviceMapper: VocPurifyDeviceMapper,
): AuthService {
    @Transactional
@@ -43,6 +47,17 @@
            bInfo.ciGuid = company.ciGuid
            bInfo.ciName = company.ciName
            baseInfoMapper.updateByPrimaryKeySelective(bInfo)
        } else if (bInfo == null) {
            val userInfo = userinfoMapper.selectByPrimaryKey(wxUser.uiGuid)
            val baseInfo = BaseInfo().apply {
                biGuid = wxUser.uiGuid
                biName = userInfo?.realname
                ciGuid = company.ciGuid
                ciName = company.ciName
                biCreateTime = Date()
                biExtension1 = userInfo?.acountname
            }
            baseInfoMapper.insertSelective(baseInfo)
        }
        if (wxUser.ciGuid != company.ciGuid) {
            wxUser.ciGuid = company.ciGuid
@@ -61,25 +76,34 @@
        var bInfo = if (wxUser.uiGuid == null) null else baseInfoMapper.selectByPrimaryKey(wxUser.uiGuid)
        if (bInfo == null) {
            val cInfo = if (wxUser.ciGuid == null) null else companyMapper.selectByPrimaryKey(wxUser.ciGuid)
            val name = getUName(asVo.biName ?: "")
            //新建场景账号及场景信息
            val newUser = Userinfo().apply {
                guid = UUIDGenerator.generate16ShortUUID()
                acountname = name
                realname = asVo.biName
                password = "123456"
                usertypeid = 3
                usertype = "企业"
                isenable = true
                if (asVo.biLocation.isNotEmpty()) extension1 = asVo.biLocation[2]
                extension2 = sceneType.toString()
            val user = userinfoMapper.selectByPrimaryKey(wxUser.uiGuid)
            if (user == null) {
                val name = getUName(asVo.biName ?: "")
                //新建场景账号及场景信息
                val user = Userinfo().apply {
                    guid = UUIDGenerator.generate16ShortUUID()
                    acountname = name
                    realname = asVo.biName
                    password = "123456"
                    usertypeid = 3
                    usertype = "企业"
                    isenable = true
                    if (asVo.biLocation.isNotEmpty()) extension1 = asVo.biLocation[2]
                    extension2 = sceneType.toString()
                }
                userinfoMapper.insert(user)
            } else {
                user.apply {
                    realname = asVo.biName
                    if (asVo.biLocation.isNotEmpty()) extension1 = asVo.biLocation[2]
                }
                userinfoMapper.updateByPrimaryKeySelective(user)
            }
            bInfo = asVo.toNewBaseInfo(newUser, cInfo)
            userinfoMapper.insert(newUser)
            bInfo = asVo.toNewBaseInfo(user, cInfo)
            baseInfoMapper.insert(bInfo)
        } else {
            val userInfo = userinfoMapper.selectByPrimaryKey(bInfo.biGuid)
            userInfo.apply {
            userInfo?.apply {
                realname = asVo.biName
                if (asVo.biLocation.isNotEmpty()) extension1 = asVo.biLocation[2]
            }
@@ -136,7 +160,18 @@
                val info = gson.fromJson(sceneInfo, AuthSceneVo::class.java)
            }
            SceneType.Industrial.value -> {
                val info = gson.fromJson(sceneInfo, AuthSceneVo::class.java)
                val info = gson.fromJson(sceneInfo, AuthSceneIndVo::class.java)
                //工业企业基本信息录入
                var rbInfo = industrialBaseInfoMapper.selectByPrimaryKey(userId)
                if (rbInfo == null) {
                    rbInfo = info.toNewIndInfo(userId)
                    industrialBaseInfoMapper.insert(rbInfo)
                } else {
                    info.updateIndInfo(rbInfo)
                    industrialBaseInfoMapper.updateByPrimaryKeySelective(rbInfo)
                }
//                industrialBaseInfoMapper
//                vocPurifyDeviceMapper
            }
            SceneType.VehicleRepair.value -> {
                val info = gson.fromJson(sceneInfo, AuthSceneVo::class.java)
@@ -150,6 +185,8 @@
    override fun authPersonal(wxUserId: String, personalInfo: PersonalInfo): BaseResponse<String> {
        val wxUser = userInfoWxMapper.selectByPrimaryKey(wxUserId) ?: return BaseResponse(false, "用户微信id不存在")
        personalInfo.piExtension3 = AuthenticationStatus.YES.des
        personalInfo.piWxId = wxUserId
        personalInfo.piSceneId = wxUser.uiGuid
        if (personalInfo.piGuid == null) {
            personalInfo.piGuid = UUIDGenerator.generate16ShortUUID()
            personalInfoMapper.insert(personalInfo)
@@ -180,12 +217,16 @@
                }
            }
            //判断个人信息是否认证
            if (wxUser.piGuid != null) {
                personalInfoMapper.selectByPrimaryKey(wxUser.piGuid)?.let { p ->
            if (wxUser.uiGuid != null) {
                personalInfoMapper.selectByExample(Example(PersonalInfo::class.java).apply {
                    createCriteria().andEqualTo("piSceneId", wxUser.uiGuid)
                        .andEqualTo("piWxId", wxUser.uiOpenId)
                })?.takeIf { it.isNotEmpty() }?.get(0)?.let { p ->
                    if (p.piExtension3 == AuthenticationStatus.YES.des) status[2] = true
                }
            }
        }else if (userId != null) {
        }
        if (userId != null) {
            val user = userinfoMapper.selectByPrimaryKey(userId) ?: return BaseResponse(false, "该场景账户不存在")
            val baseInfo = baseInfoMapper.selectByPrimaryKey(userId)
            //判断企业信息是否认证
@@ -197,7 +238,37 @@
            //判断场景信息是否认证
            if (baseInfo?.biExtension3 == AuthenticationStatus.YES.des) status[1] = true
            //判断个人信息是否认证
            // TODO: 2022/10/11 此分支下暂时无个人认证
            userInfoWxMapper.selectByExample(Example(UserInfoWx::class.java).apply {
                createCriteria().andEqualTo("uiGuid", userId)
            })?.takeIf { it.isNotEmpty() }?.get(0)?.let {
                personalInfoMapper.selectByExample(Example(PersonalInfo::class.java).apply {
                    createCriteria().andEqualTo("piSceneId", it.uiGuid)
                        .andEqualTo("piWxId", it.uiOpenId)
                })?.takeIf { it.isNotEmpty() }?.get(0)?.let { p ->
                    if (p.piExtension3 == AuthenticationStatus.YES.des) status[2] = true
                }
            }
        }
        return BaseResponse(true, data = status)
    }
    override fun sceneAuthStatus(userId: String?): BaseResponse<List<Boolean>> {
        val status = mutableListOf(false, false, false)
        val base = baseInfoMapper.selectByPrimaryKey(userId) ?: return BaseResponse(false, "该微信账户不存在")
        //判断企业信息是否认证
        if (base.ciGuid != null) {
            companyMapper.selectByPrimaryKey(base.ciGuid)?.let { c ->
                if (c.ciExtension3 == AuthenticationStatus.YES.des) status[0] = true
            }
        }
        //判断场景信息是否认证
        if (base.biExtension3 == AuthenticationStatus.YES.des) status[1] = true
        //判断个人信息是否认证
        personalInfoMapper.selectByExample(Example(PersonalInfo::class.java).apply {
            createCriteria().andEqualTo("piSceneId", base.biGuid)
        })?.takeIf { it.isNotEmpty() }?.get(0)?.let { p ->
            if (p.piExtension3 == AuthenticationStatus.YES.des) status[2] = true
        }
        return BaseResponse(true, data = status)
@@ -221,4 +292,9 @@
        if (repeated) uName = UUIDGenerator.generateShortUUID()
        return uName
    }
    override fun getUnAuthedUsers(): BaseResponse<List<Userinfo?>> {
        val res = userinfoMapper.getUnAuthedUsers()
        return BaseResponse(true, data = res)
    }
}