package com.cyl.wechat;

import com.cyl.h5.service.H5MemberService;
import com.cyl.wechat.response.JssdkConfigResponse;
import com.cyl.wechat.response.WechatUserAuth;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@RestController
@RequestMapping("/no-auth/wechat")
public class WechatController {

    @Autowired
    private H5MemberService service;

    @GetMapping("/jssdk")
    public ResponseEntity<JssdkConfigResponse> getJssdkConfig(){
        String appId = WechatPayData.appId;
        String nonceStr = WechatPayUtil.generateNonceStr();
        long timeStamp = WechatPayUtil.getCurrentTimestamp();
        String signature = Stream.of(appId, String.valueOf(timeStamp), nonceStr)
                .collect(Collectors.joining("\n", "", "\n"));
        JssdkConfigResponse response = new JssdkConfigResponse();
        response.setAppId(appId);
        List<String> jsApiList = new ArrayList<>();
        jsApiList.add("chooseWXPay");
        jsApiList.add("updateAppMessageShareData");
        jsApiList.add("updateTimelineShareData");
        response.setJsApiList(jsApiList);
        response.setNonceStr(nonceStr);
        response.setTimeStamp(String.valueOf(timeStamp));
        response.setSignature(signature);
        return ResponseEntity.ok(response);
    }

    @ApiOperation("获取微信用户授权信息")
    @GetMapping("/getWechatUserAuth")
    public ResponseEntity<WechatUserAuth> getWechatUserAuth(@RequestParam("data") String data){
        return ResponseEntity.ok(service.getWechatUserAuth(data));
    }
}