package cn.newfeifan.mall.module.member.convert.auth;

import cn.newfeifan.mall.module.member.controller.app.auth.vo.*;
import cn.newfeifan.mall.module.member.controller.app.social.vo.AppSocialUserUnbindReqVO;
import cn.newfeifan.mall.module.member.controller.app.user.vo.AppMemberUserResetPasswordReqVO;
import cn.newfeifan.mall.module.system.api.oauth2.dto.OAuth2AccessTokenRespDTO;
import cn.newfeifan.mall.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
import cn.newfeifan.mall.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
import cn.newfeifan.mall.module.system.api.sms.dto.code.SmsCodeValidateReqDTO;
import cn.newfeifan.mall.module.system.api.social.dto.SocialUserBindReqDTO;
import cn.newfeifan.mall.module.system.api.social.dto.SocialUserUnbindReqDTO;
import cn.newfeifan.mall.module.system.api.social.dto.SocialWxJsapiSignatureRespDTO;
import cn.newfeifan.mall.module.system.enums.sms.SmsSceneEnum;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface AuthConvert {

    AuthConvert INSTANCE = Mappers.getMapper(AuthConvert.class);

    SocialUserBindReqDTO convert(Long userId, Integer userType, AppAuthSocialLoginReqVO reqVO);
    SocialUserUnbindReqDTO convert(Long userId, Integer userType, AppSocialUserUnbindReqVO reqVO);

    SmsCodeSendReqDTO convert(AppAuthSmsSendReqVO reqVO);
    SmsCodeUseReqDTO convert(AppMemberUserResetPasswordReqVO reqVO, SmsSceneEnum scene, String usedIp);
    SmsCodeUseReqDTO convert(AppAuthSmsLoginReqVO reqVO, Integer scene, String usedIp);

    AppAuthLoginRespVO convert(OAuth2AccessTokenRespDTO bean, String openid);

    SmsCodeValidateReqDTO convert(AppAuthSmsValidateReqVO bean);

    SocialWxJsapiSignatureRespDTO convert(SocialWxJsapiSignatureRespDTO bean);

}
