package com.lesingle.creation.service;

import com.lesingle.creation.dto.child.CreateChildDTO;
import com.lesingle.creation.dto.child.UpdateChildDTO;
import com.lesingle.creation.dto.publicuser.PublicLoginDTO;
import com.lesingle.creation.dto.publicuser.PublicRegisterDTO;
import com.lesingle.creation.dto.publicuser.PublicUserUpdateDTO;
import com.lesingle.creation.vo.child.ChildVO;
import com.lesingle.creation.vo.publicuser.LoginResponseVO;
import com.lesingle.creation.vo.publicuser.PublicUserVO;

import java.util.List;

/**
 * 公众用户服务接口
 */
public interface PublicService {

    /**
     * 用户注册
     */
    LoginResponseVO register(PublicRegisterDTO dto);

    /**
     * 用户登录
     */
    LoginResponseVO login(PublicLoginDTO dto);

    /**
     * 获取用户信息
     */
    PublicUserVO getUserInfo(Long userId);

    /**
     * 更新用户信息
     */
    PublicUserVO updateProfile(Long userId, PublicUserUpdateDTO dto);

    /**
     * 获取子女列表
     */
    List<ChildVO> getChildren(Long userId);

    /**
     * 创建子女
     */
    ChildVO createChild(Long userId, CreateChildDTO dto);

    /**
     * 获取子女详情
     */
    ChildVO getChild(Long userId, Long childId);

    /**
     * 更新子女信息
     */
    ChildVO updateChild(Long userId, Long childId, UpdateChildDTO dto);

    /**
     * 删除子女
     */
    void deleteChild(Long userId, Long childId);

    /**
     * 创建子女独立账号
     */
    ChildVO createChildAccount(Long userId, CreateChildDTO dto);

    /**
     * 获取子女账号列表
     */
    List<ChildVO> getChildAccounts(Long userId);

    /**
     * 更新子女账号信息
     */
    ChildVO updateChildAccount(Long userId, Long childId, UpdateChildDTO dto);

    /**
     * 获取监护人信息
     */
    PublicUserVO getParentInfo(Long userId);

    /**
     * 获取公开活动列表
     */
    Object getPublicActivities(Integer page, Integer pageSize, String keyword, String contestType, Long userId);

    /**
     * 获取活动详情
     */
    Object getActivityDetail(Long id);
}
