bug
jiangqs
2023-08-31 dbff53150cdc807faa56c0d1a947d24b69f372b9
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -20,6 +20,7 @@
import com.ruoyi.member.domain.pojo.member.IntegralRecord;
import com.ruoyi.member.domain.pojo.member.MemberArchive;
import com.ruoyi.member.domain.pojo.member.MemberTotal;
import com.ruoyi.member.domain.vo.MerMemberTotalVo;
import com.ruoyi.member.domain.vo.*;
import com.ruoyi.member.mapper.member.MemberMapper;
import com.ruoyi.member.service.member.IntegralRecordService;
@@ -476,16 +477,16 @@
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        // 设置MerMemberInfoVo对象的属性值
        merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount());
        merMemberInfoVo.setUserNumber(memberTotal.getTotalPayCount());
        merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney());
        // 创建MerBaseDto对象
        MerBaseDto merBaseDto = new MerBaseDto();
        // 设置MerBaseDto对象的属性值
        merBaseDto.setShopId(merBaseGetDto.getShopId());
        merBaseDto.setUserId(userId);
        // 获取未支付订单金额
        BigDecimal unpaidMoney = remoteOrderService.getMemberUnpaidOrder(merBaseDto).getData();
        merMemberInfoVo.setUnpaidMoney(unpaidMoney);
        MerMemberSimpleTotalVo memberSimpleTotalVo = remoteOrderService.getMerMemberSimpleTotalVo(merBaseDto).getData();
        merMemberInfoVo.setUserNumber(memberSimpleTotalVo.getUserNumber());
        merMemberInfoVo.setPayMoney(memberSimpleTotalVo.getPayMoney());
        merMemberInfoVo.setUnpaidMoney(memberSimpleTotalVo.getUnpaidMoney());
        // 获取最近的会员任务
        MemberTaskSimpleVo memberTaskSimpleVo = remoteShopService.getLastMemberTask(userId).getData();
        if (memberTaskSimpleVo != null) {
@@ -494,7 +495,7 @@
        }
        // 设置MerMemberInfoVo对象的属性值
        merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime());
        merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime());
        merMemberInfoVo.setLastPayTime(memberTotal.getLastConsumeTime());
        // 返回MerMemberInfoVo对象
        return merMemberInfoVo;
    }
@@ -527,6 +528,7 @@
        member.setBindingFlag(appMemberBindingDto.getBindingFlag());
        member.setRelationShopId(appMemberBindingDto.getShopId());
        member.setRelationShopName(appMemberBindingDto.getShopName());
        member.setBindingType(appMemberBindingDto.getBindingType());
        this.saveOrUpdate(member);
    }
@@ -659,6 +661,7 @@
            member.setMiniOpenid(null);
            member.setBindingFlag(1);
            member.setBindingTime(new Date());
            member.setBindingType(6);
            // Get shop information and set it to the member
            Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData();
            member.setRelationShopName(shop.getShopName());
@@ -866,6 +869,7 @@
        memberTotal.setShopSuggestFlag(0);
        memberTotal.setSignFlag(0);
        memberTotal.setBuyFlag(0);
        memberTotal.setTotalConsumeCount(0);
        memberTotalService.saveOrUpdate(memberTotal);
    }
@@ -971,6 +975,7 @@
                member.setRelationShopId(shop.getShopId());
                member.setRelationShopName(shop.getShopName());
                member.setBindingFlag(1);
                member.setBindingType(7);
                member.setBindingTime(new Date());
                member.setUpdateTime(new Date());
                member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
@@ -1239,6 +1244,9 @@
        BigDecimal bigTen = new BigDecimal("100.00");
        BigDecimal menPercent = new BigDecimal("100.00");
        BigDecimal womenPercent = new BigDecimal("100.00");
        if(personTotal==0){
            personTotalBig = bigTen;
        }
        if(manTotal==0&&womenTotal==0){
            menPercent = new BigDecimal("50.00");
            womenPercent = new BigDecimal("50.00");
@@ -1249,7 +1257,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,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
            womenPercent = bigTen.subtract(menPercent);
        }
        mgtTotalMemberTotalVo.setManPercent(menPercent);
@@ -1258,6 +1266,18 @@
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        BigDecimal[] agePercentValue = new BigDecimal[5];
        Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
        BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
        BigDecimal hundredBig = new BigDecimal("100");
        if(totalPerson==0){
            totalPersonBig = hundredBig;
        }
        agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        // 设置年龄段数组和不同年龄段的会员数数组
        mgtTotalMemberTotalVo.setAgeKey(ageKey);
        mgtTotalMemberTotalVo.setAgeValue(ageValue);
@@ -1304,7 +1324,7 @@
        //获取会员消费排名
        List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            memberPayList = listRemoveNull(memberPayList);
            //memberPayList = listRemoveNull(memberPayList);
            mgtTotalMemberTotalVo.setMemberPayList(memberPayList);
        }
        //获取来源渠道排名
