From ea8e4abfb8c81cdae4d2a8743d81b615000f352d Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 23 May 2025 16:57:23 +0800 Subject: [PATCH] feat(order): 添加自提点订单确认功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java | 175 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 135 insertions(+), 40 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java index 806d8cb..394b113 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java @@ -17,6 +17,7 @@ import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService; import cc.mrbird.febs.mall.service.IMallElectronicFenceService; +import cc.mrbird.febs.mall.vo.AdminLeaderVo; import cc.mrbird.febs.mall.vo.AdminMallActSetVo; import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo; import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo; @@ -27,6 +28,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -42,6 +44,7 @@ import org.apache.http.entity.ContentType; import org.apache.http.message.BasicNameValuePair; import org.apache.poi.ss.formula.functions.T; +import org.checkerframework.checker.units.qual.A; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,6 +64,8 @@ private final MallMoneyFlowMapper mallMoneyFlowMapper; private final MallElectronicFenceMapper mallElectronicFenceMapper; private final IMallElectronicFenceService iMallElectronicFenceService; + private final SpringContextHolder springContextHolder; + private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); @Override public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) { @@ -96,6 +101,9 @@ public FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader) { Long id = mallTeamLeader.getId(); MallTeamLeader mallTeamLeaders = this.baseMapper.selectById(id); + if(1 == mallTeamLeaders.getOnlineState()){ + return new FebsResponse().fail().message("请先让团长离线"); + } if(ObjectUtil.isEmpty(mallTeamLeaders)){ return new FebsResponse().fail().message("团长信息不存在,刷新重试"); } @@ -104,10 +112,10 @@ // return new FebsResponse().fail().message("只有【待审核】状态才能提交!"); // } - Double bonusPercent = Double.parseDouble(mallTeamLeader.getBonusPercent()); - if(1 <= bonusPercent || 0 > bonusPercent){ - return new FebsResponse().fail().message("请输入合适的百分比小数"); - } +// Double bonusPercent = Double.parseDouble(mallTeamLeader.getBonusPercent()); +// if(1 <= bonusPercent || 0 > bonusPercent){ +// return new FebsResponse().fail().message("请输入合适的百分比小数"); +// } int isOk = mallTeamLeader.getIsOk(); if(MallTeamLeader.STATE_YES == isOk){ mallTeamLeader.setState(MallTeamLeader.STATE_YES); @@ -125,12 +133,12 @@ @Override public List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader) { List<AdminSelectListLeaderVo> list = new ArrayList<>(); - List<MallTeamLeader> mallTeamLeaders = this.baseMapper.getMallTeamLeaderList(); + List<MallTeamLeader> mallTeamLeaders = this.baseMapper.getAllMallTeamLeaderList(); if(CollUtil.isNotEmpty(mallTeamLeaders)){ for(MallTeamLeader teamLeader : mallTeamLeaders){ AdminSelectListLeaderVo adminSelectListLeaderVo = new AdminSelectListLeaderVo(); adminSelectListLeaderVo.setUniqueCode(teamLeader.getUniqueCode()); - adminSelectListLeaderVo.setName(teamLeader.getName()); + adminSelectListLeaderVo.setName(teamLeader.getName() + "-" + teamLeader.getAddressArea()); list.add(adminSelectListLeaderVo); } } @@ -140,6 +148,9 @@ @Override public FebsResponse leaderCancel(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); + if(1 == mallTeamLeader.getOnlineState()){ + return new FebsResponse().fail().message("请先让团长离线"); + } if(ObjectUtil.isEmpty(mallTeamLeader)){ return new FebsResponse().fail().message("团长信息不存在"); } @@ -166,6 +177,7 @@ Long memberId = adminLeaderAddDto.getMemberId(); MallMember mallMember = mallMemberMapper.selectById(memberId); + MallTeamLeader mallTeamLeaderAdd = new MallTeamLeader(); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("刷新页面重试"); } @@ -177,17 +189,39 @@ if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){ return new FebsResponse().fail().message("当前用户无法申请"); } - Double bonusPercent = Double.parseDouble(adminLeaderAddDto.getBonusPercent()); - if(1 <= bonusPercent || 0 > bonusPercent){ - return new FebsResponse().fail().message("请输入合适的百分比小数"); + List<MallTeamLeader> mallTeamLeaderNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO); + if(CollUtil.isNotEmpty(mallTeamLeaderNo)){ + mallTeamLeaderAdd = mallTeamLeaderNo.get(0); + if(ObjectUtil.isNotEmpty(mallTeamLeaderAdd)){ + mallTeamLeaderAdd.setName(adminLeaderAddDto.getName()); + mallTeamLeaderAdd.setPhone(adminLeaderAddDto.getPhone()); + mallTeamLeaderAdd.setAddressPic(adminLeaderAddDto.getAddressPic()); + mallTeamLeaderAdd.setAddressArea(adminLeaderAddDto.getAddressArea()); + mallTeamLeaderAdd.setDetailAddress(adminLeaderAddDto.getDetailAddress()); + mallTeamLeaderAdd.setLongitude(adminLeaderAddDto.getLongitude()); + mallTeamLeaderAdd.setLatitude(adminLeaderAddDto.getLatitude()); + mallTeamLeaderAdd.setState(MallTeamLeader.STATE_YES); + //申请团长默认关闭返利,返利比例为0 + mallTeamLeaderAdd.setProfitSwitch(2); + mallTeamLeaderAdd.setBonusPercent("0"); + this.baseMapper.updateById(mallTeamLeaderAdd); + } + }else{ + MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.adminDtoToEntity(adminLeaderAddDto); + mallTeamLeader.setUniqueCode(mallMember.getInviteId()); + mallTeamLeader.setMemberId(memberId); + mallTeamLeader.setPhone(mallMember.getPhone()); + mallTeamLeader.setName(mallMember.getName()); + mallTeamLeader.setState(MallTeamLeader.STATE_YES); + //申请团长默认关闭返利,返利比例为0 + mallTeamLeader.setProfitSwitch(2); + mallTeamLeader.setBonusPercent("0"); + this.baseMapper.insert(mallTeamLeader); } - MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.adminDtoToEntity(adminLeaderAddDto); - mallTeamLeader.setUniqueCode(mallMember.getInviteId()); - mallTeamLeader.setMemberId(memberId); - mallTeamLeader.setPhone(mallMember.getPhone()); - mallTeamLeader.setName(mallMember.getName()); - mallTeamLeader.setState(MallTeamLeader.STATE_YES); - this.baseMapper.insert(mallTeamLeader); +// Double bonusPercent = Double.parseDouble(adminLeaderAddDto.getBonusPercent()); +// if(1 <= bonusPercent || 0 > bonusPercent){ +// return new FebsResponse().fail().message("请输入合适的百分比小数"); +// } return new FebsResponse().success(); } @@ -246,10 +280,14 @@ // System.out.print(sid); // } } - - private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); @Override + @Transactional public FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto) { + Long id = adminLeaderAddFenceDto.getId(); + MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); + if(1 == mallTeamLeader.getOnlineState()){ + return new FebsResponse().fail().message("请先让团长离线"); + } //如果电子围栏表为空, //先查询服务是否已经创建, //没有,再创建服务。 @@ -260,20 +298,22 @@ if("fail".equals(resultStr)){ return new FebsResponse().fail().message("高德地图查询服务失败"); } - JSONObject jsonObject = JSONUtil.parseObj(resultStr); - String results = jsonObject.get("results").toString(); - JSONArray jsonArray = JSONUtil.parseArray(results); - for(Object jsonArray1 : jsonArray){ - JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray1); - String name = jsonObject1.get("name").toString(); - String sid = jsonObject1.get("sid").toString(); - if(xcxProperties.getServiceName().equals(name)){ - serviceId= sid; - break; - } - } - if(StrUtil.isBlank(serviceId)){ + log.info(resultStr); + if("null".equals(resultStr) || StrUtil.isBlank(resultStr)){ serviceId = iMallElectronicFenceService.trackServiceAdd(xcxProperties.getGaodeKey(), xcxProperties.getServiceName()); + }else{ + JSONObject jsonObject = JSONUtil.parseObj(resultStr); + String results = jsonObject.get("results").toString(); + JSONArray jsonArray = JSONUtil.parseArray(results); + for(Object jsonArray1 : jsonArray){ + JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray1); + String name = jsonObject1.get("name").toString(); + String sid = jsonObject1.get("sid").toString(); + if(xcxProperties.getServiceName().equals(name)){ + serviceId= sid; + break; + } + } } }else{ serviceId = mallElectronicFences.get(0).getServiceId(); @@ -281,8 +321,6 @@ if("fail".equals(serviceId)){ return new FebsResponse().fail().message("高德地图创建服务失败"); } - Long id = adminLeaderAddFenceDto.getId(); - MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); String uniqueCode = mallTeamLeader.getUniqueCode(); MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(uniqueCode); if(ObjectUtil.isEmpty(mallElectronicFence)){ @@ -306,16 +344,73 @@ mallElectronicFenceAdd.setServiceId(serviceId); mallElectronicFenceMapper.insert(mallElectronicFenceAdd); }else{ - String fenceUpdate = iMallElectronicFenceService.fenceUpdate(xcxProperties.getGaodeKey(), serviceId, - mallElectronicFence.getGid(), mallElectronicFence.getFenceName(), - adminLeaderAddFenceDto.getLonglatiarr()); - if("fail".equals(fenceUpdate)){ - return new FebsResponse().fail().message("高德地图更新多边形围栏失败"); + //删除电子围栏 + if(StrUtil.isEmpty(adminLeaderAddFenceDto.getLonglatiarr())){ + iMallElectronicFenceService.fenceDelete(xcxProperties.getGaodeKey(),serviceId,mallElectronicFence.getGid()); + mallElectronicFenceMapper.deleteById(mallElectronicFence.getId()); + }else{ + String fenceUpdate = iMallElectronicFenceService.fenceUpdate(xcxProperties.getGaodeKey(), serviceId, + mallElectronicFence.getGid(), mallElectronicFence.getFenceName(), + adminLeaderAddFenceDto.getLonglatiarr()); + if("fail".equals(fenceUpdate)){ + return new FebsResponse().fail().message("高德地图更新多边形围栏失败"); + } + mallElectronicFence.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr()); + mallElectronicFenceMapper.updateById(mallElectronicFence); } - mallElectronicFence.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr()); - mallElectronicFenceMapper.updateById(mallElectronicFence); } return new FebsResponse().success(); } + @Override + public FebsResponse startOnline(Long id) { + MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(mallTeamLeader)){ + return new FebsResponse().fail().message("团长信息不存在,刷新重试"); + } + Integer state = mallTeamLeader.getState(); + if(1!=state){ + return new FebsResponse().fail().message("目前还不是团长,无法操作"); + } +// MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode()); +// if(ObjectUtil.isEmpty(mallElectronicFence)){ +// return new FebsResponse().fail().message("请先设置配送范围"); +// } + mallTeamLeader.setOnlineState(1); + this.baseMapper.updateById(mallTeamLeader); + return new FebsResponse().success(); + } + + @Override + public FebsResponse closeOnline(Long id) { + MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(mallTeamLeader)){ + return new FebsResponse().fail().message("团长信息不存在,刷新重试"); + } + mallTeamLeader.setOnlineState(2); + this.baseMapper.updateById(mallTeamLeader); + return new FebsResponse().success(); + } + + @Override + public List<AdminLeaderVo> getLeaderTree() { + ArrayList<AdminLeaderVo> adminLeaderVos = new ArrayList<>(); + + List<MallMember> mallMembers = mallMemberMapper.selectList( + new LambdaQueryWrapper<MallMember>() + .select(MallMember::getId, MallMember::getName, MallMember::getInviteId) + .ne(MallMember::getStoreMaster, 0) + ); + if(CollUtil.isNotEmpty(mallMembers)){ + for(MallMember mallMember : mallMembers){ + AdminLeaderVo adminLeaderVo = new AdminLeaderVo(); + adminLeaderVo.setId(mallMember.getId()); + adminLeaderVo.setName(mallMember.getName()); + adminLeaderVo.setUniqueCode(mallMember.getInviteId()); + adminLeaderVos.add(adminLeaderVo); + } + } + return adminLeaderVos; + } + } -- Gitblit v1.9.1