From 1f7383c5e295f11a66fdfa9b75e596f72b35b4a8 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 15 Sep 2022 16:38:51 +0800
Subject: [PATCH] 20220902

---
 src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html            |   30 +
 src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java                   |    4 
 src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java                     |    2 
 src/test/java/cc/mrbird/febs/ProfitTest.java                                        |   35 ++
 src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java                         |    2 
 src/main/resources/application-prod.yml                                             |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java    |   11 
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java          |    2 
 src/main/resources/application-dev.yml                                              |    2 
 src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html        |    7 
 src/main/resources/templates/febs/views/modules/leader/leaderList.html              |   15 +
 src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java          |   18 +
 src/main/resources/templates/index.html                                             |    4 
 src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java |  244 +++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java      |   11 
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                           |    3 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java  |  157 +++++++----
 src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java             |    3 
 src/main/resources/application-test.yml                                             |    2 
 src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html          |  251 +++++++++++++++++
 src/main/resources/mapper/modules/MallElectronicFenceMapper.xml                     |    8 
 src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java                   |    3 
 src/main/resources/templates/febs/views/modules/leader/addLeader.html               |    6 
 src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java                   |    5 
 src/main/resources/templates/febs/views/modules/order/orderList.html                |    8 
 src/main/java/cc/mrbird/febs/common/utils/excl/ExcelUtil.java                       |    3 
 26 files changed, 756 insertions(+), 82 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java b/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java
index a261795..6393808 100644
--- a/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java
+++ b/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java
@@ -26,5 +26,9 @@
     private String wecharpayMchid;
     //支付秘钥
     private String wecharpaySecret;
+    //高德KEY
+    private String gaodeKey;
+    //高德serviceName
+    private String serviceName;
 
 }
