Pu Zhibing
8 天以前 ea1a62ba6484d6c6cb1ca67dcea938a95ba18fc6
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1,5 +1,4 @@
package com.ruoyi.member.service.impl.member;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSONObject;
@@ -8,6 +7,8 @@
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.google.common.collect.Lists;
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;
@@ -27,6 +28,7 @@
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.member.service.member.MemberTotalService;
import com.ruoyi.member.util.HttpUtils;
import com.ruoyi.member.util.MsgUtils;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.constant.SecurityConstant;
import com.ruoyi.system.api.domain.dto.*;
@@ -111,6 +113,12 @@
    @Resource
    private RemoteOrderService remoteOrderService;
    @Resource
    private RemoteUserService remoteUserService;
    /**
     * @description: TODO
@@ -290,7 +298,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");
@@ -319,6 +326,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();
@@ -328,9 +336,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;
@@ -390,8 +400,8 @@
                for(Activeness activeness : activenessList){
                    if(activeness.getActivenessName().equals(merMemberPageDto.getMemberActiveness())){
                        Date nowDay = DateUtils.getNowDate();
                        String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                        String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                        String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
                        String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
                        merMemberPageDto.setActStartDate(actStartDate);
                        merMemberPageDto.setActEndDate(actEndDate);
                        break;
@@ -421,13 +431,15 @@
                MgtActivenessJudgeVo mgtActivenessJudgeVo;
                for (Activeness activeness : activenessList) {
                    mgtActivenessJudgeVo = new MgtActivenessJudgeVo();
                    mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay()));
                    mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1));
                    mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), -activeness.getEndDay()));
                    mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), -activeness.getStartDay()));
                    mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName());
                    mgtActivenessJudgeVoList.add(mgtActivenessJudgeVo);
                }
                //活跃度赋值
                Date lastPayTime;
                for (MerMemberPageVo mgtMemberPageVo : merMemberPageVoList) {
                    //实际是最后服务时间
                    lastPayTime = mgtMemberPageVo.getLastPayTime();
                    StringJoiner sj = new StringJoiner(",");
                    if (lastPayTime != null) {
@@ -473,16 +485,16 @@
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        // 设置MerMemberInfoVo对象的属性值
        merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount());
        merMemberInfoVo.setUserNumber(memberTotal.getUsedServiceCount());
        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) {
@@ -491,7 +503,7 @@
        }
        // 设置MerMemberInfoVo对象的属性值
        merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime());
        merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime());
        merMemberInfoVo.setLastPayTime(memberTotal.getLastConsumeTime());
        // 返回MerMemberInfoVo对象
        return merMemberInfoVo;
    }
@@ -524,6 +536,7 @@
        member.setBindingFlag(appMemberBindingDto.getBindingFlag());
        member.setRelationShopId(appMemberBindingDto.getShopId());
        member.setRelationShopName(appMemberBindingDto.getShopName());
        member.setBindingType(appMemberBindingDto.getBindingType());
        this.saveOrUpdate(member);
    }
@@ -617,18 +630,26 @@
        String phoneNumber = merMemberAddDto.getPhonenumber();
        Member oldMember = this.getByMobile(phoneNumber);
        // Check if the member already exists
        if (oldMember != null) {
        if (oldMember != null && oldMember.getBindingFlag() == 1) {
            throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
        }
        if (oldMember != null && oldMember.getBindingFlag() == 0) {
            oldMember.setRelationShopId(merMemberAddDto.getShopId());
            oldMember.setBindingFlag(1);
            oldMember.setBindingType(8);
            this.updateById(oldMember);
            return oldMember.getUserId();
        }
        // Get the sysUser by mobile number
        SysUser sysUser = sysUserService.getSysUserByMobile(phoneNumber).getData();
        // If sysUser does not exist, create a new one
        if (sysUser == null) {
        if (sysUser == null || !sysUser.getUserType().equals("03")) {
            String memberId = IdUtils.simpleUUID();
            sysUser = new SysUser();
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName(merMemberAddDto.getRealName());
            sysUser.setPhonenumber(merMemberAddDto.getPhonenumber());
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            String password = "hongruitang";
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
@@ -645,6 +666,7 @@
            member.setNickName(merMemberAddDto.getRealName());
            member.setRealName(merMemberAddDto.getRealName());
            member.setGender(merMemberAddDto.getGender());
            member.setLevel(merMemberAddDto.getLevel());
            member.setMobile(phoneNumber);
            member.setReferrer(merMemberAddDto.getReferrer());
            member.setBirthday(merMemberAddDto.getBirthday());
@@ -654,11 +676,18 @@
            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());
            member.setCustomerSource(merMemberAddDto.getCustomerSource());
            member.setCreateTime(new Date());
            //调理问题
            List<String> memberNurse = merMemberAddDto.getMemberNurse();
            if(memberNurse!=null&&!memberNurse.isEmpty()){
                String memberNurseString = String.join(",", memberNurse);
                member.setMemberNurse(memberNurseString);
            }
            // Save the member and initialize member total
            this.saveOrUpdate(member);
            initMemberTotal(memberId);
@@ -676,6 +705,8 @@
                ).collect(Collectors.toList());
                memberArchiveService.saveBatch(memberArchiveList);
            }
        }else{
            throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
        }
        return sysUser.getUserId();
    }
@@ -853,6 +884,7 @@
        memberTotal.setShopSuggestFlag(0);
        memberTotal.setSignFlag(0);
        memberTotal.setBuyFlag(0);
        memberTotal.setTotalConsumeCount(0);
        memberTotalService.saveOrUpdate(memberTotal);
    }
@@ -877,6 +909,7 @@
     */
    @Override
    public List<MgtMemberPageVo> pageMgtMember(Page page, MgtMemberPageDto merMemberPageDto) {
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        Date nowDay = new Date();
        if (merMemberPageDto.getActivenessId() != null) {
@@ -885,8 +918,8 @@
                    .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())));
                        merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay())));
                        merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay())));
                    });
        }
        //处理标签为正则表达
