package com.boco.nbd.wios.manage.controller;

import cn.hutool.core.lang.Assert;
import com.boco.nbd.wios.manage.contants.WiosConstant;
import com.boco.nbd.wios.manage.entity.bo.SystemInfo;
import com.boco.nbd.wios.manage.service.impl.SystemInfoService;
import com.ihidea.component.api.v2.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

import java.util.List;

/**
 * 系统消息管理接口
 *
 * @author xgl
 * @version [版本号, 2020年10月15日]
 */
@RestController
@RequestMapping("api")
@Api(tags = "系统消息管理接口")
@ApiIgnore
public class SystemInfoController {

    @Autowired
    private SystemInfoService systemInfoService;

    /**
     * 查询列表
     *
     * @param status
     * @return
     */
    @GetMapping(value = "systemInfo/list")
    @ApiOperation(value = "查询列表")
    @ApiImplicitParams({@ApiImplicitParam(name = "page", value = "一页显示数量", dataType = "int", paramType = "query", required = false),
        @ApiImplicitParam(name = "pagecount", value = "页码", dataType = "int", paramType = "query", required = false),
        @ApiImplicitParam(name = "status", value = "状态 0:未读 1:已读", dataType = "int", paramType = "query", required = false),})
    public BaseResponse<List<SystemInfo>> list(Integer status) {
        SystemInfo condition = new SystemInfo();
        condition.setStatus(status);
        return new BaseResponse<List<SystemInfo>>(systemInfoService.getList(condition));
    }

    /**
     * 更新状态
     *
     * @param id
     * @param status
     * @return
     */
    @PostMapping(value = "systemInfo/updateStatus")
    @ApiOperation(value = "更新状态")
    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "主键id", dataType = "int", paramType = "query", required = true),
        @ApiImplicitParam(name = "status", value = "状态 0:未读 1:已读", dataType = "int", paramType = "query", required = true),})
    public BaseResponse<Object> update(Integer id, Integer status) {
        Assert.notNull(id, WiosConstant.EMPTY_ID);
        Assert.notNull(status, "status不能为空");
        systemInfoService.updateStatus(id, status);
        return new BaseResponse<>();
    }

    /**
     * 查询未读消息数量
     *
     * @return
     */
    @GetMapping(value = "systemInfo/getUnreadQuantity")
    @ApiOperation(value = "查询未读消息数量")
    public BaseResponse<Integer> getUnreadQuantity() {
        return new BaseResponse<>(systemInfoService.getUnreadQuantity());
    }
}