package com.ylx.common.core.domain.model;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.math.BigDecimal;
import java.util.Collection;

/**
 * 微信登录用户信息
 */
@Data
public class WxLoginUser implements UserDetails {

    private static final long serialVersionUID = 1L;

    /**
     * 用户token
     */
    private String token;

    /**
     * 用户id
     */
    private String id;

    /**
     * 登录时间
     */
    private Long loginTime;

    /**
     * 过期时间
     */
    private Long expireTime;

    /**
     * 登录IP地址
     */
    private String ipaddr;

    /**
     * 登录地点
     */
    private String loginLocation;

    /**
     * 浏览器类型
     */
    private String browser;

    /**
     * 操作系统
     */
    private String os;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 服务号登录凭证（code）
     */
    private String code;

    /**
     * 微信小程序openId
     */
    private String cOpenid;

    /**
     * 微信小程序登录会话密钥
     */
    private String cSessionKey;

    /**
     * 头像地址
     */
    private String cIcon;

    /**
     * 电话号码
     */
    private String cPhone;

    /**
     * 微信小程序unionid
     */
    private String cUnionid;

    /**
     * 昵称
     */
    private String cNickName;

    /**
     * 消费金额
     */
    private BigDecimal dMoney;

    /**
     * 下单次数
     */
    private Integer nNum;

    /**
     * 地址信息
     */
    @TableField(value = "c_address_list", typeHandler = FastjsonTypeHandler.class)
    private JSONArray cAddressList;

    /**
     * 当前余额
     */
    private BigDecimal dBalance;

    /**
     * 总收益
     */
    private BigDecimal dAllMoney;

    /**
     * 分销码
     */
    private String cScanImg;

    /**
     * 推荐者信息（上级）id
     */
    private String cUpUser;


    @ApiModelProperty("角色:0普通,1技师")
    private Integer role;

    /**
     * 默认地址
     */
    private String cMrAddressId;

    @ApiModelProperty("是否绑定一账通 0否 1是")
    private Integer isBind;

    @ApiModelProperty("本地生活用户id")
    private String localLiveUserId;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
        return null;
    }

    @Override
    public String getUsername() {
        return null;
    }

    @Override
    public boolean isAccountNonExpired() {
        return false;
    }

    @Override
    public boolean isAccountNonLocked() {
        return false;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return false;
    }

    @Override
    public boolean isEnabled() {
        return false;
    }
}