@@ -906,8 +939,46 @@
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            merMemberPageDto.setStartBirthday(startBirthday.format(formatter));
        }
        // 获取当前登陆人的可视权限
        SysUser sysUser = SecurityUtils.getSysUser();
        // 店铺ids
        List<Long> scope = new ArrayList<>();
        if (sysUser!=null){
            String dataScope = sysUser.getDataScope();
            if (!sysUser.getUserName().equals("admin")){
                if (org.springframework.util.StringUtils.hasLength(dataScope)){
                    switch (dataScope){
                        case "3":
                            // 本部门数据 查询当前登陆人属于哪个部门 查询这个部门下所有员工关联的所有店铺
                            // 根据用户id 查询同部门下所有员工id
                            List<Long> userIds = sysUserService.getUserIdsByDept(sysUser.getUserId()).getData();
                            // 获取店铺ids
                            List<Long> data = shopService.getShopIdsByUserIds(userIds).getData();
                            if (data.size()==0){
                                scope.add(0L);
                            }else{
                                scope.addAll(data);
                            }
                            break;
                        case "5":
                            // 仅个人数据 查询当前登陆人关联店铺下的用户
                            List<Long> longs = new ArrayList<>();
                            longs.add(sysUser.getUserId());
                            // 获取店铺ids
                            List<Long> data1 = shopService.getShopIdsByUserIds(longs).getData();
                            if (data1.size()==0){
                                scope.add(0L);
                            }else{
                                scope.addAll(data1);
                            }
                            break;
                    }
                }
            }
        }
        //查询获取结果列表
        List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
        List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto,scope);
        //处理活跃度返回
        if (memberPageVoList != null && !memberPageVoList.isEmpty()) {
            if (activenessList != null && !activenessList.isEmpty()) {
@@ -916,13 +987,22 @@
                MgtActivenessJudgeVo mgtActivenessJudgeVo;
                for (Activeness activeness : activenessList) {
                    mgtActivenessJudgeVo = new MgtActivenessJudgeVo();
                    mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay()));
                    mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1));
                    mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), -activeness.getEndDay()));
                    mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), -activeness.getStartDay()));
                    mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName());
                }
                //活跃度赋值
                Date lastPayTime;
                for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) {
                    if(null != mgtMemberPageVo.getRelationShopId() && 1 == mgtMemberPageVo.getBindingFlag()){
                        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) {
@@ -958,6 +1038,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());
@@ -1117,7 +1198,13 @@
        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());
@@ -1153,6 +1240,13 @@
        //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
        return memberMapper.listIdBySendType(sendType,shopId);
    }
    public List<Long> listIdBySendType2(Long shopId) {
        //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
        return memberMapper.listIdBySendType2(shopId);
    }
    /**
     * @param userIds
@@ -1194,10 +1288,10 @@
     * @date 2023/6/18 16:45
     */
    @Override
    public MgtBulletinBoardVo boardMemberTotal() {
    public MgtBulletinBoardVo boardMemberTotal(List<Long> shopIds) {
        MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo();
        mgtBulletinBoardVo.setMemberTotal(memberMapper.memberTotal());
        mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday());
        mgtBulletinBoardVo.setMemberTotal(memberMapper.memberTotal(shopIds));
        mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday(shopIds));
        return mgtBulletinBoardVo;
    }
