From 372822d209a560b017294b594906aa89bd46f4ce Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 11 七月 2025 09:02:41 +0800 Subject: [PATCH] 111 --- server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 207 insertions(+), 9 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 8defece..ec42cb3 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,20 +1,45 @@ package com.doumee.service.business.impl; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; +import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; +import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.config.jwt.JwtTokenUtil; +import com.doumee.config.wx.WxMiniConfig; +import com.doumee.core.constants.Constants; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.IdentityInfoMapper; import com.doumee.dao.business.MemberMapper; +import com.doumee.dao.business.OrdersMapper; +import com.doumee.dao.business.model.IdentityInfo; import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.model.Orders; +import com.doumee.dao.dto.WxPhoneRequest; +import com.doumee.dao.vo.AccountResponse; +import com.doumee.dao.vo.UserCenterVO; import com.doumee.service.business.MemberService; 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.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; +import io.swagger.annotations.ApiModelProperty; +import me.chanjar.weixin.common.error.WxErrorException; +import nonapi.io.github.classgraph.json.Id; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.util.Date; import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.stream.Collectors; /** * 浼氬憳淇℃伅琛⊿ervice瀹炵幇 @@ -26,6 +51,18 @@ @Autowired private MemberMapper memberMapper; + + @Autowired + private IdentityInfoMapper identityInfoMapper; + + @Autowired + private OrdersMapper ordersMapper; + + @Autowired + private JwtTokenUtil jwtTokenUtil; + + @Autowired + private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(Member member) { @@ -152,17 +189,11 @@ if (pageWrap.getModel().getLoginTimes() != null) { queryWrapper.lambda().eq(Member::getLoginTimes, pageWrap.getModel().getLoginTimes()); } - if (pageWrap.getModel().getReciveNum() != null) { - queryWrapper.lambda().eq(Member::getReciveNum, pageWrap.getModel().getReciveNum()); - } if (pageWrap.getModel().getPublishNum() != null) { queryWrapper.lambda().eq(Member::getPublishNum, pageWrap.getModel().getPublishNum()); } if (pageWrap.getModel().getScore() != null) { queryWrapper.lambda().eq(Member::getScore, pageWrap.getModel().getScore()); - } - if (pageWrap.getModel().getLocaltion() != null) { - queryWrapper.lambda().eq(Member::getLocaltion, pageWrap.getModel().getLocaltion()); } if (pageWrap.getModel().getLat() != null) { queryWrapper.lambda().eq(Member::getLat, pageWrap.getModel().getLat()); @@ -179,9 +210,6 @@ if (pageWrap.getModel().getArea() != null) { queryWrapper.lambda().eq(Member::getArea, pageWrap.getModel().getArea()); } - if (pageWrap.getModel().getAutoReciveStatus() != null) { - queryWrapper.lambda().eq(Member::getAutoReciveStatus, pageWrap.getModel().getAutoReciveStatus()); - } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); @@ -197,4 +225,174 @@ QueryWrapper<Member> wrapper = new QueryWrapper<>(member); return memberMapper.selectCount(wrapper); } + + + /***************灏忕▼搴忔帴鍙�*************/ + + + + /** + * 寰俊灏忕▼搴忕櫥褰� + * @param code + * @return + */ + @Override + public AccountResponse wxLogin(String code) { + if(StringUtils.isBlank(code)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + try { + //鑾峰彇寰俊鏁忔劅鏁版嵁 + WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code); + String openId = session.getOpenid(); + 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")); + AccountResponse accountResponse = new AccountResponse(); + accountResponse.setOpenid(openId); + if(Objects.isNull(member)){ + return accountResponse; + } + accountResponse.setToken(jwtTokenUtil.generateToken(member)); + accountResponse.setMember(member); + return accountResponse; + } catch (WxErrorException e) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�"); + } + } + + + + + @Override + public AccountResponse wxAuthPhone(WxPhoneRequest wxPhoneRequest) { + try { + if(Objects.isNull(wxPhoneRequest) + || StringUtils.isBlank(wxPhoneRequest.getCode()) + || StringUtils.isBlank(wxPhoneRequest.getOpenid())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNumber(wxPhoneRequest.getCode()); + String mobile = userPhoneInfo.getPhoneNumber(); + if(Objects.isNull(mobile)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈幏鍙栧埌鎵嬫満鍙�"); + } + Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getTelephone,mobile).last("limit 1")); + member.setOpenid(wxPhoneRequest.getOpenid()); + if(Objects.nonNull(member)){ + memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getTelephone,mobile) + .set(Member::getOpenid,wxPhoneRequest.getOpenid()).set(Member::getUpdateTime,new Date()).eq(Member::getId,member.getId())); + }else{ + member = new Member(); + member.setCreateTime(new Date()); + member.setDeleted(Constants.ZERO); + member.setOpenid(wxPhoneRequest.getOpenid()); + member.setTelephone(mobile); + member.setNickName(mobile); + member.setCoverImage(""); + member.setWorkerIdentity(Constants.ZERO); + member.setDriverIdentity(Constants.ZERO); + member.setChefIdentity(Constants.ZERO); + member.setAmount(Constants.ZERO.longValue()); + member.setTotalAmount(Constants.ZERO.longValue()); + member.setStatus(Constants.ZERO); + member.setLoginTime(new Date()); + member.setLoginTimes(Constants.ONE.longValue()); + member.setReceiveNum(Constants.ZERO.longValue()); + member.setPublishNum(Constants.ZERO.longValue()); + member.setAutoReceiveStatus(Constants.ONE); + member.setUseIdentity(Constants.ZERO); + memberMapper.insert(member); + } + AccountResponse accountResponse = new AccountResponse(); + accountResponse.setToken(jwtTokenUtil.generateToken(member)); + accountResponse.setMember(member); + return accountResponse; + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈В鏋愬埌鎵嬫満鍙�"); + } + } + + + + @Override + public void editMemberInfo(Member member){ + if(Objects.isNull(member) + || ( StringUtils.isBlank(member.getCoverImage()) || StringUtils.isBlank(member.getName()) || StringUtils.isBlank(member.getNickName()) || Objects.isNull(member.getAutoReceiveStatus()) )){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + memberMapper.update(new UpdateWrapper<Member>().lambda() + .set(StringUtils.isNotBlank(member.getNickName()),Member::getNickName,member.getNickName()) + .set(StringUtils.isNotBlank(member.getName()),Member::getName,member.getName()) + .set(StringUtils.isNotBlank(member.getCoverImage()),Member::getCoverImage,member.getCoverImage()) + .set(Objects.nonNull(member.getAutoReceiveStatus()),Member::getCoverImage,member.getAutoReceiveStatus()) + .set(Member::getUpdateTime,new Date()) + .eq(Member::getId,member.getId())); + } + + + @Override + public void editUseIdentity(Member member){ + if(Objects.isNull(member) + || Objects.isNull(member.getUseIdentity())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(Constants.equalsInteger(member.getUseIdentity(),Constants.ZERO)){ + member.setUseIdentity(Constants.ZERO); + memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getUseIdentity,Constants.ZERO).eq(Member::getId,member.getId())); + }else{ + if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda().eq(IdentityInfo::getDeleted,Constants.ZERO) + .eq(IdentityInfo::getMemberId,member.getId()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO))>Constants.ZERO){ + memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getUseIdentity,Constants.ONE).eq(Member::getId,member.getId())); + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鏃犲彲鐢ㄦ帴鍗曡韩浠�!"); + } + } + } + + + @Override + public Member getMemberInfo(Integer memberId){ + Member member = this.findById(memberId); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + UserCenterVO userCenterVO = new UserCenterVO(); + userCenterVO.setReleaseTaskTotal(Constants.ZERO); + userCenterVO.setWaitReceiveTotal(Constants.ZERO); + userCenterVO.setDoingTotal(Constants.ZERO); + userCenterVO.setWaitCommentTotal(Constants.ZERO); + userCenterVO.setTaskingTotal(Constants.ZERO); + userCenterVO.setDoneTotal(Constants.ZERO); + userCenterVO.setReceiveTotal(Constants.ZERO); + List<Orders> releaseOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getReleaseMemberId,member)); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(releaseOrders)){ + userCenterVO.setReleaseTaskTotal(releaseOrders.size()); + userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size()); + userCenterVO.setDoingTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.TWO)).collect(Collectors.toList()).size()); + userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)&&Constants.equalsInteger(i.getCommentStatus(),Constants.ZERO)).collect(Collectors.toList()).size()); + } + List<Orders> acceptOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getAcceptMemberId,member)); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(acceptOrders)){ + userCenterVO.setReceiveTotal(acceptOrders.size()); + userCenterVO.setTaskingTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.TWO)).collect(Collectors.toList()).size()); + userCenterVO.setDoneTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)).collect(Collectors.toList()).size()); + } + + userCenterVO.setAboutUs(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ABOUT_US).getCode())); + userCenterVO.setFeeStandards(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FEE_STANDARDS).getCode())); + userCenterVO.setServerIntroduce(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_INTRODUCE).getCode())); + member.setUserCenterVO(userCenterVO); + return member; + } + + + + + + } -- Gitblit v1.9.3