package cn.iocoder.yudao.module.member.service.userexpand;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO;

import javax.validation.Valid;

/**
 * 用户拓展属性 Service 接口
 *
 * @author 开发账号
 */
public interface UserExpandService {

    /**
     * 创建用户拓展属性
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createUserExpand(@Valid UserExpandSaveReqVO createReqVO);

    /**
     * 更新用户拓展属性
     *
     * @param updateReqVO 更新信息
     */
    void updateUserExpand(@Valid UserExpandSaveReqVO updateReqVO);

    /**
     * 删除用户拓展属性
     *
     * @param id 编号
     */
    void deleteUserExpand(Long id);

    /**
     * 获得用户拓展属性
     *
     * @param id 编号
     * @return 用户拓展属性
     */
    UserExpandDO getUserExpand(Long id);

    /**
     * 获得用户拓展属性分页
     *
     * @param pageReqVO 分页查询
     * @return 用户拓展属性分页
     */
    PageResult<UserExpandDO> getUserExpandPage(UserExpandPageReqVO pageReqVO);

    void updateUserExpandByuserId(Long userId, AppMemberUserUpdateReqVO reqVO);

    UserExpandDO getUserExpandByuserId(Long userId);
}