package com.cpop.core.mapper;

import com.cpop.core.base.enums.UserType;
import com.cpop.core.base.table.SysConfig;
import com.cpop.core.base.table.SysOperationLog;
import com.cpop.core.base.table.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author DB
 * @Description:
 * @create 2023-08-27 10:54
 */
public interface CoreMapper {

    /**
     * @Description: 插入操作日志
     * @param log
     * @return Integer
     * @Author DB
     * @Date: 2023/8/27 10:56
     */
    Boolean insertOperationLog(SysOperationLog log);

    /**
     * @Description: 根据用户名获取用户信息
     * @param username 用户名
     * @param userType 用户类型
     * @return SysUser
     * @Author DB
     * @Date: 2023/8/27 23:39
     */
    SysUser getSysUserByUsername(@Param("username") String username, @Param("userType") String userType);

    /**
     * @Description: 更新登录地址
     * @param ipAddr
     * @param username
     * @return
     * @author DB
     * @Date: 2023/8/28 0028 13:49
     */
    void updateSysUserLoginIp(String ipAddr, String username, String userType);

    /**
     * @Description: 加载参数缓存数据
     * @param
     * @return List<SysConfig>
     * @Author DB
     * @Date: 2023/8/28 22:33
     */
    List<SysConfig> loadingConfigCache();

    /**
     * @Description: 根据键名查询参数配置信息
     * @param configKey
     * @return SysConfig
     * @Author DB
     * @Date: 2023/8/28 22:49
     */
    SysConfig selectConfigByKey(String configKey);

    /**
     * @Description: 新增参数配置
     * @param config
     * @return boolean
     * @Author DB
     * @Date: 2023/8/28 23:03
     */
    boolean insertConfig(SysConfig config);

    /**
     * @Description: 修改参数配置
     * @param config
     * @return boolean
     * @Author DB
     * @Date: 2023/8/28 23:17
     */
    boolean updateConfig(SysConfig config);

    /**
     * @Description: 根据键查询配置
     * @param list
     * @return List<SysConfig>
     * @Author DB
     * @Date: 2023/8/28 23:25
     */
    List<SysConfig> selectConfigByKeys(List<String> list);

    /**
     * @Description: 需要删除的参数ID
     * @param list
     * @return
     * @Author DB
     * @Date: 2023/8/28 23:29
     */
    void deleteConfigByKeys(List<String> list);

    /**
     * @descriptions 新增系统用户
     * @author DB
     * @date 2023/09/08 15:04
     * @param sysUser 系统用户参数
     */
    void insertSysUser(SysUser sysUser);

    /**
     * @descriptions 修改系统用户
     * @author DB
     * @date 2023/09/08 17:21
     * @param sysUser 系统用户参数d
     */
    void updateSysUser(SysUser sysUser);

    /**
     * @descriptions 根据主键删除用户(逻辑删除)
     * @author DB
     * @date 2023/09/08 17:50
     * @param id 主键
     */
    void removeSysUserById(String id);

    /**
     * @Description: 根据用户名获取用户信息
     * @param phoneNumber 手机号
     * @return SysUser
     * @Author: DB
     * @Date: 2023/8/27 23:37
     */
    SysUser getSysUserByPhone(@Param("phoneNumber") String phoneNumber, @Param("userType") String userType);
}
