From 1b0cf0db5c82ea8308d2f338973a91555787c34d Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 18 三月 2025 11:17:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 159 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 145 insertions(+), 14 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..c9419f4 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,15 +1,18 @@ 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; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; +import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; @@ -17,15 +20,23 @@ import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.web.request.RegisterRequest; +import com.doumee.dao.business.web.request.WxPhoneRequest; 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.apache.shiro.SecurityUtils; +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; @@ -40,10 +51,41 @@ @Autowired private MemberMapper memberMapper; + @Override public String create(Member member) { memberMapper.insert(member); return member.getId(); + } + + @Override + public String createManageMember(Member member) { + LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + + QueryWrapper<Member> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(Member::getIsdeleted,Constants.ZERO) + .eq(Member::getType,Constants.ONE) + .eq(Member::getCardNo,member.getCardNo()); + Integer integer = memberMapper.selectCount(wrapper); + + if (integer > 0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍗″彿瀛樺湪閲嶅"); + } + Member insert = new Member(); + insert.setCreateDate(new Date()); + insert.setCreator(principal.getId()); + insert.setEditDate(new Date()); + insert.setEditor(principal.getId()); + insert.setIsdeleted(Constants.ZERO); + insert.setName(member.getName()); + insert.setNickname(member.getNickname()); + insert.setStatus(member.getStatus()); + insert.setRegisterDate(new Date()); + insert.setCardNo(member.getCardNo()); + insert.setType(Constants.ONE); + memberMapper.insert(insert); + return insert.getId(); } @Override @@ -71,6 +113,29 @@ } @Override + public void update(Member member) { + + QueryWrapper<Member> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(Member::getIsdeleted,Constants.ZERO) + .eq(Member::getType,Constants.ONE) + .eq(Member::getCardNo,member.getCardNo()); + Member member1 = memberMapper.selectOne(wrapper); + if (Objects.nonNull(member1) && !member1.getId().equals(member.getId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍗″彿瀛樺湪閲嶅"); + } + LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + Member update = new Member(); + update.setId(member.getId()); + update.setName(member.getName()); + update.setStatus(member.getStatus()); + update.setEditDate(new Date()); + update.setEditor(principal.getId()); + memberMapper.updateById(member); + + } + + @Override public void updateByIdInBatch(List<Member> members) { if (CollectionUtils.isEmpty(members)) { return; @@ -88,7 +153,7 @@ @Override public Member findOne(Member member) { QueryWrapper<Member> wrapper = new QueryWrapper<>(member); - return memberMapper.selectOne(wrapper); + return memberMapper.selectOne(wrapper.last(" limit 1")); } @Override @@ -96,7 +161,7 @@ QueryWrapper<Member> wrapper = new QueryWrapper<>(member); return memberMapper.selectList(wrapper); } - + @Override public PageData<Member> findPage(PageWrap<Member> pageWrap) { IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); @@ -126,7 +191,7 @@ queryWrapper.lambda().eq(Member::getInfo, pageWrap.getModel().getInfo()); } if (pageWrap.getModel().getName() != null) { - queryWrapper.lambda().eq(Member::getName, pageWrap.getModel().getName()); + queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getNickname() != null) { queryWrapper.lambda().eq(Member::getNickname, pageWrap.getModel().getNickname()); @@ -164,7 +229,7 @@ queryWrapper.lambda().eq(Member::getPassword, pageWrap.getModel().getPassword()); } if (pageWrap.getModel().getCardNo() != null) { - queryWrapper.lambda().eq(Member::getCardNo, pageWrap.getModel().getCardNo()); + queryWrapper.lambda().like(Member::getCardNo, pageWrap.getModel().getCardNo()); } if (pageWrap.getModel().getCardSign() != null) { queryWrapper.lambda().eq(Member::getCardSign, pageWrap.getModel().getCardSign()); @@ -182,6 +247,23 @@ queryWrapper.orderByAsc(sortData.getProperty()); } } + return PageData.from(memberMapper.selectPage(page, queryWrapper)); + } + + + @Override + public PageData<Member> findManagerMemberPage(PageWrap<Member> pageWrap) { + + IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); + QueryWrapper<Member> queryWrapper = new QueryWrapper<>(); + Utils.MP.blankToNull(pageWrap.getModel()); + if (pageWrap.getModel().getName() != null) { + queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName()); + } + if (pageWrap.getModel().getCardNo() != null) { + queryWrapper.lambda().like(Member::getCardNo, pageWrap.getModel().getCardNo()); + } + queryWrapper.lambda().eq(Member::getType, Constants.ONE); return PageData.from(memberMapper.selectPage(page, queryWrapper)); } @@ -210,7 +292,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,32 +308,82 @@ } + /** + * 寰俊灏忕▼搴忕櫥褰� + * @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.setId(Constants.getUUID()); + member.setCreateDate(new Date()); + member.setIsdeleted(Constants.ZERO); + member.setOpenid(openId); + member.setUnionid(unionId); + member.setType(Constants.ZERO); + member.setRegisterDate(new Date()); + member.setOrigin(Constants.ZERO.toString()); + member.setStatus(Constants.ZERO); + memberMapper.insert(member); } - - memberMapper.updateById(member); UserResponse userResponse = getUserInfo(member.getId()); - JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId()); + if(StringUtils.isBlank(member.getPhone())){ + accountResponse.setStatus(Constants.ONE); + } + JwtPayLoad payLoad = new JwtPayLoad(member.getId()); accountResponse.setToken(JwtTokenUtil.generateToken(payLoad)); + accountResponse.setSessionKey(session.getSessionKey()); accountResponse.setUserResponse(userResponse); return accountResponse; } catch (WxErrorException e) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�"); } - } + + + /** + * 瑙f瀽寰俊鎵嬫満鍙� + * @param wxPhoneRequest + * @return + */ + @Override + public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest) { + try { + Member member = memberMapper.selectById(wxPhoneRequest.getMemberId()); + WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv()); + //鑾峰彇鎵嬫満鍙� + 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) { @@ -259,7 +391,6 @@ UserResponse userResponse = new UserResponse(); BeanUtils.copyProperties(member,userResponse); userResponse.setMobile(member.getPhone()); - return userResponse; } -- Gitblit v1.9.3