xiaoyong931011
2022-09-24 f0bcb5fa2f5d081b0691e24533e415dab102a24b
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -1,45 +1,43 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.ShareCodeUtil;
import cc.mrbird.febs.common.utils.SpringContextHolder;
import cc.mrbird.febs.mall.conversion.MallLeaderAchieveConversion;
import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion;
import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper;
import cc.mrbird.febs.mall.service.IAdminMallOrderService;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
import cc.mrbird.febs.mall.vo.ApiLeaderInfoVo;
import cc.mrbird.febs.mall.vo.ApiLeaderListVo;
import cc.mrbird.febs.mall.vo.ApiMallleaderStateVo;
import cc.mrbird.febs.mall.vo.OrderListVo;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.pay.model.OrderStateDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.WechatConfigure;
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.math.BigDecimal;
import java.util.*;
@Slf4j
@Service
@@ -53,6 +51,20 @@
    private final IXcxPayService iXcxPayService;
    private final SpringContextHolder springContextHolder;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final MallOrderItemMapper mallOrderItemMapper;
    private final MallRefundMapper mallRefundMapper;
    @Autowired
    private WeixinServiceUtil weixinServiceUtil;
    private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final IApiMallMemberWalletService memberWalletService;
    private final MallLeaderAchieveMapper mallLeaderAchieveMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final MallGoodsMapper mallGoodsMapper;
    private final MallGoodsSkuMapper mallGoodsSkuMapper;
    private final MallElectronicFenceMapper mallElectronicFenceMapper;
    private final IMallElectronicFenceServiceImpl iMallElectronicFenceService;
    private final MallLeaderDefaultMapper mallLeaderDefaultMapper;
    @Override
    @Transactional
@@ -71,15 +83,53 @@
        mallTeamLeader.setMemberId(memberId);
        mallTeamLeader.setState(MallTeamLeader.STATE_ING);
        mallTeamLeader.setUniqueCode(member.getInviteId());
        //申请团长默认关闭返利,返利比例为0
        mallTeamLeader.setProfitSwitch(2);
        mallTeamLeader.setBonusPercent("0");
        this.baseMapper.insert(mallTeamLeader);
        return new FebsResponse().success().message("申请成功");
    }
    @Override
    public List<ApiLeaderListVo> findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
        Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize());
        IPage<MallTeamLeader> mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto);
        return MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords());
    public FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
        //根据当前位置的经纬度查询在所属配送区域内的团长
        List<MallElectronicFence> mallElectronicFences = mallElectronicFenceMapper.selectAllOnlineLeader();
        List<ApiLeaderListVo> apiLeaderListVos = new ArrayList<>();
        if(CollUtil.isEmpty(mallElectronicFences)){
            return new FebsResponse().success().data(apiLeaderListVos);
        }
        StringBuffer fenceIdStringBuffer = new StringBuffer();
        for(MallElectronicFence mallElectronicFence : mallElectronicFences){
            fenceIdStringBuffer.append(mallElectronicFence.getGid()).append(",");
        }
        String fenceIdStr = fenceIdStringBuffer.substring(0, fenceIdStringBuffer.length() - 1);
        //{"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"}
        String resultsStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFences.get(0).getGKey(),
                mallElectronicFences.get(0).getServiceId(),
                apiLeaderListDto.getLongitude() + "," + apiLeaderListDto.getLatitude(),
                fenceIdStr);
        if("fail".equals(resultsStr)){
            return new FebsResponse().success().data(apiLeaderListVos);
        }
        JSONArray objects = JSONUtil.parseArray(resultsStr);
        for(Object obj : objects){
            //{"gfid":800899,"gfname":"87053658_fence","in":0}
            JSONObject jsonObject = JSONUtil.parseObj(obj);
            String gfid = jsonObject.get("gfid").toString();
            String in = jsonObject.get("in").toString();
            String gfname = jsonObject.get("gfname").toString();
            //指定坐标是否在围栏中
            //1:在,
            //0:不在;
            if("1".equals(in)){
                MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectByFenceIdAndFenceNameAndLonAndLat(apiLeaderListDto.getLongitude(), apiLeaderListDto.getLatitude(),gfid,gfname);
                ApiLeaderListVo apiLeaderListVo = MallTeamLeaderConversion.INSTANCE.entityToApiVo(mallTeamLeader);
                apiLeaderListVos.add(apiLeaderListVo);
            }
        }
        return new FebsResponse().success().data(apiLeaderListVos);
    }
    @Override
