Pārlūkot izejas kodu

拉机构上线

chao 4 gadi atpakaļ
vecāks
revīzija
702771e372

+ 3 - 3
src/main/java/com/caimei365/user/controller/RegisterApi.java

@@ -51,7 +51,7 @@ public class RegisterApi {
      */
     @Idempotent(prefix="idempotent_club", keys={"#baseUser"}, expire=5)
     @PostMapping("/club")
-    public ResponseJson<ClubPo> clubRegister(ClubRegisterDto clubRegisterDto,
+    public ResponseJson clubRegister(ClubRegisterDto clubRegisterDto,
                                              String passWordConfirm,
                                              String smsCode,
                                              Integer isAgreed,
@@ -91,13 +91,13 @@ public class RegisterApi {
      * @return ClubPo
      */
     @PostMapping("/club/upgrade")
-    public ResponseJson<ClubPo> clubUpgrade(ClubUpgradeDto upgradeDto, @RequestHeader HttpHeaders headers){
+    public ResponseJson clubUpgrade(ClubUpgradeDto upgradeDto, @RequestHeader HttpHeaders headers){
         return registerService.clubUpgrade(upgradeDto, headers);
     }
 
     /**
      * 协销拉机构上线
-     * <p>
+     *
      * spi旧接口:/seller/club/register
      *
      * @param onlineDto ClubOnlineDto:{

+ 8 - 4
src/main/java/com/caimei365/user/mapper/BaseMapper.java

@@ -1,9 +1,6 @@
 package com.caimei365.user.mapper;
 
-import com.caimei365.user.model.vo.CityVo;
-import com.caimei365.user.model.vo.ProvinceVo;
-import com.caimei365.user.model.vo.TownVo;
-import com.caimei365.user.model.vo.UserVo;
+import com.caimei365.user.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -67,4 +64,11 @@ public interface BaseMapper {
      * @return
      */
     UserVo getUserByUserId(Integer userId);
+
+    /**
+     * 根据用户Id获取用户名
+     * @param userId    用户Id
+     * @return
+     */
+    String getUserNameByUserId(Integer userId);
 }

+ 16 - 8
src/main/java/com/caimei365/user/mapper/LoginMapper.java

@@ -41,7 +41,7 @@ public interface LoginMapper {
      * @param openId openId
      * @return BaseUser
      */
-    UserLoginVo getServiceProviderByOpenId(@Param("openId") String openId);
+    UserLoginVo getServiceProviderUserByOpenId(@Param("openId") String openId);
 
     /**
      * 根据用户ID更新协销unionId
@@ -50,6 +50,13 @@ public interface LoginMapper {
      */
     void updateServiceProviderUnionId(@Param("userId") Integer userId, @Param("unionId") String unionId);
 
+    /**
+     * 根据userId获取协销
+     * @param userId
+     * @return
+     */
+    ServiceProviderVo getServiceProviderByUserId(Integer userId);
+
     /**
      * 根据unionId获取运营人员
      * @param unionId unionId
@@ -70,6 +77,13 @@ public interface LoginMapper {
      * @return
      */
     UserLoginVo getOperationUserByInvitationCode(String invitationCode);
+
+    /**
+     * 根据Id获取运营人员用户信息(关联user)
+     * @param operationId    用户Id
+     * @return
+     */
+    UserLoginVo getOperationUserByOperationId(Integer operationId);
     /**
      * 根据用户ID更新运营人员openId
      * @param userId
@@ -110,13 +124,6 @@ public interface LoginMapper {
      */
     Integer getClubCountByClubName(String clubName);
 
-    /**
-     * 根据userId获取协销
-     * @param userId
-     * @return
-     */
-    ServiceProviderVo getServiceProviderByUserId(Integer userId);
-
     /**
      * 获取最大的用户Id
      * @return
@@ -128,4 +135,5 @@ public interface LoginMapper {
      * @return
      */
     Integer getMaxUserId();
+
 }

+ 7 - 1
src/main/java/com/caimei365/user/mapper/RegisterMapper.java

@@ -22,11 +22,17 @@ public interface RegisterMapper {
      */
     int insertClubUser(UserPo user);
     /**
-     * 保存机构(club)
+     * 保存普通机构(club)
      * @param club
      * @return
      */
     int insertClub(ClubPo club);
+    /**
+     * 保存会员机构(club)
+     * @param club
+     * @return
+     */
+    int insertUpgradeClub(ClubPo club);
     /**
      * 保存运营人员(operation)
      * @param operation

+ 4 - 0
src/main/java/com/caimei365/user/model/po/ClubPo.java

@@ -105,6 +105,10 @@ public class ClubPo implements Serializable {
      * 协销ID
      */
     private Integer serviceProviderId;
+    /**
+     * 扫描状态 0待扫描 1 已扫描 2已上线
+     */
+    private Integer scanFlag;
     /**
      * 注册时间
      */

+ 1 - 1
src/main/java/com/caimei365/user/model/po/ServiceProvider.java → src/main/java/com/caimei365/user/model/po/ServiceProviderPo.java

@@ -9,7 +9,7 @@ import lombok.Data;
  * @date : 2021/3/18
  */
 @Data
-public class ServiceProvider {
+public class ServiceProviderPo {
     /**
      * 协销Id(serviceProviderID)
      */

+ 14 - 2
src/main/java/com/caimei365/user/model/vo/ServiceProviderVo.java

@@ -1,6 +1,6 @@
 package com.caimei365.user.model.vo;
 
-import com.caimei365.user.model.po.ServiceProvider;
+import com.caimei365.user.model.po.ServiceProviderPo;
 import lombok.Data;
 
 /**
@@ -10,5 +10,17 @@ import lombok.Data;
  * @date : 2021/3/18
  */
 @Data
-public class ServiceProviderVo extends ServiceProvider {
+public class ServiceProviderVo{
+    /**
+     * 用户ID
+     */
+    private Integer userId;
+    /**
+     * 协销Id(serviceProviderID)
+     */
+    private Integer serviceProviderId;
+    /**
+     * 协销状态,见表c_serviceproviderstatus或枚举ServiceProviderStatus
+     */
+    private Integer status;
 }

+ 11 - 9
src/main/java/com/caimei365/user/model/vo/UserLoginVo.java

@@ -61,7 +61,7 @@ public class UserLoginVo implements Serializable {
     /**
      * 运营人员手机号
      */
-    private String operatorMobile;
+    private String operationMobile;
     /**
      * 密码
      */
@@ -75,11 +75,17 @@ public class UserLoginVo implements Serializable {
      */
     private Integer userPermission;
     /**
-     * 用户状态:
-     * 机构:90:已上线,91:已冻结,92:审查资料未通过,待补充资料,1:待审查资料,2:电话预约,3:已预约,20:待确认,21:待拜访,30:待员工推荐,40:已完成第一次采购
-     * 供应商:90:已上线,91:已下线,92:审核不通过,3:待审核
+     * 机构状态:90:已上线,91:已冻结,92:审查资料未通过,待补充资料,1:待审查资料,2:电话预约,3:已预约,20:待确认,21:待拜访,30:待员工推荐,40:已完成第一次采购
      */
-    private Integer status;
+    private Integer clubStatus;
+    /**
+     * 供应商状态:90:已上线,91:已下线,92:审核不通过,3:待审核
+     */
+    private Integer shopStatus;
+    /**
+     * 运营人员状态:1未绑定,2已绑定
+     */
+    private Integer operationStatus;
     /**
      * token
      */
@@ -96,10 +102,6 @@ public class UserLoginVo implements Serializable {
      * 邀请码生成时间
      */
     private Date invitationCodeTime;
-    /**
-     * 运营人员状态:1未绑定,2已绑定
-     */
-    private Integer operationStatus;
     /**
      * 删除标识:0有效,其它无效
      */

+ 33 - 3
src/main/java/com/caimei365/user/service/RegisterService.java

@@ -32,9 +32,9 @@ public interface RegisterService {
      * @param smsCode         短信验证码(旧:activationCode)
      * @param isAgreed        是否同意勾选同意协议,1是,其他否
      * @param headers         HttpHeaders
-     * @return ClubPo
+     * @return void
      */
-    ResponseJson<ClubPo> clubRegister(ClubRegisterDto clubRegisterDto, String passWordConfirm, String smsCode, Integer isAgreed, HttpHeaders headers);
+    ResponseJson clubRegister(ClubRegisterDto clubRegisterDto, String passWordConfirm, String smsCode, Integer isAgreed, HttpHeaders headers);
 
     /**
      * 普通机构升级会员机构
@@ -65,8 +65,38 @@ public interface RegisterService {
      * @param headers   HttpHeaders
      * @return ClubPo
      */
-    ResponseJson<ClubPo> clubUpgrade(ClubUpgradeDto upgradeDto, HttpHeaders headers);
+    ResponseJson clubUpgrade(ClubUpgradeDto upgradeDto, HttpHeaders headers);
 
+    /**
+     * 协销拉机构上线
+     *
+     * spi旧接口:/seller/club/register
+     *
+     * @param onlineDto ClubOnlineDto:{
+     *                  source                  注册来源: 0网站 1小程序
+     *                  userId                  协销用户ID(userID)
+     *                  name                    机构名称
+     *                  sName                   机构简称(sname)
+     *                  bindMobile              企业绑定手机号
+     *                  contractEmail           邮箱(email)
+     *                  linkMan                 联系人(linkMan1)
+     *                  provinceId             省Id
+     *                  cityId                 市Id
+     *                  townId                 县区Id
+     *                  address                地址
+     *                  shopPhoto              门头照(headpic)
+     *                  businessLicense        营业执照(businessLicenseImage)
+     *                  socialCreditCode       统一社会信用代码(socialCreditCode)
+     *                  firstClubType          一级分类:医美=1和生美=2
+     *                  secondClubType         医美的二级分类:诊所=1、门诊=2、医院=3。  生美没有二级分类
+     *                  department             医美分类下的门诊和医院则需要填写科室
+     *                  medicalPracticeLicense 医美分类必须上传医疗执业许可证(medicalPracticeLicenseImg)
+     *                  mainProduct            主打项目(mainpro)
+     *                  }
+     * @param isAgreed  是否同意勾选同意协议,1是,其他否
+     * @param headers   HttpHeaders
+     * @return ClubPo
+     */
     ResponseJson<ClubPo> clubOnline(ClubOnlineDto onlineDto, Integer isAgreed, HttpHeaders headers);
 
     /**

+ 7 - 7
src/main/java/com/caimei365/user/service/impl/LoginServiceImpl.java

@@ -121,7 +121,7 @@ public class LoginServiceImpl implements LoginService {
         redisService.setMap("wxInfo:applets:" + unionId, infoData);
         log.info("小程序授权登录,返回unionId给前端,用户数据存入Redis,key:wxInfo:applets:" + unionId);
         // 协销授权登录
-        UserLoginVo seller = loginMapper.getServiceProviderByOpenId(openId);
+        UserLoginVo seller = loginMapper.getServiceProviderUserByOpenId(openId);
         if (null != seller) {
             loginMapper.updateServiceProviderUnionId(seller.getUserId(), unionId);
             String token = JwtUtil.createToken(seller.getUserId());
@@ -243,16 +243,16 @@ public class LoginServiceImpl implements LoginService {
         // 为了过期续签,将token存入redis,并设置超时时间
         redisService.set(token, token, JwtUtil.getExpireTime());
         loginUser.setToken(token);
-        if (loginUser.getStatus() == 91) {
+        if (loginUser.getClubStatus() == 91 || loginUser.getShopStatus() == 91) {
             //机构 / 供应商
             return ResponseJson.error(-2, "您的企业账号已被冻结,请联系客服处理", null);
         }
         // 供应商
         if (loginUser.getUserIdentity() == 3) {
-            if (loginUser.getStatus() == 3) {
+            if (loginUser.getShopStatus() == 3) {
                 return ResponseJson.error(-2, "您的企业账号正在加速审核中,审核通过后即可登录", null);
             }
-            if (loginUser.getStatus() == 92) {
+            if (loginUser.getShopStatus() == 92) {
                 return ResponseJson.error(-3, "您的企业账号审核未通过", loginUser);
             }
         }
@@ -373,10 +373,10 @@ public class LoginServiceImpl implements LoginService {
         }
         // 用户身份:1机构,2供应商
         int userIdentity = 3 == operation.getUserIdentity() ? 2 : 1;
-        if (operation.getStatus() != null && 1 == userIdentity && 91 != operation.getStatus()) {
+        if (operation.getClubStatus() != null && 1 == userIdentity && 91 != operation.getClubStatus()) {
             return ResponseJson.error("您的机构已冻结", null);
         }
-        if (operation.getStatus() != null && 2 == userIdentity && 91 != operation.getStatus()) {
+        if (operation.getShopStatus() != null && 2 == userIdentity && 91 != operation.getShopStatus()) {
             return ResponseJson.error("您的企业账号已被冻结,请联系客服处理", null);
         }
         if (0 != operation.getDelFlag()) {
@@ -441,7 +441,7 @@ public class LoginServiceImpl implements LoginService {
         boolean b = userByMobile != null && !userId.equals(userByMobile.getUserId());
         if (operationByMobile != null) {
             userByMobile = loginMapper.getLoginUserByUserId(operationByMobile.getUserId());
-            if (b || 91 != userByMobile.getStatus()) {
+            if (b || (91 != userByMobile.getClubStatus() && 91 != userByMobile.getShopStatus())) {
                 return ResponseJson.error("该手机号已被使用", null);
             } else {
                 // 解绑运营人员

+ 171 - 85
src/main/java/com/caimei365/user/service/impl/RegisterServiceImpl.java

@@ -28,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -55,7 +54,6 @@ public class RegisterServiceImpl implements RegisterService {
      */
     private String mailTxt = "欢迎成为采美普通机构用户,您的登录账号为:%s,初始密码为:%s,您可使用该账号密码登录采美365网和【采美采购商城】小程序。登录后可升级为会员机构,享受更多更好的服务。";
     private String memberMailTxt = "欢迎成为采美会员机构用户,您的登录账号为:%s,初始密码为:%s,您可使用该账号密码登录采美365网和【采美采购商城】小程序享受会员专属服务。";
-    private String initPassword = "caimei123";
 
     /**
      * 普通机构入驻(注册)
@@ -77,7 +75,7 @@ public class RegisterServiceImpl implements RegisterService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ResponseJson<ClubPo> clubRegister(ClubRegisterDto clubRegisterDto, String passWordConfirm, String smsCode, Integer isAgreed, HttpHeaders headers) {
+    public ResponseJson clubRegister(ClubRegisterDto clubRegisterDto, String passWordConfirm, String smsCode, Integer isAgreed, HttpHeaders headers) {
         // 打印IP
         String ip = headers.getFirst("X-CLIENT-IP");
         log.info("机构注册 X-CLIENT-IP : " + ip);
@@ -85,17 +83,17 @@ public class RegisterServiceImpl implements RegisterService {
         if (StringUtils.isBlank(clubRegisterDto.getUserName()) || StringUtils.isBlank(clubRegisterDto.getBindMobile())
             || StringUtils.isBlank(clubRegisterDto.getPassword()) || StringUtils.isBlank(passWordConfirm) ||
             StringUtils.isBlank(smsCode)) {
-            return ResponseJson.error("参数异常", null);
+            return ResponseJson.error("参数异常");
         }
         if (1 != isAgreed) {
-            return ResponseJson.error("请勾选同意协议", null);
+            return ResponseJson.error("请勾选同意协议");
         }
         if (!clubRegisterDto.getPassword().equals(passWordConfirm)) {
-            return ResponseJson.error("输入的密码不一致", null);
+            return ResponseJson.error("输入的密码不一致");
         }
         // 手机号与验证码校验
         String result = mobileAndCodeValidate(clubRegisterDto.getBindMobile(), smsCode);
-        if (result != null) {return ResponseJson.error(result, null);}
+        if (result != null) {return ResponseJson.error(result);}
         /*
             组装用户数据 user
          */
@@ -224,7 +222,7 @@ public class RegisterServiceImpl implements RegisterService {
             log.info("注册普通机构,默认绑定为机构运营人员");
         }
         log.info("注册普通机构成功,手机号>>>" + clubRegisterDto.getBindMobile());
-        return ResponseJson.success(club);
+        return ResponseJson.success("机构注册成功", null);
     }
 
     /**
@@ -258,23 +256,23 @@ public class RegisterServiceImpl implements RegisterService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ResponseJson<ClubPo> clubUpgrade(ClubUpgradeDto upgradeDto, HttpHeaders headers) {
+    public ResponseJson clubUpgrade(ClubUpgradeDto upgradeDto, HttpHeaders headers) {
         // 打印IP
         String ip = headers.getFirst("X-CLIENT-IP");
         log.info("机构升级 X-CLIENT-IP : " + ip);
         // 参数校验
         if (upgradeDto.getUserId() == null || upgradeDto.getClubId() == null || StringUtils.isBlank(upgradeDto.getContractEmail()) || StringUtils.isBlank(upgradeDto.getName())
                 || StringUtils.isBlank(upgradeDto.getBusinessLicense()) || upgradeDto.getTownId() == null || upgradeDto.getFirstClubType() == null) {
-            return ResponseJson.error("参数异常", null);
+            return ResponseJson.error("参数异常");
         }
         if (upgradeDto.getFirstClubType() == 1){
             if (upgradeDto.getSecondClubType() == null || StringUtils.isBlank(upgradeDto.getDepartment()) || StringUtils.isBlank(upgradeDto.getMedicalPracticeLicense())) {
-                return ResponseJson.error("医美分类下参数异常", null);
+                return ResponseJson.error("医美分类下参数异常");
             }
         }
         Integer userIdByEmail = baseMapper.getUserIdByEmail(upgradeDto.getContractEmail());
         if (null != userIdByEmail && userIdByEmail > 0 ) {
-            return ResponseJson.error("该邮箱已被使用", null);
+            return ResponseJson.error("该邮箱已被使用");
         }
         // 更新用户数据 user
         UserPo user = new UserPo();
@@ -339,10 +337,39 @@ public class RegisterServiceImpl implements RegisterService {
          */
         club.setStatus(1);
         registerMapper.updateClubByUpgrade(club);
-        return ResponseJson.success(club);
+        return ResponseJson.success("机构升级成功", null);
     }
 
-
+    /**
+     * 协销拉机构上线
+     *
+     * spi旧接口:/seller/club/register
+     *
+     * @param onlineDto ClubOnlineDto:{
+     *                  source                  注册来源: 0网站 1小程序
+     *                  userId                  协销用户ID(userID)
+     *                  name                    机构名称
+     *                  sName                   机构简称(sname)
+     *                  bindMobile              企业绑定手机号
+     *                  contractEmail           邮箱(email)
+     *                  linkMan                 联系人(linkMan1)
+     *                  provinceId             省Id
+     *                  cityId                 市Id
+     *                  townId                 县区Id
+     *                  address                地址
+     *                  shopPhoto              门头照(headpic)
+     *                  businessLicense        营业执照(businessLicenseImage)
+     *                  socialCreditCode       统一社会信用代码(socialCreditCode)
+     *                  firstClubType          一级分类:医美=1和生美=2
+     *                  secondClubType         医美的二级分类:诊所=1、门诊=2、医院=3。  生美没有二级分类
+     *                  department             医美分类下的门诊和医院则需要填写科室
+     *                  medicalPracticeLicense 医美分类必须上传医疗执业许可证(medicalPracticeLicenseImg)
+     *                  mainProduct            主打项目(mainpro)
+     *                  }
+     * @param isAgreed  是否同意勾选同意协议,1是,其他否
+     * @param headers   HttpHeaders
+     * @return ClubPo
+     */
     @Override
     public ResponseJson<ClubPo> clubOnline(ClubOnlineDto onlineDto, Integer isAgreed, HttpHeaders headers) {
         // 打印IP
@@ -359,7 +386,7 @@ public class RegisterServiceImpl implements RegisterService {
             return ResponseJson.error("请勾选同意协议", null);
         }
         // 是否填写升级资料
-        if (!StringUtils.isBlank(onlineDto.getContractEmail())) {
+        if (StringUtils.isNotBlank(onlineDto.getContractEmail())) {
             // 邮箱验证
             if (ValidateUtil.validateEmail(onlineDto.getContractEmail())) {
                 return ResponseJson.error("邮箱格式不正确", null);
@@ -384,95 +411,134 @@ public class RegisterServiceImpl implements RegisterService {
             }
         }
         // 手机号验证
-        UserLoginVo userByMobile = loginMapper.getLoginUserByMobileOrEmail(mobile);
-        if (userByMobile != null) {
-            ResponseJson validReason = ValidateUtil.getMobileValidateReason(mobile, userByMobile);
-            return ResponseJson.error(validReason.getMsg(), null);
-        }
-        // 协销信息
+        String result = mobileAndCodeValidate(mobile, null);
+        if (result != null) {return ResponseJson.error(result, null);}
+        // 获取协销信息
         Integer userId = onlineDto.getUserId();
         ServiceProviderVo serviceProvider = loginMapper.getServiceProviderByUserId(userId);
         // 设置日期时间格式
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String current = dateFormat.format(new Date());
-
         /*
             组装用户数据 user
          */
         UserPo user = new UserPo();
-        /*
-            组装用户数据 club
-         */
-        ClubPo club = new ClubPo();
-
-        // 是否填写升级资料
-        if (StringUtils.isBlank(onlineDto.getContractEmail())) {
-            //  状态: 已上线
-            user.setClubStatus(90);
-            // 组织名称
-            user.setName(onlineDto.getLinkMan());
-            //  状态: 已上线
-            club.setStatus(90);
-            // 机构名称
-            club.setName(onlineDto.getLinkMan());
-            // 机构简称
-            club.setSName(onlineDto.getLinkMan());
-        } else {
-            // 状态:待审查资料
-            user.setClubStatus(1);
-            // 组织名称
-            user.setName(onlineDto.getName());
-            // 邮箱
-            user.setEmail(onlineDto.getContractEmail());
-            // 邮箱
-            club.setContractEmail(onlineDto.getContractEmail());
-            // 待审查资料
-            club.setStatus(1);
-        }
-        // 协销Id
-        user.setServiceProviderId(serviceProvider.getServiceProviderId());
-        // 协销状态
-        user.setServiceProviderStatus(serviceProvider.getStatus());
-        // 小程序注册
-        user.setSource(1);
-        // 用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构
-        user.setUserIdentity(4);
-        // 设置为机构( 供应商1,会员机构3,普通机构4)
-        user.setRegisterUserTypeId(4);
-        // 状态: 已上线
-        user.setUserPermission(5);
-        // 手机号
-        user.setBindMobile(mobile);
-        // 默认密码
-        user.setPassword(Md5Util.md5(initPassword));
+        // 注册时间
         user.setRegisterTime(current);
         // 机构拉上线统称为此IP方便后面直接标记为协销代注册
         user.setRegisterIp("192.168.1.10");
+        // 注册来源: 0网站 1小程序(拉机构上线小程序注册)
+        user.setSource(1);
+        // 用户类型,供应商1,会员机构3,普通机构4
+        user.setRegisterUserTypeId(4);
+        // 组织名称
+        user.setName(onlineDto.getLinkMan());
         // 用户名
         user.setUserName(onlineDto.getLinkMan());
-        // 同意协议标志
-        user.setAgreeFlag(1);
+        // 绑定手机号
+        user.setBindMobile(mobile);
+        // 用户身份: 1协销 2会员机构 3供应商 4普通机构
+        user.setUserIdentity(4);
+        // 用户权限: 2会员机构 3供应商 4协销 5普通机构
+        user.setUserPermission(5);
+        // 设置机构上线
+        user.setClubStatus(90);
+        // 默认密码
+        String initPassword = "caimei123";
+        user.setPassword(Md5Util.md5(initPassword));
+        // 同意协议
+        user.setAgreeFlag(isAgreed);
         // 用户状态,1正常,0冻结
         user.setValidFlag(1);
+        // 协销Id
+        user.setServiceProviderId(serviceProvider.getServiceProviderId());
+        // 协销状态
+        user.setServiceProviderStatus(serviceProvider.getStatus());
+        // 会员机构,填写升级资料
+        if (StringUtils.isNotBlank(onlineDto.getContractEmail())) {
+            // 状态:待审查资料
+            user.setClubStatus(1);
+            // 组织名称
+            user.setName(onlineDto.getName());
+            // 邮箱
+            user.setEmail(onlineDto.getContractEmail());
+        }
+        /* 保存数据库 user */
+        int insertUserFlag = registerMapper.insertClubUser(user);
+        log.info("插入数据库User表,获得userId:"+user.getUserId());
+        if (insertUserFlag < 1) {
+            throw new RuntimeException("插入数据库异常user:" + user.toString());
+        }
         /*
-            保存数据库 user
-         */
-        registerMapper.insertClubUser(user);
-        /*
-         * 注册机构信息
+            组装机构数据
          */
-        // 设置club信息 并保存
-        club.setUserId(user.getUserId());
+        ClubPo club = new ClubPo();
+        int insertClubFlag = 0;
+        // 联系手机
         club.setContractMobile(mobile);
+        // 联系人
         club.setLinkMan(onlineDto.getLinkMan());
+        // 用户Id
+        club.setUserId(user.getUserId());
         // 设置协销ID
         club.setServiceProviderId(serviceProvider.getServiceProviderId());
         // 待扫描
+        club.setScanFlag(0);
+        // 注册时间
         club.setAddTime(current);
-        /*
-            保存数据库 club
-         */
-        registerMapper.insertClub(club);
+        // 会员机构,填写升级资料
+        if (StringUtils.isNotBlank(onlineDto.getContractEmail())) {
+            // 机构名称
+            club.setName(onlineDto.getName());
+            // 机构简称
+            club.setSName(onlineDto.getSName());
+            // 邮箱
+            club.setContractEmail(onlineDto.getContractEmail());
+            // 待审查资料
+            club.setStatus(1);
+            // 地址
+            club.setProvinceId(onlineDto.getProvinceId());
+            club.setCityId(onlineDto.getCityId());
+            club.setTownId(onlineDto.getTownId());
+            club.setAddress(onlineDto.getAddress());
+            // 门头照
+            club.setShopPhoto(onlineDto.getShopPhoto());
+            // 营业执照
+            club.setBusinessLicense(onlineDto.getBusinessLicense());
+            // 统一社会信用代码
+            club.setSocialCreditCode(onlineDto.getSocialCreditCode());
+            // 分类: 1医美, 2生美
+            club.setFirstClubType(onlineDto.getFirstClubType());
+            if (onlineDto.getFirstClubType() == 1){
+                // 医美二级分类: 1诊所、2门诊、3医院
+                club.setSecondClubType(onlineDto.getSecondClubType());
+                // 门诊和医院则需要填写科室
+                club.setDepartment(onlineDto.getDepartment());
+                // 医美分类必须上传医疗执业许可证
+                club.setMedicalPracticeLicense(onlineDto.getMedicalPracticeLicense());
+            }
+            // 主打项目(mainpro)
+            club.setMainProduct(onlineDto.getMainProduct());
+            /*
+                保存数据库(会员机构) club
+             */
+             insertClubFlag = registerMapper.insertUpgradeClub(club);
+        } else {
+            // 机构名称
+            club.setName(onlineDto.getLinkMan());
+            // 机构简称
+            club.setSName(onlineDto.getLinkMan());
+            // 状态设置上线
+            club.setStatus(90);
+            /*
+               保存数据库(普通机构) club
+             */
+            insertClubFlag = registerMapper.insertClub(club);
+        }
+        log.info("插入数据库club表,获得clubId:"+club.getClubId());
+        if (insertClubFlag < 1) {
+            throw new RuntimeException("插入数据库异常club:" + club.toString());
+        }
         /*
          * 操作成功,推送短信给机构,获取账号密码。
          * 协销去后台审核,机构用账号密码登录绑定微信
@@ -665,19 +731,39 @@ public class RegisterServiceImpl implements RegisterService {
         if (model.getCode() == -1) {
             return model.getMsg();
         }
-        String redisSmsCode = (String) redisService.get("code:" + mobile);
-        if (!redisSmsCode.equals(smsCode)) {
-            return "手机验证码错误";
+        if (StringUtils.isNotBlank(smsCode)){
+            String redisSmsCode = (String) redisService.get("code:" + mobile);
+            if (!redisSmsCode.equals(smsCode)) {
+                return "手机验证码错误";
+            }
         }
+        boolean flag = false;
         // 查找用户表是否存在
         Integer dbUserId = baseMapper.getUserIdByMobile(mobile);
         if (null != dbUserId && dbUserId > 0) {
-            return "该手机号已被使用";
+            UserLoginVo user = loginMapper.getLoginUserByUserId(dbUserId);
+            String showName = ValidateUtil.nameConversion(user.getUserName());
+            if (2 == user.getUserIdentity() || 4 == user.getUserIdentity()) {
+                return "该手机号已绑定机构(" + showName + ")联系人,请重新填写手机号";
+            } else if (3 == user.getUserIdentity()) {
+                return "该手机号已绑定供应商(" + showName + ")联系人,请重新填写手机号";
+            }
+            flag = true;
         }
         // 查找运营人员表是否存在
         Integer dbOperationId = baseMapper.getOperationIdByMobile(mobile);
         if (null != dbOperationId && dbOperationId > 0) {
-            return "您已是运营人员,无需再注册机构";
+            UserLoginVo operation = loginMapper.getOperationUserByOperationId(dbOperationId);
+            String showName = ValidateUtil.nameConversion(operation.getUserName());
+            if (2 == operation.getUserIdentity() || 4 == operation.getUserIdentity()) {
+                return "该手机号已绑定机构(" + showName + ")运营人员,请重新填写手机号";
+            } else if (3 == operation.getUserIdentity()) {
+                return "该手机号已绑定供应商(" + showName + ")运营人员,请重新填写手机号";
+            }
+            flag = true;
+        }
+        if (flag) {
+            return "该手机号已被使用";
         }
         return null;
     }

+ 30 - 52
src/main/java/com/caimei365/user/utils/ValidateUtil.java

@@ -169,58 +169,36 @@ public class ValidateUtil {
         }
     }
 
-    public static ResponseJson getMobileValidateReason(String mobile, UserLoginVo userByMobile) {
-        if (userByMobile != null) {
-            String userName = userByMobile.getName();
-            char[] nameArr = userName.toCharArray();
-            int length = nameArr.length;
-            switch (length) {
-                case 0:
-                    break;
-                case 1:
-                    break;
-                case 2:
-                    nameArr[0] = '*';
-                    break;
-                case 3:
-                    nameArr[0] = '*';
-                    break;
-                case 4:
-                    nameArr[2] = '*';
-                    break;
-                default:
-                    for (int i = 2; i < nameArr.length-1; i++) {
-                        nameArr[i] = '*';
-                    }
-            }
-            String showName = "";
-            for (char b : nameArr) {
-                showName += b;
-            }
-            userByMobile.setUserName(showName);
-            if ((mobile.equals(userByMobile.getBindMobile()) || mobile.equals(userByMobile.getEmail()))) {
-                //输入手机号等于用户手机号
-                if (2 == userByMobile.getUserIdentity() || 4 == userByMobile.getUserIdentity()) {
-                    return ResponseJson.error("该手机号已绑定机构(" + userByMobile.getUserName() + ")联系人,请重新填写手机号");
-                } else if (3 == userByMobile.getUserIdentity()) {
-                    return ResponseJson.error("该手机号已绑定供应商("+userByMobile.getUserName()+")联系人,请重新填写手机号");
-                }else {
-                    return ResponseJson.error("该手机号已使用");
-                }
-            }else if (mobile.equals(userByMobile.getOperatorMobile())) {
-                //输入手机号等于运营人员手机号
-                if (2 == userByMobile.getUserIdentity() || 4 == userByMobile.getUserIdentity()) {
-                    return ResponseJson.error("该手机号已绑定机构("+userByMobile.getUserName()+")运营人员,请重新填写手机号");
-                } else if (3 == userByMobile.getUserIdentity()) {
-                    return ResponseJson.error("该手机号已绑定供应商("+userByMobile.getUserName()+")运营人员,请重新填写手机号");
-                }else {
-                    return ResponseJson.error("该手机号已使用");
-                }
-            }else {
-                return ResponseJson.error("该手机号已使用");
-            }
-        } else {
-            return ResponseJson.error("该手机号已使用");
+    /**
+     * 名称(或联系人姓名)1个字的话,全部显示
+     * 名称(或联系人姓名)2个字的话,显示第二个字,第一个字打星号*
+     * 名称(或联系人姓名)3个字的话,显示后两个字,第一个字打星号*
+     * 名称(或联系人姓名)4个字话,显示前两个字和后一个字,中间的用一个星号*表示
+     * 名称(或联系人姓名)5个字及以上的话,显示前两个字和后一个字,中间的统一用3个星号*表示
+     *
+     * @param name
+     * @returnString
+     */
+    public static String nameConversion(String name){
+        char[] nameArr = name.toCharArray();
+        StringBuilder showName = new StringBuilder();
+        switch (nameArr.length) {
+            case 0:
+            case 1:
+                break;
+            case 2:
+                showName.append('*').append(nameArr[1]);
+                break;
+            case 3:
+                showName.append('*').append(nameArr[1]).append(nameArr[2]);
+                break;
+            case 4:
+                showName.append(nameArr[0]).append(nameArr[1]).append('*').append(nameArr[3]);
+                break;
+            default:
+                showName.append(nameArr[0]).append(nameArr[1]).append("***").append(nameArr[nameArr.length-1]);
         }
+        return showName.toString();
     }
+
 }

+ 3 - 0
src/main/resources/mapper/BaseMapper.xml

@@ -39,4 +39,7 @@
         from user
         where userID = #{userId}
     </select>
+    <select id="getUserNameByUserId" resultType="java.lang.String">
+        select userName from user where userID = #{userId}
+    </select>
 </mapper>

+ 44 - 15
src/main/resources/mapper/LoginMapper.xml

@@ -11,7 +11,9 @@
                u.email as email,
                u.userPermission as userPermission,
                u.userIdentity as userIdentity,
-               u.password as password
+               u.password as password,
+               u.clubStatus as clubStatus,
+               u.manufacturerStatus as shopStatus
         from user u
         where u.userID = #{userId}
         limit 1
@@ -27,12 +29,10 @@
             u.userPermission as userPermission,
             u.userIdentity as userIdentity,
             u.password as password,
-            case
-                when u.userIdentity = 3 then u.manufacturerStatus
-                when (u.userIdentity = 2 or u.userIdentity = 4) then u.clubStatus
-            else 0
-            end as status,
-            cu.mobile as operatorMobile
+            u.clubStatus as clubStatus,
+            u.manufacturerStatus as shopStatus,
+            cu.status as operationStatus,
+            cu.mobile as operationMobile
         from user u
         left join cm_mall_operation_user cu on cu.userID = u.userID
         where (u.bindMobile = #{mobileOrEmail}
@@ -51,7 +51,7 @@
         where o.mobile = #{mobile} and o.delFlag = '0'
         limit 1
     </select>
-    <select id="getServiceProviderByOpenId" resultType="com.caimei365.user.model.vo.UserLoginVo">
+    <select id="getServiceProviderUserByOpenId" resultType="com.caimei365.user.model.vo.UserLoginVo">
         select u.userID as userId,
                u.userName as userName,
                u.mobile as mobile,
@@ -65,6 +65,14 @@
         where s.openid = #{openid} and u.validFlag = 1
         limit 1
     </select>
+    <select id="getServiceProviderByUserId" resultType="com.caimei365.user.model.vo.ServiceProviderVo">
+        select s.serviceProviderId as serviceProviderId,
+               s.status as status,
+               s.userID as userId
+        from serviceprovider s
+        where s.userID = #{userId}
+        limit 1
+    </select>
     <select id="getOperationUserByUnionId" resultType="com.caimei365.user.model.vo.UserLoginVo">
         select o.userID as userId,
                o.mobile as mobile,
@@ -196,15 +204,14 @@
             u.userID as userId,
             u.clubID as clubId,
             u.shopID as shopId,
+            u.userName as userName,
+            u.userIdentity,
+            u.clubStatus as clubStatus,
+            u.manufacturerStatus as shopStatus,
             cou.invitationCodeTime,
+            cou.mobile as operationMobile,
             cou.status as operationStatus,
-            cou.delFlag,
-            u.userIdentity,
-            case
-                when u.userIdentity = 3 then u.manufacturerStatus
-                when (u.userIdentity = 2 or u.userIdentity = 4) then u.clubStatus
-                else 0
-                end as status
+            cou.delFlag
         FROM
             cm_mall_operation_user cou
         LEFT JOIN user u ON u.userID = cou.userID
@@ -213,6 +220,28 @@
         AND cou.userOrganizeID = 0
         AND u.userIdentity in (2,3,4)
     </select>
+    <select id="getOperationUserByOperationId" resultType="com.caimei365.user.model.vo.UserLoginVo">
+        SELECT
+            cou.id as operationId,
+            u.userID as userId,
+            u.clubID as clubId,
+            u.shopID as shopId,
+            u.userName as userName,
+            u.userIdentity,
+            u.clubStatus as clubStatus,
+            u.manufacturerStatus as shopStatus,
+            cou.invitationCodeTime,
+            cou.mobile as operationMobile,
+            cou.status as operationStatus,
+            cou.delFlag
+        FROM
+            cm_mall_operation_user cou
+        LEFT JOIN user u ON u.userID = cou.userID
+        WHERE
+            cou.id = #{operationId}
+        AND cou.userOrganizeID = 0
+        AND u.userIdentity in (2,3,4)
+    </select>
     <select id="getClubCountByClubName" resultType="java.lang.Integer">
         SELECT
             count(*)

+ 8 - 4
src/main/resources/mapper/RegisterMapper.xml

@@ -2,12 +2,16 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.user.mapper.RegisterMapper">
     <insert id="insertClubUser" parameterType="com.caimei365.user.model.po.UserPo" keyProperty="userId" useGeneratedKeys="true">
-        insert into user(`registerTime`, `registerIP`, `source`, `registerUserTypeID`, `name`, `userName`, `bindMobile`,`userIdentity`, `userPermission`, `clubStatus`, `password`, `agreeFlag`, `validFlag`, `serviceProviderID`, `serviceProviderStatus`)
-                  values(#{registerTime},#{registerIp},#{source},#{registerUserTypeId},#{name},#{userName},#{bindMobile},#{userIdentity},#{userPermission},#{clubStatus},#{password},#{agreeFlag},#{validFlag},#{serviceProviderId},#{serviceProviderStatus})
+        insert into user(`registerTime`, `registerIP`, `source`, `registerUserTypeID`, `name`, `userName`, `bindMobile`, `email`, `userIdentity`, `userPermission`, `clubStatus`, `password`, `agreeFlag`, `validFlag`, `serviceProviderID`, `serviceProviderStatus`)
+                  values(#{registerTime},#{registerIp},#{source},#{registerUserTypeId},#{name},#{userName},#{bindMobile},#{email},#{userIdentity},#{userPermission},#{clubStatus},#{password},#{agreeFlag},#{validFlag},#{serviceProviderId},#{serviceProviderStatus})
     </insert>
     <insert id="insertClub" parameterType="com.caimei365.user.model.po.ClubPo" keyProperty="clubId" useGeneratedKeys="true">
-        insert into club(`name`, `sName`, `contractMobile`, `linkMan`, `userID`, `addTime`, `status`, `spID`)
-                  values(#{name},#{sName},#{contractMobile},#{linkMan},#{userId},#{addTime},#{status},#{serviceProviderId})
+        insert into club(`name`, `sName`, `contractMobile`, `linkMan`, `userID`, `addTime`, `status`, `spID`, `scanFlag`)
+                  values(#{name},#{sName},#{contractMobile},#{linkMan},#{userId},#{addTime},#{status},#{serviceProviderId},#{scanFlag})
+    </insert>
+    <insert id="insertUpgradeClub" parameterType="com.caimei365.user.model.po.ClubPo" keyProperty="clubId" useGeneratedKeys="true">
+        insert into club(`name`, `sName`, `contractMobile`, `linkMan`, `userID`, `addTime`, `status`, `spID`, `scanFlag`,`contractEmail1`,`linkMan`, `provinceID`, `cityID`,`townID`, `address`, `headpic`, `businessLicenseImage`,`socialCreditCode`,`firstClubType`,`secondClubType`,`department`,`medicalPracticeLicenseImg`,`mainpro`)
+                  values(#{name},#{sName},#{contractMobile},#{linkMan},#{userId},#{addTime},#{status},#{serviceProviderId},#{scanFlag},#{contractEmail},#{linkMan},#{provinceId},#{cityId},#{townId},#{address},#{shopPhoto},#{businessLicense},#{socialCreditCode},#{firstClubType},#{secondClubType},#{department},#{medicalPracticeLicense},#{mainProduct})
     </insert>
     <insert id="insertOperation" parameterType="com.caimei365.user.model.po.OperationPo" keyProperty="clubId" useGeneratedKeys="true">
         insert into cm_mall_operation_user(`userID`, `clubID`, `nickName`, `headimgurl`, `userType`, `mobile`, `linkName`, `status`, `unionId`, `openid`, `addTime`, `updateTime`, `bindTime`, `delFlag`)

+ 27 - 0
src/test/java/com/caimei365/user/UserApplicationTests.java

@@ -8,6 +8,33 @@ class UserApplicationTests {
 
     @Test
     void contextLoads() {
+        System.out.println(test1("郑超"));
+        System.out.println(test1("郑超的"));
+        System.out.println(test1("郑超的机"));
+        System.out.println(test1("郑超的机构"));
+        System.out.println(test1("郑超的机构中心"));
+    }
+
+    private StringBuilder test1(String userName){
+        char[] nameArr = userName.toCharArray();
+        StringBuilder showName = new StringBuilder();
+        switch (nameArr.length) {
+            case 0:
+            case 1:
+                break;
+            case 2:
+                showName.append('*').append(nameArr[1]);
+                break;
+            case 3:
+                showName.append('*').append(nameArr[1]).append(nameArr[2]);
+                break;
+            case 4:
+                showName.append(nameArr[0]).append(nameArr[1]).append('*').append(nameArr[3]);
+                break;
+            default:
+                showName.append(nameArr[0]).append(nameArr[1]).append("***").append(nameArr[nameArr.length-1]);
+        }
+        return showName;
     }
 
 }