From a721f2949a80666751ed7390a9ecba97454f140e Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 15 Sep 2022 17:48:09 +0800
Subject: [PATCH] 20220902
---
src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html | 40 +++++----
src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java | 18 ++++
src/main/resources/mapper/modules/MallTeamLeaderMapper.xml | 2
src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java | 2
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java | 4 +
src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java | 4
src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java | 40 ++++++++++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 14 +++
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java | 30 +++++++
src/main/resources/templates/febs/views/modules/leader/leaderList.html | 31 +++++++
src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java | 2
11 files changed, 165 insertions(+), 22 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
index 4e7e9e4..28e0f4c 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
@@ -144,4 +144,22 @@
return iAdminMallTeamLeaderService.addFence(adminLeaderAddFenceDto);
}
+ /**
+ * 团长--在线
+ */
+ @GetMapping("startOnline/{id}")
+ @ControllerEndpoint(operation = "团长--在线", exceptionMessage = "操作失败")
+ public FebsResponse startOnline(@NotNull(message = "{required}") @PathVariable Long id) {
+ return iAdminMallTeamLeaderService.startOnline(id);
+ }
+
+ /**
+ * 团长--离线
+ */
+ @GetMapping("closeOnline/{id}")
+ @ControllerEndpoint(operation = "团长--离线", exceptionMessage = "操作失败")
+ public FebsResponse closeOnline(@NotNull(message = "{required}") @PathVariable Long id) {
+ return iAdminMallTeamLeaderService.closeOnline(id);
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java b/src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java
index 12d4d6f..822aad0 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java
@@ -55,6 +55,8 @@
private String bonusPercent;
@TableField(exist = false)
- private int isOk;
+ private Integer isOk;
+ //在线状态 1:在线 2:离线
+ private Integer onlineState;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
index 5ff9324..154747b 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
@@ -35,4 +35,8 @@
FebsResponse closeProfit(Long id);
FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto);
+
+ FebsResponse startOnline(Long id);
+
+ FebsResponse closeOnline(Long id);
}
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 2386301..32dc633 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
@@ -15,4 +15,6 @@
String fenceList(String gaodeKey,String serviceId,String fenceIds);
String fenceDelete(String gaodeKey,String serviceId,String fenceId);
+
+ String fenceToLocation(String gaodeKey,String serviceId,String locationLonglat,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 806d8cb..b0649c3 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
@@ -318,4 +318,34 @@
return new FebsResponse().success();
}
+ @Override
+ public FebsResponse startOnline(Long id) {
+ MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
+ if(ObjectUtil.isEmpty(mallTeamLeader)){
+ return new FebsResponse().fail().message("团长信息不存在,刷新重试");
+ }
+ Integer state = mallTeamLeader.getState();
+ if(1!=state){
+ return new FebsResponse().fail().message("目前还不是团长,无法操作");
+ }
+ MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+ if(ObjectUtil.isEmpty(mallElectronicFence)){
+ return new FebsResponse().fail().message("请先设置配送范围");
+ }
+ mallTeamLeader.setOnlineState(1);
+ this.baseMapper.updateById(mallTeamLeader);
+ return new FebsResponse().success();
+ }
+
+ @Override
+ public FebsResponse closeOnline(Long id) {
+ MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
+ if(ObjectUtil.isEmpty(mallTeamLeader)){
+ return new FebsResponse().fail().message("团长信息不存在,刷新重试");
+ }
+ mallTeamLeader.setOnlineState(2);
+ this.baseMapper.updateById(mallTeamLeader);
+ return new FebsResponse().success();
+ }
+
}
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 c803616..86f5b94 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
@@ -76,6 +76,8 @@
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
private final MallLeaderAchieveMapper mallLeaderAchieveMapper;
private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
+ private final IMallElectronicFenceService iMallElectronicFenceService;
+ private final MallElectronicFenceMapper mallElectronicFenceMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -90,6 +92,17 @@
MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
if(ObjectUtil.isEmpty(mallTeamLeader)){
throw new FebsException("请重新选择团长");
+ }
+
+ //订单范围内才允许下单
+ 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("不在当前团长的配送范围内");
+ }
}
String orderNo = MallUtils.getOrderNum();
@@ -207,7 +220,6 @@
}
orderInfo.setAmount(total);
- MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
orderInfo.setName(address.getName());
orderInfo.setPhone(address.getPhone());
orderInfo.setIsHome(addOrderDto.getIsHome());
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 5c07a1c..bc83c2f 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
@@ -241,4 +241,44 @@
return "fail";
}
}
+
+ @Override
+ public String fenceToLocation(String gaodeKey, String serviceId, String locationLonglat, String fenceId) {
+ String url = "https://tsapi.amap.com/v1/track/geofence/status/location";
+ 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);
+ //指定坐标
+ //格式:x,y
+ map.put("location",locationLonglat);
+ //围栏的唯一标识
+ //支持一次传入多个,以","分割;
+ //单次最多支持100个,如超出将只截取前100个作为输入。
+ map.put("gfids",fenceId);
+ 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();
+ cn.hutool.json.JSONObject resultsStrJson = JSONUtil.parseObj(resultsStr);
+ String in = resultsStrJson.get("in").toString();
+ return in;
+ }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 d135053..b4d4c8a 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java
@@ -47,4 +47,6 @@
private String bonusPercent;
private String longlatiarr;
+
+ private Integer onlineState;
}
diff --git a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
index f738740..b66b32e 100644
--- a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
+++ b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
@@ -33,7 +33,7 @@
) AS distance
from mall_team_leader a
<where>
- a.state = 1
+ a.state = 1 and a.online_state = 1
<if test="record.query != null and record.query != ''">
and (a.name like CONCAT('%', CONCAT(#{record.query}, '%'))
or a.phone like CONCAT('%', CONCAT(#{record.query}, '%'))
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html b/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html
index e8d4a60..bf83d95 100644
--- a/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderFenceAdd.html
@@ -204,27 +204,29 @@
//配送范围回显
// 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)
+ if(fenceLongLat != '' && fenceLongLat != null){
+ 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);
}
- 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,
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 c7ca5e1..f10fb07 100644
--- a/src/main/resources/templates/febs/views/modules/leader/leaderList.html
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderList.html
@@ -62,6 +62,13 @@
<a lay-event="edit" shiro:hasPermission="user:update"><i
class="layui-icon febs-edit-area febs-blue"></i></a>
</script>
+<script type="text/html" id="onlineStateSwitch">
+ {{# if(d.onlineState === 1) { }}
+ <input type="checkbox" value={{d.id}} lay-text="在线|离线" checked lay-skin="switch" lay-filter="onlineStateSwitch">
+ {{# } else { }}
+ <input type="checkbox" value={{d.id}} lay-text="在线|离线" lay-skin="switch" lay-filter="onlineStateSwitch">
+ {{# } }}
+</script>
<script type="text/html" id="upOrDownSwitch">
{{# if(d.profitSwitch === 1) { }}
<input type="checkbox" value={{d.id}} lay-text="开启|关闭" checked lay-skin="switch" lay-filter="upOrDownSwitch">
@@ -187,6 +194,7 @@
{field: 'addressArea', title: '自提点名称', minWidth: 150,align:'left'},
{field: 'detailAddress', title: '自提点地址', minWidth: 150,align:'left'},
{field: 'totalProfit', title: '收益', minWidth: 150,align:'left'},
+ {field: 'onlineState', title: '在线状态', templet: '#onlineStateSwitch', minWidth: 100,align:'center'},
{field: 'profitSwitch', title: '是否返利', templet: '#upOrDownSwitch', minWidth: 100,align:'center'},
{field: 'bonusPercent', title: '返利比例', minWidth: 150,align:'left'},
// {field: 'phone', title: '电话', minWidth: 150,align:'left'},
@@ -223,6 +231,29 @@
});
}
+ form.on('switch(onlineStateSwitch)', function (data) {
+ if (data.elem.checked) {
+ startOnline(data.value);
+ } else {
+ closeOnline(data.value);
+ }
+ $query.click();
+ })
+
+ function startOnline(id) {
+ febs.get(ctx + 'admin/leader/startOnline/' + id, null, function () {
+ febs.alert.success('在线成功');
+ $query.click();
+ });
+ }
+
+ function closeOnline(id) {
+ febs.get(ctx + 'admin/leader/closeOnline/' + id, null, function () {
+ febs.alert.success('离线成功');
+ $query.click();
+ });
+ }
+
form.on('switch(upOrDownSwitch)', function (data) {
if (data.elem.checked) {
startProfit(data.value);
--
Gitblit v1.9.1