@@ -1211,10 +1305,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();
@@ -1226,6 +1346,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");
@@ -1236,7 +1359,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);
@@ -1245,6 +1368,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);
@@ -1278,8 +1413,8 @@
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            for (int i = 0; i < activenessList.size(); i++) {
                activeness = activenessList.get(i);
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
                count = memberMapper.getTotalMemberTotalActiveness(shopId, actStartDate, actEndDate);
                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
@@ -1291,7 +1426,7 @@
        //获取会员消费排名
        List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            memberPayList = listRemoveNull(memberPayList);
            //memberPayList = listRemoveNull(memberPayList);
            mgtTotalMemberTotalVo.setMemberPayList(memberPayList);
        }
        //获取来源渠道排名
@@ -1327,39 +1462,109 @@
     */
    @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
        List<Long> list = new ArrayList<>();
        if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
            MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
            mgtShopIdByCodeDto.setShopProvinceCode(mgtBasePlatformDto.getShopProvinceCode());
            mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode());
            mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode());
            MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
            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);
            }else{
                return plTotalMemberTotalVo;
            }
        }
        //数据权限
        List<Long> userId = remoteUserService.getScopeOfAuthorityUserId();
        BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
        boardMemberTotalDto.setUserIds(userId);
        List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
        List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList());
        list.addAll(collect);
        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) {
            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) {
@@ -1391,8 +1596,8 @@
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            for (int i = 0; i < activenessList.size(); i++) {
                activeness = activenessList.get(i);
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
                count = memberMapper.getPlTotalMemberTotalActiveness(shopIdList, actStartDate, actEndDate);
                if (StringUtils.isNotBlank(activeness.getActivenessName())) {
                    MgtMapIntTotalVo = new MgtMapIntTotalVo();
@@ -1476,6 +1681,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);
@@ -1560,6 +1777,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);
    }
@@ -1597,11 +1819,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();
@@ -1613,6 +1830,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");
@@ -1623,7 +1843,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);
@@ -1632,13 +1852,29 @@
        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) {
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
        }else{
            nurseTotalVos = new ArrayList<>();
            memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        //获取不同等级的会员数
@@ -1646,17 +1882,26 @@
        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
            memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }else{
            memberLevelTotalVos = new ArrayList<>();
            memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto);
        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);
        }
        // 获取不同活跃度的会员数
@@ -1666,22 +1911,25 @@
            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++) {
                activeness = activenessList.get(i);
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
                merTotalDto.setStartDate(actStartDate);
                merTotalDto.setEndDate(actEndDate);
                count = memberMapper.getMerMemberTotalActiveness(merTotalDto);
                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;
    }
@@ -1727,11 +1975,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;
    }
@@ -1777,7 +2027,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
@@ -1980,4 +2243,56 @@
        updateWrapper.set(Member::getRelationShopName,mgtMemberShopNameDto.getShopName());
        this.update(updateWrapper);
    }
    /**
     * @description  发送生日祝福
     * @author  jqs
     * @date    2023/8/7 15:40
     * @param
     * @return  void
     */
    @Override
    public void sendBirthdayBless(){
        List<Member> mobileList = memberMapper.listTodayBirthday();
        if(mobileList!=null&&!mobileList.isEmpty()){
            log.info("生日祝福发送短信---"+mobileList.toString());
            for (Member member : mobileList) {
                try {
                    String msg = "{\"name\":\"" + (StringUtils.isEmpty(member.getRealName()) ? member.getNickName() : member.getRealName()) + "\"}";
                    MsgUtils.sendMsg(member.getMobile(), null, msg);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
    /**
     * 手动添加用户积分
     *
     * @param integral
     * @param userId
     * @return
     */
    @Override
    public R addIntegralRecord(Integer integral, Long userId, String orderId) {
        Member member = this.getByUserId(userId);
        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
        IntegralRecord integralRecord = new IntegralRecord();
        integralRecord.setDelFlag(0);
        integralRecord.setUserId(userId);
        integralRecord.setChangeType(6);
        integralRecord.setChangeIntegral(integral);
        integralRecord.setSurpIntegral(memberTotal.getUseableIntegral() + integral);
        integralRecord.setCreateTime(new Date());
        integralRecord.setOrderId(orderId);
        integralRecord.setChangeReason("抽奖活动获得");
        integralRecordService.save(integralRecord);
        memberTotal.setTotalIntegral(memberTotal.getTotalIntegral() + integral);
        memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + integral);
        memberTotal.setPlSuggestFlag(1);
        memberTotalService.saveOrUpdate(memberTotal);
        return R.ok();
    }
}