package com.fdkankan.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fdkankan.manage.common.ResultCode;
import com.fdkankan.manage.entity.JySceneAuth;
import com.fdkankan.manage.entity.JySceneUserAuth;
import com.fdkankan.manage.entity.JyUser;
import com.fdkankan.manage.exception.BusinessException;
import com.fdkankan.manage.mapper.IJySceneUserAuthMapper;
import com.fdkankan.manage.service.IJySceneAuthService;
import com.fdkankan.manage.service.IJySceneUserAuthService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.manage.service.IJyUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author
* @since 2023-08-24
*/
@Service
public class JySceneUserAuthServiceImpl extends ServiceImpl implements IJySceneUserAuthService {
@Autowired
IJyUserService jyUserService;
@Autowired
IJySceneAuthService jySceneAuthService;
@Override
public Object getAuthList(String num) {
if(StringUtils.isBlank(num)){
throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
}
JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
if(jySceneAuth == null){
return new JySceneAuth(0);
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JySceneUserAuth::getNum,num);
wrapper.orderByDesc(JySceneUserAuth::getCreateTime);
List list = this.list(wrapper);
if(list.isEmpty()){
return list;
}
List jyUserIds = list.stream().map(JySceneUserAuth::getJyUserId).collect(Collectors.toList());
HashMap map = jyUserService.getByIds(jyUserIds);
for (JySceneUserAuth jySceneUserAuth : list) {
JyUser jyUser = map.get(jySceneUserAuth.getJyUserId());
if(jyUser != null){
jySceneUserAuth.setRyId(jyUser.getRyId());
jySceneUserAuth.setRyNickName(jyUser.getRyNickName());
}
}
jySceneAuth.setUserAuthList(list);
return jySceneAuth;
}
@Override
public void addAuth(JySceneUserAuth param) {
if(param.getAuthType() == null ){
param.setAuthType(0);
}
jySceneAuthService.updateAuthTypeByNum(param.getNum(),param.getAuthType());
if(param.getAuthType() == 1){
return;
}
if(StringUtils.isBlank(param.getRyId()) || StringUtils.isBlank(param.getNum()) ){
throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
}
JyUser jyUser = jyUserService.getByRyId(param.getRyId());
if(jyUser == null){
throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
}
JySceneUserAuth auth = this.getByNumAndJyId(jyUser.getId(),param.getNum());
if(auth != null){
param.setId(auth.getId());
}
param.setJyUserId(jyUser.getId());
this.saveOrUpdate(param);
}
@Override
public void delAuth(JySceneUserAuth param) {
if(param.getId() == null){
throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
}
this.removeById(param.getId());
}
private JySceneUserAuth getByNumAndJyId(Integer jyUserId, String num) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
wrapper.eq(JySceneUserAuth::getNum,num);
return this.getOne(wrapper);
}
@Override
public JySceneUserAuth getByNumAndRyId(String num, String ryId) {
JyUser jyUser = jyUserService.getByRyId(ryId);
if(jyUser == null){
throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
}
return this.getByNumAndJyId(jyUser.getId(),num);
}
}