瀏覽代碼

销售端企微会员绑定手机号

wjj 2 天之前
父節點
當前提交
b58b1e5e10

+ 7 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsUserController.java

@@ -297,4 +297,11 @@ public class FsUserController extends BaseController
         return ResponseResult.ok(r);
     }
 
+    @PreAuthorize("@ss.hasPermi('his:user:binPhone')")
+    @PostMapping("/binPhone")
+    @ApiOperation("绑定用户手机号")
+    public R binUserPhone(@RequestBody FsUser user) {
+        return fsUserService.bindUserPhone(user);
+    }
+
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserService.java

@@ -243,4 +243,6 @@ public interface IFsUserService
      * @return List<FsUser>
      * **/
     List<FsUser> selectUserListByUserIds(List<Long> userIds);
+
+    R bindUserPhone(FsUser user);
 }

+ 35 - 6
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -6,11 +6,8 @@ import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.json.JSONUtil;
@@ -66,13 +63,11 @@ import com.fs.im.config.ImTypeConfig;
 import com.fs.im.service.OpenIMService;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsUserBillScrm;
-import com.fs.hisStore.domain.FsUserScrm;
 import com.fs.hisStore.enums.BillDetailEnum;
 import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
 import com.fs.hisStore.service.IFsUserBillScrmService;
 import com.fs.hisStore.vo.FsCompanyUserListQueryVO;
 import com.fs.qw.cache.IQwExternalContactCacheService;
-import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.dto.FsUserTransferParamDTO;
 import com.fs.qw.param.QwFsUserParam;
 import com.fs.qw.service.IQwExternalContactService;
@@ -94,7 +89,6 @@ import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.http.util.Asserts;
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -1611,4 +1605,39 @@ public class FsUserServiceImpl implements IFsUserService {
     public List<FsUser> selectUserListByUserIds(List<Long> userIds) {
         return fsUserMapper.selectUserListByUserIds(userIds);
     }
+
+    @Override
+    public R bindUserPhone(FsUser user) {
+        if (user.getUserId() == null) {
+            return R.error("会员参数错误,绑定手机号失败");
+        }
+        if (StringUtils.isEmpty(user.getPhone())) {
+            return R.error("手机号不能为空!");
+        }
+        if (!isValidPhone(user.getPhone())) {
+            return R.error("手机号格式错误!");
+        }
+        FsUser userByPhone = fsUserMapper.selectFsUserByPhone(user.getPhone());
+        if (userByPhone == null) {
+            userByPhone = fsUserMapper.selectFsUserByPhone(encryptPhone(user.getPhone()));
+        }
+        if (userByPhone != null) {
+            return R.error("改手机号已绑定用户");
+        }
+        //查询用户信息
+        FsUser userById = fsUserMapper.selectFsUserById(user.getUserId());
+        if (userById == null) {
+            return R.error("未找到用户信息");
+        }
+        if (StringUtils.isNotEmpty(userById.getPhone())) {
+            return R.error("该用户已绑定手机号");
+        }
+        FsUser mapUser = new FsUser();
+        mapUser.setUserId(user.getUserId());
+        mapUser.setPhone(user.getPhone());
+        if (fsUserMapper.updateFsUser(mapUser) > 0) {
+            return R.ok();
+        }
+        return R.error("绑定手机号失败");
+    }
 }

+ 13 - 0
fs-service/src/main/java/com/fs/his/utils/PhoneUtil.java

@@ -7,8 +7,11 @@ import javax.crypto.spec.SecretKeySpec;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 public class PhoneUtil {
+    // 中国手机号正则(严谨)
+    private static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";
 
     public static String encryptPhone(String text) {
         String encryptedText=null;
@@ -136,4 +139,14 @@ public class PhoneUtil {
         }
         return encryptedText;
     }
+
+    /**
+     * 严格校验手机号
+     */
+    public static boolean isValidPhone(String phone) {
+        if (phone == null || phone.trim().isEmpty()) {
+            return false;
+        }
+        return Pattern.matches(PHONE_REGEX, phone);
+    }
 }