package cn.hnthyy.thmz.controller.mz;

import cn.hnthyy.thmz.comment.UserLoginToken;
import cn.hnthyy.thmz.common.Constants;
import cn.hnthyy.thmz.entity.thmz.Config;
import cn.hnthyy.thmz.service.thmz.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@Slf4j
@RestController
public class ConfigController {
    @Autowired
    private ConfigService configService;

    /**
     * 根据键查询配置的内容
     *
     * @return
     */
    @UserLoginToken
    @RequestMapping(value = "/getConfigByKey", method = {RequestMethod.GET})
    public Map<String, Object> getConfigByKey(@RequestParam("key") String key) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            if (StringUtils.isBlank(key)){
                resultMap.put("code", -1);
                resultMap.put("message", "配置的键不能为空");
                return resultMap;
            }
            Config config =configService.queryUserByKey(key);
            if (config==null){
                resultMap.put("code", -1);
                resultMap.put("message", "该键没有对应的配置");
                return resultMap;
            }
            resultMap.put("code", 0);
            resultMap.put("message", "根据键查询配置的内容成功");
            resultMap.put("data", config);
            return resultMap;
        }catch (Exception e){
            e.printStackTrace();
            log.error("根据键查询配置的内容失败,错误信息{}",e.getMessage());
            resultMap.put("code", -1);
            resultMap.put("message", "根据键查询配置的内容失败");
            return resultMap;
        }
    }



    /**
     * 更新配置的内容
     *
     * @return
     */
    @UserLoginToken
    @RequestMapping(value = "/setConfig", method = {RequestMethod.POST})
    public Map<String, Object> setConfig(@RequestBody Config config) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            if (config==null){
                resultMap.put("code", -1);
                resultMap.put("message", "参数不能为空");
                return resultMap;
            }
            if (StringUtils.isBlank(config.getConfigKey())){
                resultMap.put("code", -1);
                resultMap.put("message", "配置的键不能为空");
                return resultMap;
            }
            if (Constants.ALARM_USER_KEY.equals(config.getConfigKey()) && StringUtils.isBlank(config.getConfigValue())){
                config.setConfigValue("");
            }else if (!Constants.ALARM_USER_KEY.equals(config.getConfigKey()) && StringUtils.isBlank(config.getConfigValue())){
                resultMap.put("code", -1);
                resultMap.put("message", "配置的值不能为空");
                return resultMap;
            }
            configService.modifyConfigByKey(config);
            resultMap.put("code", 0);
            resultMap.put("message", "更新配置内容成功");
            resultMap.put("data", config);
            return resultMap;
        }catch (Exception e){
            e.printStackTrace();
            log.error("更新配置内容失败,错误信息{}",e.getMessage());
            resultMap.put("code", -1);
            resultMap.put("message", "更新配置内容失败");
            return resultMap;
        }
    }

}
