package com.ruoyi.web.modules.trading.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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
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.common.exception.ServiceException;
import com.ruoyi.web.modules.trading.domain.vo.AppYakMarketDailyListVo;
import com.ruoyi.web.modules.trading.service.IAppYakMarketService;
import com.ruoyi.web.modules.trading.support.AppYakMarketPageSupport;

/**
 * 小程序牦牛行情（牧民首页入口、承销商底部「行情」Tab 共用本组接口，无需重复开发）。
 */
@RestController
@RequestMapping("/app/yakMarket")
public class BizAppYakMarketController extends BaseController
{
    @Autowired
    private IAppYakMarketService appYakMarketService;

    /**
     * 昨日主行情：均价、单位、行情日期。
     */
    @GetMapping("/yesterday")
    public AjaxResult yesterday()
    {
        return success(appYakMarketService.selectYesterdayQuote());
    }

    /**
     * 近 7 日统计（截至昨日）。
     */
    @GetMapping("/stats7")
    public AjaxResult stats7()
    {
        return success(appYakMarketService.selectStats7());
    }

    /**
     * 价格走势折线数据，days 仅支持 7 或 30。
     */
    @GetMapping("/trend")
    public AjaxResult trend(@RequestParam(value = "days", defaultValue = "7") int days)
    {
        try
        {
            return success(appYakMarketService.selectTrend(days));
        }
        catch (IllegalArgumentException ex)
        {
            throw new ServiceException(ex.getMessage());
        }
    }

    /**
     * 昨日涨跌概率（饼图）。
     */
    @GetMapping("/forecast")
    public AjaxResult forecast()
    {
        return success(appYakMarketService.selectForecast());
    }

    /**
     * 每日行情分页列表，行情日期倒序。
     */
    @GetMapping("/daily/list")
    public TableDataInfo dailyList()
    {
        try
        {
            AppYakMarketPageSupport.startPage();
            List<AppYakMarketDailyListVo> list = appYakMarketService.selectDailyList();
            return getDataTable(list);
        }
        finally
        {
            clearPage();
        }
    }
}
