瀏覽代碼

联合丽格

huangzhiguo 2 年之前
父節點
當前提交
8d24044e9d

+ 40 - 0
src/main/java/com/caimei365/user/components/CommonService.java

@@ -3,6 +3,7 @@ package com.caimei365.user.components;
 import com.caimei365.user.mapper.BaseMapper;
 import com.caimei365.user.mapper.LoginMapper;
 import com.caimei365.user.mapper.OperationMapper;
+import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.po.OperationPo;
 import com.caimei365.user.model.vo.UserLoginVo;
 import com.caimei365.user.utils.ValidateUtil;
@@ -99,6 +100,45 @@ public class CommonService {
         return null;
     }
 
+    /**
+     * 校验手机号与验证码 -- 组织
+     * @param mobile 手机号
+     * @param smsCode 验证码
+     * @param organizeId 组织Id
+     * @return errorMsg
+     */
+    public String organizeMobileValidate(String mobile, String smsCode, Integer organizeId) {
+        String result = ValidateUtil.validateMobile(mobile);
+        if (result != null) {return result;}
+        if (StringUtils.isNotBlank(smsCode)){
+            // 校验验证码是否过期
+            long expireTime = redisService.getExpireTime("code:" + mobile);
+            if (expireTime < 0) {
+                return "验证码已失效,请重新获取";
+            }
+            String redisSmsCode = (String) redisService.get("code:" + mobile);
+            // 开发 和 测试环境 固定短信验证码 666666
+            if ("dev".equals(profile) || "beta".equals(profile)){
+                redisSmsCode = (null != redisSmsCode && !"null".equals(redisSmsCode) ? redisSmsCode : "666666");
+            }
+            log.info("手机验证码校验" + smsCode.equals(redisSmsCode));
+            if (!smsCode.equals(redisSmsCode)) {
+                return "手机验证码错误";
+            }
+        }
+        boolean flag = false;
+        // 查找用户表是否存在
+        Integer dbUserId = baseMapper.getUserIdByOrganize(organizeId,mobile);
+        if (null != dbUserId && dbUserId > 0) {
+            flag = true;
+        }
+
+        if (flag) {
+            return "该手机号已被使用";
+        }
+        return null;
+    }
+
     /**
      * 查询使用该手机号的运营人员或用户
      */

+ 12 - 2
src/main/java/com/caimei365/user/components/WeChatService.java

