package org.tio.sitexxx.server.controller.wx;

import org.tio.sitexxx.server.utils.WebUtils;
import org.tio.http.common.HttpRequest;
import org.tio.http.server.annotation.RequestPath;
import org.tio.jfinal.kit.Ret;
import org.tio.sitexxx.service.service.chat.SynService;
import org.tio.sitexxx.service.utils.RetUtils;
import org.tio.sitexxx.service.vo.RequestExt;
import org.tio.sitexxx.service.vo.RetCode;
import org.tio.utils.resp.Resp;

import java.util.Date;

/**
 * 同步入口
 * @author xufei
 * 2020年8月25日 下午7:41:13
 */
@RequestPath(value = "/syn")
public class SynController {
	private final static SynService syn = SynService.me;
	//等级规范行为 每个等级什么利益 什么行为 可以降低升级不升不降
	/**
	 * @param request
	 * @param syntime
	 * @return
	 * @throws Exception
	 * @author xufei
	 * 2020年8月26日 下午3:36:09
	 * TODO 需检测
	 */
	@RequestPath(value = "/chat")
	public Resp chat(HttpRequest request, Date syntime) throws Exception {
		Integer uid = WebUtils.currUserId(request);
		if (uid == null) {
			return Resp.fail(RetCode.CommonCode.PARAM_ERROR.value);
		}
		RequestExt requestExt = WebUtils.getRequestExt(request);
		short deviceType = requestExt.getAppDevice();
		Ret ret = syn.chat(uid, deviceType, syntime);
		if (ret.isFail()) {
			return Resp.fail().msg(RetUtils.getRetMsg(ret));
		}
		return Resp.ok(RetUtils.getOkData(ret));
	}

	/**
	 * @param request
	 * @param synid
	 * @return
	 * @throws Exception
	 * @author xufei
	 * 2020年8月27日 下午2:54:40
	 * TODO 需检测
	 */
	@RequestPath(value = "/ack")
	public Resp ack(HttpRequest request, Integer synid) {
		Integer uid = WebUtils.currUserId(request);
		if (uid == null || synid == null) {
			return Resp.fail(RetCode.CommonCode.PARAM_ERROR.value);
		}
		Ret ret = syn.ack(uid, synid);
		if (ret.isFail()) {
			return Resp.fail().msg(RetUtils.getRetMsg(ret));
		}
		return Resp.ok(RetUtils.getOkData(ret));
	}
}
