puzhibing
2023-10-31 32cafa15d3d4aa99a67102914a1b31e8f080c03f
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1,5 +1,5 @@
package com.ruoyi.member.service.impl.member;
import com.google.common.collect.Lists;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSONObject;
@@ -8,6 +8,7 @@
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.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
@@ -292,7 +293,6 @@
    }
    public static String getMobileByWX(String accessToken, String code) throws Exception {
        String method = "POST";
        Map<String, String> headers = new HashMap<>(16);
        headers.put("Content-Type", "application/json");
        headers.put("Accept", "application/json");
@@ -321,6 +321,7 @@
        appUserInfoVo.setNickName(member.getNickName());
        appUserInfoVo.setRealName(member.getRealName());
        appUserInfoVo.setPhonenumber(member.getMobile());
        //绑定会员显示绑定店铺
        if (member.getRelationShopId() != null && member.getBindingFlag() == 1) {
            appUserInfoVo.setRelationShopId(member.getRelationShopId());
            Shop shop = shopService.getShop(member.getRelationShopId()).getData();
@@ -330,9 +331,11 @@
        appUserInfoVo.setBirthday(member.getBirthday());
        appUserInfoVo.setGender(member.getGender());
        appUserInfoVo.setAvatar(member.getAvatar());
        //待支付待核销统计
        AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId).getData();
        appUserInfoVo.setNoPayCount(appOrderTotalVo.getNoPayCount());
        appUserInfoVo.setNoUseCount(appOrderTotalVo.getNoUseCount());
        //积分
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        appUserInfoVo.setIntegral(memberTotal.getUseableIntegral());
        return appUserInfoVo;
@@ -940,6 +943,15 @@
                //活跃度赋值
                Date lastPayTime;
                for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) {
                    if(null != mgtMemberPageVo.getRelationShopId()){
                        R<Shop> shop_r = remoteShopService.getShop(mgtMemberPageVo.getRelationShopId());
                        if(shop_r.getCode() == 200){
                            Shop data = shop_r.getData();
                            if(null != data){
                                mgtMemberPageVo.setRelationShopName(data.getShopName());
                            }
                        }
                    }
                    lastPayTime = mgtMemberPageVo.getLastPayTime();
                    StringJoiner sj = new StringJoiner(",");
                    if (lastPayTime != null) {
@@ -1135,7 +1147,14 @@
        mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
        mgtMemberGetVo.setGoodsType(member.getGoodsType());
        if(member.getBindingFlag()==1){
            mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
            R<Shop> shop = remoteShopService.getShop(member.getRelationShopId());
            if(shop.getCode() == 200){
                Shop data = shop.getData();
                if(null != data){
                    mgtMemberGetVo.setRelationShopName(data.getShopName());
                }
            }
        }
        mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
        mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
@@ -1229,10 +1248,36 @@
    @Override
    public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) {
        Date nowDay = DateUtils.getNowDate();
        MgtTotalMemberTotalVo mgtTotalMemberTotalVo = new MgtTotalMemberTotalVo();
        mgtTotalMemberTotalVo.setMemberTotal(0);
        mgtTotalMemberTotalVo.setOnlineTotal(0);
        mgtTotalMemberTotalVo.setOfflineTotal(0);
        mgtTotalMemberTotalVo.setIntroduceTotal(0);
        mgtTotalMemberTotalVo.setCycleTotal(0);
        mgtTotalMemberTotalVo.setExperienceTotal(0);
        mgtTotalMemberTotalVo.setServiceTotal(0);
        mgtTotalMemberTotalVo.setManTotal(0);
        mgtTotalMemberTotalVo.setManPercent(new BigDecimal("0"));
        mgtTotalMemberTotalVo.setWomenTotal(0);
        mgtTotalMemberTotalVo.setWomenPercent(new BigDecimal("0"));
        mgtTotalMemberTotalVo.setAgeKey(new String[0]);
        mgtTotalMemberTotalVo.setAgeValue(new Integer[0]);
        mgtTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList());
        mgtTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList());
        mgtTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList());
        mgtTotalMemberTotalVo.setActivenessList(Lists.newArrayList());
        mgtTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList());
        mgtTotalMemberTotalVo.setMemberPayList(Lists.newArrayList());
        // 获取店铺ID
        Long shopId = mgtBaseShopDto.getShopId();
        // 获取总会员数和不同年龄段的会员数
        MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
        MgtTotalMemberTotalVo totalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
        mgtTotalMemberTotalVo.setMemberTotal(totalMemberTotalVo.getMemberTotal());
        mgtTotalMemberTotalVo.setOnlineTotal(totalMemberTotalVo.getOnlineTotal());
        mgtTotalMemberTotalVo.setOfflineTotal(totalMemberTotalVo.getOfflineTotal());
        mgtTotalMemberTotalVo.setCycleTotal(totalMemberTotalVo.getCycleTotal());
        mgtTotalMemberTotalVo.setExperienceTotal(totalMemberTotalVo.getExperienceTotal());
        mgtTotalMemberTotalVo.setServiceTotal(totalMemberTotalVo.getServiceTotal());
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto);
        Integer manTotal = mgtAgeTotalVo.getManTotal();
        Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
