package com.ym.mec.web.controller;

import com.alibaba.fastjson.JSON;
import com.ym.mec.biz.dal.dao.AppVersionInfoDao;
import com.ym.mec.biz.dal.entity.AppVersionInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
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 com.ym.mec.auth.api.client.SysUserFeignService;
import com.ym.mec.auth.api.entity.SysUser;
import com.ym.mec.biz.dal.dto.SysMessageDto;
import com.ym.mec.biz.dal.enums.MessageSendMode;
import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
import com.ym.mec.biz.service.SysMessageService;
import com.ym.mec.common.controller.BaseController;
import com.ym.mec.common.page.PageInfo;

@RestController
@Api(tags = "消息服务")
@RequestMapping("sysMessage")
public class SysMessageController extends BaseController {

	@Autowired
	private SysMessageService sysMessageService;

	@Autowired
	private SysUserFeignService sysUserFeignService;

	@Autowired
	private AppVersionInfoDao appVersionInfoDao;

	@ApiOperation("获取所有消息列表")
	@GetMapping(value = "list")
	public Object list(SysMessageQueryInfo queryInfo){
		SysUser sysUser = sysUserFeignService.queryUserInfo();
		if (sysUser == null) {
			return failed(HttpStatus.FORBIDDEN, "请登录");
		}
		if(!sysUser.getIsSuperAdmin()){
			queryInfo.setUserId(sysUser.getId());
		}
		queryInfo.setType(MessageSendMode.SEO.getCode());
		PageInfo<SysMessageDto> pageInfo = sysMessageService.queryListPage(queryInfo);
		return succeed(pageInfo);
	}

	@ApiOperation("获取消息分类类型")
	@GetMapping(value = "typeList")
	public Object typeList(String memo){
		//如果用户使用的版本比当前版本号大，那么屏蔽缴费信息
		if(StringUtils.isNotEmpty(memo)){
			//获取当前使用的版本
			AppVersionInfo appVersionInfo = appVersionInfoDao.queryNewestByPlatform("ios-education").get(0);
			int defaultVersion = Integer.parseInt(appVersionInfo.getVersion().replaceAll("\\.",""));
			int currentVersion = Integer.parseInt(memo.replaceAll("\\.",""));
			if(currentVersion > defaultVersion){
				return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
						"{\"value\":\"学员信息\",\"key\":\"STUDENT\"}," +
						"{\"value\":\"乐团信息\",\"key\":\"MUSIC\"}," +
						"{\"value\":\"审批信息\",\"key\":\"OA\"}," +
						"{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
			}
		}
		return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
				"{\"value\":\"缴费信息\",\"key\":\"PAY\"}," +
				"{\"value\":\"学员信息\",\"key\":\"STUDENT\"}," +
				"{\"value\":\"乐团信息\",\"key\":\"MUSIC\"}," +
				"{\"value\":\"审批信息\",\"key\":\"OA\"}," +
				"{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
	}

	@ApiOperation("设置已读")
	@PostMapping("setRead")
	public Object setRead(Long id) {
		int status = 1;
		SysUser sysUser = sysUserFeignService.queryUserInfo();
		if (sysUser == null) {
			return failed(HttpStatus.FORBIDDEN, "请登录");
		}
		return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
	}

	@ApiOperation(value = "查询用户未读消息条数")
	@GetMapping("/queryCountOfUnread")
	public Object queryCountOfUnread() {
		SysUser sysUser = sysUserFeignService.queryUserInfo();
		if (sysUser == null) {
			return failed(HttpStatus.FORBIDDEN, "请登录");
		}
		return succeed(sysMessageService.queryCountOfUnread(MessageSendMode.SEO, sysUser.getId(),null));
	}
}
