| package com.doumee.service.business.impl; | 
|   | 
| import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | 
| import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; | 
| import com.alibaba.fastjson.JSONObject; | 
| 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.MemberRevenue; | 
| 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.data.redis.core.RedisTemplate; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import javax.annotation.Resource; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Objects; | 
| import java.util.Random; | 
| import java.util.concurrent.TimeUnit; | 
| import java.util.stream.Collectors; | 
|   | 
| /** | 
|  * 会员信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2025/07/09 12:00 | 
|  */ | 
| @Service | 
| public class MemberServiceImpl implements MemberService { | 
|   | 
|     @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) { | 
|         memberMapper.insert(member); | 
|         return member.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         memberMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(Member member) { | 
|         UpdateWrapper<Member> deleteWrapper = new UpdateWrapper<>(member); | 
|         memberMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         memberMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(Member member) { | 
|         memberMapper.updateById(member); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<Member> members) { | 
|         if (CollectionUtils.isEmpty(members)) { | 
|             return; | 
|         } | 
|         for (Member member: members) { | 
|             this.updateById(member); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public Member findById(Integer id) { | 
|         Member member = memberMapper.selectById(id); | 
|         if(Objects.isNull(member)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|         } | 
|         if(StringUtils.isNotBlank(member.getCoverImage())){ | 
|             String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() | 
|                     +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode(); | 
|             member.setFullCoverImage(path + member.getCoverImage()); | 
|         } | 
|         return member; | 
|     } | 
|   | 
|     @Override | 
|     public Member findOne(Member member) { | 
|         QueryWrapper<Member> wrapper = new QueryWrapper<>(member); | 
|         return memberMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<Member> findList(Member member) { | 
|         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()); | 
|         QueryWrapper<Member> queryWrapper = new QueryWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         pageWrap.getModel().setDeleted(Constants.ZERO); | 
|         if (pageWrap.getModel().getId() != null) { | 
|             queryWrapper.lambda().eq(Member::getId, pageWrap.getModel().getId()); | 
|         } | 
|         if (pageWrap.getModel().getDeleted() != null) { | 
|             queryWrapper.lambda().eq(Member::getDeleted, pageWrap.getModel().getDeleted()); | 
|         } | 
|         if (pageWrap.getModel().getCreateUser() != null) { | 
|             queryWrapper.lambda().eq(Member::getCreateUser, pageWrap.getModel().getCreateUser()); | 
|         } | 
|         if (pageWrap.getModel().getCreateTime() != null) { | 
|             queryWrapper.lambda().ge(Member::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); | 
|             queryWrapper.lambda().le(Member::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); | 
|         } | 
|         if (pageWrap.getModel().getUpdateUser() != null) { | 
|             queryWrapper.lambda().eq(Member::getUpdateUser, pageWrap.getModel().getUpdateUser()); | 
|         } | 
|         if (pageWrap.getModel().getUpdateTime() != null) { | 
|             queryWrapper.lambda().ge(Member::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); | 
|             queryWrapper.lambda().le(Member::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); | 
|         } | 
|         if (pageWrap.getModel().getRemark() != null) { | 
|             queryWrapper.lambda().eq(Member::getRemark, pageWrap.getModel().getRemark()); | 
|         } | 
|         if (pageWrap.getModel().getCoverImage() != null) { | 
|             queryWrapper.lambda().eq(Member::getCoverImage, pageWrap.getModel().getCoverImage()); | 
|         } | 
|         if (pageWrap.getModel().getOpenid() != null) { | 
|             queryWrapper.lambda().like(Member::getOpenid, pageWrap.getModel().getOpenid()); | 
|         } | 
|         if (pageWrap.getModel().getNickName() != null) { | 
|             queryWrapper.lambda().like(Member::getNickName, pageWrap.getModel().getNickName()); | 
|         } | 
|         if (pageWrap.getModel().getTelephone() != null) { | 
|             queryWrapper.lambda().like(Member::getTelephone, pageWrap.getModel().getTelephone()); | 
|         } | 
|         if (pageWrap.getModel().getName() != null) { | 
|             queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName()); | 
|         } | 
|         if (pageWrap.getModel().getWorkerIdentity() != null) { | 
|             queryWrapper.lambda().eq(Member::getWorkerIdentity, pageWrap.getModel().getWorkerIdentity()); | 
|         } | 
|         if (pageWrap.getModel().getDriverIdentity() != null) { | 
|             queryWrapper.lambda().eq(Member::getDriverIdentity, pageWrap.getModel().getDriverIdentity()); | 
|         } | 
|         if (pageWrap.getModel().getChefIdentity() != null) { | 
|             queryWrapper.lambda().eq(Member::getChefIdentity, pageWrap.getModel().getChefIdentity()); | 
|         } | 
|         if (pageWrap.getModel().getAmount() != null) { | 
|             queryWrapper.lambda().eq(Member::getAmount, pageWrap.getModel().getAmount()); | 
|         } | 
|         if (pageWrap.getModel().getTotalAmount() != null) { | 
|             queryWrapper.lambda().eq(Member::getTotalAmount, pageWrap.getModel().getTotalAmount()); | 
|         } | 
|         if (pageWrap.getModel().getStatus() != null) { | 
|             queryWrapper.lambda().eq(Member::getStatus, pageWrap.getModel().getStatus()); | 
|         } | 
|         if (pageWrap.getModel().getLoginTime() != null) { | 
|             queryWrapper.lambda().ge(Member::getLoginTime, Utils.Date.getStart(pageWrap.getModel().getLoginTime())); | 
|             queryWrapper.lambda().le(Member::getLoginTime, Utils.Date.getEnd(pageWrap.getModel().getLoginTime())); | 
|         } | 
|         if (pageWrap.getModel().getLoginTimes() != null) { | 
|             queryWrapper.lambda().eq(Member::getLoginTimes, pageWrap.getModel().getLoginTimes()); | 
|         } | 
|         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().getLat() != null) { | 
|             queryWrapper.lambda().eq(Member::getLat, pageWrap.getModel().getLat()); | 
|         } | 
|         if (pageWrap.getModel().getLgt() != null) { | 
|             queryWrapper.lambda().eq(Member::getLgt, pageWrap.getModel().getLgt()); | 
|         } | 
|         if (pageWrap.getModel().getProvince() != null) { | 
|             queryWrapper.lambda().eq(Member::getProvince, pageWrap.getModel().getProvince()); | 
|         } | 
|         if (pageWrap.getModel().getCity() != null) { | 
|             queryWrapper.lambda().eq(Member::getCity, pageWrap.getModel().getCity()); | 
|         } | 
|         if (pageWrap.getModel().getArea() != null) { | 
|             queryWrapper.lambda().eq(Member::getArea, pageWrap.getModel().getArea()); | 
|         } | 
|         //如果查询接单方 | 
|         queryWrapper.lambda().and(Constants.equalsInteger(pageWrap.getModel().getType(),Constants.ONE ),w1->{ | 
|             w1.eq(Member::getWorkerIdentity,Constants.TWO ) | 
|                     .or().eq(Member::getChefIdentity,Constants.TWO ) | 
|                     .or().eq(Member::getDriverIdentity,Constants.TWO ); | 
|         }); | 
|         queryWrapper.lambda().ge(pageWrap.getModel().getStartTime()!=null, Member::getCreateTime,pageWrap.getModel().getStartTime()); | 
|         queryWrapper.lambda().le(pageWrap.getModel().getEndTime()!=null,Member::getCreateTime,pageWrap.getModel().getEndTime()); | 
|   | 
|         for(PageWrap.SortData sortData: pageWrap.getSorts()) { | 
|             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|                 queryWrapper.orderByDesc(sortData.getProperty()); | 
|             } else { | 
|                 queryWrapper.orderByAsc(sortData.getProperty()); | 
|             } | 
|         } | 
|         return PageData.from(memberMapper.selectPage(page, queryWrapper)); | 
|     } | 
|   | 
|     @Override | 
|     public long count(Member member) { | 
|         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("DELETED", 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) { | 
|         if(Objects.isNull(wxPhoneRequest) | 
|                 || StringUtils.isBlank(wxPhoneRequest.getCode()) | 
|                 || StringUtils.isBlank(wxPhoneRequest.getOpenid())){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         try { | 
|             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")); | 
|             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.setUpdateTime(member.getCreateTime()); | 
|                 member.setDeleted(Constants.ZERO); | 
|                 member.setOpenid(wxPhoneRequest.getOpenid()); | 
|                 member.setTelephone(mobile); | 
|                 member.setNickName(mobile); | 
| //                member.setCoverImage("1.png"); | 
|                 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::getAutoReceiveStatus,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); | 
|         } | 
|         if(StringUtils.isNotBlank(member.getCoverImage())){ | 
|             String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() | 
|                     +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode(); | 
|             member.setFullCoverImage(path + member.getCoverImage()); | 
|         } | 
|         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.getId())); | 
|         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.ordersStatus.done.getKey())&&Constants.equalsInteger(i.getCommentStatus(),Constants.ZERO)).collect(Collectors.toList()).size()); | 
|             userCenterVO.setDoingTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())).collect(Collectors.toList()).size()); | 
|             userCenterVO.setWaitReceiveTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.wait.getKey())).collect(Collectors.toList()).size()); | 
|         } | 
|         List<Orders> acceptOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getAcceptMemberId,member.getId())); | 
|         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.ordersStatus.doing.getKey())).collect(Collectors.toList()).size()); | 
|             userCenterVO.setDoneTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.done.getKey())).collect(Collectors.toList()).size()); | 
|         } | 
|         member.setUserCenterVO(userCenterVO); | 
|         return member; | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|     @Override | 
|     public UserCenterVO getPlatformAboutUs(){ | 
|         UserCenterVO userCenterVO = new UserCenterVO(); | 
|         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())); | 
|         userCenterVO.setServerPhone(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_PHONE).getCode())); | 
|         userCenterVO.setUserAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.USER_AGREEMENT).getCode())); | 
|         userCenterVO.setPrivacyAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PRIVACY_AGREEMENT).getCode())); | 
|         return userCenterVO; | 
|     } | 
|   | 
|     @Override | 
|     public void logOff(String token,Integer memberId){ | 
|         memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" openid = null ").eq(Member::getId,memberId)); | 
|         jwtTokenUtil.logoutForH5(token); | 
|     } | 
|   | 
|   | 
|   | 
| } |