LuoDLeo преди 7 месеца
родител
ревизия
4ba0b5a5b9

+ 21 - 0
src/main/java/org/springblade/common/enums/FacilityStatusEnum.java

@@ -0,0 +1,21 @@
+package org.springblade.common.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum FacilityStatusEnum {
+
+    ON_LINE("在线", 1),
+    OFF_LINE("离线", 2),
+    FAULT("故障", 3);
+
+    private String name;
+    private Integer value;
+
+    FacilityStatusEnum(String name, Integer value) {
+        this.name = name;
+        this.value = value;
+    }
+
+
+}

+ 30 - 2
src/main/java/org/springblade/modules/api/controller/ApiFacilityController.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.utils.DistanceUtils;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -38,7 +39,7 @@ public class ApiFacilityController extends BaseController {
     private final IUserMerchantService iUserMerchantService;
 
     @PostMapping("/save")
-    @ApiOperationSupport(order = 4)
+    @ApiOperationSupport(order = 1)
     @ApiOperation(value = "添加设备", notes = "传入facility")
     public R<Void> save(@Valid @RequestBody Facility facility) {
         return R.status(iFacilityService.add(facility));
@@ -57,17 +58,44 @@ public class ApiFacilityController extends BaseController {
             wrapper.in(Facility::getShopId, merchantShopIds);
         } else {
             List<Long> authShopId = iUserMerchantService.getAuthShopId(AuthUtil.getUserId());
+            if (CollUtil.isEmpty(authShopId)) {
+                return R.data(new Page<>());
+            }
             wrapper.in(Facility::getShopId, authShopId);
         }
         IPage<Facility> pages = iFacilityService.page(Condition.getPage(query), wrapper);
         return R.data(FacilityWrapper.build().pageVO(pages));
     }
 
-    @PostMapping("/delete")
+    @PostMapping("/details")
     @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "设备详情", notes = "传入id")
+    public R<FacilityVO> details(@ApiParam(value = "主键集合", required = true) @RequestParam Long facilityId) {
+        Facility facility = iFacilityService.getById(facilityId);
+        return R.data(FacilityWrapper.build().entityVO(facility));
+    }
+
+    @PostMapping("/delete")
+    @ApiOperationSupport(order = 4)
     @ApiOperation(value = "删除设备", notes = "传入ids")
     public R<Void> remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
         return R.status(iFacilityService.removeByIds(Func.toLongList(ids)));
     }
 
+    /**
+     * 小程序查询所有设备,并返回距离
+     */
+    @GetMapping("/all")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "小程序查询所有设备,并返回距离", notes = "经度纬度")
+    public R<List<FacilityVO>> all(@ApiParam(value = "经度", required = true) @RequestParam Double longitude,
+                                   @ApiParam(value = "纬度", required = true) @RequestParam Double latitude) {
+        List<Facility> pages = iFacilityService.list(Wrappers.lambdaQuery(Facility.class).eq(Facility::getUseStatus, 1));
+        List<FacilityVO> facilityVOS = FacilityWrapper.build().listVO(pages);
+        for (FacilityVO facilityVO : facilityVOS) {
+            facilityVO.setDistance(DistanceUtils.getDistance(longitude, latitude, Double.parseDouble(facilityVO.getLongitude()), Double.parseDouble(facilityVO.getLatitude())));
+        }
+        return R.data(facilityVOS);
+    }
+
 }

+ 25 - 0
src/main/java/org/springblade/modules/api/controller/ApiShopController.java

@@ -1,5 +1,6 @@
 package org.springblade.modules.api.controller;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -27,6 +28,7 @@ import org.springblade.modules.system.service.IUserMerchantService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -114,4 +116,27 @@ public class ApiShopController extends BaseController {
         Shop shop = iShopService.getById(facility.getShopId());
         return R.data(ShopWrapper.build().entityVO(shop));
     }
+
+
+    @GetMapping("/getAllShop")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "获取商家所有门店", notes = "获取商家所有门店")
+    public R<List<ShopVO>> getAllShop() {
+        LambdaQueryWrapper<Shop> wrapper = Wrappers.lambdaQuery(Shop.class);
+        if (isMerchant()) {
+            List<Long> merchantShopIds = iShopService.getMerchantShopIds(AuthUtil.getUserId());
+            if (CollUtil.isEmpty(merchantShopIds)) {
+                return R.data(new ArrayList<>());
+            }
+            wrapper.in(Shop::getId, merchantShopIds);
+        } else {
+            List<Long> authShopId = iUserMerchantService.getAuthShopId(AuthUtil.getUserId());
+            if (CollUtil.isEmpty(authShopId)) {
+                return R.data(new ArrayList<>());
+            }
+            wrapper.in(Shop::getId, authShopId);
+        }
+        return R.data(ShopWrapper.build().listVO(iShopService.list(wrapper)));
+    }
+
 }

