package com.qryord.project.master.roleField.service.impl;

import com.qryord.common.enums.EDelete;
import com.qryord.common.enums.EYesNo;
import com.qryord.common.utils.DateUtils;
import com.qryord.common.utils.security.ShiroUtils;
import com.qryord.common.utils.text.Convert;
import com.qryord.project.master.roleField.domain.RoleField;
import com.qryord.project.master.roleField.mapper.RoleFieldMapper;
import com.qryord.project.master.roleField.service.IRoleFieldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

/**
 * 角色字段控制Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-08-06
 */
@Service
public class RoleFieldServiceImpl implements IRoleFieldService 
{
    @Autowired
    private RoleFieldMapper roleFieldMapper;

    /**
     * 查询角色字段控制
     * 
     * @param id 角色字段控制主键
     * @return 角色字段控制
     */
    @Override
    public RoleField selectRoleFieldById(Long id)
    {
        return roleFieldMapper.selectRoleFieldById(id);
    }

    /**
     * 查询角色字段控制列表
     * 
     * @param roleField 角色字段控制
     * @return 角色字段控制
     */
    @Override
    public List<RoleField> selectRoleFieldList(RoleField roleField)
    {
        return roleFieldMapper.selectRoleFieldList(roleField);
    }

    /**
     * 新增角色字段控制
     * 
     * @param roleField 角色字段控制
     * @return 结果
     */
    @Override
    public int insertRoleField(RoleField roleField)
    {
        roleField.setCreateTime(DateUtils.getNowDate());
        return roleFieldMapper.insertRoleField(roleField);
    }

    /**
     * 修改角色字段控制
     * 
     * @param roleField 角色字段控制
     * @return 结果
     */
    @Override
    public int updateRoleField(RoleField roleField)
    {
        roleField.setUpdateTime(DateUtils.getNowDate());
        return roleFieldMapper.updateRoleField(roleField);
    }

    /**
     * 批量删除角色字段控制
     * 
     * @param ids 需要删除的角色字段控制主键
     * @return 结果
     */
    @Override
    public int deleteRoleFieldByIds(String ids)
    {
        return roleFieldMapper.deleteRoleFieldByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除角色字段控制信息
     * 
     * @param id 角色字段控制主键
     * @return 结果
     */
    @Override
    public int deleteRoleFieldById(Long id)
    {
        return roleFieldMapper.deleteRoleFieldById(id);
    }

    /**
     * 更新角色字段控制可见信息
     *
     * @param roleField 角色字段控制
     * @return 结果
     */
    @Override
    public int changeShowFlag(RoleField roleField) {

        // 如果ID为空，则说明该记录还没不存在，需要新建。
        if (roleField.getId() == null || roleField.getId() == 0L) {
            RoleField newRf = new RoleField();

            newRf.setRoleKey(roleField.getRoleKey());
            newRf.setFieldKey(roleField.getFieldKey());
            newRf.setShowFlag(EYesNo.YES.getVal());
            newRf.setDelFlag(EDelete.FALSE.getVal());
            newRf.setCreateBy(roleField.getUpdateBy());
            newRf.setUpdateBy(roleField.getUpdateBy());
            newRf.setCreateTime(roleField.getUpdateTime());
            newRf.setUpdateTime(roleField.getUpdateTime());
            return roleFieldMapper.insertRoleField(newRf);
        }

        RoleField oldRf = roleFieldMapper.selectRoleFieldById(roleField.getId());
        String shelfFlag = EYesNo.YES.getVal().equals(oldRf.getShowFlag()) ? EYesNo.NO.getVal()
                : EYesNo.YES.getVal();
        roleField.setShowFlag(shelfFlag);
        roleField.setUpdateBy(ShiroUtils.getLoginName());
        roleField.setUpdateTime(new Date());
        return roleFieldMapper.updateRoleField(roleField);
    }

    /**
     * 查询角色字段控制列表
     *
     * @param roleField 角色字段控制
     * @return 角色字段控制
     */
    @Override
    public List<RoleField> selectRoleList(RoleField roleField)
    {
        return roleFieldMapper.selectRoleList(roleField);
    }

    /**
     * 查询角色字段控制列表
     *
     * @param roleField 角色字段控制
     * @return 角色字段控制
     */
    @Override
    public List<RoleField> selectFieldList(RoleField roleField)
    {
        return roleFieldMapper.selectFieldList(roleField);
    }

}
