jiangqs
2023-08-05 7c9dda6138ceea88a312583a3fcc9b2bb356fbc4
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -4,6 +4,7 @@
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -199,7 +200,26 @@
            String errcode = jsonUserPhoneNumber.getString("errcode");
            String errmsg = jsonUserPhoneNumber.getString("errmsg");
            if (!"0".equals(errcode)) {
                throw new ServiceException(errmsg);
                //因为生产测试差异,临时更新token
                redisService.deleteObject(SecurityConstant.WX_TOKEN);
                String responseAccessToken = getAccessTokenByWX();
                JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
                accessToken = jsonAccessToken.getString("access_token");
                errmsg = jsonAccessToken.getString("errmsg");
                Long expiresIn = jsonAccessToken.getLong("expires_in");
                if (StringUtils.isBlank(accessToken)) {
                    throw new ServiceException(errmsg);
                } else {
                    expiresIn = expiresIn - 100;
                    redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS);
                }
                responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode());
                jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
                errcode = jsonUserPhoneNumber.getString("errcode");
                errmsg = jsonUserPhoneNumber.getString("errmsg");
                if (!"0".equals(errcode)) {
                    throw new ServiceException(errmsg);
                }
            }
            String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
            JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
@@ -235,6 +255,7 @@
            member.setMemberNo(memberNo);
            member.setUserId(sysUser.getUserId());
            member.setDelFlag(0);
            member.setFrozenFlag(0);
            member.setNickName("鸿瑞堂用户");
            member.setRealName("鸿瑞堂用户");
            member.setCustomerSource("小程序");
@@ -339,6 +360,9 @@
            case 4:
                member.setBirthday(editValue);
                break;
            case 5:
                member.setRealName(editValue);
                break;
            default:
                break;
        }
@@ -356,6 +380,7 @@
     */
    @Override
    public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) {
        //处理活跃度
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) {
            if(!activenessList.isEmpty()){
@@ -369,6 +394,19 @@
                        break;
                    }
                }
            }
        }
        //处理剩余次数
        if(merMemberPageDto.getSurpNum()!=null){
            if(merMemberPageDto.getSurpNum()==1){
                merMemberPageDto.setSurpStartNum(0);
                merMemberPageDto.setSurpEndNum(5);
            }else if(merMemberPageDto.getSurpNum()==2){
                merMemberPageDto.setSurpStartNum(5);
                merMemberPageDto.setSurpEndNum(10);
            }else if(merMemberPageDto.getSurpNum()==3){
                merMemberPageDto.setSurpStartNum(10);
                merMemberPageDto.setSurpEndNum(999999999);
            }
        }
        List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto);
@@ -422,7 +460,7 @@
        Member member = this.getByUserId(userId);
        // 设置MerMemberInfoVo对象的属性值
        merMemberInfoVo.setUserId(userId);
        merMemberInfoVo.setNickName(member.getNickName());
        merMemberInfoVo.setRealName(member.getRealName());
        merMemberInfoVo.setPhonenumber(member.getMobile());
        merMemberInfoVo.setAvatar(member.getAvatar());
        merMemberInfoVo.setBirthday(member.getBirthday());