@@ -105,6 +155,7 @@
    @Override
    public FebsResponse getApiLeaderInfoVoById(Long id) {
        MallMember member = LoginUserUtil.getLoginUser();
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
        apiLeaderInfoVo.setId(mallTeamLeader.getId());
@@ -117,6 +168,19 @@
        apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship());
        apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress());
        apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea());
        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
        if(ObjectUtil.isNotEmpty(mallElectronicFence)){
            String longLatStr = mallElectronicFence.getLonglatiarr();
            apiLeaderInfoVo.setLonglatiarr(longLatStr);
        }
        MallLeaderDefault mallLeaderDefault1 = mallLeaderDefaultMapper.selectByMemberId(member.getId());
        if(ObjectUtil.isNotEmpty(mallLeaderDefault1)){
            mallLeaderDefaultMapper.deleteById(mallLeaderDefaultMapper.selectByMemberId(member.getId()).getId());
        }
        MallLeaderDefault mallLeaderDefault = new MallLeaderDefault();
        mallLeaderDefault.setMemberId(member.getId());
        mallLeaderDefault.setUniqueCode(mallTeamLeader.getUniqueCode());
        mallLeaderDefaultMapper.insert(mallLeaderDefault);
        return new FebsResponse().success().data(apiLeaderInfoVo);
    }
@@ -125,7 +189,17 @@
        MallMember member = LoginUserUtil.getLoginUser();
        IPage<MallOrderInfo> page = new Page<>(apiLeaderOrderListDto.getPageNum(), apiLeaderOrderListDto.getPageSize());
        apiLeaderOrderListDto.setMemberId(member.getId());
        IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectApiLeaderOrderListInPage(page, apiLeaderOrderListDto);
//        IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectApiLeaderOrderListInPage(page, apiLeaderOrderListDto);
        IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectNewApiLeaderOrderListInPage(page, apiLeaderOrderListDto);
        if(CollUtil.isNotEmpty(mallOrderInfos.getRecords())){
            for(MallOrderInfo mallOrderInfo : mallOrderInfos.getRecords()){
                Long orderInfoId = mallOrderInfo.getId();
                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId);
                if(CollUtil.isNotEmpty(mallOrderItemList)){
                    mallOrderInfo.setItems(mallOrderItemList);
                }
            }
        }
        return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords());
    }
@@ -154,17 +228,17 @@
            mallOrderInfoMapper.updateById(mallOrderInfo);
            OrderStateDto orderStateDto = new OrderStateDto();
            orderStateDto.setOrderNo(mallOrderInfo.getOrderNo());
            String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId());
            orderStateDto.setGoodsName(StrUtil.sub(productNames,0,10)+"...");
            orderStateDto.setOrderState("已送达");
            orderStateDto.setTakeCode(mallOrderInfo.getTakeCode());
            orderStateDto.setGoodsName(StrUtil.sub(productNames,0,20)+"...");
            String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
            orderStateDto.setAddressArea(StrUtil.sub(mallTeamLeader.getAddressArea(),0,10)+"...");
            orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
            orderStateDto.setDetailAddress(StrUtil.sub(mallTeamLeader.getDetailAddress(),0,20)+"...");
            orderStateDto.setLeaderPhone(mallTeamLeader.getPhone());
            orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode());
            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getCode());
            orderStateDto.setTemplateId(dataDictionaryCustom.getValue());
            orderStateDto.setRemark("果蔬等生鲜,请尽快取货");
            iXcxPayService.pushOrderToAddress(orderStateDto);
        }
        return new FebsResponse().success().message("确认成功");
