Browse Source

机构注册part2

chao 4 years ago
parent
commit
00ed419392

+ 38 - 0
src/main/java/com/caimei365/user/controller/WeChatApi.java

@@ -0,0 +1,38 @@
+package com.caimei365.user.controller;
+
+import com.caimei365.user.model.JsonModel;
+import com.caimei365.user.service.ClubService;
+import com.caimei365.user.service.WeChatService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.server.ServerWebExchange;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/3/9
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/user/wx")
+public class WeChatApi {
+
+    private final WeChatService weChatService;
+
+    /**
+     * 微信授权登录
+     *
+     * @param code          微信授权code
+     * @param encryptedData 微信加密数据
+     * @param iv            加密算法的初始向量
+     * @param serverWebExchange ServerWebExchange
+     */
+    @PostMapping("/authorization")
+    public JsonModel authorizationLogin(String code, String encryptedData, String iv, ServerWebExchange serverWebExchange) {
+        return weChatService.authorizationLogin(code, encryptedData, iv, serverWebExchange);
+    }
+
+}

+ 17 - 2
src/main/java/com/caimei365/user/mapper/BaseUserDao.java

@@ -1,7 +1,7 @@
 package com.caimei365.user.mapper;
 
 import com.caimei365.user.model.BaseUser;
-import com.caimei365.user.model.OperationVo;
+import com.caimei365.user.model.OperationPo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -33,6 +33,21 @@ public interface BaseUserDao {
      * @param mobile 手机号
      * @return BaseUser
      */
-    OperationVo getOperationByMobile(@Param("mobile") String mobile);
+    OperationPo getOperationByMobile(@Param("mobile") String mobile);
 
+
+    /**
+     * 根据手机号获取用户id
+     *
+     * @param bindMobile 手机号
+     * @return userId
+     */
+    Integer getUserIdByMobile(String bindMobile);
+    /**
+     * 根据手机号获取运营人员id
+     *
+     * @param bindMobile 手机号
+     * @return userId
+     */
+    Integer getOperationIdByMobile(String bindMobile);
 }

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

@@ -24,5 +24,11 @@ public interface RegisterUserDao {
      * @return
      */
     int insertClub(ClubPo club);
-
+    /**
+     * 根据用户ID更新机构ID
+     *
+     * @param userId
+     * @param clubId
+     */
+    void updateUserClubId(Integer userId, Integer clubId);
 }

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

