package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; 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.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.*; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService; 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.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.math.BigDecimal; import java.util.*; @Slf4j @Service @RequiredArgsConstructor public class ApiMallTeamLeaderServiceImpl extends ServiceImpl implements IApiMallTeamLeaderService { private final MallOrderInfoMapper mallOrderInfoMapper; private final MallTeamLeaderMapper mallTeamLeaderMapper; private final MallMemberMapper mallMemberMapper; 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; @Override @Transactional public FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto) { MallMember member = LoginUserUtil.getLoginUser(); Long memberId = member.getId(); List mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING); if(CollUtil.isNotEmpty(mallTeamLeaders)){ return new FebsResponse().fail().message("正在申请中"); } List mallTeamLeaderCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL); if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){ return new FebsResponse().fail().message("当前用户无法申请"); } MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.dtoToEntity(apiApplayLeaderDto); 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 FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) { //根据当前位置的经纬度查询在所属配送区域内的团长 List mallElectronicFences = mallElectronicFenceMapper.selectAllOnlineLeader(); List 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 public FebsResponse leaderState() { MallMember member = LoginUserUtil.getLoginUser(); Long memberId = member.getId(); ApiMallleaderStateVo apiMallleaderStateVo = new ApiMallleaderStateVo(); List mallTeamLeadersIng = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING); List mallTeamLeadersNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO); List mallTeamLeadersYes = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_YES); List mallTeamLeadersCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL); if(CollUtil.isNotEmpty(mallTeamLeadersIng) ||CollUtil.isNotEmpty(mallTeamLeadersYes)){ apiMallleaderStateVo.setState(2); }else if(CollUtil.isNotEmpty(mallTeamLeadersNo)){ apiMallleaderStateVo.setState(1); }else if(CollUtil.isNotEmpty(mallTeamLeadersCancel)){ apiMallleaderStateVo.setState(2); }else{ apiMallleaderStateVo.setState(1); } return new FebsResponse().success().data(apiMallleaderStateVo); } @Override public FebsResponse getApiLeaderInfoVoById(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo(); 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()); String longLatStr = mallElectronicFence.getLonglatiarr(); apiLeaderInfoVo.setLonglatiarr(longLatStr); return new FebsResponse().success().data(apiLeaderInfoVo); } @Override public List findLeaderOrderListInPage(ApiLeaderOrderListDto apiLeaderOrderListDto) { MallMember member = LoginUserUtil.getLoginUser(); IPage page = new Page<>(apiLeaderOrderListDto.getPageNum(), apiLeaderOrderListDto.getPageSize()); apiLeaderOrderListDto.setMemberId(member.getId()); IPage mallOrderInfos = this.baseMapper.selectApiLeaderOrderListInPage(page, apiLeaderOrderListDto); return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords()); } @Override @Transactional public FebsResponse leaderOrderConfirm(ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto) { log.info("确认到达"+apiLeaderOrderConfirmDto.getIds()); List idsStr = StrUtil.splitTrim(apiLeaderOrderConfirmDto.getIds(),","); if(CollUtil.isEmpty(idsStr)){ return new FebsResponse().fail().message("请选择订单"); } for(String orderIdStr : idsStr){ long orderId = Long.parseLong(orderIdStr); MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId); if(ObjectUtil.isEmpty(mallOrderInfo)){ continue; // return new FebsResponse().fail().message("订单不存在"); } Integer status = mallOrderInfo.getStatus() == null ? 0 : mallOrderInfo.getStatus(); Integer deliveryState = mallOrderInfo.getDeliveryState() == null ? 0 : mallOrderInfo.getDeliveryState(); if(OrderStatusEnum.WAIT_FINISH.getValue() != status || 2 != deliveryState){ continue; // return new FebsResponse().fail().message("订单不是待确认到货状态"); } mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()); mallOrderInfoMapper.updateById(mallOrderInfo); OrderStateDto orderStateDto = new OrderStateDto(); String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId()); orderStateDto.setGoodsName(StrUtil.sub(productNames,0,20)+"..."); String takeUniqueCode = mallOrderInfo.getTakeUniqueCode(); MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode); orderStateDto.setAddressArea(StrUtil.sub(mallTeamLeader.getAddressArea(),0,20)+"..."); 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_THREE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getCode()); orderStateDto.setTemplateId(dataDictionaryCustom.getValue()); orderStateDto.setRemark("果蔬等生鲜,请尽快取货"); iXcxPayService.pushOrderToAddress(orderStateDto); } return new FebsResponse().success().message("确认成功"); } /** * 根据用户ID和订单ID获取所购买商品名称 * @return 所含商品名称(多个以","隔开) */ public String getProductNames(Long memberId, Long orderId) { MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderByMemberIdAndId(memberId, orderId); List details = mallOrderInfo.getItems(); if (CollectionUtils.isEmpty(details)) { return ""; } StringBuffer productNameBuffer = new StringBuffer(); Integer maxLength = 30; for (int i = 0; i< details.size(); i++) { MallOrderItem mallOrderItem = details.get(i); String goodsName = mallOrderItem.getGoodsName(); if (goodsName == null) { continue; } if (i == 0 && goodsName.length() > maxLength) { productNameBuffer.append(goodsName.substring(0, maxLength) + "..."); break; } if ((productNameBuffer.length() + goodsName.length()) > maxLength) { productNameBuffer.append("等"); break; } productNameBuffer.append(goodsName + ","); } String productNames = productNameBuffer.toString(); if (productNames.endsWith(",")) { productNames = productNames.substring(0, productNames.length() - 1); } if (productNames.endsWith(",等")) { productNames = productNames.substring(0, productNames.length() - 2) + "等"; } return productNames; } @Override public FebsResponse leaderTitle(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 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()); apiLeaderInfoVo.setLonglatiarr(mallElectronicFence.getLonglatiarr()); } if(ObjectUtil.isEmpty(apiLeaderInfoVo)){ return new FebsResponse().success(); } return new FebsResponse().success().data(apiLeaderInfoVo); } @Override public FebsResponse findTeamOrderMarkCnt() { 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> maps = mallOrderInfoMapper.selectMemberOrderStatusCntByUniquecode(uniqueCode); Map orderCnt = new HashMap<>(); if (CollUtil.isNotEmpty(maps)) { for (Map map : maps) { orderCnt.put(map.get("status"), map.get("cnt")); } } Map result = new HashMap<>(); result.put("order", orderCnt); 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 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 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 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 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 findLeaderProfitListInPage(ApiOrderProfitDto apiOrderProfitDto) { MallMember member = LoginUserUtil.getLoginUser(); IPage page = new Page<>(apiOrderProfitDto.getPageNum(), apiOrderProfitDto.getPageSize()); apiOrderProfitDto.setInvitedId(member.getInviteId()); IPage mallLeaderAchieves = mallLeaderAchieveMapper.selectApiLeaderProfitListInPage(page, apiOrderProfitDto); return MallLeaderAchieveConversion.INSTANCE.entitysToVos(mallLeaderAchieves.getRecords()); } @Override public FebsResponse findSomeLeaderListInPage(ApiLeaderListDto apiLeaderListDto) { Page page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize()); IPage mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto); List 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); } }