@@ -215,21 +289,27 @@
        Double latitude = apiLeaderTitleDto.getLatitude() == null ? 0 : apiLeaderTitleDto.getLatitude();
        ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
        MallTeamLeader mallTeamLeader = new MallTeamLeader();
        //特征码扫码
        if(StrUtil.isNotEmpty(uniqueCode)){
            mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode);
        //经纬度定位
        }else if(longitude != 0 && latitude != 0){
            mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
        //直接进入,默认选择列表第一个
        MallMember member = LoginUserUtil.getLoginUser();
        MallLeaderDefault mallLeaderDefault = mallLeaderDefaultMapper.selectByMemberId(member.getId());
        if(ObjectUtil.isNotEmpty(mallLeaderDefault)){
            mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(mallLeaderDefault.getUniqueCode());
        }else{
            List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
            if(CollUtil.isNotEmpty(mallTeamLeaderList)){
                mallTeamLeader = mallTeamLeaderList.get(0);
            //特征码扫码
            if(StrUtil.isNotEmpty(uniqueCode)){
                mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode);
                //经纬度定位
            }else if(longitude != 0 && latitude != 0){
                mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
                //直接进入,默认选择列表第一个
            }else{
                List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
                if(CollUtil.isNotEmpty(mallTeamLeaderList)){
                    mallTeamLeader = mallTeamLeaderList.get(0);
                }
            }
        }
        if(ObjectUtil.isNotEmpty(mallTeamLeader)){
            apiLeaderInfoVo.setId(mallTeamLeader.getId());
            apiLeaderInfoVo.setName(mallTeamLeader.getName());
@@ -241,6 +321,15 @@
            apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship());
            apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress());
            apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea());
            MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
            if(ObjectUtil.isNotEmpty(mallElectronicFence)){
                apiLeaderInfoVo.setLonglatiarr(mallElectronicFence.getLonglatiarr());
            }
            apiLeaderInfoVo.setLongitude(mallTeamLeader.getLongitude());
            apiLeaderInfoVo.setLatitude(mallTeamLeader.getLatitude());
        }
        if(ObjectUtil.isEmpty(apiLeaderInfoVo)){
            return new FebsResponse().success();
        }
        return new FebsResponse().success().data(apiLeaderInfoVo);
    }
@@ -250,7 +339,14 @@
        MallMember loginUser = LoginUserUtil.getLoginUser();
        Long memberId = loginUser.getId();
        MallMember mallMember = mallMemberMapper.selectById(memberId);
        if(ObjectUtil.isEmpty(mallMember)){
            return new FebsResponse().success();
        }
        log.info(mallMember.getInviteId());
        MallTeamLeader mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(mallMember.getInviteId());
        if(ObjectUtil.isEmpty(mallTeamLeader)){
            return new FebsResponse().success();
        }
        String uniqueCode = mallTeamLeader.getUniqueCode();
        List<Map<String, Integer>> maps = mallOrderInfoMapper.selectMemberOrderStatusCntByUniquecode(uniqueCode);
        Map<Integer, Integer> orderCnt = new HashMap<>();
