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