package com.ssm.manage.dao.impl;

import com.ssm.core.impl.BaseDaoImpl;
import com.ssm.core.mapper.BaseMapper;
import com.ssm.manage.dao.SsmSysMenuPowerDao;
import com.ssm.manage.dao.SsmSysRolePowerDao;
import com.ssm.manage.entity.SysMenuPower;
import com.ssm.manage.entity.SysPower;
import com.ssm.manage.entity.SysRolePower;
import com.ssm.manage.mapper.SysRolePowerMapper;
import com.ssm.manage.query.RolePowerRequest;
import com.ssm.manage.response.UserResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.interceptor.TransactionAspectSupport;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Component
@Slf4j
public class SsmSysRolePowerDaoImpl extends BaseDaoImpl<SysRolePower> implements SsmSysRolePowerDao {
    @Autowired
    private SysRolePowerMapper mapper;


    @Override
    protected BaseMapper<SysRolePower> getMapper() {
        return mapper;
    }

//    @Override
//    public int addRolePower(RolePowerRequest rolePowerRequest, UserResponse userResponse) {
//        SysRolePower sysRolePower = new SysRolePower();
//        sysRolePower.setRoleId(rolePowerRequest.getRoleId());
//        //前台传过来勾选的权限
//        List<SysPower> checkList = rolePowerRequest.getCheckList();
//
//        //处理后数据放的list
//        List<SysRolePower> saveMenuPowerList = new ArrayList<>();
//        //遍历勾选权限 将数据放入list
//        for (SysPower sysPower : checkList) {
//            SysRolePower rolePower = new SysRolePower();
//            rolePower.setRoleId(rolePowerRequest.getRoleId());
//            rolePower.setRoleName(rolePowerRequest.getRoleName());
//            rolePower.setMenuId(rolePowerRequest.getMenuId());
//            rolePower.setMenuName(rolePowerRequest.getMenuName());
//            rolePower.setPowerId(sysPower.getPowerId());
//            rolePower.setPowerName(sysPower.getPowerName());
//            if (userResponse != null){
//                rolePower.setFounder(userResponse.getUserName());
//                rolePower.setFounderDatetime(new Date());
//            }
//            saveMenuPowerList.add(rolePower);
//
//        }
//        //删除当前角色权限
//        int i = 0;
//        try {
//            i = mapper.delete(sysRolePower);
//        }catch (Exception e){
//            log.error("SsmSysRolePowerDaoImpl.addRolePower", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//        }
//        //将前台重新勾选的权限插入表中
//        if (i > 0) {
//            try {
//                i = mapper.addRolePower(saveMenuPowerList);
//            }catch (Exception e){
//                log.error("SsmSysRolePowerDaoImpl.addRolePower", e);
//                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//            }
//        }
//        return i;
//    }

    @Override
    public int addRolePower(RolePowerRequest rolePowerRequest) {
        List<SysRolePower> rolePowerList = new ArrayList<>();


        List<Integer> list = rolePowerRequest.getIds();
        SysRolePower rolePower = new SysRolePower();
        rolePower.setRoleId(rolePowerRequest.getRoleId());
        for (int powerId : list) {
            SysRolePower sysRolePower = new SysRolePower();
            sysRolePower.setPowerId(powerId);
            sysRolePower.setRoleId(rolePowerRequest.getRoleId());
            rolePowerList.add(sysRolePower);
        }
        //删除当前角色权限
        int i = 0;
        try {
            i = mapper.delete(rolePower);
        } catch (Exception e) {
            log.error("SsmSysRolePowerDaoImpl.addRolePower", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
        //将前台重新勾选的权限插入表中

        try {
            i = mapper.addRolePower(rolePowerList);
        } catch (Exception e) {
            log.error("SsmSysRolePowerDaoImpl.addRolePower", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }

        return i;
    }
}
