package com.app.dto.wx;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 功能描述：微信 Jscode2Session 对象
 * 官方文档：
 * https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
 *
 * @Auther: 梁展鹏 fsliangzp@163.com
 * @Date: 2018/8/22 15:08
 */
@ApiModel("微信[code2Session]Dto")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class WxCode2SessionDto implements Serializable {

    @ApiModelProperty("会话密钥")
    @JsonProperty("session_key")
    private String sessionKey;

    @ApiModelProperty("用户唯一标识")
    @JsonProperty("openid")
    private String openId;

    /**
     * 用户在开放平台的唯一标识符
     * 如果开发者拥有多个移动应用、网站应用、和公众帐号（包括小程序），可通过unionid来区分用户的唯一性，因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号（包括小程序），用户的unionid是唯一的。
     * 换句话说，同一用户，对同一个微信开放平台下的不同应用，unionid是相同的。
     * todo add by 梁展鹏 20180822 后面再支持该方案，暂时可以快速验证功能
     *
     * @see @link https://developers.weixin.qq.com/miniprogram/dev/api/unionID.html
     */
    @ApiModelProperty("用户在开放平台的唯一标识符")
    @JsonProperty("unionid")
    private String unionId;

    @ApiModelProperty("错误码")
    private Integer errcode = 0;

    @ApiModelProperty("错误信息")
    private String errmsg = "";

}
