package top.imwork.commons.core.base;

import org.springframework.web.bind.annotation.*;
import top.imwork.commons.core.pojo.DeleteParams;

/**
 * 〈功能简述〉<br>
 * 〈接口抽取〉
 * R 响应
 * T 入参实体
 * P 列表查询入参实体
 * FileName: BaseApi
 *
 * @author stars
 * @create 2020/7/21 14:23
 * @since 1.0.0
 */
public interface BaseApi<R, T, P> {
    /**
     * 根据id查询数据
     *
     * @param id long类型的id
     * @return 返回查询结果
     */
    @GetMapping("/info/{id}")
    R info(@PathVariable("id") Long id);

    /**
     * 添加info
     *
     * @param t 入参
     * @return R 响应
     */
    @PostMapping("/save")
    R save(@RequestBody T t);

    /**
     * 根据id逻辑删除
     *
     * @param id id
     * @return boolean
     */
    @DeleteMapping("/delete/{id}")
    R delete(@PathVariable("id") Long id);

    /**
     * 根据ids数组删除
     *
     * @return boolean
     */
    @DeleteMapping("/deleteByIds")
    R deleteByIds(@RequestBody DeleteParams params);

    /**
     * 获取信息列表
     *
     * @param listParamVO 入参
     * @return ResponseMsg 信息列表查询结果
     */
    @PostMapping("/queryPage")
    R queryPage(@RequestBody P listParamVO);
}
