package com.miaxis.feign.service;

import com.miaxis.common.config.FeignConfig;
import com.miaxis.feign.dto.WxGzhSend;
import com.miaxis.feign.dto.WxSend;
import com.miaxis.feign.dto.WxTegUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 *
 * 微信接口
 */
@FeignClient(name="wxSendService",
        url = "https://api.weixin.qq.com/cgi-bin",configuration = FeignConfig.class)
public interface IWxSendService {

    @PostMapping(value = "/message/subscribe/send")
    String sendMessage(@RequestParam("access_token")String accessToken, WxSend wxSend);

    @PostMapping(value = "/message/template/send")
    String sendGzhMessage(@RequestParam("access_token")String accessToken, WxGzhSend wxGzhSend);

    @GetMapping(value = "/token")
    String getAccessToken(@RequestParam("grant_type") String grant_type,
                          @RequestParam("appid") String appid,
                          @RequestParam("secret") String secret);

    /**
     * 用户管理 /获取用户列表
     * 公众号可通过本接口来获取帐号的关注者列表，关注者列表由一串OpenID（加密后的微信号，每个用户对每个公众号的OpenID是唯一的）组成。
     * 一次拉取调用最多拉取10000个关注者的OpenID，可以通过多次拉取的方式来满足需求。
     * @param access_token
     * @param next_openid
     * @return
     */
    @GetMapping(value = "/user/get")
    String getUser(@RequestParam("access_token") String access_token,
                          @RequestParam("next_openid") String next_openid);

    /**
     * 获取用户基本信息(UnionID机制)
     * 在关注者与公众号产生消息交互后，公众号可获得关注者的OpenID（加密后的微信号，每个用户对每个公众号的OpenID是唯一的。对于不同公众号，同一用户的openid不同）。
     * 公众号可通过本接口来根据OpenID获取用户基本信息，包括语言和关注时间。
     * 请注意，如果开发者有在多个公众号，或在公众号、移动应用之间统一用户帐号的需求，需要前往微信开放平台（open.weixin.qq.com）绑定公众号后，才可利用UnionID机制来满足上述需求。
     * @param access_token
     * @param openid
     * @param lang
     * @return
     */

    @GetMapping(value = "/user/info")
    String getUserInfo(@RequestParam("access_token") String access_token,
                   @RequestParam("openid") String openid,
                   @RequestParam("lang") String lang);


    /**
     * 获取公众号已创建的标签
     * @param access_token
     * @return
     */
    @PostMapping(value = "/tags/get")
    String getTag(@RequestParam("access_token") String access_token);

    /**
     * 获取标签下粉丝列表
     * @param access_token
     * @return
     */
    @PostMapping(value = "/user/tag/get")
    String getTagUser(@RequestParam("access_token") String access_token, WxTegUser tegUser);

}
