package com.ylx.massage.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylx.massage.domain.TWxUser;
import com.ylx.massage.domain.dto.QueryWxUserDTO;
import com.ylx.massage.domain.vo.TWxUserVo;
import com.ylx.shoppingfunds.domain.dto.MyShoppingFundsUpdateDto;
import com.ylx.shoppingfunds.domain.vo.MyShoppingFundsQueryVo;

import java.math.BigDecimal;


/**
 *  服务类
 */
public interface TWxUserService extends IService<TWxUser> {

    /**
     * 根据openId查询用户
     * @param openId
     * @return TWxUser
     */
    public TWxUser getByOpenId(String openId);

    /**
     * 根据手机号查询用户
     * @param phone 手机号
     * @return TWxUser
     */
    TWxUser getByPhone(String phone);

    Page<TWxUserVo> getUserList(Page<TWxUserVo> page, QueryWxUserDTO queryWxUserDTO);

    /**
     * 绑定手机号
     * @param openId 用户的openId
     * @param phone 手机号
     * @return boolean
     */
    boolean bindPhone(String openId, String phone);

    /**
     * 手机号登录
     * @param phone 手机号
     * @return TWxUser 登录用户
     */
    TWxUser phoneLogin(String phone);

    /**
     * 根据userId获取我的购物金余额信息
     * @param userId
     * @return
     */
    MyShoppingFundsQueryVo queryMyShoppingFunds(String userId);

    /**
     * 更新我的购物金余额
     * @param userId
     * @param amount
     * @param expenseType
     */
    void updateMyShoppingFunds(String userId, BigDecimal amount, Integer expenseType);
}
