package com.ytpm.middle.dao;

import com.ytpm.agent.model.YtApp;
import com.ytpm.agent.model.YtAppConfigLog;
import com.ytpm.agent.model.YtPlatformUserApp;
import com.ytpm.middle.model.YtAppGrantRecord;
import com.ytpm.middle.param.AppListParam;
import com.ytpm.middle.view.AppListVO;
import com.ytpm.middle.view.DropDownVO;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;

@Mapper
public interface AppMapper {
    /**
     *  应用列表
     */
    List<AppListVO> getAppList(AppListParam param);

    /**
     * 根据包名查询应用
     */
    YtPlatformUserApp getByPackName(@Param("packageName") String packageName);

    /**
     * 主键查询
     */
    YtPlatformUserApp getByPrimary(@Param("appId") String appId);

    /**
     * 新增应用
     */
    void insertOne(YtPlatformUserApp app);
    /**
     * 删除应用
     */
    void delApp(@Param("appId") String appId, @Param("userId") String userId);

    /**
     * 修改app信息
     */
    void updateById(YtPlatformUserApp app);

    /**
     * 查询上架应用
     */
    List<DropDownVO> getIssuedAppList();
    /**
     * 根据上级应用获取apk包
     */
    List<DropDownVO> getApkList(@Param("appId") String appId);

    /**
     * 授权应用记录
     */
    void addGrantRecord(YtAppGrantRecord grantRecord);

    /**
     * 查询企业用户的应用
     */
    List<YtPlatformUserApp> getAppListByUserIds(@Param("userIds")String userIds);

    /**
     * 根据母包ID获取所有子包ID
     * @param appId
     * @return
     */
    List<String> getAppListForSuperior(@Param("appId")String appId);

    /**
     * 保存出包配置修改记录
     */
    void insertConfigLog(YtAppConfigLog configLog);

    List<YtAppConfigLog> selectLastConfigLog(@Param("appIds") String appIds);

    YtApp selectByPrimaryId(@Param("appId")String appId);
}
