From 7f2d3e9bcb89311a5cbfaa617fde71ea412f9bc3 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 16 Sep 2022 11:01:34 +0800
Subject: [PATCH] 20220902
---
src/main/resources/mapper/modules/MallElectronicFenceMapper.xml | 11 +++
src/main/resources/mapper/modules/MallTeamLeaderMapper.xml | 18 ++++++
src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java | 20 +++++-
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 59 +++++++++++++++----
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 16 ++--
src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java | 2
src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java | 2
src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java | 4 +
src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java | 3 +
src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java | 2
11 files changed, 113 insertions(+), 26 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
index 6db1995..70544d8 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
@@ -44,7 +44,7 @@
})
@PostMapping(value = "/leaderList")
public FebsResponse leaderList(@RequestBody @Valid ApiLeaderListDto apiLeaderListDto) {
- return new FebsResponse().success().data(iApiMallTeamLeaderService.findLeaderListInPage(apiLeaderListDto));
+ return iApiMallTeamLeaderService.findLeaderListInPage(apiLeaderListDto);
}
/**
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java
index fb408d8..b5ed132 100644
--- a/src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java
@@ -25,5 +25,5 @@
public abstract MallTeamLeader adminDtoToEntity(AdminLeaderAddDto adminLeaderAddDto);
-
+ public abstract ApiLeaderListVo entityToApiVo(MallTeamLeader mallTeamLeader);
}
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 67fbc22..3e0e550 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
@@ -4,7 +4,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
public interface MallElectronicFenceMapper extends BaseMapper<MallElectronicFence> {
MallElectronicFence selectByTeamLeaderCode(@Param("teamLeaderCode")String uniqueCode);
+
+ List<MallElectronicFence> selectAllOnlineLeader();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
index c44fce7..499da52 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
@@ -32,4 +32,6 @@
IPage<MallLeaderStock> selectleaderGoodsStockListInPage(Page<MallLeaderStock> page, @Param("record")MallLeaderStock mallLeaderStock);
MallTeamLeader selectLeaderByUniqueCodeAndOrderBycreateTime(@Param("uniqueCode")String inviteId);
+
+ MallTeamLeader selectByFenceIdAndFenceNameAndLonAndLat(@Param("longitude")Double longitude, @Param("latitude")Double latitude,@Param("fenceId")String gfid, @Param("fenceName")String gfname);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java
index 12b69cc..83825fa 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java
@@ -14,7 +14,7 @@
FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto);
- List<ApiLeaderListVo> findLeaderListInPage(ApiLeaderListDto apiLeaderListDto);
+ FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto);
FebsResponse leaderState();
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
index 32dc633..a7c9f40 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
@@ -16,5 +16,8 @@
String fenceDelete(String gaodeKey,String serviceId,String fenceId);
+ /*
+ {"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"}
+ */
String fenceToLocation(String gaodeKey,String serviceId,String locationLonglat,String fenceId);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 86f5b94..f9b0dc0 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -96,14 +96,14 @@
//订单范围内才允许下单
MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
- MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
- if(ObjectUtil.isNotEmpty(mallElectronicFence)){
- String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
- mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid());
- if("1".equals(inStr)){
- throw new FebsException("不在当前团长的配送范围内");
- }
- }
+// MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+// if(ObjectUtil.isNotEmpty(mallElectronicFence)){
+// String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
+// mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid());
+// if("1".equals(inStr)){
+// throw new FebsException("不在当前团长的配送范围内");
+// }
+// }
String orderNo = MallUtils.getOrderNum();
MallOrderInfo orderInfo = new MallOrderInfo();
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 52a049b..8c0aa60 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
@@ -2,9 +2,9 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.LoginUserUtil;
-import cc.mrbird.febs.common.utils.ShareCodeUtil;
import cc.mrbird.febs.common.utils.SpringContextHolder;
import cc.mrbird.febs.mall.conversion.MallLeaderAchieveConversion;
import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion;
@@ -12,19 +12,20 @@
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
-import cc.mrbird.febs.mall.service.IAdminMallOrderService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.pay.model.OrderStateDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
-import cc.mrbird.febs.pay.util.WechatConfigure;
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
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.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -36,10 +37,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -64,6 +62,8 @@
private final MallMoneyFlowMapper mallMoneyFlowMapper;
private final MallGoodsMapper mallGoodsMapper;
private final MallGoodsSkuMapper mallGoodsSkuMapper;
+ private final MallElectronicFenceMapper mallElectronicFenceMapper;
+ private final IMallElectronicFenceServiceImpl iMallElectronicFenceService;
@Override
@Transactional
@@ -89,11 +89,47 @@
return new FebsResponse().success().message("申请成功");
}
+
+
@Override
- public List<ApiLeaderListVo> findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
- Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize());
- IPage<MallTeamLeader> mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto);
- return MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords());
+ public FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
+ //根据当前位置的经纬度查询在所属配送区域内的团长
+ List<MallElectronicFence> mallElectronicFences = mallElectronicFenceMapper.selectAllOnlineLeader();
+ List<ApiLeaderListVo> apiLeaderListVos = new ArrayList<>();
+ if(CollUtil.isEmpty(mallElectronicFences)){
+ return new FebsResponse().success().data(apiLeaderListVos);
+ }
+ StringBuffer fenceIdStringBuffer = new StringBuffer();
+ for(MallElectronicFence mallElectronicFence : mallElectronicFences){
+ fenceIdStringBuffer.append(mallElectronicFence.getGid()).append(",");
+ }
+ String fenceIdStr = fenceIdStringBuffer.substring(0, fenceIdStringBuffer.length() - 1);
+ //{"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"}
+ String resultsStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFences.get(0).getGKey(),
+ mallElectronicFences.get(0).getServiceId(),
+ apiLeaderListDto.getLongitude() + "," + apiLeaderListDto.getLatitude(),
+ fenceIdStr);
+ if("fail".equals(resultsStr)){
+ return new FebsResponse().success().data(apiLeaderListVos);
+ }
+
+ JSONArray objects = JSONUtil.parseArray(resultsStr);
+ for(Object obj : objects){
+ //{"gfid":800899,"gfname":"87053658_fence","in":0}
+ JSONObject jsonObject = JSONUtil.parseObj(obj);
+ String gfid = jsonObject.get("gfid").toString();
+ String in = jsonObject.get("in").toString();
+ String gfname = jsonObject.get("gfname").toString();
+ //指定坐标是否在围栏中
+ //1:在,
+ //0:不在;
+ if("1".equals(in)){
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectByFenceIdAndFenceNameAndLonAndLat(apiLeaderListDto.getLongitude(), apiLeaderListDto.getLatitude(),gfid,gfname);
+ ApiLeaderListVo apiLeaderListVo = MallTeamLeaderConversion.INSTANCE.entityToApiVo(mallTeamLeader);
+ apiLeaderListVos.add(apiLeaderListVo);
+ }
+ }
+ return new FebsResponse().success().data(apiLeaderListVos);
}
@Override
@@ -237,7 +273,6 @@
//经纬度定位
}else if(longitude != 0 && latitude != 0){
mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
-
//直接进入,默认选择列表第一个
}else{
List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
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
index bc83c2f..4ae5911 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java
@@ -4,6 +4,8 @@
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.JSONArray;
+import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -274,11 +276,23 @@
String dataStr = maps.get("data").toString();
cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
String resultsStr = dataResults.get("results").toString();
- cn.hutool.json.JSONObject resultsStrJson = JSONUtil.parseObj(resultsStr);
- String in = resultsStrJson.get("in").toString();
- return in;
+ return resultsStr;
}else{
return "fail";
}
}
+
+ public static void main(String[] args) {
+ String result = "{\"data\":{\"count\":1,\"results\":[{\"gfid\":800899,\"gfname\":\"87053658_fence\",\"in\":0}]},\"errcode\":10000,\"errdetail\":null,\"errmsg\":\"OK\"}";
+ cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
+ String dataStr = maps.get("data").toString();
+ cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
+ String resultsStr = dataResults.get("results").toString();
+ JSONArray jsonArray = JSONUtil.parseArray(resultsStr);
+ System.out.print(jsonArray);
+ Object o = jsonArray.get(0);
+ JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray.get(0));
+ String in = jsonObject1.get("in").toString();
+ System.out.print(in);
+ }
}
diff --git a/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml b/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml
index 10b5edf..3d4f944 100644
--- a/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml
+++ b/src/main/resources/mapper/modules/MallElectronicFenceMapper.xml
@@ -5,4 +5,15 @@
<select id="selectByTeamLeaderCode" resultType="cc.mrbird.febs.mall.entity.MallElectronicFence">
select * from mall_electronic_fence where team_leader_code=#{teamLeaderCode}
</select>
+
+ <select id="selectAllOnlineLeader" resultType="cc.mrbird.febs.mall.entity.MallElectronicFence">
+ SELECT
+ a.*
+ FROM
+ mall_electronic_fence a
+ INNER JOIN mall_team_leader b ON a.team_leader_code = b.unique_code
+ WHERE
+ b.state = 1
+ AND b.online_state = 1
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
index 90324c4..2b6fb88 100644
--- a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
+++ b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
@@ -186,4 +186,22 @@
limit 1
</select>
+ <select id="selectByFenceIdAndFenceNameAndLonAndLat" resultType="cc.mrbird.febs.mall.entity.MallTeamLeader">
+ select
+ a.*,
+ ROUND(
+ 6378.138 * 2 * ASIN(
+ SQRT(
+ POW(SIN((#{latitude} * PI() / 180 - a.latitude * PI() / 180) / 2),2)
+ + COS(40.0497810000 * PI() / 180) * COS(a.latitude * PI() / 180)
+ * POW(SIN((#{longitude} * PI() / 180 - a.longitude * PI() / 180) / 2),2)
+ )
+ ) * 1000
+ ) AS distance
+ from mall_team_leader a
+ inner join mall_electronic_fence b on b.team_leader_code = a.unique_code
+ where b.gid = #{fenceId}
+ and b.fence_name = #{fenceName}
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1