+ 16 - 6
src/main/java/org/springblade/modules/business/entity/Facility.java

@@ -1,12 +1,13 @@
 package org.springblade.modules.business.entity;
 
-import org.springblade.common.base.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDateTime;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.common.base.BaseEntity;
+
+import java.time.LocalDateTime;
 
 /**
  * 售货设备表实体类
@@ -42,6 +43,11 @@ public class Facility extends BaseEntity {
 	*/
 	@ApiModelProperty(value = "设备型号")
 	private String facilityType;
+	/**
+	 * 设备地址
+	 */
+	@ApiModelProperty(value = "设备地址")
+	private String address;
 	/**
 	* 设备经度
 	*/
@@ -52,10 +58,15 @@ public class Facility extends BaseEntity {
 	*/
 	@ApiModelProperty(value = "设备纬度")
 	private String latitude;
+	/**
+	 * 使用状态
+	 */
+	@ApiModelProperty(value = "使用状态StatusEnum,1启用,0禁用")
+	private Integer useStatus;
 	/**
 	* 设备状态
 	*/
-	@ApiModelProperty(value = "设备状态")
+	@ApiModelProperty(value = "设备状态FacilityStatusEnum,1在线,2离线,3故障")
 	private Integer facilityStatus;
 	/**
 	* 最新上传数据时间
@@ -68,5 +79,4 @@ public class Facility extends BaseEntity {
 	@ApiModelProperty(value = "添加时间")
 	private LocalDateTime addTime;
 
-
 }

+ 2 - 21
src/main/java/org/springblade/modules/business/mapper/FacilityMapper.xml

@@ -2,29 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.springblade.modules.business.mapper.FacilityMapper">
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="facilityResultMap" type="org.springblade.modules.business.entity.Facility">
-        <result column="id" property="id"/>
-        <result column="is_delete" property="isDelete"/>
-        <result column="create_user_id" property="createUserId"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user_id" property="updateUserId"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="facility_no" property="facilityNo"/>
-        <result column="shop_id" property="shopId"/>
-        <result column="facility_name" property="facilityName"/>
-        <result column="facility_type" property="facilityType"/>
-        <result column="longitude" property="longitude"/>
-        <result column="latitude" property="latitude"/>
-        <result column="facility_status" property="facilityStatus"/>
-        <result column="heartbeat_time" property="heartbeatTime"/>
-        <result column="add_time" property="addTime"/>
-    </resultMap>
-
-
-    <select id="selectFacilityPage" resultMap="facilityResultMap">
+    <select id="selectFacilityPage" resultType="org.springblade.modules.business.vo.FacilityVO">
         select * from t_facility where is_delete = 0
     </select>
+
     <select id="selectGoods" resultType="org.springblade.modules.mall.vo.GoodsInfoVO">
         SELECT
             gi.id,

+ 5 - 0
src/main/java/org/springblade/modules/business/vo/FacilityVO.java

@@ -33,4 +33,9 @@ import org.springblade.modules.business.entity.Facility;
 public class FacilityVO extends Facility {
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 距离
+     */
+    private double distance;
+
 }

+ 10 - 4
src/main/java/org/springblade/modules/system/service/impl/UserMerchantServiceImpl.java

@@ -16,19 +16,19 @@
  */
 package org.springblade.modules.system.service.impl;
 
-import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.modules.system.entity.UserMerchant;
-import org.springblade.modules.system.vo.UserMerchantVO;
 import org.springblade.modules.system.mapper.UserMerchantMapper;
 import org.springblade.modules.system.service.IUserMerchantService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.modules.system.vo.UserMerchantVO;
 import org.springblade.modules.system.wrapper.UserMerchantWrapper;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 商家用户表 服务实现类
@@ -53,6 +53,12 @@ public class UserMerchantServiceImpl extends ServiceImpl<UserMerchantMapper, Use
 	@Override
 	public List<Long> getAuthShopId(Long userId) {
 		UserMerchant one = getOne(Wrappers.lambdaQuery(UserMerchant.class).eq(UserMerchant::getUserId, userId));
+		if(Objects.isNull(one)){
+            return new ArrayList<>();
+		}
+		if(Objects.isNull(one.getAuthShop())){
+			return new ArrayList<>();
+		}
 		String[] split = one.getAuthShop().split(",");
 		List<Long> ids = new ArrayList<>();
 		for (String s : split) {

+ 1 - 1
src/main/resources/application.yml

@@ -270,7 +270,7 @@ blade:
       - /v1/groupon/detail
       - /v1/groupon/detail
       - /v1/article-detail
-      - /v1/shop/all
+      - /v1/facility/all
       - /groupon/groupon/gen
       - /v1/vending/**
     #授权认证配置