@@ -497,7 +535,7 @@
        MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo();
        Member member = this.getByUserId(userId);
        BeanUtils.copyProperties(member, merMemberBasicFileVo);
        merMemberBasicFileVo.setNickName(member.getNickName());
        merMemberBasicFileVo.setRealName(member.getRealName());
        merMemberBasicFileVo.setPhonenumber(member.getMobile());
        merMemberBasicFileVo.setCreateTime(member.getCreateTime());
        /*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId);
@@ -572,7 +610,7 @@
     * @param merMemberAddDto
     */
    @Override
    public void addMerMember(MerMemberAddDto merMemberAddDto) {
    public Long addMerMember(MerMemberAddDto merMemberAddDto) {
        String phoneNumber = merMemberAddDto.getPhonenumber();
        Member oldMember = this.getByMobile(phoneNumber);
        // Check if the member already exists
@@ -587,7 +625,7 @@
            sysUser = new SysUser();
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName(merMemberAddDto.getNickName());
            sysUser.setNickName(merMemberAddDto.getRealName());
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            String password = "hongruitang";
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
@@ -600,8 +638,9 @@
            member.setMemberId(memberId);
            member.setUserId(sysUser.getUserId());
            member.setDelFlag(0);
            member.setNickName(merMemberAddDto.getNickName());
            member.setRealName(merMemberAddDto.getNickName());
            member.setFrozenFlag(0);
            member.setNickName(merMemberAddDto.getRealName());
            member.setRealName(merMemberAddDto.getRealName());
            member.setGender(merMemberAddDto.getGender());
            member.setMobile(phoneNumber);
            member.setReferrer(merMemberAddDto.getReferrer());
@@ -615,7 +654,7 @@
            // Get shop information and set it to the member
            Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData();
            member.setRelationShopName(shop.getShopName());
            member.setCustomerSource("商户添加");
            member.setCustomerSource(merMemberAddDto.getCustomerSource());
            member.setCreateTime(new Date());
            // Save the member and initialize member total
            this.saveOrUpdate(member);
@@ -635,6 +674,7 @@
                memberArchiveService.saveBatch(memberArchiveList);
            }
        }
        return sysUser.getUserId();
    }
    /**
@@ -644,49 +684,54 @@
     */
    @Override
    public void editMerMember(MerMemberEditDto merMemberEditDto) {
    // 获取用户信息
    Member member = this.getByUserId(merMemberEditDto.getEditUserId());
     // 检查手机号是否已经存在
    if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
        Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
        if (memberOld != null) {
            throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
        // 获取用户信息
        Member member = this.getByUserId(merMemberEditDto.getEditUserId());
         // 检查手机号是否已经存在
        if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
            Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
            if (memberOld != null) {
                throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
            }
        }
         // 更新用户信息
        member.setRealName(merMemberEditDto.getRealName());
        member.setMobile(merMemberEditDto.getPhonenumber());
        member.setGender(merMemberEditDto.getGender());
        member.setReferrer(merMemberEditDto.getReferrer());
        member.setCustomerSource(merMemberEditDto.getCustomerSource());
        member.setLevel(merMemberEditDto.getLevel());
        member.setBirthday(merMemberEditDto.getBirthday());
        member.setUpdateUserId(merMemberEditDto.getUserId());
        member.setUpdateTime(new Date());
        List<String> memberNurse = merMemberEditDto.getMemberNurse();
        if(memberNurse!=null&&!memberNurse.isEmpty()){
            String memberNurseString = String.join(",", memberNurse);
            member.setMemberNurse(memberNurseString);
        }
        this.saveOrUpdate(member);
         // 更新用户手机号
        SysUser sysUser = new SysUser();
        sysUser.setUserId(merMemberEditDto.getEditUserId());
        sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
        sysUserService.updateUserMobile(sysUser);
         // 删除用户的档案信息
        memberArchiveService.deleteByUserId(sysUser.getUserId());
         // 添加用户的档案信息
        List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
        if (achiveList != null && !achiveList.isEmpty()) {
            // 构造用户档案列表
            List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
                MemberArchive memberArchive = new MemberArchive();
                memberArchive.setDelFlag(0);
                memberArchive.setUserId(sysUser.getUserId());
                memberArchive.setFieldId(memberArchiveVo.getFieldId());
                memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
                return memberArchive;
            }).collect(Collectors.toList());
             // 批量保存用户档案信息
            memberArchiveService.saveBatch(memberArchiveList);
        }
    }
     // 更新用户信息
    member.setRealName(merMemberEditDto.getNickName());
    member.setMobile(merMemberEditDto.getPhonenumber());
    member.setGender(merMemberEditDto.getGender());
    member.setReferrer(merMemberEditDto.getReferrer());
    member.setCustomerSource(merMemberEditDto.getCustomerSource());
    member.setLevel(merMemberEditDto.getLevel());
    member.setBirthday(merMemberEditDto.getBirthday());
    member.setUpdateUserId(merMemberEditDto.getUserId());
    member.setUpdateTime(new Date());
    this.saveOrUpdate(member);
     // 更新用户手机号
    SysUser sysUser = new SysUser();
    sysUser.setUserId(merMemberEditDto.getEditUserId());
    sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
    sysUserService.updateUserMobile(sysUser);
     // 删除用户的档案信息
    memberArchiveService.deleteByUserId(sysUser.getUserId());
     // 添加用户的档案信息
    List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
    if (achiveList != null && !achiveList.isEmpty()) {
        // 构造用户档案列表
        List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
            MemberArchive memberArchive = new MemberArchive();
            memberArchive.setDelFlag(0);
            memberArchive.setUserId(sysUser.getUserId());
            memberArchive.setFieldId(memberArchiveVo.getFieldId());
            memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
            return memberArchive;
        }).collect(Collectors.toList());
         // 批量保存用户档案信息
        memberArchiveService.saveBatch(memberArchiveList);
    }
}
    /**
     * @param mobile
@@ -768,8 +813,8 @@
        String memberNo = createMemberNo();
        member.setMemberNo(memberNo);
        member.setDelFlag(0);
        member.setFrozenFlag(0);
        member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
        member.setBindingFlag(0);
        member.setCreateTime(new Date());
        member.setCustomerSource("商户订单添加");
        this.saveOrUpdate(member);
@@ -854,7 +899,7 @@
        }
        if(merMemberPageDto.getEndAge()!=null){
            LocalDate currentDate = LocalDate.now();
            LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge());
            LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge()+1);
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            merMemberPageDto.setStartBirthday(startBirthday.format(formatter));
        }
@@ -914,6 +959,7 @@
                member.setUpdateTime(new Date());
                member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
                this.saveOrUpdate(member);
                memberMapper.updateById(member);
            }
        }
    }
@@ -932,9 +978,11 @@
            for (String str : memberUserIdArr) {
                Member member = this.getByUserId(Long.valueOf(str));
                member.setBindingFlag(0);
                member.setRelationShopId(null);
                member.setRelationShopName(null);
                member.setUpdateTime(new Date());
                member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
                this.saveOrUpdate(member);
                memberMapper.update(member,null);
            }
        }
    }
@@ -1063,7 +1111,9 @@
        mgtMemberGetVo.setCreateTime(member.getCreateTime());
        mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
        mgtMemberGetVo.setGoodsType(member.getGoodsType());
        mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
        if(member.getBindingFlag()==1){
            mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
        }
        mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
        mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
        mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount());
@@ -1555,7 +1605,7 @@
            menPercent = new BigDecimal("100.00");
            womenPercent = new BigDecimal("0.00");
        }else{
            menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP);
            menPercent = manTotalBig.divide(personTotalBig,0,BigDecimal.ROUND_HALF_UP);
            womenPercent = bigTen.subtract(menPercent);
        }
        memberFixedTotalVo.setManPercent(menPercent);
@@ -1722,6 +1772,7 @@
        Long userId = mgtFrozenMemberDto.getId();
        Member member = this.getByUserId(userId);
        member.setFrozenFlag(mgtFrozenMemberDto.getFrozenFlag());
        this.saveOrUpdate(member);
        sysUserService.frozenUser(mgtFrozenMemberDto);
    }
@@ -1895,4 +1946,19 @@
    public Integer getAreaNewMember(List<Long> shopIdList){
        return memberMapper.getAreaNewMember(shopIdList);
    }
    /**
     * @description  更新会员绑定商户名
     * @author  jqs
     * @date    2023/7/26 17:08
     * @param mgtMemberShopNameDto
     * @return  void
     */
    @Override
    public void updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto){
        LambdaUpdateWrapper<Member> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(Member::getRelationShopId,mgtMemberShopNameDto.getShopId());
        updateWrapper.set(Member::getRelationShopName,mgtMemberShopNameDto.getShopName());
        this.update(updateWrapper);
    }
}