diff --git a/src/main/java/cc/mrbird/febs/common/utils/excl/ExcelUtil.java b/src/main/java/cc/mrbird/febs/common/utils/excl/ExcelUtil.java
index 51d799b..51af891 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/excl/ExcelUtil.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/excl/ExcelUtil.java
@@ -224,7 +224,8 @@
 
     private static void buildSheetData(Workbook wb, Sheet sheet, ExcelSheetPO excelSheetPO, ExcelVersion version) {
         sheet.setDefaultRowHeight((short) 400);
-        sheet.setDefaultColumnWidth((short) 10);
+//        sheet.setDefaultColumnWidth((short) 10);
+        sheet.autoSizeColumn(1);
         createTitle(sheet, excelSheetPO, wb, version);
         createHeader(sheet, excelSheetPO, wb, version);
         createBody(sheet, excelSheetPO, wb, version);
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
index 95a5f90..7d8d211 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -445,7 +445,7 @@
                 temp.add(item.getLeaderName());
                 temp.add(item.getLeaderPhone());
                 temp.add(item.getAddressArea());
-                temp.add(item.getProvince()+item.getCity()+item.getTownship()+item.getDetailAddress());
+                temp.add(item.getDetailAddress());
                 list.add(temp);
 
                 adminMallOrderService.updateOrderStateAndDeliveryState(item.getId(), OrderStatusEnum.WAIT_FINISH.getValue(), OrderDeliveryStateEnum.DELIVERY_ING.getValue());
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
index 84bb219..c16d635 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
@@ -96,4 +96,15 @@
     public String leaderMapSetting() {
         return FebsUtil.view("modules/leader/leaderMapSetting");
     }
+
+    /**
+     * 团长信息-电子围栏设置
+     */
+    @GetMapping("fenceAdd/{id}")
+    @RequiresPermissions("fenceAdd:add")
+    public String fenceAdd(@PathVariable long id, Model model) {
+        AdminMallTeamLeaderVo data = iAdminMallTeamLeaderService.getMallTeamLederInfoById(id);
+        model.addAttribute("leaderInfo", data);
+        return FebsUtil.view("modules/leader/leaderFenceAdd");
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java
index e361286..b69862a 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java
@@ -6,9 +6,6 @@
 @Data
 @ApiModel(value = "AdminLeaderAddFenceDto", description = "接收参数类")
 public class AdminLeaderAddFenceDto {
-    private String fenceName;//电子围栏名称
-    private Integer fenceType;//电子围栏类型,1:POI围栏,2:行政区围栏,3:圆形围栏,4:多边形围栏
+    private Long id;
     private String longlatiarr;//经纬度集合
-    private String teamLeaderCode;//团长特征码
-    private String gaodeKey;//高德地图Key
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java
index fd457b6..20981ae 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java
@@ -26,6 +26,8 @@
     private Integer orderType;
     //配送方式 1:自提 2:快递
     private Integer deliveryType;
+    //配送方式 1:自提 2:快递
+    private Integer isHome;
 
     private String uniqueCode;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java b/src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java
index cbed3ec..591f444 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java
@@ -13,6 +13,7 @@
     private Integer delFlag;//逻辑删除标志 1:正常 2已删除
     private String longlatiarr;//经纬度集合
     private String teamLeaderCode;//团长特征码
-    private String gaodeKey;//高德地图Key
+    private String gKey;//高德地图Key
+    private String serviceId;//服务ID
     private String gid;//高德地图ID
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
index 5e71081..67fbc22 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
@@ -2,6 +2,9 @@
 
 import cc.mrbird.febs.mall.entity.MallElectronicFence;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 public interface MallElectronicFenceMapper extends BaseMapper<MallElectronicFence> {
+
+    MallElectronicFence selectByTeamLeaderCode(@Param("teamLeaderCode")String uniqueCode);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
new file mode 100644
index 0000000..2386301
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.mall.entity.MallElectronicFence;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IMallElectronicFenceService extends IService<MallElectronicFence> {
+    String trackServiceAdd(String gaodeKey,String serviceName);
+
+    String trackServiceInfo(String gaodeKey);
+
+    String fenceAdd(String gaodeKey,String serviceId,String fenceName,String points);
+
+    String fenceUpdate(String gaodeKey,String serviceId,String fenceId,String fenceName,String points);
+
+    String fenceList(String gaodeKey,String serviceId,String fenceIds);
+
+    String fenceDelete(String gaodeKey,String serviceId,String fenceId);
+}
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 d3f9a0c..806d8cb 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
@@ -4,7 +4,9 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
 import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.properties.XcxProperties;
 import cc.mrbird.febs.common.utils.HttpCurlUtil;
+import cc.mrbird.febs.common.utils.SpringContextHolder;
 import cc.mrbird.febs.mall.conversion.MallElectronicFenceConversion;
 import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
 import cc.mrbird.febs.mall.dto.AdminLeaderAddDto;
@@ -14,11 +16,14 @@
 import cc.mrbird.febs.mall.entity.*;
 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.AdminMallActSetVo;
 import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
 import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
 import cn.hutool.core.collection.CollUtil;
 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.alibaba.fastjson.JSON;
@@ -42,10 +47,7 @@
 
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -58,6 +60,7 @@
     private final MallMemberMapper mallMemberMapper;
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
     private final MallElectronicFenceMapper mallElectronicFenceMapper;
+    private final IMallElectronicFenceService iMallElectronicFenceService;
 
     @Override
     public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) {
@@ -82,6 +85,10 @@
     public AdminMallTeamLeaderVo getMallTeamLederInfoById(long id) {
         MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
         AdminMallTeamLeaderVo adminMallTeamLeaderVo = MallTeamLeaderConversion.INSTANCE.entityToVo(mallTeamLeader);
+        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+        if(ObjectUtil.isNotEmpty(mallElectronicFence)){
+            adminMallTeamLeaderVo.setLonglatiarr(mallElectronicFence.getLonglatiarr());
+        }
         return adminMallTeamLeaderVo;
     }
 
@@ -214,63 +221,101 @@
         return new FebsResponse().success();
     }
 
-    @Override
-    public FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto) {
-        String gdFence = createGDFence(adminLeaderAddFenceDto);
-        if("fail".equals(gdFence)){
-            return new FebsResponse().fail().message("高德创建电子围栏失败!");
+    public static void main(String[] args) {
+
+        String ss = "{\"results\":[{\"name\":\"yiyuanshucai\",\"sid\":792477},{\"name\":\"yiyuanshucai1\",\"sid\":792477}]}";
+        String serviceName = "";
+        JSONObject jsonObject = JSONUtil.parseObj(ss);
+        String results = jsonObject.get("results").toString();
+        JSONArray jsonArray = JSONUtil.parseArray(results);
+        System.out.print(jsonArray);
+        for(Object jsonArray1 : jsonArray){
+            System.out.print(jsonArray1);
+            JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray1);
+            String name = jsonObject1.get("name").toString();
+            System.out.print(name);
+            if("yiyuanshucai".equals(name)){
+                serviceName= name;
+                break;
+            }
         }
-        MallElectronicFence mallElectronicFence = MallElectronicFenceConversion.INSTANCE.dtoToEntity(adminLeaderAddFenceDto);
-        mallElectronicFence.setDelFlag(1);
-        mallElectronicFence.setProhibit(1);
-        mallElectronicFence.setGid(gdFence);
-        mallElectronicFence.setGaodeKey(adminLeaderAddFenceDto.getGaodeKey());
-        mallElectronicFenceMapper.insert(mallElectronicFence);
-        return new FebsResponse().success();
+//            String name = jsonObjectStr.get("name").toString();
+//            String sid = jsonObjectStr.get("sid").toString();
+//            if("yiyuanshucai".equals(name)){
+//                System.out.print(name);
+//                System.out.print(sid);
+//            }
     }
 
-    public String createGDFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto){
-        String url = "https://restapi.amap.com/v4/geofence/meta?key=";
-        String gaodeKey = adminLeaderAddFenceDto.getGaodeKey();
-        url =url+gaodeKey;
-        HttpPost httpPost = new HttpPost(url);
-        Map<String,String> map = new HashMap<>();
-        String fenceName = adminLeaderAddFenceDto.getFenceName();
-        map.put("name",fenceName);
-        String longlatiarr = adminLeaderAddFenceDto.getLonglatiarr();
-        if(null!=longlatiarr&&!"".equals(longlatiarr)){
-            map.put("points",longlatiarr);
-        }
-        map.put("enable","true");
-        map.put("valid_time","2054-12-30");
-        map.put("repeat","Mon,Tues,Wed,Thur,Fri,Sat,Sun");
-        //map.put("time","00:00,11:59;13:00,20:59");
-        map.put("desc",fenceName);
-        map.put("alert_condition","enter;leave");
-        System.out.println(map);
-        String  param= JSON.toJSONString(map);
-        String result = null;
-        try {
-            result = HttpCurlUtil.sendPostHttp(url, param);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        System.out.println("==高德返回"+result);
-        JSONObject maps = JSONUtil.parseObj(result);
-        String errmsg = maps.get("errmsg").toString();
-        String str2 = maps.get("data").toString();
-        JSONObject maps2 = JSONUtil.parseObj(str2);
-        String statusGaode = maps2.get("status").toString();
-        String gid="";
-        if(statusGaode.equals("0")){
-            gid = maps2.get("gid").toString();
-        }
-        if(null!=gid&&!"".equals(gid)){
-            return gid;
+    private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
+    @Override
+    public FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto) {
+        //如果电子围栏表为空,
+        //先查询服务是否已经创建,
+        //没有,再创建服务。
+        List<MallElectronicFence> mallElectronicFences = mallElectronicFenceMapper.selectList(new QueryWrapper<>());
+        String serviceId = "";
+        if(CollUtil.isEmpty(mallElectronicFences)){
+            String resultStr = iMallElectronicFenceService.trackServiceInfo(xcxProperties.getGaodeKey());
+            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)){
+                serviceId = iMallElectronicFenceService.trackServiceAdd(xcxProperties.getGaodeKey(), xcxProperties.getServiceName());
+            }
         }else{
-            return "fail";
+            serviceId = mallElectronicFences.get(0).getServiceId();
         }
+        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)){
+            //新增
+            //新增围栏
+            String fenceId = iMallElectronicFenceService.fenceAdd(xcxProperties.getGaodeKey(), serviceId
+                    , mallTeamLeader.getUniqueCode()+"_fence", adminLeaderAddFenceDto.getLonglatiarr());
+
+            if("fail".equals(fenceId)){
+                return new FebsResponse().fail().message("高德地图创建多边形围栏失败");
+            }
+            MallElectronicFence mallElectronicFenceAdd = new MallElectronicFence();
+            mallElectronicFenceAdd.setFenceName(mallTeamLeader.getUniqueCode()+"_fence");
+            mallElectronicFenceAdd.setFenceType(4);
+            mallElectronicFenceAdd.setGid(fenceId);
+            mallElectronicFenceAdd.setProhibit(1);
+            mallElectronicFenceAdd.setDelFlag(1);
+            mallElectronicFenceAdd.setGKey(xcxProperties.getGaodeKey());
+            mallElectronicFenceAdd.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr());
+            mallElectronicFenceAdd.setTeamLeaderCode(uniqueCode);
+            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("高德地图更新多边形围栏失败");
+            }
+            mallElectronicFence.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr());
+            mallElectronicFenceMapper.updateById(mallElectronicFence);
+        }
+        return new FebsResponse().success();
     }
 
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
index d1b7f41..52a049b 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -438,8 +438,15 @@
                 null,null,
                 DateUtil.date());
         apiLeaderProfitVo.setMonthProfit(monthProfit);