@@ -14,6 +14,14 @@ public class BaseUser {
      * 用户ID
      */
     private Integer userId;
+    /**
+     * 机构ID
+     */
+    private Integer clubId;
+    /**
+     * 供应商ID
+     */
+    private Integer shopId;
     /**
      * 注册来源: 0网站 1小程序
      */

+ 1 - 1
src/main/java/com/caimei365/user/model/ClubPo.java

@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
 @Data
 public class ClubPo extends BaseUser {
     /**
-     * 机构D
+     * 机构ID
      */
     private Integer clubId;
     /**

+ 13 - 1
src/main/java/com/caimei365/user/model/OperationVo.java → src/main/java/com/caimei365/user/model/OperationPo.java

@@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode;
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-public class OperationVo extends BaseUser {
+public class OperationPo extends BaseUser {
     /**
      * 用户类型,1:机构类型,2供应商类型
      */
@@ -28,4 +28,16 @@ public class OperationVo extends BaseUser {
      * 手机号码
      */
     private String mobile;
+    /**
+     * 微信昵称
+     */
+    private String nickName;
+    /**
+     * 微信头像(headimgurl)
+     */
+    private String avatarUrl;
+    /**
+     * 联系人,对应用户的userName
+     */
+    private String linkName;
 }

+ 23 - 0
src/main/java/com/caimei365/user/service/WeChatService.java

@@ -0,0 +1,23 @@
+package com.caimei365.user.service;
+
+import com.caimei365.user.model.JsonModel;
+import org.springframework.web.server.ServerWebExchange;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/3/9
+ */
+public interface WeChatService {
+
+    /**
+     * 微信授权登录
+     *
+     * @param code          微信授权code
+     * @param encryptedData 微信加密数据
+     * @param iv            加密算法的初始向量
+     * @param serverWebExchange ServerWebExchange
+     */
+    JsonModel authorizationLogin(String code, String encryptedData, String iv, ServerWebExchange serverWebExchange);
+}

+ 54 - 8
src/main/java/com/caimei365/user/service/impl/ClubServiceImpl.java

@@ -5,16 +5,19 @@ import com.caimei365.user.mapper.RegisterUserDao;
 import com.caimei365.user.model.*;
 import com.caimei365.user.service.ClubService;
 import com.caimei365.user.service.RedisService;
+import com.caimei365.user.utils.AliyunSmsUtil;
 import com.caimei365.user.utils.Md5Util;
 import com.caimei365.user.utils.ReduestUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.server.ServerWebExchange;
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * Description
@@ -49,6 +52,7 @@ public class ClubServiceImpl implements ClubService {
      * @return BaseUser
      */
     @Override
+    @Transactional
     public JsonModel<BaseUser> register(Integer source, String userName, String bindMobile, String password, String passWordConfirm, String smsCode, Integer isAgreed, String nickName, String avatarUrl, ServerWebExchange serverWebExchange) {
         // 打印IP
         String ip = ReduestUtil.getIp(serverWebExchange);
@@ -70,13 +74,13 @@ public class ClubServiceImpl implements ClubService {
             return JsonModel.error("请勾选同意协议", null);
         }
         // 查找用户表是否存在
-        BaseUser dbUser = baseUserDao.getBaseUserByMobile(bindMobile);
-        if (dbUser != null) {
+        Integer dbUserId = baseUserDao.getUserIdByMobile(bindMobile);
+        if (dbUserId > 0) {
             return JsonModel.error("该手机号已被使用", null);
         }
         // 查找运营人员表是否存在
-        OperationVo operation = baseUserDao.getOperationByMobile(bindMobile);
-        if (null != operation) {
+        Integer dbOperationId = baseUserDao.getOperationIdByMobile(bindMobile);
+        if (dbOperationId > 0) {
             return JsonModel.error("您已是机构运营人员,无需再注册机构", null);
         }
         /*
@@ -103,7 +107,7 @@ public class ClubServiceImpl implements ClubService {
         user.setUserIdentity(4);
         // 用户权限: 2会员机构 3供应商 4协销 5普通机构
         user.setUserPermission(5);
-        //设置机构上线
+        // 设置机构上线
         user.setClubStatus(90);
         // 设置密码
         user.setPassword(Md5Util.md5(user.getPassword()));
@@ -151,9 +155,51 @@ public class ClubServiceImpl implements ClubService {
             log.info(club.getUserId() + " 插入数据库异常club:" + club.toString());
             return JsonModel.error("插入数据库异常", null);
         }
-//        //更新clubID
-//        userVo.setClubID(club.getClubID());
-//        loginDao.updateUser(userVo);
+        // user更新clubId
+        user.setClubId(club.getClubId());
+        registerUserDao.updateUserClubId(user.getUserId(), club.getClubId());
+        // 注册成功短信
+        boolean smsFlag = AliyunSmsUtil.sendSms(bindMobile, 7, "{name:"+ bindMobile +",password:"+ password +"}");
+        if (!smsFlag) {
+            // 短信发送失败重试一次
+            AliyunSmsUtil.sendSms(bindMobile, 7, "{name:"+ bindMobile +",password:"+ password +"}");
+        }
+        log.info("注册普通机构成功,手机号>>>" + bindMobile);
+        /*
+            绑定微信,成为机构运营人员
+         */
+        if (StringUtils.isNotBlank(nickName)) {
+            OperationPo operation = new OperationPo();
+            // 用户ID
+            operation.setUserId(user.getUserId());
+            // 机构ID
+            operation.setClubId(club.getClubId());
+            // 微信昵称
+            operation.setNickName(nickName);
+            // 微信头像
+            operation.setAvatarUrl(avatarUrl);
+            // 用户类型,1:机构类型,2供应商类型
+            operation.setUserType(1);
+            // 运营人员手机号
+            operation.setMobile(bindMobile);
+            // 联系人
+            operation.setLinkName(userName);
+            // 运营人员状态:1未绑定,2已绑定
+            operation.setStatus(2);
+
+//            Map<String, String> wxInfo = (Map<String, String>) request.getSession().getAttribute("wxInfo");
+//            String openid = wxInfo.get("openid");
+//            String unionid = wxInfo.get("unionid");
+//            operation.setOpenid(openid);
+//            operation.setUnionId(unionid);
+//            operation.setBindTime(time);
+//            operation.setUpdateTime(time);
+//            operation.setAddTime(time);
+//            operation.setDelFlag("0");
+//            loginDao.saveOperationUser(operation);
+//            log.info("注册普通机构,默认绑定为机构运营人员");
+        }
+        //return model.success(clubVo);
 
 
         return null;

+ 40 - 0
src/main/java/com/caimei365/user/service/impl/WeChatServiceImpl.java

@@ -0,0 +1,40 @@
+package com.caimei365.user.service.impl;
+
+import com.caimei365.user.model.JsonModel;
+import com.caimei365.user.service.WeChatService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Service;
+import org.springframework.web.server.ServerWebExchange;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/3/9
+ */
+@Slf4j
+@Service
+public class WeChatServiceImpl implements WeChatService {
+
+    /**
+     * 微信授权登录
+     *
+     * @param code              微信授权code
+     * @param encryptedData     微信加密数据
+     * @param iv                加密算法的初始向量
+     * @param serverWebExchange ServerWebExchange
+     */
+    @Override
+    public JsonModel authorizationLogin(String code, String encryptedData, String iv, ServerWebExchange serverWebExchange) {
+        ServerHttpRequest request = serverWebExchange.getRequest();
+
+
+
+
+
+
+
+        return null;
+    }
+}

+ 12 - 1
src/main/resources/mapper/BaseUserMapper.xml

@@ -39,7 +39,7 @@
         ) and u.userIdentity in (1,2,3,4)
         limit 1
     </select>
-    <select id="getOperationByMobile" resultType="com.caimei365.user.model.OperationVo">
+    <select id="getOperationByMobile" resultType="com.caimei365.user.model.OperationPo">
         select o.userID as userId,
                o.mobile as mobile,
                o.clubID as clubId,
@@ -49,4 +49,15 @@
         limit 1
     </select>
 
+    <select id="getUserIdByMobile" resultType="java.lang.Integer">
+        select userID from user
+        where bindMobile = #{mobile} and userIdentity in (1,2,3,4)
+        limit 1
+    </select>
+    <select id="getOperationIdByMobile" resultType="java.lang.Integer">
+        select id from cm_mall_operation_user
+        where mobile = #{mobile} and delFlag = '0'
+        limit 1
+    </select>
+
 </mapper>

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

@@ -9,5 +9,8 @@
         insert into club(`name`, `sname`, `contractMobile`, `linkMan`, `userID`, `addTime`, `status`, `spID`)
                   values(#{name},#{sName},#{contractMobile},#{linkMan},#{userId},#{addTime},#{status},#{serviceProviderId})
     </insert>
+    <update id="updateUserClubId">
+        update user set clubID = #{clubId} where userID = #{userId}
+    </update>
 
 </mapper>