@@ -264,4 +360,250 @@
        return new FebsResponse().success().data(result);
    }
    @Override
    @Transactional
    public FebsResponse leaderRefundOrder(ApiLeaderRefundOrderDto apiLeaderRefundOrderDto) {
        //获取退款订单信息
        Long orderId = apiLeaderRefundOrderDto.getOrderId();
        Long itemId = apiLeaderRefundOrderDto.getItemId();
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
        MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId);
        List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(itemId, orderId, 3);
        if(CollUtil.isEmpty(mallRefundEntities)){
            return new FebsResponse().fail().message("退款失败,请联系客服人员");
        }
        MallRefundEntity mallRefundEntity = mallRefundEntities.get(0);
        Integer agreeState = apiLeaderRefundOrderDto.getAgreeState() == null? 2:apiLeaderRefundOrderDto.getAgreeState();
        if(2 == agreeState){
            //更新订单详情
            mallOrderItem.setState(1);
            mallOrderItemMapper.updateById(mallOrderItem);
            //更新退款订单
            mallRefundEntity.setState(2);
            mallRefundEntity.setUpdatedTime(DateUtil.date());
            mallRefundMapper.updateById(mallRefundEntity);
            return new FebsResponse().success().message("操作成功");
        }else{//退款订单编号
            String orderNo = mallOrderInfo.getOrderNo();
            //退款退款编号
            String refundNo = mallRefundEntity.getRefundNo();
            //退款订单金额
            BigDecimal orderAmount = mallOrderInfo.getAmount();
            BigDecimal aa = new BigDecimal(100);
            int orderMoney = orderAmount.multiply(aa).intValue();
            //退款退款金额
            BigDecimal refundAmount = mallRefundEntity.getAmount();
            BigDecimal bb = new BigDecimal(100);
            int refundMoney = refundAmount.multiply(bb).intValue();
            //余额支付退款
            if(mallRefundEntity.getType() == 3){
                //更新订单详情
                mallOrderItem.setState(3);
                mallOrderItemMapper.updateById(mallOrderItem);
                //更新库存信息
                MallGoods mallGoods = mallGoodsMapper.selectById(mallOrderItem.getGoodsId());
                mallGoods.setStock(mallGoods.getStock() + mallOrderItem.getCnt());
                mallGoods.setVolume(mallGoods.getVolume() - mallOrderItem.getCnt());
                mallGoodsMapper.updateById(mallGoods);
                MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(mallOrderItem.getSkuId());
                mallGoodsSku.setStock(mallGoodsSku.getStock() + mallOrderItem.getCnt());
                mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - mallOrderItem.getCnt());
                mallGoodsSkuMapper.updateById(mallGoodsSku);
                //更新退款订单
                mallRefundEntity.setState(1);
                mallRefundEntity.setUpdatedTime(DateUtil.date());
                mallRefundMapper.updateById(mallRefundEntity);
                mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
                if(CollUtil.isEmpty(mallOrderItemList)){
                    MallOrderInfo mallOrderRefund = mallOrderInfoMapper.selectById(orderId);
                    mallOrderRefund.setStatus(6);
                    mallOrderInfoMapper.updateById(mallOrderRefund);
                }
                memberWalletService.add(refundAmount, mallOrderInfo.getMemberId(), "balance");
                return new FebsResponse().success().message("退款成功");
            }
            Boolean flag = false;
            Boolean debug = xcxProperties.getDebug();
            if (debug) {
                boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
                flag = b;
            } else {
                log.info("开始调用退款接口。。。退款编号为{}", refundNo);
                boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
                flag = b;
            }
            if(flag){
                //更新订单详情
                mallOrderItem.setState(3);
                mallOrderItemMapper.updateById(mallOrderItem);
                //更新库存信息
                MallGoods mallGoods = mallGoodsMapper.selectById(mallOrderItem.getGoodsId());
                mallGoods.setStock(mallGoods.getStock() + mallOrderItem.getCnt());
                mallGoods.setVolume(mallGoods.getVolume() - mallOrderItem.getCnt());
                mallGoodsMapper.updateById(mallGoods);
                MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(mallOrderItem.getSkuId());
                mallGoodsSku.setStock(mallGoodsSku.getStock() + mallOrderItem.getCnt());
                mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - mallOrderItem.getCnt());
                mallGoodsSkuMapper.updateById(mallGoodsSku);
                //更新退款订单
                mallRefundEntity.setState(1);
                mallRefundEntity.setUpdatedTime(DateUtil.date());
                mallRefundMapper.updateById(mallRefundEntity);
                mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
                if(CollUtil.isEmpty(mallOrderItemList)){
                    MallOrderInfo mallOrderRefund = mallOrderInfoMapper.selectById(orderId);
                    mallOrderRefund.setStatus(6);
                    mallOrderInfoMapper.updateById(mallOrderRefund);
                }
            }else{
                //更新订单详情
                mallOrderItem.setState(1);
                mallOrderItemMapper.updateById(mallOrderItem);
                mallRefundEntity.setState(2);
                mallRefundMapper.updateById(mallRefundEntity);
                return new FebsResponse().fail().message("退款失败,请联系客服人员");
            }
            return new FebsResponse().success().message("退款成功");
        }
    }
    @Override
    public FebsResponse refundOrderInfo(ApiRefundOrderInfoDto apiRefundOrderInfoDto) {
        Long orderId = apiRefundOrderInfoDto.getOrderId();
        Long itemId = apiRefundOrderInfoDto.getItemId();
        List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(itemId, orderId, null);
        if(CollUtil.isEmpty(mallRefundEntities)){
            return new FebsResponse().fail().message("退款信息不存在");
        }
        return new FebsResponse().success().data(mallRefundEntities.get(0));
    }
    @Override
    public FebsResponse leaderProfit() {
        MallMember loginUser = LoginUserUtil.getLoginUser();
        ApiLeaderProfitVo apiLeaderProfitVo = new ApiLeaderProfitVo();
        BigDecimal totalProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),null,null,null);
        apiLeaderProfitVo.setTotalProfit(totalProfit);
        BigDecimal todayProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),
                MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),
                null,DateUtil.date(),
                null);
        apiLeaderProfitVo.setTodayProfit(todayProfit);
        BigDecimal monthProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),
                MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),
                null,null,
                DateUtil.date());
        apiLeaderProfitVo.setMonthProfit(monthProfit);
        String inviteId = loginUser.getInviteId();
        MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(inviteId);
        Integer profitSwitch = mallTeamLeader.getProfitSwitch() == null ? 2:mallTeamLeader.getProfitSwitch();
        if(2 == profitSwitch){
            apiLeaderProfitVo.setWaitProfit(BigDecimal.ZERO);
        }else{
            BigDecimal waitProfit = mallLeaderAchieveMapper.selectProfitByStateAndDateTimeAndUniqueCode(1,null,loginUser.getInviteId()).setScale(2,BigDecimal.ROUND_DOWN);
            apiLeaderProfitVo.setWaitProfit(waitProfit);
        }
        return new FebsResponse().success().data(apiLeaderProfitVo);
    }
    @Override
    public List<ApiOrderProfitVo> findLeaderProfitListInPage(ApiOrderProfitDto apiOrderProfitDto) {
        MallMember member = LoginUserUtil.getLoginUser();
        IPage<MallLeaderAchieve> page = new Page<>(apiOrderProfitDto.getPageNum(), apiOrderProfitDto.getPageSize());
        apiOrderProfitDto.setInvitedId(member.getInviteId());
        IPage<MallLeaderAchieve> mallLeaderAchieves = mallLeaderAchieveMapper.selectApiLeaderProfitListInPage(page, apiOrderProfitDto);
        return MallLeaderAchieveConversion.INSTANCE.entitysToVos(mallLeaderAchieves.getRecords());
    }
    @Override
    public FebsResponse findSomeLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
        Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize());
        IPage<MallTeamLeader> mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto);
        List<ApiLeaderListVo> apiLeaderListVos = new ArrayList<>();
        DataDictionaryCustom rangeSwitchDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode());
        if (ObjectUtil.isNotNull(rangeSwitchDic)) {
            int rangeSwitch = Integer.parseInt(rangeSwitchDic.getValue());
            if(1 == rangeSwitch){
                DataDictionaryCustom rangeSizeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode());
                double rangeSize = Double.parseDouble(rangeSizeDic.getValue())*1000;
                for(MallTeamLeader mallTeamLeader : mallTeamLeaderIPage.getRecords()){
                    Double distance = mallTeamLeader.getDistance();
                    if(distance <= rangeSize){
                        ApiLeaderListVo apiLeaderListVo = MallTeamLeaderConversion.INSTANCE.entityToApiVo(mallTeamLeader);
                        apiLeaderListVos.add(apiLeaderListVo);
                    }
                }
            }else{
                apiLeaderListVos = MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords());
            }
        }
        return new FebsResponse().success().data(apiLeaderListVos);
    }
    @Override
    public FebsResponse noLoginLeaderTitle(ApiLeaderTitleDto apiLeaderTitleDto) {
        String uniqueCode = apiLeaderTitleDto.getUniqueCode();
        Double longitude = apiLeaderTitleDto.getLongitude() == null ? 0 : apiLeaderTitleDto.getLongitude();
        Double latitude = apiLeaderTitleDto.getLatitude() == null ? 0 : apiLeaderTitleDto.getLatitude();
        ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
        MallTeamLeader mallTeamLeader = new MallTeamLeader();
        //特征码扫码
        if(StrUtil.isNotEmpty(uniqueCode)){
            mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode);
            //经纬度定位
        }else if(longitude != 0 && latitude != 0){
            mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
            //直接进入,默认选择列表第一个
        }else{
            List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
            if(CollUtil.isNotEmpty(mallTeamLeaderList)){
                mallTeamLeader = mallTeamLeaderList.get(0);
            }
        }
        if(ObjectUtil.isNotEmpty(mallTeamLeader)){
            apiLeaderInfoVo.setId(mallTeamLeader.getId());
            apiLeaderInfoVo.setName(mallTeamLeader.getName());
            apiLeaderInfoVo.setPhone(mallTeamLeader.getPhone());
            apiLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic());
            apiLeaderInfoVo.setUniqueCode(mallTeamLeader.getUniqueCode());
            apiLeaderInfoVo.setProvince(mallTeamLeader.getProvince());
            apiLeaderInfoVo.setCity(mallTeamLeader.getCity());
            apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship());
            apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress());
            apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea());
            MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
            if(ObjectUtil.isNotEmpty(mallElectronicFence)){
                apiLeaderInfoVo.setLonglatiarr(mallElectronicFence.getLonglatiarr());
            }
            apiLeaderInfoVo.setLongitude(mallTeamLeader.getLongitude());
            apiLeaderInfoVo.setLatitude(mallTeamLeader.getLatitude());
        }
        if(ObjectUtil.isEmpty(apiLeaderInfoVo)){
            return new FebsResponse().success();
        }
        return new FebsResponse().success().data(apiLeaderInfoVo);
    }
}