@@ -55,6 +55,10 @@ public class WeChatService {
     private String heHeAppId;
     @Value("${wx.hehe-app-secret}")
     private String heHeAppSecret;
+    @Value("${wx.mcare-app-id}")
+    private String mcareAppId;
+    @Value("${wx.mcare-app-secret}")
+    private String mcareAppSecret;
 
     public void setRedirectUri(String redirectUri) {
         redirectUri = redirectUri;
@@ -162,7 +166,7 @@ public class WeChatService {
      *
      * @param code    微信凭证
      * @param headers HttpHeaders
-     * @param mode    1:采美小程序,2:呵呵商城小程序+
+     * @param mode    1:采美小程序,2:呵呵商城小程序+,3联合丽格小程序
      * @return HashMap
      */
     public ResponseJson<Map<String, Object>> getInfoMapByApplets(String code, HttpHeaders headers, Integer mode) {
@@ -180,12 +184,18 @@ public class WeChatService {
             log.info("采美小程序appId: ---" + miniAppId);
             // 小程序appSecret
             requestUrlParam.put("secret", miniAppSecret);
-        } else {
+        } else if(mode == 2) {
             // 呵呵商城小程序appId
             requestUrlParam.put("appid", heHeAppId);
             log.info("呵呵商城appId: ---" + heHeAppId);
             // 呵呵商城小程序appSecret
             requestUrlParam.put("secret", heHeAppSecret);
+        } else {
+            // 联合丽格小程序appId
+            requestUrlParam.put("appid", mcareAppId);
+            log.info("联合丽格appId: ---" + mcareAppId);
+            // 联合丽格小程序appSecret
+            requestUrlParam.put("secret", mcareAppSecret);
         }
         // 小程序端返回的code
         requestUrlParam.put("js_code", code);

+ 21 - 0
src/main/java/com/caimei365/user/controller/ClubApi.java

@@ -88,6 +88,27 @@ public class ClubApi {
         return clubService.updateClubUserInfo(club);
     }
 
+    /**
+     * 更新机构资料--组织
+     * @param club
+     * @return
+     */
+    @ApiOperation("更新机构资料--组织")
+    @PostMapping("/info/updateOrganize")
+    public ResponseJson<ClubUpdateDto> updateOrganizeClubinfo(ClubUpdateDto club) {
+        return clubService.updateOrganizeClubinfo(club);
+    }
+
+    /**
+     * 重新提交机构资料--组织
+     * @param club
+     * @return
+     */
+    @ApiOperation("重新提交机构资料--组织")
+    @PostMapping("/info/organizeClubinfo")
+    public ResponseJson<ClubUpdateDto> organizeClubinfo(ClubUpdateDto club) {
+        return clubService.organizeClubinfo(club);
+    }
     /**
      * 机构个人中心
      * <p>

+ 20 - 0
src/main/java/com/caimei365/user/controller/LoginApi.java

@@ -106,6 +106,26 @@ public class LoginApi {
         return loginService.appletsAuthorization(code, encryptedData, iv, headers);
     }
 
+    /**
+     * 微信授权登录(小程序),用户数据存入Redis,key前缀:wxInfo:applets:
+     * <p>
+     * spi旧接口:/club/authorization,小程序sessionKey(wxInfo)、PC端sessionKey(wxInfoMap)
+     *
+     * @param authAppletsDto {
+     *                       code          微信授权code
+     *                       encryptedData 微信加密数据
+     *                       iv            加密算法的初始向量
+     *                       }
+     */
+    @ApiOperation("微信授权登录(小程序)--组织")
+    @PostMapping("/auth/appletsOrganize")
+    public ResponseJson<UserLoginVo> appletsOrganizeAuthorization(AuthAppletsDto authAppletsDto, @RequestHeader HttpHeaders headers) throws ParseException {
+        String code = authAppletsDto.getCode();
+        String encryptedData = authAppletsDto.getEncryptedData();
+        String iv = authAppletsDto.getIv();
+        return loginService.appletsOrganizeAuthorization(code, encryptedData, iv, headers);
+    }
+
     @ApiOperation("机构站内消息未读消息记录数")
     @GetMapping("/auth/ClubMessageCount")
     public ResponseJson<Map<String, Object>> ClubMessageCount(Integer messageType, Integer commonId) {

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

@@ -44,6 +44,22 @@ public class RegisterApi {
         return registerService.registerCheck(bindMobile);
     }
 
+    /**
+     * 检查手机号是否可以注册 -- 组织
+     * <p>
+     * spi旧接口:/seller/club/check
+     *
+     * @param bindMobile 手机号
+     * @param organizeId 组织Id
+     */
+    @ApiOperation("检查手机号是否可以注册 -- 组织")
+    @ApiImplicitParam(required = true, name = "bindMobile", value = "手机号")
+    @IpSave(saveName = "检查手机号是否可以注册 -- 组织",saveParams = true)
+    @GetMapping("/organizeCheck")
+    public ResponseJson registerMobile(String bindMobile, Integer organizeId) {
+        return registerService.registerMobile(bindMobile, organizeId);
+    }
+
     /**
      * 普通机构入驻(注册)
      * <p>
@@ -71,6 +87,32 @@ public class RegisterApi {
         return registerService.clubRegister(clubRegisterDto, headers);
     }
 
+    /**
+     * 组织普通机构 注册校验
+     * @param bindMobile
+     * @param smsCode
+     * @param password
+     * @param passWordConfirm
+     * @return
+     */
+    @ApiOperation("组织普通机构")
+    @GetMapping("/accountInfo")
+    public ResponseJson accountInfo(String bindMobile, String smsCode, String password, String passWordConfirm) {
+        return registerService.accountInfo(bindMobile, smsCode, password, passWordConfirm);
+    }
+
+    /**
+     * 组织普通机构注册
+     * @param organizeRegisterDto
+     * @param headers
+     * @return
+     */
+    @ApiOperation("组织普通机构注册")
+    @PostMapping("/accountRegister")
+    public ResponseJson accountRegister(OrganizeRegisterDto organizeRegisterDto, @RequestHeader HttpHeaders headers) {
+        return registerService.accountRegister(organizeRegisterDto, headers);
+    }
+
     /**
      * 普通机构升级会员机构
      * <p>

+ 6 - 1
src/main/java/com/caimei365/user/mapper/ClubMapper.java

@@ -10,7 +10,6 @@ import com.caimei365.user.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -38,6 +37,12 @@ public interface ClubMapper {
      */
     void updateClubUserByUpdateInfo(UserPo user);
 
+    /**
+     * 重新提交机构资料--组织
+     * @param user
+     */
+    void updateClubUserOrganize(UserPo user);
+
     /**
      * 查询机构信息
      * @return

+ 15 - 0
src/main/java/com/caimei365/user/mapper/LoginMapper.java

@@ -66,6 +66,14 @@ public interface LoginMapper {
      * @return BaseUser
      */
     UserLoginVo getLoginUserByUnionId(@Param("unionId") String unionId, @Param("source") String source);
+
+    /**
+     * 根据unionId获取运营人员 -- 组织
+     * @param unionId unionId
+     * @param source
+     * @return BaseUser
+     */
+    UserLoginVo getOrganizeLoginUserByUnionId(@Param("unionId") String unionId, @Param("source") String source);
     /**
      * 根据openId获取运营人员
      * @param openId
@@ -73,6 +81,13 @@ public interface LoginMapper {
      * @return
      */
     UserLoginVo getLoginUserByOpenId(@Param("openId") String openId, @Param("source") String source);
+    /**
+     * 根据openId获取运营人员 -- 组织
+     * @param openId
+     * @param source
+     * @return
+     */
+    UserLoginVo getOrganizeLoginUserByOpenId(@Param("openId") String openId, @Param("source") String source);
     /**
      * 根据邀请码获取运营人员
      * @param invitationCode

+ 95 - 0
src/main/java/com/caimei365/user/model/dto/OrganizeRegisterDto.java

@@ -0,0 +1,95 @@
+package com.caimei365.user.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/11
+ */
+@Data
+public class OrganizeRegisterDto {
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String bindMobile;
+    /**
+     * 联系人
+     */
+    @ApiModelProperty("联系人")
+    private String linkMan;
+    /**
+     * 密码
+     */
+    @ApiModelProperty("密码")
+    private String password;
+    /**
+     * 机构名称
+     */
+    @ApiModelProperty("机构名称")
+    private String name;
+    /**
+     * 省
+     */
+    @ApiModelProperty("省")
+    private Integer provinceId;
+    /**
+     * 市
+     */
+    @ApiModelProperty("市")
+    private Integer cityId;
+    /**
+     * 地址ID
+     */
+    @ApiModelProperty("地址ID")
+    private Integer townId;
+    /**
+     * 详细地址
+     */
+    @ApiModelProperty("详细地址")
+    private String address;
+    /**
+     * 营业执照编号
+     */
+    @ApiModelProperty("营业执照编号")
+    private String socialCreditCode;
+    /**
+     * 营业执照
+     */
+    @ApiModelProperty("营业执照")
+    private String businessLicense;
+    /**
+     * 门头照
+     */
+    @ApiModelProperty("门头照")
+    private String shopPhoto;
+    /**
+     * 医疗执业许可证
+     */
+    @ApiModelProperty("医疗执业许可证")
+    private String medicalPracticeLicense;
+    /**
+    /**
+     * 外部商城机构类型 0内部结构 1外部机构
+     */
+    @ApiModelProperty("外部商城机构类型 0内部结构 1外部机构")
+    private Integer organizeType;
+    /**
+     * 微信unionId
+     */
+    @ApiModelProperty("微信unionId")
+    private String unionId;
+    /**
+     * 微信昵称
+     */
+    @ApiModelProperty("微信昵称")
+    private String nickName;
+    /**
+     * 微信头像(headimgurl)
+     */
+    @ApiModelProperty("微信头像(headimgurl)")
+    private String avatarUrl;
+}

+ 5 - 0
src/main/java/com/caimei365/user/model/po/UserPo.java

@@ -1,5 +1,6 @@
 package com.caimei365.user.model.po;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -40,6 +41,10 @@ public class UserPo implements Serializable {
      * 协销Id
      */
     private Integer serviceProviderId;
+    /**
+     * 外部商城机构类型 0内部结构 1外部机构
+     */
+    private Integer organizeType;
     /**
      * 用户名
      */

+ 8 - 0
src/main/java/com/caimei365/user/model/vo/UserLoginVo.java

@@ -19,6 +19,11 @@ public class UserLoginVo implements Serializable {
      */
     @ApiModelProperty("用户Id")
     private Integer userId;
+    /**
+     * 组织Id
+     */
+    @ApiModelProperty("组织Id")
+    private Integer organizeId;
     /**
      * 机构Id
      */
@@ -156,4 +161,7 @@ public class UserLoginVo implements Serializable {
 
     @ApiModelProperty("上架费状态")
     private Integer listingFee;
+
+    @ApiModelProperty("机构门头照")
+    private String shopPhoto;
 }

+ 14 - 4
src/main/java/com/caimei365/user/service/ClubService.java

@@ -1,10 +1,7 @@
 package com.caimei365.user.service;
 
 import com.caimei365.user.model.ResponseJson;
-import com.caimei365.user.model.dto.ClubRemarksDto;
-import com.caimei365.user.model.dto.ClubUpdateDto;
-import com.caimei365.user.model.dto.CmPortraitDto;
-import com.caimei365.user.model.dto.JsonParamsDto;
+import com.caimei365.user.model.dto.*;
 import com.caimei365.user.model.vo.*;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -58,6 +55,19 @@ public interface ClubService {
      */
     ResponseJson<ClubUpdateDto> updateClubUserInfo(ClubUpdateDto club);
 
+    /**
+     * 修改机构资料--组织
+     * @param club
+     * @return
+     */
+    ResponseJson<ClubUpdateDto> updateOrganizeClubinfo(ClubUpdateDto club);
+
+    /**
+     * 重新提交机构资料--组织
+     * @param club
+     * @return
+     */
+    ResponseJson<ClubUpdateDto> organizeClubinfo(ClubUpdateDto club);
     /**
      * 机构个人中心
      *

+ 9 - 1
src/main/java/com/caimei365/user/service/LoginService.java

@@ -54,7 +54,15 @@ public interface LoginService {
      * @return BaseUser
      */
     ResponseJson<UserLoginVo> appletsAuthorization(String code, String encryptedData, String iv, HttpHeaders headers) throws ParseException;
-
+    /**
+     * 微信授权登录(小程序) 组织
+     *
+     * @param code          微信授权code
+     * @param encryptedData 微信加密数据
+     * @param iv            加密算法的初始向量
+     * @return BaseUser
+     */
+    ResponseJson<UserLoginVo> appletsOrganizeAuthorization(String code, String encryptedData, String iv, HttpHeaders headers) throws ParseException;
 
     ResponseJson<PageInfo<MessageCenter>> ClubMessageList(Integer commonId,Integer messageType,Integer source, int pageNum, int pageSize);
 

+ 26 - 0
src/main/java/com/caimei365/user/service/RegisterService.java

@@ -24,6 +24,15 @@ public interface RegisterService {
      */
     ResponseJson registerCheck(String mobile);
 
+    /**
+     * 检查账号可以注册 -- 组织
+     *
+     * @param mobile 手机号
+     * @param organizeId 组织Id
+     * @return sucess
+     */
+    ResponseJson registerMobile(String mobile, Integer organizeId);
+
     /**
      * 普通机构入驻(注册)
      *
@@ -44,6 +53,23 @@ public interface RegisterService {
      */
     ResponseJson clubRegister(ClubRegisterDto clubRegisterDto, HttpHeaders headers);
 
+    /**
+     * 组织注册信息校验
+     * @param bindMobile
+     * @param smsCode
+     * @param password
+     * @param passWordConfirm
+     * @return
+     */
+    ResponseJson accountInfo(String bindMobile, String smsCode, String password, String passWordConfirm);
+
+    /**
+     * 组织普通机构注册
+     * @param organizeRegisterDto
+     * @param headers
+     * @return
+     */
+    ResponseJson accountRegister(OrganizeRegisterDto organizeRegisterDto, HttpHeaders headers);
     /**
      * 普通机构升级会员机构
      *

+ 34 - 17
src/main/java/com/caimei365/user/service/impl/BaseServiceImpl.java

@@ -117,7 +117,7 @@ public class BaseServiceImpl implements BaseService {
      * 获取短信验证码
      *
      * @param mobile           手机号
-     * @param activateCodeType 1:找回密码,2:手机号注册机构,3:供应商注册,4:修改手机号-旧手机验证码,5:修改手机号-新手机验证码,7:手机验证码登录,8:联合丽格登录验证,9:联合丽格找回密码,10:联合丽格更换手机号
+     * @param activateCodeType 1:找回密码,2:手机号注册机构,3:供应商注册,4:修改手机号-旧手机验证码,5:修改手机号-新手机验证码,7:手机验证码登录,8:联合丽格注册,9:联合丽格登录验证,10:联合丽格找回密码,11:联合丽格更换手机号
      * @param platformType     0:www,1:crm/h5,2:小程序
      * @param isCheckCaptcha   是否检查图片验证码,0:检查,1:不检查
      * @param imgCode          图片验证码
@@ -178,7 +178,7 @@ public class BaseServiceImpl implements BaseService {
             String content = "验证码" + randomCode + ",您正在尝试变更重要信息,请妥善保管账户信息。";
             sendFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
             codeTypeTxt = "更换联系人(旧手机号验证码)";
-        } else if (5 == activateCodeType || 10 == activateCodeType) {
+        } else if (5 == activateCodeType || 11 == activateCodeType) {
             if (null != userId && userId > 0) {
                 return ResponseJson.error("该手机号已被使用");
             }
@@ -189,7 +189,7 @@ public class BaseServiceImpl implements BaseService {
                 content = "验证码" + randomCode + ",您正在尝试变更重要信息,请妥善保管账户信息。";
             }
             // 联合丽格
-            if (10 == activateCodeType){
+            if (11 == activateCodeType){
                 // 您正在更改手机号,验证码为:{s6},5分钟内有效,请勿泄漏他人。
                 content = "您正在更改手机号,验证码为:" + randomCode + ",5分钟内有效,请勿泄漏他人。";
             }
@@ -199,7 +199,7 @@ public class BaseServiceImpl implements BaseService {
             String content = "您正在采美平台发布二手商品,您的验证码为:" + randomCode + ",10分钟内有效,请勿泄露他人。";
             sendFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
             codeTypeTxt = "更换联系人(旧手机号验证码)";
-        } else if (7 == activateCodeType || 8 == activateCodeType) {
+        } else if (7 == activateCodeType || 9 == activateCodeType) {
             // 校验是否发送验证码
             /*Object resCode = redisService.get("code:" + mobile);
             long expireTime = redisService.getExpireTime("code:" + mobile);
@@ -220,9 +220,9 @@ public class BaseServiceImpl implements BaseService {
                 // 您正在操作登录采美商城,验证码:{s6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
                 content = "您正在操作登录采美商城,验证码:" + randomCode + ",请在5分钟内完成验证。如非本人操作,请忽略本短信。";
                 codeTypeTxt = "登录采美商城";
-            } else if (8 == activateCodeType){
+            } else if (9 == activateCodeType){
                 // 联合丽格登录发送短信
-                dbUserId = baseMapper.getUserIdByOrganize(1,mobile);
+                dbUserId = baseMapper.getUserIdByOrganize(4,mobile);
                 if (dbUserId == null) {
                     return ResponseJson.error("该手机号暂未注册");
                 }
@@ -245,9 +245,23 @@ public class BaseServiceImpl implements BaseService {
                 log.info(codeTypeTxt + ",验证码发送失败!");
                 return ResponseJson.error("发送验证码失败,请稍后再试");
             }
-        } else if (9 == activateCodeType){
-            // 联合丽格登录发送短信
-            Integer dbUserId = baseMapper.getUserIdByOrganize(1,mobile);
+        } else if (8 == activateCodeType) {
+            // 联合丽格注册发送短信
+            Integer dbUserId = baseMapper.getUserIdByOrganize(4,mobile);
+            if (dbUserId == null) {
+                return ResponseJson.error("该手机号暂未注册");
+            }
+            // 您的验证码为:{s6},5分钟内有效,请勿泄漏他人。
+            String content = "您的验证码为:" + randomCode + ",5分钟内有效,请勿泄漏他人。";
+            sendFlag = isBeta || remoteCallService.remoteSendSms(0,1,mobile,content);
+            if (!sendFlag) {
+                // 短信发送失败重试一次
+                sendFlag = remoteCallService.remoteSendSms(0,1,mobile,content);
+            }
+            codeTypeTxt = "联合丽格注册";
+        } else if (10 == activateCodeType){
+            // 联合丽格找回密码发送短信
+            Integer dbUserId = baseMapper.getUserIdByOrganize(4,mobile);
             if (dbUserId == null) {
                 return ResponseJson.error("该手机号暂未注册");
             }
@@ -266,7 +280,10 @@ public class BaseServiceImpl implements BaseService {
             if (6 == activateCodeType) {
                 //二手验证码10分钟有效期
                 redisService.set("code:" + mobile, randomCode, 600L);
-            } else {
+            } else if (8 == activateCodeType || 10 == activateCodeType || 11 == activateCodeType) {
+                // 联合丽格验证码5分钟有效期
+                redisService.set("code:" + mobile, randomCode, 300L);
+            }else {
                 redisService.set("code:" + mobile, randomCode, 1800L);
             }
             log.info(codeTypeTxt + ",发送到:" + mobile + "的短信验证码为: " + randomCode);
@@ -565,15 +582,9 @@ public class BaseServiceImpl implements BaseService {
     @Override
     public ResponseJson updateMobile(MobileDto mobileDto) {
         // 参数校验
-        if (StringUtils.isBlank(mobileDto.getMobile())) {
-            return ResponseJson.error("参数异常:旧手机号不能为空!");
-        }
         if (StringUtils.isBlank(mobileDto.getNewMobile())) {
             return ResponseJson.error("参数异常:新手机号不能为空!");
         }
-        if (StringUtils.isBlank(mobileDto.getSmsCode())) {
-            return ResponseJson.error("参数异常:旧手机号验证码不能为空!");
-        }
         if (StringUtils.isBlank(mobileDto.getNewSmsCode())) {
             return ResponseJson.error("参数异常:新手机号验证码不能为空!");
         }
@@ -586,6 +597,12 @@ public class BaseServiceImpl implements BaseService {
             return ResponseJson.error(result);
         }
         if (0 == mobileDto.getOrganizeId()) {
+            if (StringUtils.isBlank(mobileDto.getMobile())) {
+                return ResponseJson.error("参数异常:旧手机号不能为空!");
+            }
+            if (StringUtils.isBlank(mobileDto.getSmsCode())) {
+                return ResponseJson.error("参数异常:旧手机号验证码不能为空!");
+            }
             String smsCode = (String) redisService.get("code:" + mobileDto.getMobile());
             // 开发 和 测试环境 固定短信验证码 666666
             if ("dev".equals(profile) || "beta".equals(profile)) {
@@ -610,7 +627,7 @@ public class BaseServiceImpl implements BaseService {
             //供应商修改手机号
             baseMapper.updateShopMobileByShopId(mobileDto.getNewMobile(), user.getShopId());
         } else {
-            //供应商修改手机号
+            //机构修改手机号
             baseMapper.updateClubMobileByClubId(mobileDto.getNewMobile(), user.getClubId());
         }
         return ResponseJson.success();

+ 78 - 0
src/main/java/com/caimei365/user/service/impl/ClubServiceImpl.java

@@ -269,6 +269,84 @@ public class ClubServiceImpl implements ClubService {
         return ResponseJson.success("修改机构资料成功", club);
     }
 
+    /**
+     * 修改机构资料--组织
+     *
+     * @param club
+     * @return
+     */
+    @Override
+    public ResponseJson<ClubUpdateDto> updateOrganizeClubinfo(ClubUpdateDto club) {
+        // 参数校验
+        if (club.getUserId() == null) {
+            return ResponseJson.error("参数异常:用户Id不能为空!", null);
+        }
+        if (club.getClubId() == null) {
+            return ResponseJson.error("参数异常:机构Id不能为空!", null);
+        }
+        if (club.getLinkMan() == null) {
+            return ResponseJson.error("参数异常:联系人不能为空!", null);
+        }
+        UserPo user = new UserPo();
+        // 用户Id
+        user.setUserId(club.getUserId());
+        // 用户名
+        user.setUserName(club.getLinkMan());
+        // 邮箱
+        if (StringUtils.isNotBlank(club.getContractEmail())) {
+            user.setEmail(club.getContractEmail());
+        }
+        // 机构名称
+        if (StringUtils.isNotBlank(club.getName())) {
+            user.setName(club.getName());
+        }
+        // 更新机构用户信息
+        clubMapper.updateClubUserByUpdateInfo(user);
+        club.setLastModify(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+        // 更新机构信息
+        clubMapper.updateClubByUpdateInfo(club);
+        return ResponseJson.success("修改机构资料成功", club);
+    }
+
+    /**
+     * 重新提交机构资料--组织
+     *
+     * @param club
+     * @return
+     */
+    @Override
+    public ResponseJson<ClubUpdateDto> organizeClubinfo(ClubUpdateDto club) {
+        // 参数校验
+        if (club.getUserId() == null) {
+            return ResponseJson.error("参数异常:用户Id不能为空!", null);
+        }
+        if (club.getClubId() == null) {
+            return ResponseJson.error("参数异常:机构Id不能为空!", null);
+        }
+        if (club.getLinkMan() == null) {
+            return ResponseJson.error("参数异常:联系人不能为空!", null);
+        }
+        UserPo user = new UserPo();
+        // 用户Id
+        user.setUserId(club.getUserId());
+        // 用户名
+        user.setUserName(club.getLinkMan());
+        // 邮箱
+        if (StringUtils.isNotBlank(club.getContractEmail())) {
+            user.setEmail(club.getContractEmail());
+        }
+        // 机构名称
+        if (StringUtils.isNotBlank(club.getName())) {
+            user.setName(club.getName());
+        }
+        // 更新机构用户信息
+        clubMapper.updateClubUserOrganize(user);
+        club.setLastModify(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+        // 更新机构信息
+        clubMapper.updateClubByUpdateInfo(club);
+        return ResponseJson.success("修改机构资料成功", club);
+    }
+
     private int insertOperationalLogs(ClubUpdateDto club) {
         int type = 0;
         log.info("====开始操作记录====");

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

@@ -115,6 +115,15 @@ public class LoginServiceImpl implements LoginService {
             }
             // 如果前端传入unionId,则存入返回前端
             baseUser.setUnionId(unionId);
+            // 不是采美组织下
+            if (0 != baseUser.getOrganizeId()) {
+                if (1 == baseUser.getClubStatus()) {
+                    return ResponseJson.error(-1, "账号待审核,请耐心等待审核结果", null);
+                }
+                if (92 == baseUser.getClubStatus()) {
+                    return ResponseJson.error(-1, "账号审核未通过,请重新提交资料", null);
+                }
+            }
             // 比对密码
             String md5Password = Md5Util.md5(password);
             String dbPassword = baseUser.getPassword();
@@ -190,6 +199,15 @@ public class LoginServiceImpl implements LoginService {
                     UserLoginVo baseUser = loginMapper.getLoginUserByMobileOrEmail(mobile);
                     // 如果前端传入unionId,则存入返回前端
                     baseUser.setUnionId(unionId);
+                    // 不是采美组织下
+                    if (0 != baseUser.getOrganizeId()) {
+                        if (1 == baseUser.getClubStatus()) {
+                            return ResponseJson.error(-1, "账号待审核,请耐心等待审核结果", null);
+                        }
+                        if (92 == baseUser.getClubStatus()) {
+                            return ResponseJson.error(-1, "账号审核未通过,请重新提交资料", null);
+                        }
+                    }
                     if (baseUser.getUserIdentity() == 1) {
                         // 协销登录
                         return ResponseJson.success(baseUser);
@@ -268,6 +286,54 @@ public class LoginServiceImpl implements LoginService {
         return operationAuthLogin(openId, unionId, "mini");
     }
 
+    /**
+     * 微信授权登录(小程序) 组织
+     *
+     * @param code          微信授权code
+     * @param encryptedData 微信加密数据
+     * @param iv            加密算法的初始向量
+     * @param headers
+     * @return BaseUser
+     */
+    @Override
+    public ResponseJson<UserLoginVo> appletsOrganizeAuthorization(String code, String encryptedData, String iv, HttpHeaders headers) throws ParseException {
+        if (StringUtils.isBlank(code)) {
+            return ResponseJson.error("没有获取到微信授权code", null);
+        }
+        // 小程序微信授权获取登录信息
+        ResponseJson<Map<String, Object>> appletsInfo = weChatService.getInfoMapByApplets(code, headers, 3);
+        if (appletsInfo.getCode() == -1) {
+            return ResponseJson.error(appletsInfo.getMsg(), null);
+        }
+        Map<String, Object> infoData = appletsInfo.getData();
+        String openId = (String) infoData.get(WeChatService.Keys.OPEN_ID);
+        String unionId = (String) infoData.get(WeChatService.Keys.UNION_ID);
+        String sessionKey = (String) infoData.get(WeChatService.Keys.SESSION_KEY);
+        try {
+            if (StringUtils.isEmpty(unionId) || StringUtils.isBlank(unionId)) {
+                String result = WeChatService.decrypt(encryptedData, sessionKey, iv, "UTF-8");
+                log.info("解密数据>>>>>>" + result);
+                Map parseMap = JSONObject.parseObject(result, Map.class);
+                assert parseMap != null;
+                unionId = parseMap.get(WeChatService.Keys.UNION_ID).toString();
+                infoData.put(WeChatService.Keys.UNION_ID, unionId);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseJson.error("微信解密失败", null);
+        }
+        // 用户数据存入Redis,key前缀:wxInfo:applets:
+        redisService.setMap("wxInfo:applets:" + unionId, infoData);
+        log.info("小程序授权登录,返回unionId给前端,用户数据存入Redis,key:wxInfo:applets:" + unionId);
+        /*UserLoginVo userLoginVo = loginMapper.organizeUserInfo(openId);
+        if (userLoginVo == null) {
+            userLoginVo = new UserLoginVo();
+            userLoginVo.setOpenId(openId);
+            return ResponseJson.error(-2, "用户未注册", userLoginVo);
+        }*/
+        return organizeOperationAuthLogin(openId, unionId, "mini");
+    }
+
     @Override
     public ResponseJson<Map<String, Object>> ClubMessageCount(Integer messageType, Integer commonId) {
         Integer count = messageCenterMapper.Count(1, commonId);
@@ -503,6 +569,42 @@ public class LoginServiceImpl implements LoginService {
         return logonVerify(operation);
     }
 
+    /**
+     * 运营人员授权登录 -- 组织
+     *
+     * @param openId  微信openId
+     * @param unionId 微信unionId
+     * @param source  来源:www网站, mini小程序
+     * @return BaseUser
+     */
+    private ResponseJson<UserLoginVo> organizeOperationAuthLogin(String openId, String unionId, String source) {
+        UserLoginVo operation = loginMapper.getOrganizeLoginUserByUnionId(unionId, source);
+        if (null == operation) {
+            operation = loginMapper.getOrganizeLoginUserByOpenId(openId, source);
+            if (null == operation) {
+                operation = new UserLoginVo();
+                operation.setOpenId(openId);
+                operation.setUnionId(unionId);
+                return ResponseJson.error(-4, "您的微信尚未绑定任何机构", operation);
+            } else {
+                // 表示 openId存在, unionId不存在
+                operationMapper.updateOperationUnionId(operation.getUserId(), unionId);
+            }
+        }
+        // 如果unionId存在, openId不存在
+        if (StringUtils.isEmpty(operation.getOpenId()) || StringUtils.isBlank(operation.getOpenId())) {
+            operationMapper.updateOperationOpenId(operation.getUserId(), openId);
+        }
+        operation.setOpenId(openId);
+        operation.setUnionId(unionId);
+        // 审核未通过 待审核状态
+        if (1 == operation.getClubStatus() || 92 == operation.getClubStatus()){
+            return ResponseJson.error(-1,"登陆失败",operation);
+        }
+        // 返回登录校验结果
+        return logonVerify(operation);
+    }
+
     /**
      * 登录校验
      *

+ 250 - 0
src/main/java/com/caimei365/user/service/impl/RegisterServiceImpl.java

@@ -82,6 +82,22 @@ public class RegisterServiceImpl implements RegisterService {
         return ResponseJson.success("该账号可以注册");
     }
 
+    /**
+     * 检查账号可以注册 -- 组织
+     *
+     * @param mobile 手机号
+     * @param organizeId 组织Id
+     * @return sucess
+     */
+    @Override
+    public ResponseJson registerMobile(String mobile, Integer organizeId) {
+        String validate = commonService.organizeMobileValidate(mobile, null, organizeId);
+        if (validate != null) {
+            return ResponseJson.error(validate);
+        }
+        return ResponseJson.success("该账号可以注册");
+    }
+
     /**
      * 普通机构入驻(注册)
      *
@@ -340,6 +356,240 @@ public class RegisterServiceImpl implements RegisterService {
         return ResponseJson.success("机构注册成功", null);
     }
 
+    /**
+     * 组织注册信息校验
+     *
+     * @param bindMobile
+     * @param smsCode
+     * @param password
+     * @param passWordConfirm
+     * @return
+     */
+    @Override
+    public ResponseJson accountInfo(String bindMobile, String smsCode, String password, String passWordConfirm) {
+        if (StringUtils.isBlank(bindMobile) || StringUtils.isEmpty(bindMobile)) {
+            return ResponseJson.error(-1, "请输入手机号",null);
+        }
+        if (StringUtils.isBlank(smsCode) || StringUtils.isEmpty(smsCode)) {
+            return ResponseJson.error(-1, "请输入验证码",null);
+        }
+        if (StringUtils.isBlank(password) || StringUtils.isEmpty(password)) {
+            return ResponseJson.error(-1, "请输入登录密码",null);
+        }
+        if (StringUtils.isBlank(passWordConfirm) || StringUtils.isEmpty(passWordConfirm)) {
+            return ResponseJson.error(-1, "请确认密码",null);
+        }
+        if (!password.equals(passWordConfirm)) {
+            return ResponseJson.error(-1, "两次输入的密码不一致",null);
+        }
+        // 手机号与验证码校验
+        String result = commonService.organizeMobileValidate(bindMobile, smsCode, 4);
+        if (result != null) {
+            return ResponseJson.error(result);
+        }
+        // 密码校验
+        String passResult = ValidateUtil.validatePassWord(password);
+        if (passResult != null) {
+            return ResponseJson.error(passResult);
+        }
+        return ResponseJson.success();
+    }
+
+    /**
+     * 组织普通机构注册
+     *
+     * @param organizeRegisterDto
+     * @param headers
+     * @return
+     */
+    @Override
+    public ResponseJson accountRegister(OrganizeRegisterDto organizeRegisterDto, HttpHeaders headers) {
+        // 打印IP
+        String ip = headers.getFirst("X-CLIENT-IP");
+        log.info("机构注册 X-CLIENT-IP : " + ip);
+        // 参数校验
+        if (StringUtils.isBlank(organizeRegisterDto.getName()) || StringUtils.isEmpty(organizeRegisterDto.getName())) {
+            return ResponseJson.error("请输入机构名称");
+        }
+        if (StringUtils.isBlank(organizeRegisterDto.getAddress()) || StringUtils.isEmpty(organizeRegisterDto.getAddress())) {
+            return ResponseJson.error("请输入详细地址");
+        }
+        if (StringUtils.isBlank(organizeRegisterDto.getMedicalPracticeLicense()) || StringUtils.isEmpty(organizeRegisterDto.getMedicalPracticeLicense())) {
+            return ResponseJson.error("请上传营业执照");
+        }
+        if (StringUtils.isBlank(organizeRegisterDto.getShopPhoto()) || StringUtils.isEmpty(organizeRegisterDto.getShopPhoto())) {
+            return ResponseJson.error("请上传门头照");
+        }
+        if (StringUtils.isBlank(organizeRegisterDto.getBusinessLicense()) || StringUtils.isEmpty(organizeRegisterDto.getBusinessLicense())) {
+            return ResponseJson.error("请上传医疗职业许可证");
+        }
+        // 获取ip所在地
+        String ipAddress = "";
+        try {
+            ipAddress = IpUtil.recordIp(ip);
+            Map<String, String> map = IpUtil.recordAddress(ip);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        log.info("ip所在地====》" + ipAddress);
+        /*
+            组装用户数据 user
+         */
+        UserPo user = new UserPo();
+        // 设置日期时间格式
+        Date date = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String current = dateFormat.format(date);
+        // 注册时间
+        user.setRegisterTime(current);
+        // 注册IP
+        user.setRegisterIp(ip);
+        // 注册IP所在地
+        user.setIpAddress(ipAddress);
+        // 注册来源: 0网站 1小程序
+        user.setSource(1);
+        // 用户类型,供应商1,会员机构3,普通机构4
+        user.setRegisterUserTypeId(4);
+        // 联合丽格4
+        user.setOrganizeId(4);
+        // 用户名
+        user.setName(organizeRegisterDto.getName());
+        user.setUserName(organizeRegisterDto.getName());
+        user.setOrganizeType(organizeRegisterDto.getOrganizeType());
+        // 绑定手机号
+        user.setBindMobile(organizeRegisterDto.getBindMobile());
+        // 用户身份: 1协销 2会员机构 3供应商 4普通机构
+        user.setUserIdentity(4);
+        // 用户权限: 2会员机构 3供应商 4协销 5普通机构
+        user.setUserPermission(5);
+        // 是否已经引导过(机构升级:0否,1是)
+        user.setGuideFlag(0);
+        // 联合丽格设置待审核
+        user.setClubStatus(1);
+        // 设置密码
+        user.setPassword(Md5Util.md5(organizeRegisterDto.getPassword()));
+        // 同意协议
+        user.setAgreeFlag(1);
+        // 用户状态,1正常,0冻结
+        user.setValidFlag(1);
+        // 协销Id,默认采美官方
+        user.setServiceProviderId(1342);
+        // 协销状态,已上线
+        user.setServiceProviderStatus(90);
+        /*
+            保存数据库 user
+         */
+        int insertFlag = registerMapper.insertClubUser(user);
+        log.info("插入数据库User表,获得userId:" + user.getUserId());
+        if (insertFlag < 1) {
+            throw new RuntimeException("插入数据库异常user:" + user.toString());
+        }
+        /*
+          保存用户状态
+         */
+        List<UserPo> userPos = registerMapper.selUser(current);
+        for (UserPo userInfo : userPos) {
+            registerMapper.insertOrgan(userInfo.getUserId());
+        }
+        /*
+            组装机构数据
+         */
+        ClubPo club = new ClubPo();
+        // 机构名称
+        club.setName(user.getName());
+        // 联系手机
+        club.setContractMobile(user.getBindMobile());
+        // 联系人
+        club.setLinkMan(user.getUserName());
+        // 用户Id
+        club.setUserId(user.getUserId());
+        // 协销Id(spId)
+        club.setServiceProviderId(1342);
+        // 注册时间
+        club.setAddTime(current);
+        club.setSocialCreditCode(organizeRegisterDto.getSocialCreditCode());
+        club.setShopPhoto(organizeRegisterDto.getShopPhoto());
+        club.setBusinessLicense(organizeRegisterDto.getBusinessLicense());
+        club.setMedicalPracticeLicense(organizeRegisterDto.getMedicalPracticeLicense());
+        // 联合丽格设置待审核
+        club.setStatus(1);
+        // 机构地址
+        if (null != organizeRegisterDto.getProvinceId()) {
+            club.setProvinceId(organizeRegisterDto.getProvinceId());
+        }
+        if (null != organizeRegisterDto.getCityId()) {
+            club.setCityId(organizeRegisterDto.getCityId());
+        }
+        if (null != organizeRegisterDto.getTownId()) {
+            club.setTownId(organizeRegisterDto.getTownId());
+        }
+        if (StringUtils.isNotBlank(organizeRegisterDto.getAddress())) {
+            club.setAddress(organizeRegisterDto.getAddress());
+        }
+        /*
+            保存数据库 club
+         */
+        int insertClubFlag = registerMapper.insertClub(club);
+        log.info("插入数据库club表,获得clubId:" + club.getClubId());
+        if (insertClubFlag < 1) {
+            throw new RuntimeException("插入数据库异常club:" + club.toString());
+        }
+        // user更新clubId
+        user.setClubId(club.getClubId());
+        registerMapper.updateUserClubId(user.getUserId(), club.getClubId());
+        // 添加机构协销记录
+        if (StringUtils.isNotBlank(club.getLinkMan())) {
+            clubMapper.inProvider(1342, club.getClubId(), club.getLinkMan(), 0);
+        }
+        //    绑定微信,成为机构运营人员
+        if (StringUtils.isNotEmpty(organizeRegisterDto.getNickName())) {
+            OperationPo operation = new OperationPo();
+            // 组织Id,采美默认0
+            operation.setOrganizeId(4);
+            // 用户Id
+            operation.setUserId(user.getUserId());
+            // 机构Id
+            operation.setClubId(club.getClubId());
+            // 微信昵称
+            operation.setNickName(organizeRegisterDto.getNickName());
+            // 微信头像
+            operation.setAvatarUrl(organizeRegisterDto.getAvatarUrl());
+            // 用户类型,1:机构类型,2供应商类型
+            operation.setUserType(1);
+            // 运营人员手机号
+            operation.setMobile(organizeRegisterDto.getBindMobile());
+            // 联系人
+            operation.setLinkName(organizeRegisterDto.getName());
+            // 运营人员状态:1未绑定,2已绑定
+            operation.setStatus(2);
+            // 微信unionId
+            operation.setUnionId(organizeRegisterDto.getUnionId());
+            Map<Object, Object> infoData = redisService.getEntries("wxInfo:applets:" + organizeRegisterDto.getUnionId());
+            String openId = (String) infoData.get(WeChatService.Keys.OPEN_ID);
+            // 微信openId
+            operation.setOpenId(openId);
+            // 添加时间
+            operation.setAddTime(date);
+            // 更新时间
+            operation.setUpdateTime(date);
+            // 绑定时间
+            operation.setBindTime(date);
+            // delFlag: 0 有效  其它无效
+            operation.setDelFlag(0);
+            /*
+                保存数据库 operation
+             */
+            int insertOperationFlag = registerMapper.insertOperation(operation);
+            log.info("插入数据库cm_mall_operation_user表,获得id:" + operation.getId());
+            if (insertOperationFlag < 1) {
+                log.info(operation.getUserId() + " 插入数据库异常operation:" + operation.toString());
+            }
+            log.info("注册普通机构,默认绑定为机构运营人员");
+        }
+
+        return ResponseJson.success();
+    }
+
     /**
      * 普通机构升级会员机构(资质机构)
      *

+ 1 - 1
src/main/resources/mapper/BaseMapper.xml

@@ -62,7 +62,7 @@
         FROM USER u
                  LEFT JOIN cm_mall_operation_user cu ON cu.userID = u.userID
         WHERE u.userOrganizeID = #{organizeId}
-            AND cu.mobile = #{mobile}
+          AND cu.mobile = #{mobile}
           AND cu.delFlag != 1
           AND u.userIdentity IN (1, 2, 3, 4)
         LIMIT 1

+ 12 - 0
src/main/resources/mapper/ClubMapper.xml

@@ -79,6 +79,18 @@
         userName = #{userName}
         where userID = #{userId}
     </update>
+    <update id="updateClubUserOrganize">
+        update user set
+        <if test="name != null and name != ''">
+            name = #{name},
+        </if>
+        <if test="email != null and email != ''">
+            email = #{email},
+        </if>
+        userName = #{userName},
+        clubStatus = 1
+        where userID = #{userId}
+    </update>
     <select id="selClubData" resultType="com.caimei365.user.model.vo.ClubVo">
         select userId,
                clubId,

+ 78 - 2
src/main/resources/mapper/LoginMapper.xml

@@ -27,6 +27,7 @@
     </select>
     <select id="getLoginUserByMobileOrEmail" resultType="com.caimei365.user.model.vo.UserLoginVo">
         select u.userID             as userId,
+               u.userOrganizeID     as organizeId,
                u.clubID             as clubId,
                u.shopID             as shopId,
                u.serviceProviderId  as serviceProviderId,
@@ -48,9 +49,10 @@
         left join cm_mall_operation_user cu on cu.userID = u.userID
         where (u.bindMobile = #{mobileOrEmail} or u.email = #{mobileOrEmail})
             and u.userIdentity in (1, 2, 3, 4)
-            and u.userOrganizeID = 0
+            # and u.userOrganizeID = 0
         union
         SELECT u.userID             AS userId,
+               u.userOrganizeID     as organizeId,
                u.clubID             AS clubId,
                u.shopID             AS shopId,
                u.serviceProviderId  AS serviceProviderId,
@@ -74,7 +76,7 @@
             cu.mobile = #{mobileOrEmail}
           and cu.delFlag != 1
           AND u.userIdentity IN (1, 2, 3, 4)
-          AND u.userOrganizeID = 0
+          # AND u.userOrganizeID = 0
         limit 1
     </select>
     <select id="getLoginUserByMobile" resultType="com.caimei365.user.model.vo.UserLoginVo">
@@ -159,6 +161,38 @@
         and (u.userIdentity in (1,2,3,4) and u.userOrganizeID = 0)
         limit 1
     </select>
+    <select id="getOrganizeLoginUserByUnionId" resultType="com.caimei365.user.model.vo.UserLoginVo">
+        select u.userID as userId,
+        u.clubID as clubId,
+        u.shopID as shopId,
+        u.serviceProviderId as serviceProviderId,
+        u.userName as userName,u.name as name,
+        u.mobile as mobile,
+        u.bindMobile as bindMobile,
+        u.email as email,
+        u.userPermission as userPermission,
+        u.userIdentity as userIdentity,
+        u.password as password,
+        u.guideFlag as guideFlag,
+        u.clubStatus as clubStatus,
+        u.manufacturerStatus as shopStatus,
+        o.unionId as unionId,
+        o.status as operationStatus,
+        o.mobile as operationMobile,
+        c.headpic AS shopPhoto,
+        <if test="source=='www'">
+            o.pcOpenid as openId
+        </if>
+        <if test="source=='mini'">
+            o.openid as openId
+        </if>
+        from user u
+        left join cm_mall_operation_user o on o.userID = u.userID
+        LEFT JOIN club c ON c.userID = u.userID
+        where (o.unionId = #{unionId} and o.delFlag = '0')
+        and (u.userIdentity in (1,2,3,4) and u.userOrganizeID != 0)
+        limit 1
+    </select>
     <select id="getLoginUserByOpenId" resultType="com.caimei365.user.model.vo.UserLoginVo">
         select u.userID as userId,
         u.clubID as clubId,
@@ -199,6 +233,48 @@
         and (u.userIdentity in (1,2,3,4) and u.userOrganizeID = 0)
         limit 1
     </select>
+    <select id="getOrganizeLoginUserByOpenId" resultType="com.caimei365.user.model.vo.UserLoginVo">
+        select u.userID as userId,
+        u.clubID as clubId,
+        u.shopID as shopId,
+        u.serviceProviderId as serviceProviderId,
+        u.userName as userName,u.name as name,
+        u.mobile as mobile,
+        u.bindMobile as bindMobile,
+        u.email as email,
+        u.userPermission as userPermission,
+        u.userIdentity as userIdentity,
+        u.password as password,
+        u.guideFlag as guideFlag,
+        u.clubStatus as clubStatus,
+        u.manufacturerStatus as shopStatus,
+        o.unionId as unionId,
+        o.status as operationStatus,
+        o.mobile as operationMobile,
+        c.headpic AS shopPhoto,
+        <if test="source=='www'">
+            o.pcOpenid as openId
+        </if>
+        <if test="source=='mini'">
+            o.openid as openId
+        </if>
+        from user u
+        left join cm_mall_operation_user o on o.userID = u.userID
+        LEFT JOIN club c ON c.userID = u.userID
+        where (
+        <if test="source=='www'">
+            o.pcOpenid = #{openId}
+        </if>
+        <if test="source=='crm'">
+            o.crmOpenid = #{openId}
+        </if>
+        <if test="source=='mini'">
+            o.openid = #{openId}
+        </if>
+        and o.delFlag = '0')
+        and (u.userIdentity in (1,2,3,4)  and u.userOrganizeID != 0)
+        limit 1
+    </select>
     <update id="updateServiceProviderUnionId">
         update serviceprovider
         set unionId = #{unionId}

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

@@ -2,8 +2,8 @@
 <!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(`userOrganizeID`,`registerTime`,`registerIP`, `ipAddress`, `source`, `registerUserTypeID`, `name`, `userName`, `bindMobile`, `email`, `userIdentity`, `userPermission`,`guideFlag`,`clubStatus`, `password`, `agreeFlag`, `validFlag`, `serviceProviderID`, `serviceProviderStatus`, userBeans)
-                  values(#{organizeId},#{registerTime},#{registerIp},#{ipAddress},#{source},#{registerUserTypeId},#{name},#{userName},#{bindMobile},#{email},#{userIdentity},#{userPermission},#{guideFlag},#{clubStatus},#{password},#{agreeFlag},#{validFlag},#{serviceProviderId},#{serviceProviderStatus}, #{userBeans})
+        insert into user(`userOrganizeID`,`organizeType`,`registerTime`,`registerIP`, `ipAddress`, `source`, `registerUserTypeID`, `name`, `userName`, `bindMobile`, `email`, `userIdentity`, `userPermission`,`guideFlag`,`clubStatus`, `password`, `agreeFlag`, `validFlag`, `serviceProviderID`, `serviceProviderStatus`, userBeans)
+                  values(#{organizeId},#{organizeType},#{registerTime},#{registerIp},#{ipAddress},#{source},#{registerUserTypeId},#{name},#{userName},#{bindMobile},#{email},#{userIdentity},#{userPermission},#{guideFlag},#{clubStatus},#{password},#{agreeFlag},#{validFlag},#{serviceProviderId},#{serviceProviderStatus}, #{userBeans})
     </insert>
     <select id="selUser" resultType="com.caimei365.user.model.po.UserPo">
         select * from user where registerTime = #{registerTime}
@@ -14,8 +14,8 @@
             values(#{userID},"新增用户","一般挽留客户",0,1)
     </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`, `scanFlag`, provinceID, cityID)
-                  values(#{name},#{shortName},#{contractMobile},#{linkMan},#{userId},#{addTime},#{status},#{serviceProviderId},#{scanFlag},#{provinceId},#{cityId})
+        insert into club(`name`, `sname`, `contractMobile`, `linkMan`, `userID`, `addTime`, `status`, `spID`, `scanFlag`, provinceID, cityID, townID, address, headpic, businessLicenseImage, medicalPracticeLicenseImg, socialCreditCode)
+                  values(#{name},#{shortName},#{contractMobile},#{linkMan},#{userId},#{addTime},#{status}, #{serviceProviderId}, #{scanFlag}, #{provinceId}, #{cityId}, #{townId}, #{address}, #{shopPhoto}, #{businessLicense},#{medicalPracticeLicense}, #{socialCreditCode})
     </insert>
     <insert id="insertUpgradeClub" parameterType="com.caimei365.user.model.po.ClubPo" keyProperty="clubId" useGeneratedKeys="true">
         insert into club(`name`, `sname`,     `contractMobile`, `userID`, `addTime`, `status`, `spID`,              `scanFlag`,`contractEmail`,`linkMan`, `provinceID`, `cityID`,`townID`, `address`, `headpic`, `businessLicenseImage`,`socialCreditCode`,`firstClubType`,`secondClubType`,`department`,`medicalPracticeLicenseImg`,`mainpro`)