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/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java | 157 +++++++++++++++++++++++++++++++++------------------
1 files changed, 101 insertions(+), 56 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 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();
}
}
--
Gitblit v1.9.1