package com.yunhai.userbase.service; import com.yunhai.userbase.entity.ApplicationInfo; import com.yunhai.userbase.model.application.ApplicationInfoQuery; import com.yunhai.userbase.model.application.ApplicationInfoRequest; import com.yunhai.userbase.model.application.ApplicationInfoSortVo; import com.yunhai.userbase.model.application.ApplicationInfoVo; import com.yunhai.userbase.model.application.PushSettingRequest; import com.yunhai.userbase.model.application.PushSettingVo; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import java.util.List; /** * 应用信息业务接口(缓存由 Spring Cache 注解统一管控)。 */ public interface IApplicationInfoService { /** * 根据 id 查询应用信息(带缓存,防击穿)。 */ ApplicationInfo getById(Integer id); /** * 保存/更新应用信息(写后同步更新缓存)。 */ ApplicationInfo save(ApplicationInfo info); /** * 根据 id 删除应用信息(同步清除缓存)。 */ void deleteById(Integer id); /** * 新增应用信息。
* 由入参构造实体并落库;appKey 为整型,从 100000 起按数据库最大值自增,appSecret 为 32 位 UUID。
* * @param request 应用新增入参 */ void add(ApplicationInfoRequest request); /** * 编辑应用信息。
* 按 id 查找后拷贝入参字段并保存,appKey/appSecret 不随编辑变更。
* * @param id 应用ID * @param request 应用编辑入参 */ void edit(Integer id, ApplicationInfoRequest request); /** * 根据 id 删除应用信息。
* * @param id 应用ID */ void delete(Integer id); /** * 重设应用密钥(appSecret)。
* 按 id 查找应用并生成新的 32 位 UUID 密钥后保存。
* * @param id 应用ID */ void resetAppSecret(Integer id); /** * 根据条件分页查询应用列表。
* * @param query 查询条件(name 关键词按名称模糊或 appKey 精确匹配,categoryId 按类别精确匹配) * @param pageable 分页参数(page 从 0 起,size 每页条数) * @return 分页后的应用视图(含总条数 totalElements) */ Page list(ApplicationInfoQuery query, Pageable pageable); List findListByCategoryId(Integer categoryId); /** * 同一应用类型内排序。
* 入参为该类型下应用的完整有序 id 列表,按列表顺序写入 sortNo(1 起)。
* 接口会额外校验:所有 id 必须存在且同属一个应用类型,避免跨类型串号导致排序错乱。
* * @param ids 同一应用类型下的应用ID有序列表 */ void sort(List ids); /** * 保存应用推送设置(外部接口地址 / 总开关 / 启用的接口 / 学校范围 / 角色范围 / 推送密钥)。
* 仅更新推送相关字段,写后同步更新 appInfo 缓存。 * * @param id 应用ID * @param request 推送设置(各字段可选,null 表示不修改) */ ApplicationInfo savePushSetting(Integer id, PushSettingRequest request); /** * 获取应用推送设置回显 VO。 * * @param id 应用ID * @return 推送设置 VO(仅含推送相关字段) */ PushSettingVo getPushSetting(Integer id); }