liangwenxuan преди 1 месец
родител
ревизия
c76751d964

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/MemberService.java

@@ -106,7 +106,7 @@ public interface MemberService extends IService<MtUser> {
      * @param  openId 微信openId
      * @return
      */
-    MtUser queryMemberByOpenId(Integer merchantId, String openId, JSONObject userInfo);
+    MtUser queryMemberByOpenId(Integer merchantId, String openId, JSONObject userInfo) throws BusinessCheckException;
 
     /**
      * 根据会员组ID获取会员组信息

+ 11 - 10
fuint-application/src/main/java/com/fuint/common/service/impl/MemberServiceImpl.java

@@ -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, "该微信账号需绑定手机号");
                 }
             }
         }

+ 3 - 3
fuint-application/src/main/java/com/fuint/common/service/impl/PrinterServiceImpl.java

@@ -243,7 +243,7 @@ public class PrinterServiceImpl extends ServiceImpl<MtPrinterMapper, MtPrinter>
      * @param printGoodsIds 需要打印的订单商品行ID,为空表示打印订单全部商品
      * @return 打印内容
      */
-    private String buildOrderPrintContent(UserOrderDto orderInfo, List<Integer> printGoodsIds) {
+    private String buildOrderPrintContent(UserOrderDto orderInfo, List<Integer> printGoodsIds) throws Exception {
         StringBuilder printContent = new StringBuilder();
         printContent.append("<C>").append("<B>" + orderInfo.getStoreInfo().getName() + "</B>").append("<BR></C>");
         printContent.append("<BR>");
@@ -331,8 +331,8 @@ public class PrinterServiceImpl extends ServiceImpl<MtPrinterMapper, MtPrinter>
         printContent.append("<L>")
                 .append("店铺地址:").append((orderInfo.getStoreInfo().getAddress() == null) ? "无" : orderInfo.getStoreInfo().getAddress()).append("<BR>")
                 .append("联系电话:").append((orderInfo.getStoreInfo().getPhone() == null) ? "无" : orderInfo.getStoreInfo().getPhone()).append("<BR>")
-                .append("下单时间:").append(orderInfo.getCreateTime()).append("<BR>")
-                .append("订单备注:").append(StringUtil.isEmpty(orderInfo.getRemark()) ? "无" : orderInfo.getRemark()).append("<BR>");
+                .append("下单时间:").append(orderInfo.getCreateTime()).append("<BR>");
+//                .append("订单备注:").append(StringUtil.isEmpty(orderInfo.getRemark()) ? "无" : orderInfo.getRemark()).append("<BR>");
 
         // 网站二维码
         String webSite = env.getProperty("website.url");

+ 1 - 1
fuint-application/src/main/java/com/fuint/module/clientApi/controller/ClientServiceController.java

@@ -90,7 +90,7 @@ public class ClientServiceController extends BaseController {
             {"refund", "售后服务", "shouhou", "link", "pages/refund/index", ""},
             {"setting", "个人信息", "shezhi1", "link", "pages/user/setting", ""},
             {"book", "立即预约", "naozhong", "link", "subPages/book/index", ""},
-            {"commission", "分佣提成", "zijinmingxi", "link", "subPages/commission/statistics", ""},
+//            {"commission", "分佣提成", "zijinmingxi", "link", "subPages/commission/statistics", ""},
         };
         for (int i = 0; i < defaults.length; i++) {
             ServiceDto dto = new ServiceDto();

+ 1 - 0
fuint-application/src/main/java/com/fuint/module/clientApi/controller/ClientSignController.java

@@ -145,6 +145,7 @@ public class ClientSignController extends BaseController {
         result.put("userId", mtUser.getId());
         result.put("userName", mtUser.getName());
         result.put("openId", mtUser.getOpenId());
+        result.put("phone", mtUser.getMobile());
 
         return getSuccessResult("登录成功", result);
     }

+ 14 - 0
fuint-framework/src/main/java/com/fuint/framework/exception/BusinessCheckException.java

@@ -40,10 +40,24 @@ public class BusinessCheckException extends Exception {
 
     private String errorKey;
 
+    /** 业务错误码,<=0 表示未指定(由全局异常处理器回退到默认 201) */
+    private int errorCode = 0;
+
     public String getErrorKey() {
         return errorKey;
     }
 
+    public int getErrorCode() {
+        return errorCode;
+    }
+
+    public BusinessCheckException(int errorCode, String msg) {
+        super(msg);
+        this.errorKey = msg;
+        this.errorCode = errorCode;
+        this.rootCause = this;
+    }
+
     private String[] errorParam;
 
     private Object[] errorObjectParam;

+ 2 - 1
fuint-framework/src/main/java/com/fuint/framework/exception/GlobalExceptionHandler.java

@@ -39,7 +39,8 @@ public class GlobalExceptionHandler {
     @ExceptionHandler(BusinessCheckException.class)
     public ResponseObject handleServiceException(BusinessCheckException e) {
         log.error(e.getMessage(), e);
-        return new ResponseObject(201, e.getMessage(), null);
+        int code = e.getErrorCode() > 0 ? e.getErrorCode() : 201;
+        return new ResponseObject(code, e.getMessage(), null);
     }
 
     /**