package shop.alien.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import shop.alien.entity.store.StorePlatformUserRole;
import shop.alien.entity.store.vo.SubAccountListVo;
import shop.alien.entity.store.vo.SubAccountVo;

import java.util.List;

/**
 * 用户角色关联表 Mapper 接口
 *
 * @author system
 * @since 2025-01-XX
 */
@Mapper
public interface StorePlatformUserRoleMapper extends BaseMapper<StorePlatformUserRole> {

    /**
     * 根据店铺ID查询子账号列表（连表查询）
     *
     * @param storeId    店铺ID
     * @param accountName 账号名称（模糊查询）
     * @param phone       手机号（模糊查询）
     * @param roleName    角色名称（模糊查询）
     * @return 子账号列表
     */
    List<SubAccountVo> querySubAccounts(@Param("storeId") Integer storeId,
                                        @Param("accountName") String accountName,
                                        @Param("phone") String phone,
                                        @Param("roleName") String roleName);

    /**
     * 查询所有子账号信息（包含主账号电话）- 分页查询
     *
     * @param page      分页对象
     * @param accountId 账号ID（主账号ID或子账号用户ID，模糊查询）
     * @param phone      联系电话（子账号电话，模糊查询）
     * @param status    状态（精确查询）
     * @return 子账号分页列表
     */
    IPage<SubAccountListVo> queryAllSubAccounts(Page<SubAccountListVo> page,
                                                @Param("accountId") String accountId,
                                                @Param("phone") String phone,
                                                @Param("status") Integer status);

    /**
     * 回滚删除操作：恢复角色关联记录
     *
     * @param id 记录ID
     * @return 更新影响的行数
     */
    @Update("UPDATE store_platform_user_role SET delete_flag = 0 WHERE id = #{id} AND delete_flag = 1")
    int rollbackDeleteById(@Param("id") Long id);
}

