package com.securitycontrol.background.service.impl;

import com.securitycontrol.background.mapper.UserProMapper;
import com.securitycontrol.background.service.UserProService;
import com.securitycontrol.common.core.domain.Result;
import com.securitycontrol.common.core.utils.aes.StringHelper;
import com.securitycontrol.common.log.annotation.Log;
import com.securitycontrol.entity.background.vo.UserProVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 *
 * @author 黑子
 */
@Service
@Slf4j
public class UserProServiceImpl  implements UserProService {

    @Autowired
    private UserProMapper mapper;

    /**
     *
     * @param dto
     * @return
     */
    @Override
    public List<UserProVo> getUserList(UserProVo dto) {
            return  mapper.getUserList(dto);
    }

    @Override
    public List<UserProVo> getFpProList(UserProVo dto) {
        return  mapper.getFpProList(dto);
    }

    /**
     *  查询 已分配/未分配的工程
     * @param dto
     * @return
     */
    @Override
    public List<UserProVo> getProList(UserProVo dto) {
        return  mapper.getProList(dto);
    }

    /**
     * 用户工程分配
     * @param dto
     * @return
     */
    @Override
    public Result<String> addUserPro(UserProVo dto) {
        try{
            //删除
            String result=checkData(dto);
            if (StringHelper.isNotEmpty(result)) {
                return  Result.fail(result);
            }
            String userId=dto.getUserId();
            List<String> list= Arrays.asList(dto.getBidCode().split("@"));
            //工程分配
            list.forEach(bidCode->{
                  mapper.addUserPro(userId,bidCode);
            });
            return  Result.ok("工程分配成功","工程分配成功");
        }catch (Exception e){
            log.error(e.toString(),e);
            return  Result.fail("系统升级中,请稍后重试");
        }
    }

    /**
     * 删除已分配的工程信息
     * @param dto
     * @return
     */
    @Override
    public Result<String> delUserPro(UserProVo dto) {
        try{
            String userId=dto.getUserId();
            if (StringHelper.isEmpty(dto.getUserId())){
                return Result.fail("用户不能为空");
            }
            if(StringHelper.isEmpty(dto.getBidCode())){
                mapper.deleteUserProByCode(userId,"");
            }else{
                List<String> list= Arrays.asList(dto.getBidCode().split("@"));
                //工程分配
                list.forEach(bidCode->{
                    mapper.deleteUserProByCode(userId,bidCode);
                });
            }
            return  Result.ok("工程移除成功");
        }catch (Exception e){
            log.error(e.toString(),e);
            return  Result.fail("系统升级中,请稍后重试");
        }
    }

    /**
     * 删除用户工程
     * @param dto
     * @return
     */
    public String checkData(UserProVo dto) {
            if (StringHelper.isEmpty(dto.getUserId())){
                return  "用户不能为空";
            }
            if (StringHelper.isEmpty(dto.getBidCode())){
                return  "请选择工程";
            }
            return null;
    }


}