@@ -1348,31 +1368,67 @@
            mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode());
            mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode());
            MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
            List<Long> list = new ArrayList<>();
            if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) {
                List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
                list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
                        .map(Long::valueOf)
                        .collect(Collectors.toList());
                mgtBasePlatformDto.setShopIdList(list);
            }
            mgtBasePlatformDto.setShopIdList(list);
        }
        //获取基础统计
        MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
        if (mgtAgeTotalVo != null) {
            plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal());
            plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
        } else {
            plTotalMemberTotalVo.setManTotal(0);
            plTotalMemberTotalVo.setWomenTotal(0);
            Integer manTotal = mgtAgeTotalVo.getManTotal();
            Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
            Integer personTotal = manTotal + womenTotal;
            BigDecimal manTotalBig = new BigDecimal(manTotal);
            BigDecimal personTotalBig = new BigDecimal(personTotal);
            BigDecimal bigTen = new BigDecimal("100.00");
            BigDecimal menPercent = new BigDecimal("100.00");
            BigDecimal womenPercent = new BigDecimal("100.00");
            if(personTotal==0){
                personTotalBig = bigTen;
            }
            if(manTotal==0&&womenTotal==0){
                menPercent = new BigDecimal("50.00");
                womenPercent = new BigDecimal("50.00");
            }else if(manTotal==0&&womenTotal>0){
                menPercent = new BigDecimal("0.00");
                womenPercent = new BigDecimal("100.00");
            }else if(manTotal>0&&womenTotal==0){
                menPercent = new BigDecimal("100.00");
                womenPercent = new BigDecimal("0.00");
            }else{
                menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
                womenPercent = bigTen.subtract(menPercent);
            }
            plTotalMemberTotalVo.setManTotal(manTotal);
            plTotalMemberTotalVo.setWomenTotal(womenTotal);
            plTotalMemberTotalVo.setManPercent(menPercent);
            plTotalMemberTotalVo.setWomenPercent(womenPercent);
        }
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        BigDecimal[] agePercentValue = new BigDecimal[5];
        Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
        BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
        BigDecimal hundredBig = new BigDecimal("100");
        if(totalPerson==0){
            totalPersonBig = hundredBig;
        }
        agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        // 设置年龄段数组和不同年龄段的会员数数组
        plTotalMemberTotalVo.setAgeKey(ageKey);
        plTotalMemberTotalVo.setAgeValue(ageValue);
        plTotalMemberTotalVo.setAgePercent(agePercentValue);
        // 获取不同调理类型的会员数
        List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto);
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
@@ -1489,6 +1545,18 @@
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        BigDecimal[] agePercentValue = new BigDecimal[5];
        Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
        BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
        BigDecimal hundredBig = new BigDecimal("100");
        if(totalPerson==0){
            totalPersonBig = hundredBig;
        }
        agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        // 设置年龄段数组和不同年龄段的会员数数组
        mgtShopTotalMemberVo.setAgeKey(ageKey);
        mgtShopTotalMemberVo.setAgeValue(ageValue);
@@ -1573,6 +1641,11 @@
        if (memberTotalChangeDto.getGoodsOrderChange() != null) {
            memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder() + memberTotalChangeDto.getGoodsOrderChange());
        }
        //消费记录
        if(memberTotalChangeDto.getConsumeTime()!=null){
            memberTotal.setTotalConsumeCount(memberTotal.getTotalConsumeCount()+1);
            memberTotal.setLastConsumeTime(memberTotalChangeDto.getConsumeTime());
        }
        memberTotalService.saveOrUpdate(memberTotal);
    }
@@ -1626,6 +1699,9 @@
        BigDecimal bigTen = new BigDecimal("100.00");
        BigDecimal menPercent = new BigDecimal("100.00");
        BigDecimal womenPercent = new BigDecimal("100.00");
        if(personTotal==0){
            personTotalBig = bigTen;
        }
        if(manTotal==0&&womenTotal==0){
            menPercent = new BigDecimal("50.00");
            womenPercent = new BigDecimal("50.00");
@@ -1636,7 +1712,7 @@
            menPercent = new BigDecimal("100.00");
            womenPercent = new BigDecimal("0.00");
        }else{
            menPercent = manTotalBig.divide(personTotalBig,0,BigDecimal.ROUND_HALF_UP);
            menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
            womenPercent = bigTen.subtract(menPercent);
        }
        memberFixedTotalVo.setManPercent(menPercent);
@@ -1645,9 +1721,22 @@
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        BigDecimal[] agePercentValue = new BigDecimal[5];
        Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
        BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
        BigDecimal hundredBig = new BigDecimal("100");
        if(totalPerson==0){
            totalPersonBig = hundredBig;
        }
        agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
        // 设置年龄段数组和不同年龄段的会员数数组
        memberFixedTotalVo.setAgeKey(ageKey);
        memberFixedTotalVo.setAgeValue(ageValue);
        memberFixedTotalVo.setAgePercentValue(agePercentValue);
        // 获取不同护理类型的会员数
        List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getMerMemberTotalNurse(merTotalDto);
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
@@ -1740,11 +1829,13 @@
        }
        MerMemberRecommendTotalVo memberRecommendTotalVo = new MerMemberRecommendTotalVo();
        //获取会员推荐排名
        List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto);
        /*List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto);
        if (recommendList != null && recommendList.size() > 0) {
            recommendList = listRemoveNull(recommendList);
            memberRecommendTotalVo.setRecommendList(recommendList);
        }
        }*/
        List<MgtMapIntTotalVo> recommendList = new ArrayList<>();
        memberRecommendTotalVo.setRecommendList(recommendList);
        return memberRecommendTotalVo;
    }
@@ -1790,7 +1881,20 @@
        orderAgeUserVoList.add(merOrderAgeUserVo);
        return orderAgeUserVoList;
    }
    /**
     * @description  通过年龄层获取用户id列表
     * @author  jqs
     * @date    2023/8/23 18:59
     * @param ageType
     * @return  List<Long>
     */
    @Override
    public List<Long> listUserIdByAgeType(Integer ageType){
        MerTotalDto merTotalDto = new MerTotalDto();
        merTotalDto.setAgeType(ageType);
        List<Long> userIdList = memberMapper.listOrderAgeUser(merTotalDto);
        return userIdList;
    }
    /**
     * @description
     * @author  jqs