package org.dromara.common.web.core;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.esotericsoftware.kryo.serializers.TaggedFieldSerializer;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.BaseBO;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * web层通用数据处理
 *
 * @author Lion Li
 */
@RequiredArgsConstructor
@RestController
public class BaseController  {

//    public final S service;
//
//    public final C convert;


//    @PostMapping("/list")
//    public R<IPage<V>> list(@RequestBody B bo, @RequestBody Page page) {
//        IPage<T> pages = service.page(page, bo.toWrapper());
//        return R.ok(convert.toVO(pages));
//    }

//    @PostMapping("/add")
//    public R add(@RequestBody B bo) {
//        return R.ok(service.save(convert.toPo(bo)));
//    }
//
//    @GetMapping(value = "/{id}")
//    public R<Object> getInfo(@PathVariable("id") Long id) {
//        return R.ok(convert.toVO(service.getById(id)));
//    }
//
//    @PostMapping("/update")
//    public R update(@RequestBody B bo) {
//        service.save(convert.toPo(bo));
//        return R.ok();
//    }
//
//
//    @DeleteMapping("/{id}")
//    public R<Object> remove(@PathVariable Long id) {
//        return R.ok(service.removeById(id));
//    }

    /**
     * 响应返回结果
     *
     * @param rows 影响行数
     * @return 操作结果
     */
    protected R<Void> toAjax(int rows) {
        return rows > 0 ? R.ok() : R.fail();
    }

    /**
     * 响应返回结果
     *
     * @param result 结果
     * @return 操作结果
     */
    protected R<Void> toAjax(boolean result) {
        return result ? R.ok() : R.fail();
    }

    /**
     * 页面跳转
     */
    public String redirect(String url) {
        return StringUtils.format("redirect:{}", url);
    }

}
