xiaoyong931011
2022-09-13 28681434422184b33a3338417f681ca1837bc91e
20220902
4 files added
5 files modified
156 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/conversion/MallElectronicFenceConversion.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java 83 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html 5 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/index.html 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.mall.dto.AdminLeaderAddDto;
import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
import cc.mrbird.febs.mall.dto.ApiApplayLeaderDto;
import cc.mrbird.febs.mall.entity.*;
@@ -133,4 +134,14 @@
        return new FebsResponse().success();
    }
    /**
     * 团长--设置电子围栏
     */
    @PostMapping("addFence")
    @ControllerEndpoint(operation = "团长信息--设置电子围栏", exceptionMessage = "设置失败")
    public FebsResponse addFence(@Valid AdminLeaderAddFenceDto adminLeaderAddFenceDto) {
        return iAdminMallTeamLeaderService.addFence(adminLeaderAddFenceDto);
    }
}
src/main/java/cc/mrbird/febs/mall/conversion/MallElectronicFenceConversion.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.mall.conversion;
import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
import cc.mrbird.febs.mall.entity.MallElectronicFence;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public abstract class MallElectronicFenceConversion {
    public static final MallElectronicFenceConversion INSTANCE = Mappers.getMapper(MallElectronicFenceConversion.class);
    public abstract MallElectronicFence dtoToEntity(AdminLeaderAddFenceDto adminLeaderAddFenceDto);
}
src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddFenceDto.java
New file
@@ -0,0 +1,14 @@
package cc.mrbird.febs.mall.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "AdminLeaderAddFenceDto", description = "接收参数类")
public class AdminLeaderAddFenceDto {
    private String fenceName;//电子围栏名称
    private Integer fenceType;//电子围栏类型,1:POI围栏,2:行政区围栏,3:圆形围栏,4:多边形围栏
    private String longlatiarr;//经纬度集合
    private String teamLeaderCode;//团长特征码
    private String gaodeKey;//高德地图Key
}
src/main/java/cc/mrbird/febs/mall/entity/MallElectronicFence.java
New file
@@ -0,0 +1,18 @@
package cc.mrbird.febs.mall.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
//电子围栏
@Data
@TableName("mall_electronic_fence")
public class MallElectronicFence extends BaseEntity {
    private String fenceName;//电子围栏名称
    private Integer fenceType;//电子围栏类型,1:POI围栏,2:行政区围栏,3:圆形围栏,4:多边形围栏
    private Integer prohibit;//是否禁用(1:启用 2:禁用)
    private Integer delFlag;//逻辑删除标志 1:正常 2已删除
    private String longlatiarr;//经纬度集合
    private String teamLeaderCode;//团长特征码
    private String gaodeKey;//高德地图Key
    private String gid;//高德地图ID
}
src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.mall.mapper;
import cc.mrbird.febs.mall.entity.MallElectronicFence;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface MallElectronicFenceMapper extends BaseMapper<MallElectronicFence> {
}
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.mall.dto.AdminLeaderAddDto;
import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
import cc.mrbird.febs.mall.entity.MallLeaderStock;
import cc.mrbird.febs.mall.entity.MallTeamLeader;
@@ -32,4 +33,6 @@
    FebsResponse startProfit(Long id);
    FebsResponse closeProfit(Long id);
    FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -4,14 +4,14 @@
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.utils.HttpCurlUtil;
import cc.mrbird.febs.mall.conversion.MallElectronicFenceConversion;
import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
import cc.mrbird.febs.mall.dto.AdminLeaderAddDto;
import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
import cc.mrbird.febs.mall.dto.ApiApplayLeaderDto;
import cc.mrbird.febs.mall.entity.MallGoodsCategory;
import cc.mrbird.febs.mall.entity.MallLeaderStock;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallTeamLeader;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
import cc.mrbird.febs.mall.vo.AdminMallActSetVo;
@@ -19,19 +19,33 @@
import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Consts;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicNameValuePair;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@@ -43,6 +57,7 @@
    private final MallGoodsMapper mallGoodsMapper;
    private final MallMemberMapper mallMemberMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final MallElectronicFenceMapper mallElectronicFenceMapper;
    @Override
    public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) {
@@ -198,4 +213,64 @@
        this.baseMapper.updateById(mallTeamLeader);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto) {
        String gdFence = createGDFence(adminLeaderAddFenceDto);
        if("fail".equals(gdFence)){
            return new FebsResponse().fail().message("高德创建电子围栏失败!");
        }
        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();
    }
    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;
        }else{
            return "fail";
        }
    }
}
src/main/resources/templates/febs/views/modules/leader/leaderMapSetting.html
@@ -40,7 +40,6 @@
        });
        var polyEditor = new AMap.PolyEditor(map);
        //为地图注册click事件获取鼠标点击出的经纬度坐标
        var path = [];
        // 折线的节点坐标数组,每个元素为 AMap.LngLat 对象
@@ -87,8 +86,6 @@
        $createPolygon.on('click', function () {
            febs.alert.success('点击新建');
            polyEditor.close();
            polyEditor.open();
        });
        $open.on('click', function () {
@@ -105,6 +102,8 @@
                lineJoin: 'round' // 折线拐点连接处样式
            });
            // 将折线添加至地图实例
            // map.cleanData(polyline);
            map.add(polyline);
        });
src/main/resources/templates/index.html
@@ -20,7 +20,7 @@
            securityJsCode:'8fd9b92f6e07b1f18d3ae39b42ff71bc',
        }
    </script>
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=04934a2cf5cfa8a29ffcf0fdcfaabb5f&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder"></script>
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=04934a2cf5cfa8a29ffcf0fdcfaabb5f&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"/>