package com.ishop.mobile.util; import com.iplatform.base.SecurityConstants; import com.iplatform.base.pojo.RequestLogin; import com.iplatform.model.po.S_user_core; import com.ishop.mobile.Constants; import com.ishop.mobile.pojo.LoginParam; import com.ishop.model.po.EbUser; import com.ishop.model.vo.LoginInfoVo; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.web.CaptchaType; import com.walker.web.ClientType; import com.walker.web.LoginType; import com.walker.web.UserPrincipal; import com.walker.web.UserType; import java.util.Map; public class LoginUtils { public static final void setupBindType(S_user_core userCore, String bindType){ if(StringUtils.isNotEmpty(bindType)){ // 存在用户,但尚未绑定,更新绑定 switch (bindType) { case com.ishop.merchant.Constants.REGISTER_TYPE_WECHAT: userCore.setIs_wechat_public(1); break; case com.ishop.merchant.Constants.REGISTER_TYPE_ROUTINE: userCore.setIs_wechat_routine(1); break; case com.ishop.merchant.Constants.REGISTER_TYPE_IOS_WX: userCore.setIs_wechat_ios(1); break; case com.ishop.merchant.Constants.REGISTER_TYPE_ANDROID_WX: userCore.setIs_wechat_android(1); break; } } } /** * 获取用户Token类型,已有方法。 * @param type 用户注册类型 * @date 2023-08-07 */ public static final int getUserTokenType(String type) { Integer userTokenType = 0; switch (type) { case com.ishop.merchant.Constants.REGISTER_TYPE_WECHAT: userTokenType = com.ishop.merchant.Constants.USER_TOKEN_TYPE_WECHAT; break; case com.ishop.merchant.Constants.REGISTER_TYPE_ROUTINE: userTokenType = com.ishop.merchant.Constants.USER_TOKEN_TYPE_ROUTINE; break; case com.ishop.merchant.Constants.REGISTER_TYPE_IOS_WX: userTokenType = com.ishop.merchant.Constants.USER_TOKEN_TYPE_IOS_WX; break; case com.ishop.merchant.Constants.REGISTER_TYPE_ANDROID_WX: userTokenType = com.ishop.merchant.Constants.USER_TOKEN_TYPE_ANDROID_WX; break; } return userTokenType; } /** * 手机端登录时,组装返回前端用户信息。 *

该方法在手机(验证码)登录方法中使用。{@linkplain com.ishop.mobile.api.LoginApi#phoneCaptchaLogin(LoginParam)}

* @param data 调用系统登录返回的用户基本对象。 * @return * @date 2023-06-30 */ public static final LoginInfoVo acquireLoginInfoVo(Map data){ UserPrincipal userPrincipal = (UserPrincipal) data.get(SecurityConstants.KEY_USER_INFO_APP); LoginInfoVo vo = new LoginInfoVo(); vo.setToken(data.get(com.walker.web.Constants.TOKEN_NAME).toString()); vo.setId(userPrincipal.getUserInfo().getId()); vo.setPhone(userPrincipal.getUserInfo().getPhonenumber()); vo.setNikeName(userPrincipal.getUserInfo().getNick_name()); vo.setType(Constants.LOGIN_STATUS_LOGIN); return vo; } public static final EbUser acquireMobileRegisterEbUser(String phone, S_user_core userCore, String avatar){ EbUser ebUser = new EbUser(); ebUser.setAccount(phone); ebUser.setPwd(userCore.getPassword()); ebUser.setPhone(phone); ebUser.setNickname(userCore.getNick_name()); ebUser.setSex(0); ebUser.setRegisterType(userCore.getRegister_type()); ebUser.setAddress(StringUtils.EMPTY_STRING); ebUser.setAvatar(avatar); ebUser.setLastLoginTime(userCore.getCreate_time()); ebUser.setCreateTime(userCore.getCreate_time()); ebUser.setUpdateTime(userCore.getCreate_time()); ebUser.setIsWechatRoutine(userCore.getIs_wechat_routine()); ebUser.setIsWechatPublic(userCore.getIs_wechat_public()); ebUser.setIsWechatAndroid(userCore.getIs_wechat_android()); ebUser.setIsWechatIos(userCore.getIs_wechat_ios()); ebUser.setLevel(0); ebUser.setSignNum(0); ebUser.setCountry("CN"); ebUser.setIntegral(0); ebUser.setExperience(0); ebUser.setNowMoney(0d); ebUser.setPayCount(0); ebUser.setStatus(1); ebUser.setIsLogoff(0); ebUser.setIsBindingIos(0); ebUser.setBrokeragePrice(0d); ebUser.setIsPromoter(0); ebUser.setSpreadUid(0L); ebUser.setSpreadCount(0); return ebUser; } public static final S_user_core acquireMobileRegisterUserCore(String phone, String defaultPassEncrypt, String avatar){ S_user_core userCore = new S_user_core(); userCore.setUser_name(phone); userCore.setPhonenumber(phone); userCore.setNick_name(com.ishop.mobile.Constants.REG_USER_PREFIX + StringUtils.generateRandomNumber(6)); userCore.setOrg_id(0L); userCore.setDept_id(0L); userCore.setUser_type(UserType.TYPE_APP_REG); userCore.setPassword(defaultPassEncrypt); userCore.setSex("0"); userCore.setType(0); // 普通用户,类型默认为0 userCore.setRegister_type(com.ishop.mobile.Constants.REGISTER_TYPE_H5); userCore.setBind_mobile(1); // 这里(手机号不存在直接注册)肯定已绑定手机 userCore.setCreate_by("register"); userCore.setCreate_time(DateUtils.getDateTimeNumber()); userCore.setUpdate_time(userCore.getCreate_time()); userCore.setAvatar(avatar); // 设置默认值 userCore.setIs_wechat_public(0); userCore.setIs_wechat_routine(0); userCore.setIs_wechat_ios(0); userCore.setIs_wechat_android(0); userCore.setModify_pwd(0); userCore.setBind_wechat(0); userCore.setBind_mail(0); userCore.setProfile_id(0L); userCore.setIs_sms(1); userCore.setStatus(com.iplatform.base.Constants.STATUS_NORMAL); userCore.setMer_id(0L); userCore.setDel_flag(0); userCore.setIs_logoff(0); userCore.setLogin_date(userCore.getCreate_time()); userCore.setLogoff_time(0L); return userCore; } // public static final RequestLogin acquireRequestLoginByWechatRoutine(String loginId, String encryptPass){ // RequestLogin requestLogin = new RequestLogin(); // requestLogin.setUuid(StringUtils.EMPTY_STRING); // requestLogin.setLoginType(LoginType.INDEX_WECHAT); // requestLogin.setClientType(ClientType.INDEX_MOBILE); // requestLogin.setUsername(loginId); // requestLogin.setPassword(encryptPass); // requestLogin.setCode(StringUtils.EMPTY_STRING); // requestLogin.setVerifyType(CaptchaType.INDEX_NONE); // 后台:WechatLoginCallback -> NoneCaptchaProvider // return requestLogin; // } /** * 微信登录时,组装一个请求对象。 * @param loginId 用户登录名 * @param encryptPass 从数据库查询的加密密码 * @return * @date 2023-07-27 */ public static final RequestLogin acquireRequestLoginByWechatPublic(String loginId, String encryptPass){ RequestLogin requestLogin = new RequestLogin(); requestLogin.setUuid(StringUtils.EMPTY_STRING); requestLogin.setLoginType(LoginType.INDEX_WECHAT); requestLogin.setClientType(ClientType.INDEX_MOBILE); requestLogin.setUsername(loginId); requestLogin.setPassword(encryptPass); requestLogin.setCode(StringUtils.EMPTY_STRING); requestLogin.setVerifyType(CaptchaType.INDEX_NONE); // 后台:WechatLoginCallback -> NoneCaptchaProvider return requestLogin; } /** * 根据移动端请求参数,组装一个系统统一的登录请求对象。 * @param param * @return * @date 2023-06-28 */ public static final RequestLogin acquireRequestLoginByCaptcha(LoginParam param){ RequestLogin requestLogin = new RequestLogin(); requestLogin.setUuid(param.getUuid()); requestLogin.setLoginType(LoginType.INDEX_SMS_CODE); requestLogin.setClientType(ClientType.INDEX_MOBILE); requestLogin.setUsername(param.getPhone()); requestLogin.setPassword(param.getCaptcha()); requestLogin.setCode(param.getCaptcha()); requestLogin.setVerifyType(CaptchaType.INDEX_SMS_CODE); return requestLogin; } public static final RequestLogin acquireRequestLoginByPassword(LoginParam param){ RequestLogin requestLogin = new RequestLogin(); requestLogin.setUuid(param.getUuid()); requestLogin.setLoginType(LoginType.INDEX_MOBILE_PASSWORD); requestLogin.setClientType(ClientType.INDEX_MOBILE); requestLogin.setUsername(param.getPhone()); requestLogin.setPassword(param.getPassword()); requestLogin.setCode(param.getCaptcha()); requestLogin.setVerifyType(CaptchaType.INDEX_NONE); return requestLogin; } }