package com.shanghaichengdi.ghjgitem.controller;

import com.alibaba.fastjson.JSONObject;
import com.shanghaichengdi.ghjgitem.constant.HttpStatus;
import com.shanghaichengdi.ghjgitem.service.SysGroupService;
import com.shanghaichengdi.ghjgitem.service.SysUserService;
import com.shanghaichengdi.ghjgitem.util.CommonTools;
import com.shanghaichengdi.ghjgitem.vo.ObjectBodyVo;
import com.shanghaichengdi.ghjgitem.vo.SysGroupVo;
import com.shanghaichengdi.ghjgitem.vo.SysUserVo;
import com.shanghaichengdi.ghjgitem.vo.request.SysGroupReq;
import com.shanghaichengdi.ghjgitem.vo.request.SysUserReq;
import com.shanghaichengdi.ghjgitem.vo.response.ResultRes;
import com.shanghaichengdi.ghjgitem.vo.response.ReturnMsg;
import java.util.List;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@CrossOrigin
@RequestMapping("/sys")
@Slf4j
public class SysController extends CommonController {

  @Resource
  private SysUserService sysUserService;
  @Resource
  private SysGroupService sysGroupService;

  @PostMapping("/user/info")
  public ReturnMsg getSysUserInfo(@RequestBody @Validated ObjectBodyVo vo) {
    if (!checkDbKey(vo.getKey())) {
      return ReturnMsg.error(HttpStatus.BAD_REQUEST, "key值有误,请确认您输入的key值正确!");
    }
    String paramJsonData = getParamJsonData(vo.getData());
    SysUserReq sysUserReq = JSONObject.parseObject(paramJsonData, SysUserReq.class);
    List<SysUserVo> sysUserVoList = sysUserService.selectUserInfo(sysUserReq);
    ResultRes resultRes = ResultRes.encapsulationResult(sysUserReq.getPageIndex(),
        sysUserReq.getPageSize(),
        CommonTools.getTotal(sysUserVoList), sysUserVoList);
    String jsonString = JSONObject.toJSONString(resultRes);
    String encodedData = resultEncode(jsonString);
    return ReturnMsg.success("获取成功", encodedData);
  }

  @PostMapping("/group/info")
  public ReturnMsg getSysGroupInfo(@RequestBody @Validated ObjectBodyVo vo) {
    if (!checkDbKey(vo.getKey())) {
      return ReturnMsg.error(HttpStatus.BAD_REQUEST, "key值有误,请确认您输入的key值正确!");
    }
    String paramJsonData = getParamJsonData(vo.getData());
    SysGroupReq sysGroupReq = JSONObject.parseObject(paramJsonData, SysGroupReq.class);
    List<SysGroupVo> sysGroupVoList = sysGroupService.selectGroupInfo(sysGroupReq);
    ResultRes resultRes = ResultRes.encapsulationResult(sysGroupReq.getPageIndex(),
        sysGroupReq.getPageSize(),
        CommonTools.getTotal(sysGroupVoList), sysGroupVoList);
    String jsonString = JSONObject.toJSONString(resultRes);
    String encodedData = resultEncode(jsonString);
    return ReturnMsg.success("获取成功", encodedData);
  }
}
