| | |
| | | package com.ruoyi.member.service.impl.member; |
| | | import com.google.common.collect.Lists; |
| | | import java.util.Date; |
| | | |
| | | import cn.binarywang.wx.miniapp.api.WxMaService; |
| | | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.core.utils.uuid.IdUtils; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.utils.CodeFactoryUtil; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.member.domain.dto.*; |
| | | import com.ruoyi.member.domain.pojo.member.IntegralRecord; |
| | |
| | | import com.ruoyi.member.domain.vo.*; |
| | | import com.ruoyi.member.mapper.member.MemberMapper; |
| | | import com.ruoyi.member.service.member.*; |
| | | import com.ruoyi.member.util.CodeFactoryUtil; |
| | | import com.ruoyi.member.util.HttpUtils; |
| | | import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; |
| | | import com.ruoyi.system.api.domain.poji.config.Activeness; |
| | | import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo; |
| | | import com.ruoyi.system.api.service.RemoteConfigService; |
| | | import com.ruoyi.system.api.service.RemoteOrderService; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import com.ruoyi.system.api.service.RemoteUserService; |
| | | import com.ruoyi.system.api.constant.AppErrorConstant; |
| | | import com.ruoyi.system.api.constant.SecurityConstant; |
| | | import com.ruoyi.system.api.domain.dto.AppEditUserDto; |
| | | import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; |
| | | import com.ruoyi.system.api.domain.dto.AppMemberGoodsTypeDto; |
| | | import com.ruoyi.system.api.domain.dto.*; |
| | | import com.ruoyi.system.api.domain.poji.config.Activeness; |
| | | import com.ruoyi.system.api.domain.poji.config.SysTag; |
| | | import com.ruoyi.system.api.domain.poji.member.Member; |
| | | import com.ruoyi.system.api.domain.poji.shop.Shop; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysUser; |
| | | import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; |
| | | import com.ruoyi.system.api.domain.vo.*; |
| | | import com.ruoyi.system.api.model.AppMiniLoginDto; |
| | | import com.ruoyi.system.api.model.AppMiniLoginVo; |
| | | import io.swagger.models.auth.In; |
| | | import com.ruoyi.system.api.service.RemoteConfigService; |
| | | import com.ruoyi.system.api.service.RemoteOrderService; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import com.ruoyi.system.api.service.RemoteUserService; |
| | | import lombok.extern.log4j.Log4j2; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import org.apache.commons.lang3.ArrayUtils; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | * @return |
| | | */ |
| | | private String createMemberNo(){ |
| | | int memberTotal = memberMapper.selectCount(new LambdaQueryWrapper<Member>().eq(Member::getDelFlag, 0)); |
| | | int memberTotal = memberMapper.selectCount(new LambdaQueryWrapper<Member>()); |
| | | String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal+1)); |
| | | return memberNo; |
| | | } |
| | |
| | | public List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto){ |
| | | List<Activeness> activenessList = remoteConfigService.listActiveness().getData(); |
| | | Date nowDay = new Date(); |
| | | //处理活跃度筛选 |
| | | activenessList.stream() |
| | | .filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId())) |
| | | .findFirst() |
| | | .ifPresent(activeness -> { |
| | | merMemberPageDto.setActStartDate(DateUtils.addDays(nowDay, activeness.getEndDay())); |
| | | merMemberPageDto.setActEndDate(DateUtils.addDays(nowDay, activeness.getStartDay())); |
| | | }); |
| | | if(merMemberPageDto.getActivenessId()!=null){ |
| | | //处理活跃度筛选 |
| | | activenessList.stream() |
| | | .filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId())) |
| | | .findFirst() |
| | | .ifPresent(activeness -> { |
| | | merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(nowDay, activeness.getEndDay()))); |
| | | merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(nowDay, activeness.getStartDay()))); |
| | | }); |
| | | } |
| | | //处理标签为正则表达 |
| | | if(StringUtils.isNotBlank(merMemberPageDto.getMemberTags())){ |
| | | merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",","|")); |
| | | } |
| | | //查询获取结果列表 |
| | | List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto); |
| | | //处理活跃度返回 |
| | |
| | | */ |
| | | @Override |
| | | public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto){ |
| | | Member member = this.getByUserId(mgtMemberRelEditDto.getMemberUserId()); |
| | | Shop shop = shopService.getShop(mgtMemberRelEditDto.getShopId()).getData(); |
| | | member.setRelationShopId(shop.getShopId()); |
| | | member.setRelationShopName(shop.getShopName()); |
| | | member.setBindingFlag(1); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | if(StringUtils.isNotBlank(mgtMemberRelEditDto.getMemberUserIds())){ |
| | | Shop shop = shopService.getShop(mgtMemberRelEditDto.getShopId()).getData(); |
| | | String memberUserIds = mgtMemberRelEditDto.getMemberUserIds(); |
| | | String[] memberUserIdArr = memberUserIds.split(","); |
| | | for(String str : memberUserIdArr){ |
| | | Member member = this.getByUserId(Long.valueOf(str)); |
| | | member.setRelationShopId(shop.getShopId()); |
| | | member.setRelationShopName(shop.getShopName()); |
| | | member.setBindingFlag(1); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto){ |
| | | Member member = this.getById(mgtMemberRelDelDto.getMemberUserId()); |
| | | member.setBindingFlag(0); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(mgtMemberRelDelDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | if(StringUtils.isNotBlank(mgtMemberRelDelDto.getMemberUserIds())) { |
| | | String memberUserIds = mgtMemberRelDelDto.getMemberUserIds(); |
| | | String[] memberUserIdArr = memberUserIds.split(","); |
| | | for(String str : memberUserIdArr) { |
| | | Member member = this.getById(Long.valueOf(str)); |
| | | member.setBindingFlag(0); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUserId(mgtMemberRelDelDto.getUserId()); |
| | | this.saveOrUpdate(member); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto){ |
| | | MemberIntegralChangeDto memberIntegralChangeDto = new MemberIntegralChangeDto(); |
| | | Member member = this.getByUserId(mgtMemberIntEditDto.getMemberUserId()); |
| | | memberIntegralChangeDto.setUserId(mgtMemberIntEditDto.getMemberUserId()); |
| | | memberIntegralChangeDto.setMemberId(member.getMemberId()); |
| | | memberIntegralChangeDto.setChangeType(1); |
| | | memberIntegralChangeDto.setRecordType(3); |
| | | memberIntegralChangeDto.setIntegral(mgtMemberIntEditDto.getIntegral()); |
| | | //调用积分变动 |
| | | memberIntegralChange(memberIntegralChangeDto); |
| | | if(StringUtils.isNotBlank(mgtMemberIntEditDto.getMemberUserIds())) { |
| | | String memberUserIds = mgtMemberIntEditDto.getMemberUserIds(); |
| | | String[] memberUserIdArr = memberUserIds.split(","); |
| | | MemberIntegralChangeDto memberIntegralChangeDto; |
| | | for(String str : memberUserIdArr) { |
| | | memberIntegralChangeDto = new MemberIntegralChangeDto(); |
| | | Member member = this.getByUserId(Long.valueOf(str)); |
| | | memberIntegralChangeDto.setUserId(Long.valueOf(str)); |
| | | memberIntegralChangeDto.setMemberId(member.getMemberId()); |
| | | memberIntegralChangeDto.setChangeType(1); |
| | | memberIntegralChangeDto.setRecordType(3); |
| | | memberIntegralChangeDto.setIntegral(mgtMemberIntEditDto.getIntegral()); |
| | | //调用积分变动 |
| | | memberIntegralChange(memberIntegralChangeDto); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | mgtMemberGetVo.setMemberTags(member.getUserTags()); |
| | | return mgtMemberGetVo; |
| | | } |
| | | |
| | | /** |
| | | * @description 删除标签 |
| | | * @author jqs |
| | | * @date 2023/6/8 15:18 |
| | | * @param memberTag |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void deleteMemberTag(String memberTag){ |
| | | memberMapper.deleteMemberTag(memberTag); |
| | | } |
| | | |
| | | /** |
| | | * @description 通过发送类型获取userId |
| | | * @author jqs |
| | | * @date 2023/6/13 17:53 |
| | | * @param sendType |
| | | * @return List<Long> |
| | | */ |
| | | @Override |
| | | public List<Long> listIdBySendType(Integer sendType){ |
| | | //1.手动领取2.全部用户3.会员用户4非会员用户5自定义 |
| | | return memberMapper.listIdBySendType(sendType); |
| | | } |
| | | |
| | | /** |
| | | * @description 通过ids获取用户简易返回 |
| | | * @author jqs |
| | | * @date 2023/6/16 11:06 |
| | | * @param userIds |
| | | * @return List<MgtSimpleMemberVo> |
| | | */ |
| | | @Override |
| | | public List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds){ |
| | | return memberMapper.listSimpleVoByIds(userIds); |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/16 12:41 |
| | | * @param mgtUserIdByKeywordDto |
| | | * @return MgtUserIdByKeywordVo |
| | | */ |
| | | @Override |
| | | public MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto){ |
| | | MgtUserIdByKeywordVo mgtUserIdByKeywordVo = new MgtUserIdByKeywordVo(); |
| | | List<Long> userIdList = memberMapper.getUserIdByKeyword(mgtUserIdByKeywordDto); |
| | | if(userIdList!=null&&!userIdList.isEmpty()){ |
| | | String userIdStr = userIdList.stream() |
| | | .map(Object::toString) |
| | | .collect(Collectors.joining(",")); |
| | | mgtUserIdByKeywordVo.setUserIds(userIdStr); |
| | | } |
| | | return mgtUserIdByKeywordVo; |
| | | } |
| | | } |