package com.ruoyi.web.modules.news.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.web.modules.news.domain.LivestockResourceListVo;
import com.ruoyi.web.modules.news.domain.LivestockResourceQuery;
import com.ruoyi.web.modules.news.service.ILivestockResourceService;
import com.ruoyi.web.modules.news.support.LivestockResourcePageSupport;
import com.ruoyi.web.modules.news.support.LivestockResourceQuerySupport;
import com.ruoyi.web.modules.news.support.LivestockResourceSourceTypeValidator;
import com.ruoyi.web.modules.news.support.LivestockResourceTypeValidator;

/**
 * 移动端畜牧资源（v_livestock_resource，按资源类型 type 筛选）。
 */
@RestController
@RequestMapping("/app/livestockResource")
public class BizAppLivestockResourceController extends BaseController
{
    @Autowired
    private ILivestockResourceService livestockResourceService;

    @Autowired
    private LivestockResourceTypeValidator livestockResourceTypeValidator;

    @Autowired
    private LivestockResourceSourceTypeValidator livestockResourceSourceTypeValidator;

    /**
     * 按 type 分页查询已发布畜牧资源列表，支持 title 关键字模糊搜索。
     *
     * @param query type 必填（004002 专家团队、004006 技术成果、004007 共享仪器、004008 视频课程）；title 可选
     */
    @GetMapping("/list")
    public TableDataInfo list(LivestockResourceQuery query)
    {
        LivestockResourceQuery effective = LivestockResourceQuerySupport.normalize(query);
        livestockResourceTypeValidator.assertAllowed(effective.getType());
        LivestockResourcePageSupport.startPage(effective);
        List<LivestockResourceListVo> list = livestockResourceService.selectLivestockResourceList(effective);
        return getDataTable(list);
    }

    /**
     * 畜牧资源详情：type=1 查 biz_medical_resource，type=2 查 biz_tech_resource，返回源表全字段。
     *
     * @param id   源表主键
     * @param type 来源：1 医疗，2 科技（与列表项 sourceType 一致）
     */
    @GetMapping("/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id, Integer type)
    {
        livestockResourceSourceTypeValidator.assertAllowed(type);
        return success(livestockResourceService.selectLivestockResourceById(id, type));
    }
}
