package com.dsh.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.account.dto.BindDto;
import com.dsh.account.dto.SelectDto;
import com.dsh.account.dto.UpdateInfoDto;
import com.dsh.account.dto.UserInfoQueryDTO;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.model.*;
import com.dsh.account.model.query.appUserQuery.QueryAppUser;
import com.dsh.account.model.vo.DetailsListVo;
import com.dsh.account.model.vo.QueryAppUserVO;
import com.dsh.account.model.vo.classDetails.CourseVenue;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.util.ResultUtil;
import com.dsh.account.vo.GroupCityInfoVO;
import com.dsh.account.vo.entity.DayData;
import com.dsh.account.vo.entity.MonthData;
import com.dsh.account.vo.entity.WeekData;
import com.dsh.account.vo.entity.YearData;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
*
* 用户信息 服务类
*
*
* @author administrator
* @since 2023-06-14
*/
public interface TAppUserService extends IService {
ClassInfoVo queryUserOfStus(Integer id, Integer uid);
/**
* 获取短信验证码
*
* @param type
* @param phone
* @return
* @throws Exception
*/
ResultUtil getSMSCode(Integer type, String phone) throws Exception;
/**
* 注册账号
*
* @return
* @throws Exception
*/
ResultUtil addAppUser(AddAppUserVo addAppUserVo) throws Exception;
/**
* 账号密码登录
*
* @param phone
* @param password
* @return
* @throws Exception
*/
ResultUtil loginPassword(String phone, String password) throws Exception;
/**
* 验证码登录
*
* @return
* @throws Exception
*/
ResultUtil loginSMSCode(LoginSMSCodeVo loginSMSCodeVo) throws Exception;
/**
* 微信登录
*
* @return
* @throws Exception
*/
ResultUtil loginWechat(LoginWeChatVo loginWechatVo) throws Exception;
/**
* 修改密码
*
* @param phone
* @param code
* @param password
* @return
* @throws Exception
*/
ResultUtil updatePassword(String phone, String code, String password) throws Exception;
ResultUtil updatePassword1(String phone, String code, String password) throws Exception;
/**
* 定时任务修改到期会员的状态
*/
void membershipEnd();
/**
* 获取加入玩湃首页数据
*
* @param lon
* @param lat
* @return
* @throws Exception
*/
JoinPlayPaiVo queryJoinPlayPai(Integer uid, String lon, String lat) throws Exception;
/**
* 获取使用福利首页数据
*
* @param appUserId
* @return
*/
IndexOfUserBenefirVo queryBenefitDetails(Integer appUserId, String lon, String lat);
/**
* 获取用户账单列表
*
* @param yearMonth 年月
* @param recordId 记录
* @return
*/
List queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId);
/**
* 注销账号
*
* @param appUserId
*/
void cancellation(Integer appUserId);
List getSysRechargeConfig(Integer appUserId);
List queryAppUserIntegral(MallRequest request);
ProductDetailsVo productDetails(Integer goodId, Integer goodsType);
StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis, Integer pointsMerId, String lat, String lon, Integer isCourse);
ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeVo);
/**
* 优惠券支付回调处理
* @param code
* @param orderNumber
* @return
*/
ResultUtil paymentCouponCallback(String code, String orderNumber);
ResultUtil exchangeAddPaymentCallback(String code, String orderNumber, Integer payType);
List queryStoresOfExchange(Integer goodsType, Integer pointsMerId);
List queryWeekOfCourseDetails(Integer appUserId, Integer stuId, String time, String longitude, String latitude);
List listAll(QueryAppUser query);
Map weeksOfCourseDetailsList(Integer appUserId, Integer stuId, String time, Integer storeId, String lon, String lat);
List getSelects(List studentIds);
Object changeState(AdvertisementChangeStateDTO dto);
List queryAPPUserByNameAndPhone(AppUserByNameAndPhoneDTO dto);
List getYearUserCount(UserInfoQueryDTO dto);
List getMonthUserCount(UserInfoQueryDTO dto);
WeekData getWeekUserCount4(UserInfoQueryDTO dto);
WeekData getWeekUserCount3(UserInfoQueryDTO dto);
WeekData getWeekUserCount2(UserInfoQueryDTO dto);
WeekData getWeekUserCount1(UserInfoQueryDTO dto);
List getDayUserCount(UserInfoQueryDTO dto);
List groupCityInfo(UserInfoQueryDTO dto);
ProductDetailsVo goodsDetailsOne(Integer goodId);
ResultUtil bind(BindDto dto);
ResultUtil updateInfo(UpdateInfoDto dto, Integer uid);
List listAll1(QueryAppUser query);
}