|
|
@@ -694,7 +694,7 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public MtUser queryMemberByOpenId(Integer merchantId, String openId, JSONObject userInfo) {
|
|
|
+ public MtUser queryMemberByOpenId(Integer merchantId, String openId, JSONObject userInfo) throws BusinessCheckException {
|
|
|
MtUser user = mtUserMapper.queryMemberByOpenId(merchantId, openId);
|
|
|
if (user != null && !user.getStatus().equals(StatusEnum.ENABLED.getKey())) {
|
|
|
return null;
|
|
|
@@ -712,15 +712,16 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
|
|
|
String platform = StringUtil.isNotEmpty(userInfo.getString("platform")) ? userInfo.getString("platform") : "";
|
|
|
String shareId = StringUtil.isNotEmpty(userInfo.getString("shareId")) ? userInfo.getString("shareId") : "0";
|
|
|
|
|
|
- // 需要手机号登录
|
|
|
- if (StringUtil.isEmpty(mobile) && user == null && !platform.equals(PlatformTypeEnum.H5.getCode())) {
|
|
|
- MtSetting mtSetting = settingService.querySettingByName(merchantId, SettingTypeEnum.USER.getKey(), UserSettingEnum.LOGIN_NEED_PHONE.getKey());
|
|
|
- if (mtSetting != null) {
|
|
|
- if (mtSetting.getValue().equals(YesOrNoEnum.TRUE.getKey())) {
|
|
|
- MtUser tempUser = new MtUser();
|
|
|
- tempUser.setOpenId(openId);
|
|
|
- tempUser.setId(0);
|
|
|
- return tempUser;
|
|
|
+ // 需要手机号登录:后台开启"必须手机号"时,若该微信账号尚未绑定手机号则要求前端弹授权组件。
|
|
|
+ // 判定范围:新用户(user==null),或老用户已注册但未绑手机号(user.mobile 为空)。
|
|
|
+ // 已绑手机号的老用户(user!=null 且 mobile 不为空)不进入此分支,仍直接登录(探测式免弹)。
|
|
|
+ if (StringUtil.isEmpty(mobile) && !platform.equals(PlatformTypeEnum.H5.getCode())) {
|
|
|
+ boolean needPhone = user == null || StringUtil.isEmpty(user.getMobile());
|
|
|
+ if (needPhone) {
|
|
|
+ MtSetting mtSetting = settingService.querySettingByName(merchantId, SettingTypeEnum.USER.getKey(), UserSettingEnum.LOGIN_NEED_PHONE.getKey());
|
|
|
+ if (mtSetting != null && mtSetting.getValue().equals(YesOrNoEnum.TRUE.getKey())) {
|
|
|
+ // 探测式免手机号:抛出"需手机号"业务异常,由全局异常处理器统一返回 code=1001,前端据此弹手机号授权组件
|
|
|
+ throw new BusinessCheckException(1001, "该微信账号需绑定手机号");
|
|
|
}
|
|
|
}
|
|
|
}
|