package com.xhpc.user.service;

import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.system.api.domain.SysRole;
import com.xhpc.system.api.domain.SysUser;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;


/**
 * 用户信息 服务层
 *
 * @author ruoyi
 */
public interface IXhpcUserService {

    /**
     * 批量删除用户信息
     *
     * @param ids 需要删除的用户ID
     * @return 结果
     */
    public void deleteByIds(Long[] ids);

    /**
     * 获取平台用户分页列表
     *
     * @param userName 用户账号
     * @param nickName 用户昵称
     * @return 结果
     */
    public List<Map<String, Object>> selectPcUserList(String userName, String nickName);

    /**
     * 平台用户详情
     *
     * @param userId 用户id
     * @return 结果
     */
    public SysUser pcInfo(Long userId);

    /**
     * 获取运营商用户分页列表
     *
     * @param userName   用户账号
     * @param nickName   用户昵称
     * @param operatorId 运营上id
     * @return 结果
     */
    public List<Map<String, Object>> selectOperatorUserList(String userName, String nickName, Long operatorId);


    /**
     * 运营商用户详情
     *
     * @param userId 用户id
     * @return 结果
     */
    public Map<String, Object> operatorInfo(Long userId);

    /**
     * 禁用/启用平台和运营商子账号
     *
     * @param userId 用户id
     * @return 结果
     */
    public void status(Long userId);

    /**
     * 通过用户账号查询用户详情
     *
     * @param userName 用户帐号
     * @return 结果
     */
    public SysUser selectUserByUserName(String userName);

    /**
     * 通过用户账号查询角色详情
     *
     * @param userName 用户帐号
     * @return 结果
     */
    public SysRole selectUserByRoleName(String userName);


    /**
     * 新增角色信息
     *
     * @param role 角色信息
     * @return
     */
    public int insertRole(SysRole role);

    /**
     * 新增保存用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public SysUser insertUser(SysUser user);

    /**
     * 登录账号是否存在
     *
     * @param userName 账号
     * @return
     */
    public int checkUserNameUnique(String userName,Long userId);

    /**
     * 修改保存用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public int updateUser(SysUser user);

    /**
     * 保存数据维度
     * @param userId
     * @param chargingStationId
     */
    public void addXhpcDataDimension(Long userId,Long chargingStationId);


    /**
     * 删除数据维度
     * @param userId
     */
    public void updateXhpcDataDimension(Long userId);


    List<Map<String, Object>> getUserDimension(Integer activity, Integer frequency, BigDecimal amount, String startTime, String endTime,String phone);


    /**
     * 修改保存流量方用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public int updateInternetUser(SysUser user);
}
