From b5d33341519df18767e88189b28c87238bd07358 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期日, 08 十月 2023 09:21:13 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |   86 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 75 insertions(+), 11 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 5d255d6..ef5e369 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,10 +1,12 @@
 package com.doumee.service.business.impl;
 
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.Jwt.JwtPayLoad;
 import com.doumee.core.Jwt.JwtTokenUtil;
 import com.doumee.core.constants.Constants;
@@ -18,14 +20,20 @@
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.web.request.RegisterRequest;
 import com.doumee.dao.business.web.response.AccountResponse;
+import com.doumee.dao.business.web.response.HomeResponse;
 import com.doumee.dao.business.web.response.UserResponse;
 import com.doumee.service.business.MemberService;
 import me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -39,6 +47,7 @@
 
     @Autowired
     private MemberMapper memberMapper;
+
 
     @Override
     public String create(Member member) {
@@ -210,7 +219,7 @@
             //鑾峰彇寰俊鏁忔劅鏁版嵁
             WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
             String openId = session.getOpenid();
-            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+            if (StringUtils.isBlank(openId)) {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
             }
             member.setOpenid(openId);
@@ -226,26 +235,46 @@
     }
 
 
+    /**
+     * 寰俊灏忕▼搴忕櫥褰�
+     * @param code
+     * @return
+     */
     @Override
     public AccountResponse wxLogin(String code) {
         try {
             //鑾峰彇寰俊鏁忔劅鏁版嵁
             WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
             String openId = session.getOpenid();
-            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+            String unionId = session.getUnionid();
+            if (StringUtils.isBlank(openId)) {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
             }
-            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).eq("ISDELETED", Constants.ZERO).last("limit 1"));
+            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("openid", openId).eq("isdeleted", Constants.ZERO).last("limit 1"));
             AccountResponse accountResponse = new AccountResponse();
-            if (Objects.isNull(member)) {
-                return accountResponse;
+            if(Objects.isNull(member)){
+                //鏂板鐢ㄦ埛 闇�瑕佽繘琛岀敤鎴风粦瀹氭墜鏈哄彿
+                member = new Member();
+                member.setCreateDate(new Date());
+                member.setIsdeleted(Constants.ZERO);
+                member.setOpenid(openId);
+                member.setUnionid(unionId);
+                member.setType(Constants.ZERO);
+                member.setOrigin(Constants.ZERO.toString());
+                member.setStatus(Constants.ZERO);
+                memberMapper.insert(member);
+                accountResponse.setStatus(Constants.ONE);
+            }else{
+                UserResponse userResponse = getUserInfo(member.getId());
+                if(StringUtils.isBlank(member.getPhone())){
+                    accountResponse.setStatus(Constants.ONE);
+                }else{
+                    JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
+                    accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
+                }
+                accountResponse.setUserResponse(userResponse);
             }
 
-            memberMapper.updateById(member);
-            UserResponse userResponse = getUserInfo(member.getId());
-            JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
-            accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
-            accountResponse.setUserResponse(userResponse);
             return accountResponse;
         } catch (WxErrorException e) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
@@ -253,15 +282,50 @@
 
     }
 
+
+    /**
+     * 瑙f瀽寰俊鎵嬫満鍙�
+     * @param memberId
+     * @param encryptedData
+     * @param iv
+     * @param sessionKey
+     * @return
+     */
+    @Override
+    public AccountResponse wxPhone(String memberId,String encryptedData, String iv,String sessionKey) {
+        try {
+            Member member =  memberMapper.selectById(memberId);
+            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
+            //鑾峰彇鎵嬫満鍙�
+            String mobile= userPhoneInfo.getPurePhoneNumber();
+            if(Objects.isNull(mobile)){
+               throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈В鏋愬埌鎵嬫満鍙�");
+            }
+            member.setPhone(mobile);
+            memberMapper.updateById(member);
+            AccountResponse accountResponse = new AccountResponse();
+            UserResponse userResponse = getUserInfo(member.getId());
+            JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
+            accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
+            accountResponse.setUserResponse(userResponse);
+            accountResponse.setStatus(Constants.ZERO);
+            return accountResponse;
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈В鏋愬埌鎵嬫満鍙�");
+        }
+    }
+
+
     @Override
     public UserResponse getUserInfo(String id) {
         Member member = memberMapper.selectById(id);
         UserResponse userResponse = new UserResponse();
         BeanUtils.copyProperties(member,userResponse);
         userResponse.setMobile(member.getPhone());
-
         return userResponse;
     }
 
 
+
 }

--
Gitblit v1.9.3