package shop.alien.store.service;

import shop.alien.entity.result.R;
import shop.alien.entity.store.LifeUserPushDevice;
import shop.alien.entity.store.UserLoginInfo;
import shop.alien.store.dto.LifeUserPushBindDto;

import java.util.List;

public interface LifeUserPushDeviceService {

    /**
     * 将 cid 绑定到当前登录用户；同一 cid 全局唯一，重复上报会更新为当前用户并刷新平台等信息。
     */
    R<String> bind(UserLoginInfo login, LifeUserPushBindDto dto);

    /**
     * 当前用户解绑指定 cid（仅可删除本人绑定记录）
     */
    R<String> unbindByCid(UserLoginInfo login, String pushClientId);

    /**
     * 查询当前用户已绑定的设备列表
     */
    R<List<LifeUserPushDevice>> listMine(UserLoginInfo login);

    /**
     * 供业务侧按归属类型 + 业务用户主键查询 cid 列表（去重），用于组装云函数推送目标。
     *
     * @param userId    ownerType=user 时为 life_user.id；store 为 store_user.id；lawyer 为 lawyer_user.id
     * @param ownerType {@link shop.alien.entity.store.PushDeviceOwnerType#getCode()}：user / store / lawyer
     */
    List<String> listPushClientIdsByUserId(int userId, String ownerType);
}
