package com.gxwebsoft.app.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.app.entity.AppUser;
import com.gxwebsoft.app.param.AppUserParam;

import java.util.List;

/**
 * 应用成员Service
 *
 * @author 科技小王子
 * @since 2026-03-28 21:29:44
 */
public interface AppUserService extends IService<AppUser> {

    /**
     * 分页关联查询
     */
    PageResult<AppUser> pageRel(AppUserParam param);

    /**
     * 关联查询全部
     */
    List<AppUser> listRel(AppUserParam param);

    /**
     * 根据id查询
     */
    AppUser getByIdRel(Integer id);

    /**
     * 邀请成员加入应用
     *
     * @param websiteId 应用ID
     * @param userId    被邀请的用户ID
     * @param role      分配的角色
     * @param inviteBy  邀请人用户ID
     * @return 成员记录
     */
    AppUser inviteUser(Long websiteId, Integer userId, String role, Integer inviteBy);

    /**
     * 修改成员角色
     *
     * @param id   成员记录ID
     * @param role 新角色
     */
    boolean updateRole(Long id, String role);

    /**
     * 检查用户是否已是应用成员
     *
     * @param websiteId 应用ID
     * @param userId    用户ID
     */
    boolean isMember(Long websiteId, Integer userId);

    /**
     * 根据手机号查找系统用户（用于手机号邀请）
     *
     * @param phone 手机号
     * @return 系统用户，不存在返回 null
     */
    com.gxwebsoft.common.system.entity.User findUserByPhone(String phone);

}
