package com.bcxin.risk.communicate;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.bcxin.risk.base.controller.BaseController;
import com.bcxin.risk.base.domain.util.DateUtil;
import com.bcxin.risk.common.dto.data.SBDataDTO;
import com.bcxin.risk.common.util.WebUtil;
import com.bcxin.risk.common.util.cipher.MD5Util;
import com.bcxin.risk.communicate.sp.SPService;
import com.bcxin.risk.constant.Const;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

@Controller
@RequestMapping("/receive")
public class LogReceiveController extends BaseController {

    @Autowired
    private SPService spService;

    @RequestMapping("upgrade/sp/fromPss")
    @ResponseBody
    public JSONObject upgradePssToSb(HttpServletRequest request) {
        JSONObject json = new JSONObject();
        try {
            Map<String, String> paramMap = WebUtil.getParameterMap(request);
            String sign = paramMap.get("sign");
            String transSign = MD5Util.string2MD5(Const.ENVI + DateUtil.getCurrentDate());
            //验证秘钥
            if (!Objects.equals(transSign, sign)) {
                json.put("result", false);
                json.put("msg", "sign验证失败");
                return json;
            }

            String dataDTOStr = paramMap.get("dataDTO");
            SBDataDTO dataDTO = JSON.parseObject(dataDTOStr, SBDataDTO.class);
            String content = dataDTO.getContent();
            Map<String, String> map = JSON.parseObject(content, new TypeReference<HashMap<String, String>>() {
            });
            String pssId = map.containsKey("pssId") ? map.get("pssId") : "";
            // 直接写入到文件
            spService.createSPUpgradeLog(content, pssId);
            json.put("result", true);
            return json;
        } catch (Exception e) {
            json.put("result", false);
            json.put("msg", getStackMessage(e));
            e.printStackTrace();
            return json;
        }
    }
}
