package com.xhpc.user.service;

import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.user.domain.XhpcAppUser;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;


/**
 * C端用户信息 服务层
 *
 * @author ruoyi
 */
public interface IXhpcAppUserUserService {

    public AjaxResult userInfoMoney(HttpServletRequest request);

    /**
     * 更新C端用户
     *
     * @param xhpcAppUser C端用户
     */
    public int update(XhpcAppUser xhpcAppUser);


    /**
     * C端用户详情
     *
     * @param appUserId C端用户id
     * @return 结果
     */
    public Map<String, Object> info(Long appUserId);

    /**
     * C端用户分页列表
     *
     * @param phone 手机号
     * @return 结果
     */
    public List<Map<String, Object>> selectAppUserList(HttpServletRequest request,String phone);


    public Map<String, Object> userSum(String phone);
    /**
     * 禁用/启用C端用户
     *
     * @param appUserId C端用户id
     * @return 结果
     */
    public void status(Long appUserId);

    /**
     * C端用户注册
     *
     * @param map C端用户 phone 手机号 code 验证码 type 登录方式1微信2小程序
     * @return 结果
     */
    public R<?> register(Map<String, Object> map);

    /**
     * C端用户登录
     *
     * @param map C端用户 phone 手机号 code 验证码 type 登录方式1微信2小程序
     * @return 结果
     */
    public R<?> login(Map<String, Object> map);

    /**
     * C端用户登录
     *
     * @param map C端用户 phone 手机号 code 验证码 type 登录方式1微信2小程序
     * @return 结果
     */
    public R<?> appUserLogin(HttpServletRequest request,Map<String, Object> map);

    /**
     * APP用户注册
     *
     * @param map C端用户 phone 手机号 code 验证码 type 登录方式1微信2小程序
     * @return 结果
     */
    public R<?> apprRegister(HttpServletRequest request,Map<String, Object> map);


    public R<?> loginPhone(Map<String, Object> map);

    /**
     * 小程序用户退出
     *
     * @param request
     * @param type    退出方式1微信2小程序
     * @return
     */
    public R<?> loginOut(HttpServletRequest request, String type);

    /**
     * 小程序用户退出
     *
     * @param request
     * @return
     */
    public R<?> appLoginOut(HttpServletRequest request);
    /**
     * C端用户自动登录
     *
     * @param map
     * @return
     */
    public R<?> voluntaryLogin(Map<String, Object> map);

    /**
     * app用户自动登录
     *
     * @param map
     * @return
     */
    public R<?> appVoluntaryLogin(HttpServletRequest request,Map<String, Object> map);
    /**
     * 小程序用户详情
     *
     * @param
     * @return 结果
     */
    public AjaxResult appInfo(HttpServletRequest request);

    /**
     * 注销账号
     * @param phone
     * @param code
     * @return
     */
    public R<?> logout(HttpServletRequest request,String phone, String code);

    /**
     * 设置小程序用户自动退款功能
     * @return
     */
    public R<?> updateIsRefund(Long userId, Integer userType,Integer isRefund);

    /**
     * 设置小程序用户自动退款功能
     * @return
     */
    public R<?> doubleGunCharging(Long userId, Integer userType,Integer sunchaSwitch);

    /**
     * 设置小程序用户电池保护
     * @return
     */
    public R<?> batteryProtect(HttpServletRequest request, Integer soc,Integer socProtect,Integer userType);
}
