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