-        BigDecimal waitProfit = mallLeaderAchieveMapper.selectProfitByStateAndDateTimeAndUniqueCode(1,null,loginUser.getInviteId()).setScale(2,BigDecimal.ROUND_DOWN);
-        apiLeaderProfitVo.setWaitProfit(waitProfit);
+        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);
     }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java
new file mode 100644
index 0000000..5c07a1c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java
@@ -0,0 +1,244 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.common.utils.HttpCurlUtil;
+import cc.mrbird.febs.mall.entity.MallElectronicFence;
+import cc.mrbird.febs.mall.mapper.MallElectronicFenceMapper;
+import cc.mrbird.febs.mall.service.IMallElectronicFenceService;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.methods.HttpPost;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class IMallElectronicFenceServiceImpl  extends ServiceImpl<MallElectronicFenceMapper, MallElectronicFence> implements IMallElectronicFenceService {
+    @Override
+    public String trackServiceAdd(String gaodeKey, String serviceName) {
+        String url = "https://tsapi.amap.com/v1/track/service/add?key="+gaodeKey+"&name="+serviceName;
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        map.put("key",gaodeKey);
+        map.put("name",serviceName);
+        String  param= JSON.toJSONString(map);
+        log.info(param);
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendPostHttp(url, param);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        log.info("创建服务"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errcode = maps.get("errcode").toString();
+        if(!"10000".equals(errcode)){
+            return "fail";
+        }
+        String str2 = maps.get("data").toString();
+        cn.hutool.json.JSONObject maps2 = JSONUtil.parseObj(str2);
+        String serviceId = maps2.get("sid").toString();
+        if(null!=serviceId&&!"".equals(serviceId)){
+            return serviceId;
+        }else{
+            return "fail";
+        }
+    }
+
+    @Override
+    public String trackServiceInfo(String gaodeKey) {
+        String url = "https://tsapi.amap.com/v1/track/service/list";
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        //高德Key
+        //用户在高德地图官网申请Web服务API类型Key
+        map.put("key",gaodeKey);
+        log.info("查询服务"+JSON.toJSONString(map));
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendGetHttp(url, map);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        log.info("查询服务"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errCode = maps.get("errcode").toString();
+        if("10000".equals(errCode)){
+            String dataStr = maps.get("data").toString();
+            return dataStr;
+        }else{
+            return "fail";
+        }
+    }
+
+    @Override
+    public String fenceAdd(String gaodeKey, String serviceId, String fenceName, String points) {
+        String url = "https://tsapi.amap.com/v1/track/geofence/add/polygon?key="+gaodeKey+"" +
+                "&sid="+serviceId+"&name="+fenceName+"&points="+points;
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        //高德Key
+        //用户在高德地图官网申请Web服务API类型Key
+        map.put("key",gaodeKey);
+        //服务唯一编号
+        //sid为猎鹰service唯一编号
+        map.put("sid",serviceId);
+        //围栏名称
+        //在同一个 sid 下不可重复,不可为空。
+        //支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字,长度不大于128个字符
+        map.put("name",fenceName);
+        //多边形顶点坐标
+        //格式 X1,Y1;X2,Y2;...
+        //顶点顺序可按顺时针或逆时针排列;
+        //1. 普通地理围栏:顶点个数在3-100个之间,外接矩形面积<100平方公里;
+        //2. 大范围地理围栏:顶点个数在3-100个之间,外接矩形面积小于1000平方公里,请您通过工单与我们联系。
+        map.put("points",points);
+        String  param= JSON.toJSONString(map);
+
+        log.info("创建多边形围栏"+param);
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendPostHttp(url, param);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        log.info("创建多边形围栏"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errCode = maps.get("errcode").toString();
+        if("10000".equals(errCode)){
+            String data = maps.get("data").toString();
+            cn.hutool.json.JSONObject dataObject = JSONUtil.parseObj(data);
+            String gfid = dataObject.get("gfid").toString();
+            if(null!=gfid&&!"".equals(gfid)){
+                return gfid;
+            }else{
+                return "fail";
+            }
+        }else{
+            return "fail";
+        }
+    }
+
+    @Override
+    public String fenceUpdate(String gaodeKey, String serviceId, String fenceId, String fenceName, String points) {
+        String url = "https://tsapi.amap.com/v1/track/geofence/update/polygon?key="+gaodeKey
+                +"&sid="+serviceId+"&gfid="+fenceId+"&name="+fenceName+"&points="+points;
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        //高德Key
+        //用户在高德地图官网申请Web服务API类型Key
+        map.put("key",gaodeKey);
+        //服务唯一编号
+        //sid为猎鹰service唯一编号
+        map.put("sid",serviceId);
+        //围栏id
+        //围栏唯一标识,指定要更新的围栏
+        map.put("gfid",fenceId);
+        //围栏名称
+        //在同一个 sid 下不可重复,不可为空。
+        //支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字,长度不大于128个字符
+        map.put("name",fenceName);
+        //多边形顶点坐标
+        //格式 X1,Y1;X2,Y2;...
+        //顶点顺序可按顺时针或逆时针排列;
+        //1. 普通地理围栏:顶点个数在3-100个之间,外接矩形面积<100平方公里;
+        //2. 大范围地理围栏:顶点个数在3-100个之间,外接矩形面积小于1000平方公里,请您通过工单与我们联系。
+        map.put("points",points);
+        String  param= JSON.toJSONString(map);
+        log.info("更新多边形围栏"+param);
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendPostHttp(url, param);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        log.info("更新多边形围栏"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errCode = maps.get("errcode").toString();
+        if("10000".equals(errCode)){
+            return errCode;
+        }else{
+            return "fail";
+        }
+    }
+
+    @Override
+    public String fenceList(String gaodeKey, String serviceId, String fenceIds) {
+        String url = "https://tsapi.amap.com/v1/track/geofence/list";
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        //高德Key
+        //用户在高德地图官网申请Web服务API类型Key
+        map.put("key",gaodeKey);
+        //服务唯一编号
+        //sid为猎鹰service唯一编号
+        map.put("sid",serviceId);
+        //围栏的唯一标识
+        //支持一次传入多个,以","分割;
+        //单次最多支持100个,如超出将只截取前100个作为输入。
+        //否;
+        //如传入,则只返回由 gfids 所指定的围栏,不分页(忽略 page 和 pagesize 参数);
+        //如不传,则分页返回所有围栏;
+        map.put("gfids",fenceIds);
+        log.info("查询围栏"+JSON.toJSONString(map));
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendGetHttp(url, map);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        log.info("查询围栏"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errCode = maps.get("errcode").toString();
+        if("10000".equals(errCode)){
+            String dataStr = maps.get("data").toString();
+            cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
+            String resultsStr = dataResults.get("results").toString();
+            return resultsStr;
+        }else{
+            return "fail";
+        }
+    }
+
+    @Override
+    public String fenceDelete(String gaodeKey, String serviceId, String fenceId) {
+        String url = "https://tsapi.amap.com/v1/track/geofence/delete";
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        //高德Key
+        //用户在高德地图官网申请Web服务API类型Key
+        map.put("key",gaodeKey);
+        //服务唯一编号
+        //sid为猎鹰service唯一编号
+        map.put("sid",serviceId);
+        //围栏id
+        //围栏唯一标识,指定要更新的围栏
+        map.put("gfids",fenceId);
+        String  param= JSON.toJSONString(map);
+        log.info("删除围栏"+param);
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendPostHttp(url, param);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        log.info("删除围栏"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errCode = maps.get("errcode").toString();
+        if("10000".equals(errCode)){
+            String dataStr = maps.get("data").toString();
+            cn.hutool.json.JSONObject gfidsJson = JSONUtil.parseObj(dataStr);
+            String gfidsStr = gfidsJson.get("gfids").toString();
+            return gfidsStr;
+        }else{
+            return "fail";
+        }
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java
index 20e909c..d135053 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java
@@ -45,4 +45,6 @@
     private Integer profitSwitch;
     //团长返利百分比如0.15表示15%
     private String bonusPercent;
+
+    private String longlatiarr;
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ecd832d..2a663c3 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -73,3 +73,5 @@
   certLocalPath: /home/yyscCert/apiclient_cert.p12
   wecharpayMchid: 1631084809
   wecharpaySecret: YYSC13875978057YYSC13875978057SH
+  gaodeKey: e024c63342930addc57189c8608cdb01
+  serviceName: yiyuanshucai
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 8f67763..a555859 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -69,3 +69,5 @@
   certLocalPath: /home/yyscCert/apiclient_cert.p12
   wecharpayMchid: 1631084809
   wecharpaySecret: YYSC13875978057YYSC13875978057SH
+  gaodeKey: e024c63342930addc57189c8608cdb01
+  serviceName: yiyuanshucai
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index e45a001..37cdcb7 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -78,3 +78,5 @@
   certLocalPath: /home/yyscCert/apiclient_cert.p12
   wecharpayMchid: 1631084809
   wecharpaySecret: YYSC13875978057YYSC13875978057SH
+  gaodeKey: e024c63342930addc57189c8608cdb01
+  serviceName: yiyuanshucai
diff --git a/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml b/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml
new file mode 100644
index 0000000..10b5edf
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MallElectronicFenceMapper">
+
+    <select id="selectByTeamLeaderCode" resultType="cc.mrbird.febs.mall.entity.MallElectronicFence">
+        select * from mall_electronic_fence where team_leader_code=#{teamLeaderCode}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 4d2a513..d8b6807 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -85,6 +85,9 @@
                 <if test="record.deliveryType != null and record.deliveryType != ''">
                     and a.delivery_type = #{record.deliveryType}
                 </if>
+                <if test="record.isHome != null and record.isHome != ''">
+                    and a.is_home = #{record.isHome}
+                </if>
                 <if test="record.orderNo != null and record.orderNo != ''">
                     and a.order_no like CONCAT('%', CONCAT(#{record.orderNo}, '%'))
                 </if>
diff --git a/src/main/resources/templates/febs/views/modules/leader/addLeader.html b/src/main/resources/templates/febs/views/modules/leader/addLeader.html
index d220728..2cf9004 100644
--- a/src/main/resources/templates/febs/views/modules/leader/addLeader.html
+++ b/src/main/resources/templates/febs/views/modules/leader/addLeader.html
@@ -84,7 +84,7 @@
         <div class="layui-form-item">
             <label class="layui-form-label febs-form-item-require">地图选择:</label>
             <div class="layui-input-block">
-                <div class="layui-fluid layui-anim febs-anim" id="febs-map-demo" lay-title="高德地图">
+                <div class="layui-fluid layui-anim febs-anim" id="febs-map-demo-add" lay-title="高德地图">
                     <div class="layui-row febs-container">
                         <div class="layui-card">
                             <div style="padding: .1rem;">
@@ -123,7 +123,7 @@
             mallMember = [[${mallMember}]],
             upload = layui.upload,
             $view = $('#user-addLeader'),
-            $viewMap = $('#febs-map-demo'),
+            $viewMap = $('#febs-map-demo-add'),
             _deptTree;
 
         $viewMap.find('#container').css({"height": document.documentElement.clientHeight - 97 + 'px'});
@@ -135,7 +135,7 @@
 
         //为地图注册click事件获取鼠标点击出的经纬度坐标
         map.on('click', function (e) {
-            febs.alert.success('经度:' + e.lnglat.getLng() + ',纬度:' + e.lnglat.getLat()+e.province);
+            febs.alert.success('经度:' + e.lnglat.getLng() + ',纬度:' + e.lnglat.getLat());
             $("#longitude").val(e.lnglat.getLng());
             $("#latitude").val(e.lnglat.getLat());
 
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html b/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html
new file mode 100644
index 0000000..e8d4a60
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html
@@ -0,0 +1,251 @@
+<style>
+    #user-addLeaderFence {
+        padding: 20px 25px 25px 0;
+    }
+
+    #user-addLeaderFence .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #user-addLeaderFence #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #user-addLeaderFence .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+    #user-addLeaderFence img{
+        max-width:200px
+    }
+    .map{
+        width: 50%;
+        height: 500px!important;
+    }
+</style>
+<div class="layui-fluid" id="user-addLeaderFence">
+    <form class="layui-form" action="" lay-filter="user-addLeaderFence-form">
+        <div class="layui-form-item febs-hide">
+            <label class="layui-form-label">id:</label>
+            <div class="layui-input-block">
+                <input type="text" name="id">
+            </div>
+        </div>
+        <div class="layui-form-item febs-hide">
+            <label class="layui-form-label">memberId:</label>
+            <div class="layui-input-block">
+                <input type="text" name="memberId">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">姓名:</label>
+            <div class="layui-input-block">
+                <input type="text" name="name" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">手机号码:</label>
+            <div class="layui-input-block">
+                <input type="text" name="phone" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">自提点名称:</label>
+            <div class="layui-input-block">
+                <input type="text" name="addressArea" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">详细地址:</label>
+            <div class="layui-input-block">
+                <input type="text" id="detailAddress" name="detailAddress" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">地图选择:</label>
+            <div class="layui-input-block">
+                <div class="layui-fluid layui-anim febs-anim" id="febs-fenceMap-demo" lay-title="高德地图">
+                    <div class="layui-row febs-container">
+                        <div class="layui-card">
+                            <div style="padding: .1rem;">
+                                <div id="container" class="map"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-mid layui-word-aux">鼠标左键点击地图位置,出现【标记*】,则代表选点成功</div>
+                <div class="layui-form-mid layui-word-aux">最少请选择三个点</div>
+            </div>
+            <button class="layui-btn" type="button" id="clearMap">重新设置配送范围</button>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">经度:</label>
+            <div class="layui-input-block">
+                <input type="text" id="longitude" name="longitude" lay-verify="required" placeholder="" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">纬度:</label>
+            <div class="layui-input-block">
+                <input type="text" id="latitude" name="latitude" lay-verify="required" placeholder="" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">经纬度串:</label>
+            <div class="layui-input-block">
+                <input type="text" id="longlatiarr" name="longlatiarr" lay-verify="required" placeholder="" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="user-addLeaderFence-submit" id="submit"></button>
+        </div>
+    </form>
+</div>
+<script data-th-inline="javascript">
+    layui.use(['febs', 'form', 'formSelects',  'treeSelect', 'eleTree', 'upload'], function () {
+        var $ = layui.$,
+            febs = layui.febs,
+            layer = layui.layer,
+            form = layui.form,
+            leaderInfo = [[${leaderInfo}]],
+            upload = layui.upload,
+            $view = $('#user-addLeaderFence'),
+            $viewMap = $('#febs-fenceMap-demo'),
+            $clearMap = $('#clearMap')
+
+        $viewMap.find('#container').css({"height": document.documentElement.clientHeight - 97 + 'px'});
+
+        var map = new AMap.Map("container", {
+            center: [leaderInfo.longitude, leaderInfo.latitude], //初始地图中心点
+            resizeEnable: true,
+            zoom: 16.8 //初始地图级别
+        });
+        //配送范围回显
+        var pathPolygon = [];
+        var polygonClear;
+        // 构造点标记
+        //为地图注册click事件获取鼠标点击出的经纬度坐标
+        var i = 0;
+        var markerList = [];
+        map.on('click', function (e) {
+            // febs.alert.success('经度:' + e.lnglat.getLng() + ',纬度:' + e.lnglat.getLat());
+            var positonList = [];
+            positonList.push(e.lnglat.getLng());
+            positonList.push(e.lnglat.getLat());
+            i = i +1;
+            var addMaker = new AMap.Marker({
+                map: map,
+                content: '标记'+i,
+                icon: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
+                position: [positonList[0], positonList[1]],
+                offset: new AMap.Pixel(-13, -30)
+            });
+            markerList.push(addMaker);
+        });
+
+        //为地图注册click事件获取鼠标点击出的经纬度坐标
+        var path = [];
+        var pathStr = "";
+        var lines = [];
+        map.on('click', function (e) {
+            let lngLat = new AMap.LngLat(e.lnglat.getLng(),e.lnglat.getLat());
+            path.push(lngLat);
+            pathStr = pathStr + lngLat+";";
+            console.log(path.toString());
+            console.log(pathStr);
+            var polyline = new AMap.Polyline({
+                path: path,
+                borderWeight: 3, // 线条宽度,默认为 1
+                strokeColor: 'blue', // 线条颜色
+                lineJoin: 'round' // 折线拐点连接处样式
+            })
+            map.add(polyline);
+            lines.push(polyline)
+            document.getElementById("longlatiarr").value=pathStr;
+        });
+
+        form.render();
+        initUserValue();
+        $clearMap.on('click', function (e) {
+            map.remove(lines);
+            lines = []
+            path = []
+            pathStr = ""
+            document.getElementById("longlatiarr").value=pathStr;
+            map.add(lines);
+
+            map.remove(markerList);
+            markerList = [];
+            i = 0;
+
+            map.remove(polygonClear);
+        })
+        function initUserValue() {
+            var marker = new AMap.Marker({
+                position: map.getCenter(),
+                icon: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
+                anchor:'bottom-center',
+                offset: new AMap.Pixel(0, 0)
+            });
+
+            marker.setMap(map);
+
+            // 设置鼠标划过点标记显示的文字提示
+            marker.setTitle('团长位置');
+
+            // 设置label标签
+            // label默认蓝框白底左上角显示,样式className为:amap-marker-label
+            marker.setLabel({
+                direction:'right',
+                offset: new AMap.Pixel(10, 0),  //设置文本标注偏移量
+                content: "<div class='info'>团长位置</div>", //设置文本标注内容
+            });
+
+            //配送范围回显
+            // var pathPolygon = [];
+            let fenceLongLat = leaderInfo.longlatiarr;
+            let splitList = [];
+            splitList = fenceLongLat.split(';');
+            if(splitList.length > 0){
+                for(let splitIndex = 0;splitIndex < splitList.length-1;splitIndex++){
+                    let splitLngLat = splitList[splitIndex].split(',');
+                    console.log(splitLngLat[0]);
+                    console.log(splitLngLat[1]);
+                    let lngLat = new AMap.LngLat(splitLngLat[0],splitLngLat[1]);
+                    pathPolygon.push(lngLat)
+                }
+            }
+            var polygon = new AMap.Polygon({
+                path: pathPolygon,
+                fillColor: '#00B2D5', // 多边形填充颜色
+                fillOpacity : 0.5, // 多边形填充透明度,取值范围 [0,1] ,0表示完全透明,1表示不透明。默认为0.5
+                strokeStyle : 'dashed', // 轮廓线样式,实线:solid,虚线:dashed
+                borderWeight: 2, // 线条宽度,默认为 1
+                strokeColor: 'green', // 线条颜色
+            });
+            polygonClear = polygon;
+            map.add(polygon);
+
+            form.val("user-addLeaderFence-form", {
+                "id": leaderInfo.id,
+                "memberId": leaderInfo.memberId,
+                "name": leaderInfo.name,
+                "addressArea": leaderInfo.addressArea,
+                "detailAddress": leaderInfo.detailAddress,
+                "longitude": leaderInfo.longitude,
+                "latitude": leaderInfo.latitude,
+                "longlatiarr": leaderInfo.longlatiarr,
+                "phone": leaderInfo.phone
+            });
+        }
+
+        form.on('submit(user-addLeaderFence-submit)', function (data) {
+            febs.post(ctx + 'admin/leader/addFence', data.field, function () {
+                layer.closeAll();
+                febs.alert.success('操作成功');
+                $('#febs-leader').find('#reset').click();
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderList.html b/src/main/resources/templates/febs/views/modules/leader/leaderList.html
index 9300a92..c7ca5e1 100644
--- a/src/main/resources/templates/febs/views/modules/leader/leaderList.html
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderList.html
@@ -117,6 +117,18 @@
                     }
                 });
             }
+            if (layEvent === 'fenceAdd') {
+                febs.modal.open('设置配送范围', 'modules/leader/fenceAdd/' + data.id, {
+                    btn: ['提交', '取消'],
+                    area:['100%','100%'],
+                    yes: function (index, layero) {
+                        $('#user-addLeaderFence').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+            }
             if (layEvent === 'leaderCancel') {
                 febs.modal.confirm('拉黑', '团长被拉黑,将无法再次申请团长', function () {
                     leaderCancel(data.id);
@@ -200,12 +212,13 @@
                             }else if(d.state === 1) {
                                 return ''
                                     + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderUpdate" shiro:hasPermission="user:update">修改</button>'
+                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="fenceAdd" shiro:hasPermission="user:update">设置配送范围</button>'
                                     + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderCancel" shiro:hasPermission="user:update">拉黑</button>'
                                     // + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderGoodsUpdate" shiro:hasPermission="user:update">团长商品设置</button>'
                             }else{
                                 return '';
                             }
-                        },minWidth: 160,align:'center'}
+                        },minWidth: 200,align:'center'}
                 ]]
             });
         }
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html b/src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html
index 0f0f8f6..b87ebca 100644
--- a/src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html
@@ -35,8 +35,10 @@
         $view.find('#container').css({"height": document.documentElement.clientHeight - 97 + 'px'});
 
         var map = new AMap.Map("container", {
-            center: [116.368904,39.913423],
-            zoom: 16.8
+            // center: [116.368904,39.913423],
+
+            resizeEnable: true,
+            zoom: 14
         });
         var polyEditor = new AMap.PolyEditor(map);
 
@@ -67,6 +69,7 @@
             });
             // 将折线添加至地图实例
             map.add(polyline);
+            console.log(path.toString());
         });
 
 
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html b/src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html
index 7cc1977..d14cf55 100644
--- a/src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html
@@ -18,6 +18,10 @@
     #febs-leader-update img{
         max-width:200px
     }
+    .map{
+        width: 50%;
+        height: 500px!important;
+    }
 
 </style>
 <div class="layui-fluid" id="febs-leader-update">
@@ -78,7 +82,7 @@
         <div class="layui-form-item">
             <label class="layui-form-label febs-form-item-require">地图选择:</label>
             <div class="layui-input-block">
-                <div class="layui-fluid layui-anim febs-anim" id="febs-map-demo" lay-title="高德地图">
+                <div class="layui-fluid layui-anim febs-anim" id="febs-map-demo-update" lay-title="高德地图">
                     <div class="layui-row febs-container">
                         <div class="layui-card">
                             <div style="padding: .1rem;">
@@ -123,7 +127,7 @@
             form = layui.form,
             leaderInfo = [[${leaderInfo}]],
             $view = $('#febs-leader-update'),
-            $viewMap = $('#febs-map-demo'),
+            $viewMap = $('#febs-map-demo-update'),
             upload = layui.upload,
             _deptTree;
 
@@ -131,7 +135,7 @@
         var map = new AMap.Map("container", {
             center: [leaderInfo.longitude, leaderInfo.latitude],
             resizeEnable: true,
-            zoom: 14 //初始地图级别
+            zoom: 16.8 //初始地图级别
         });
         //为地图注册click事件获取鼠标点击出的经纬度坐标
         map.on('click', function (e) {
@@ -158,6 +162,7 @@
         }
         function geocoder_CallBack(data) {
             var address = data.regeocode.formattedAddress; //返回地址描述
+            febs.alert.success('地址:' +address);
             document.getElementById("detailAddress").value=address;
         }
 
@@ -180,6 +185,25 @@
         initUserValue();
 
         function initUserValue() {
+            var marker = new AMap.Marker({
+                position: map.getCenter(),
+                icon: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
+                anchor:'bottom-center',
+                offset: new AMap.Pixel(0, 0)
+            });
+
+            marker.setMap(map);
+
+            // 设置鼠标划过点标记显示的文字提示
+            marker.setTitle('团长位置');
+
+            // 设置label标签
+            // label默认蓝框白底左上角显示,样式className为:amap-marker-label
+            marker.setLabel({
+                direction:'right',
+                offset: new AMap.Pixel(10, 0),  //设置文本标注偏移量
+                content: "<div class='info'>团长位置</div>", //设置文本标注内容
+            });
             //图片回显
             if(leaderInfo.addressPic != null || leaderInfo.addressPic != ''){
                 $('#addressPicImage').append('<img src="'+ leaderInfo.addressPic +'" class="layui-upload-img" style="width: 100px">')
diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html
index 29b9a14..172a151 100644
--- a/src/main/resources/templates/febs/views/modules/order/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -42,10 +42,10 @@
                                 <div class="layui-inline">
                                     <label class="layui-form-label layui-form-label-sm">配送方式</label>
                                     <div class="layui-input-inline">
-                                        <select name="deliveryType">
+                                        <select name="isHome">
                                             <option value="">请选择</option>
-                                            <option value="1">自提</option>
-                                            <option value="2">快递</option>
+                                            <option value="1">送货上门</option>
+                                            <option value="2">自提</option>
                                         </select>
                                     </div>
                                 </div>
@@ -366,7 +366,7 @@
                 orderNo: $searchForm.find('input[name="orderNo"]').val().trim(),
                 payResult: $searchForm.find("select[name='payResult']").val(),
                 status: $searchForm.find("select[name='status']").val(),
-                deliveryType: $searchForm.find("select[name='deliveryType']").val(),
+                isHome: $searchForm.find("select[name='isHome']").val(),
                 uniqueCode: $searchForm.find("select[name='uniqueCode']").val(),
             };
         }
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 0dbb47f..a110623 100644
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -17,10 +17,10 @@
     <!-- 高德地图,key为演示作用,请勿滥用-->
     <script type="text/javascript">
         window._AMapSecurityConfig = {
-            securityJsCode:'8fd9b92f6e07b1f18d3ae39b42ff71bc',
+            securityJsCode:'50d73a585f300cccf7fc2bf31d0c38c8',
         }
     </script>
-    <script src="https://webapi.amap.com/maps?v=1.4.15&key=04934a2cf5cfa8a29ffcf0fdcfaabb5f&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder,AMap.PolylineEditor"></script>
+    <script src="https://webapi.amap.com/maps?v=1.4.15&key=e32064fc8a9dfe7af7d2d0a947b8df32&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder,AMap.PolylineEditor"></script>
     <link href="https://unpkg.com/@wangeditor/editor@5.0.1/dist/css/style.css" rel="stylesheet">
     <script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
     <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/>
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index e9f366a..ed8ba71 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -5,8 +5,10 @@
 import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
 import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.utils.HttpCurlUtil;
 import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
 import cc.mrbird.febs.mall.dto.ApiLeaderRefundOrderDto;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
@@ -200,18 +202,47 @@
     private IXcxPayService iXcxPayService;
     @Autowired
     private MallGoodsMapper mallGoodsMapper;
+    @Autowired
+    private IAdminMallTeamLeaderService iAdminMallTeamLeaderService;
 
     @Test
     public void qrcodeBase64(){
 
-        Integer integer = mallGoodsMapper.upDateStockAndVolumeByGoodsId(35L, 3);
-        System.out.println(integer);
+//        Integer integer = mallGoodsMapper.upDateStockAndVolumeByGoodsId(35L, 3);
+//        System.out.println(integer);
 //        WxGenerateQrCodeDto wxGenerateQrCodeDto = new WxGenerateQrCodeDto();
 //        wxGenerateQrCodeDto.setPage("pages/product/details");
 //        wxGenerateQrCodeDto.setScene("35");
 //        FebsResponse febsResponse = iXcxPayService.generateQrCode(wxGenerateQrCodeDto);
 //        String data = febsResponse.get("data").toString();
 //        System.out.println(data);
+        trackServiceInfo("e024c63342930addc57189c8608cdb01",null);
+    }
+    public String trackServiceInfo(String gaodeKey, String serviceName) {
+        String url = "https://tsapi.amap.com/v1/track/service/list";
+        HttpPost httpPost = new HttpPost(url);
+        Map<String,String> map = new HashMap<>();
+        //高德Key
+        //用户在高德地图官网申请Web服务API类型Key
+        map.put("key",gaodeKey);
+        System.out.println("==高德返回"+map);
+        String result = null;
+        try {
+            result = HttpCurlUtil.sendGetHttp(url, map);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        System.out.println("==高德返回"+result);
+        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+        String errCode = maps.get("errcode").toString();
+        if("10000".equals(errCode)){
+            String dataStr = maps.get("data").toString();
+            cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
+            String resultsStr = dataResults.get("results").toString();
+            return resultsStr;
+        }else{
+            return "fail";
+        }
     }
 
 

--
Gitblit v1.9.1