@@ -1360,6 +1405,25 @@
     */
    @Override
    public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
        MgtPlTotalMemberTotalVo plTotalMemberTotalVo = new MgtPlTotalMemberTotalVo();
        plTotalMemberTotalVo.setMemberTotal(0);
        plTotalMemberTotalVo.setMemberYesterday(0);
        plTotalMemberTotalVo.setMemberSeven(0);
        plTotalMemberTotalVo.setManTotal(0);
        plTotalMemberTotalVo.setManPercent(new BigDecimal("0"));
        plTotalMemberTotalVo.setWomenTotal(0);
        plTotalMemberTotalVo.setWomenPercent(new BigDecimal("0"));
        plTotalMemberTotalVo.setAgeKey(new String[0]);
        plTotalMemberTotalVo.setAgeValue(new Integer[0]);
        plTotalMemberTotalVo.setAgePercent(new BigDecimal[0]);
        plTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList());
        plTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList());
        plTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList());
        plTotalMemberTotalVo.setActivenessList(Lists.newArrayList());
        plTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList());
        plTotalMemberTotalVo.setMemberPayList(Lists.newArrayList());
        plTotalMemberTotalVo.setMemberGoodsRankList(Lists.newArrayList());
        plTotalMemberTotalVo.setShopMemberRankList(Lists.newArrayList());
        Date nowDay = DateUtils.getNowDate();
        //如果区域代码不为null获取对应的商户id
        if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
@@ -1373,11 +1437,16 @@
                list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
                        .map(Long::valueOf)
                        .collect(Collectors.toList());
            }else{
                return plTotalMemberTotalVo;
            }
            mgtBasePlatformDto.setShopIdList(list);
        }
        //获取基础统计
        MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
        MgtPlTotalMemberTotalVo plTotalMemberTotalByDayVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
        plTotalMemberTotalVo.setMemberTotal(plTotalMemberTotalByDayVo.getMemberTotal());
        plTotalMemberTotalVo.setMemberYesterday(plTotalMemberTotalByDayVo.getMemberYesterday());
        plTotalMemberTotalVo.setMemberSeven(plTotalMemberTotalByDayVo.getMemberSeven());
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
        if (mgtAgeTotalVo != null) {
            Integer manTotal = mgtAgeTotalVo.getManTotal();
@@ -1683,11 +1752,6 @@
        }
        MerMemberFixedTotalVo memberFixedTotalVo = new MerMemberFixedTotalVo();
        Date nowDay = DateUtils.getNowDate();
        if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
            List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
            merTotalDto.setShopIdList(shopIdList);
            merTotalDto.setShopId(null);
        }
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto);
        Integer manTotal = mgtAgeTotalVo.getManTotal();
        Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
@@ -1742,11 +1806,17 @@
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
        }else{
            nurseTotalVos = new ArrayList<>();
            memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        //获取不同等级的会员数
        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto);
        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
            memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }else{
            memberLevelTotalVos = new ArrayList<>();
            memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }
        // 获取不同商品类型的会员数
@@ -1754,11 +1824,17 @@
        if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
            goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
            memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
        }else{
            goodsTypeTotalVos = new ArrayList<>();
            memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
        }
        //获取会员消费排名
        List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            memberPayList = listRemoveNull(memberPayList);
            memberFixedTotalVo.setMemberPayList(memberPayList);
        }else{
            memberPayList = new ArrayList<>();
            memberFixedTotalVo.setMemberPayList(memberPayList);
        }
        // 获取不同活跃度的会员数
@@ -1768,7 +1844,7 @@
            String actStartDate;
            String actEndDate;
            Integer count;
            List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>();
            List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>();
            MgtMapIntTotalVo MgtMapIntTotalVo;
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            for (int i = 0; i < activenessList.size(); i++) {
@@ -1781,9 +1857,12 @@
                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
                MgtMapIntTotalVo.setMapValue(count);
                MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
                mgtMapIntTotalVoList.add(MgtMapIntTotalVo);
            }
            memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList);
            memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList);
        }else{
            List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>();
            memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList);
        }
        return memberFixedTotalVo;
    }