package com.guwan.controller.login;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.guwan.controller.login.info.UserRequest;
import com.guwan.controller.login.info.WxMaUserInfo;
import com.guwan.controller.login.request.ScanResult;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.web.bind.annotation.*;

@RestController
public class ScanCodeController {

    @Operation(summary = "获取微信登录二维码信息")
    @RequestMapping("/wxQr")
    @ResponseBody
    public void wxQr(String secret) {
        // 请求易登获取二维码接口
        String s = HttpUtil.get("https://yd.jylt.cc/api/wxLogin/tempUserId?secret=" + secret);
        JSONObject jsonObject = JSONUtil.parseObj(s);
        if (jsonObject.getInt("code") != 0) {
            System.out.println(jsonObject.getInt("code") + "二维码获取失败");
        }else {
            System.out.println(jsonObject.getJSONObject("data"));
            System.out.println(jsonObject.getJSONObject("data").
                    getStr("qrUrl"));
        }
    }


    @PostMapping("/callback")
    public ScanResult handleUserRequest(@RequestBody UserRequest userRequest) {
        // 从userRequest中提取信息
        String tempUserId = userRequest.getTempUserId();
        WxMaUserInfo wxMaUserInfo = userRequest.getWxMaUserInfo();

        // 你可以在这里添加你的业务逻辑，比如保存用户信息到数据库等

        System.out.println(tempUserId);
        System.out.println(userRequest.getWxMaUserInfo().getNickName());

        /**
         * {
         *     "code": "0:登录成功；其他：登录失败",
         *     "msg": "响应给用户的提示信息，该信息用于在小程序端进行提示"
         * }
         */

        // 以下是一个简单的响应示例
        return new ScanResult(0, "恭喜" +
                userRequest.getWxMaUserInfo().getNickName() + "成功登录！！！");
    }



    //用户必须要修改 易登 的信息
    //生产二维码之后 会有一个随机id

    //用户 如果想使用扫码登录 必须要注册 易登
    //而且必须要把 易登 的名字改成和系统一样


    public ScanResult demo(@RequestBody UserRequest userRequest) {
        // 从userRequest中提取信息
        String tempUserId = userRequest.getTempUserId();
        WxMaUserInfo wxMaUserInfo = userRequest.getWxMaUserInfo();

        // 你可以在这里添加你的业务逻辑，比如保存用户信息到数据库等
        System.out.println(tempUserId);
        System.out.println(wxMaUserInfo.getNickName());
        /*
          {
              "code": "0:登录成功；其他：登录失败",
              "msg": "响应给用户的提示信息，该信息用于在小程序端进行提示"
          }
         */
        //TODO: 查询该用户是否注册
        // 注册之后 走 token 逻辑





        // 以下是一个简单的响应示例
        return new ScanResult(0, "恭喜" +
                userRequest.getWxMaUserInfo().getNickName() + "成功登录！！！");
    }




}
