Browse Source

no message

FengChaoYu 1 month ago
parent
commit
03a7914356

+ 16 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/StorageBean.java

@@ -0,0 +1,16 @@
+package com.gree.mall.miniapp.bean;
+
+import com.gree.mall.miniapp.plus.entity.Storage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class StorageBean extends Storage {
+
+    @ApiModelProperty(value = "距离(单位:公里)")
+    private String distance;
+}

+ 6 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/commonmapper/AppMapper.java

@@ -3,6 +3,7 @@ package com.gree.mall.miniapp.commonmapper;
 
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.miniapp.bean.StorageBean;
 import com.gree.mall.miniapp.bean.goods.GoodsNewBean;
 import com.gree.mall.miniapp.bean.order.OrderStatusBean;
 import com.gree.mall.miniapp.bean.order.ShoppingCartList;
@@ -46,5 +47,9 @@ public interface AppMapper {
             @Param("sort") Integer sort
     );
 
-
+    /**
+     * 通过定位获取仓库列表
+     */
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
+    List<StorageBean> findStorageByLocate(String lng, String lat);
 }

+ 7 - 7
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/renovation/RenovationController.java

@@ -2,23 +2,23 @@ package com.gree.mall.miniapp.controller.renovation;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gree.mall.miniapp.annotation.ApiNotAuth;
+import com.gree.mall.miniapp.bean.StorageBean;
 import com.gree.mall.miniapp.bean.goods.GoodsNewBean;
-import com.gree.mall.miniapp.bean.order.OrderCommentBean;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
 import com.gree.mall.miniapp.helper.ResponseHelper;
 import com.gree.mall.miniapp.logic.renovation.RenovationLogic;
 import com.gree.mall.miniapp.plus.entity.AdminCompanyWechatTemplate;
 import com.gree.mall.miniapp.plus.entity.GoodsNewsCategory;
 import com.gree.mall.miniapp.plus.entity.OrderShare;
-import com.gree.mall.miniapp.plus.entity.Storage;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -91,10 +91,10 @@ public class RenovationController {
     @ApiNotAuth
     @GetMapping("/storage/list")
     @ApiOperation("仓库列表")
-    public ResponseHelper<List<Storage>> storageList(
+    public ResponseHelper<List<StorageBean>> storageList(
             HttpServletRequest request
     ) throws RemoteServiceException {
-        List<Storage> storageList = renovationLogic.storageList(request);
+        List<StorageBean> storageList = renovationLogic.storageList(request);
         return ResponseHelper.success(storageList);
     }
 }

+ 5 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/CommonLogic.java

@@ -64,6 +64,8 @@ public class CommonLogic {
     UserCompanyDeliveryService userCompanyDeliveryService;
     @Resource
     OrderInfoService orderInfoService;
+    @Resource
+    AdminPlatformService adminPlatformService;
     @Value("${spring.profiles.active}")
     private String profiles;
     @Value("${inf.url}")
@@ -100,6 +102,8 @@ public class CommonLogic {
         adminCompanyWechat = adminCompanyWechatService.lambdaQuery()
                 .last("limit 1")
                 .one();
+
+        final AdminPlatform adminPlatform = adminPlatformService.getById(1);
         if (StringUtils.isNotBlank(token)) {
             Object result = redisUtil.get(Constant.RedisPrefix.TOKEN_APP_USER + token);
             if (Objects.isNull(result)) {
@@ -114,6 +118,7 @@ public class CommonLogic {
         if (Objects.nonNull(user)) {
             currentCompanyWechat.setCurrentCompanyWechatId(adminCompanyWechat.getCompanyWechatId());
             currentCompanyWechat.setCurrentCompanyName(adminCompanyWechat.getCompanyName());
+            currentCompanyWechat.setAppModuleJson(adminPlatform.getAppModuleJson());
             currentCompanyWechat.setUserId(user.getUserId());
             currentCompanyWechat.setUser(user);
         }

+ 6 - 4
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/renovation/RenovationLogic.java

@@ -2,6 +2,7 @@ package com.gree.mall.miniapp.logic.renovation;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.miniapp.bean.StorageBean;
 import com.gree.mall.miniapp.bean.goods.GoodsNewBean;
 import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
 import com.gree.mall.miniapp.commonmapper.AppMapper;
@@ -96,10 +97,11 @@ public class RenovationLogic {
      * @param request
      * @return
      */
-    public List<Storage> storageList(HttpServletRequest request) {
+    public List<StorageBean> storageList(HttpServletRequest request) {
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat(request);
-        return storageService.lambdaQuery()
-                .eq(Storage::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
-                .list();
+        final String locate = currentCompanyWechat.getUser().getCurLocate();
+        final String[] locates = locate.split(",");
+        List<StorageBean> storageList = appMapper.findStorageByLocate(locates[0], locates[1]);
+        return storageList;
     }
 }

+ 31 - 0
mall-miniapp-service/src/main/resources/mapper/AppMapper.xml

@@ -80,4 +80,35 @@
 
     </select>
 
+    <select id="findStorageByLocate" resultType="com.gree.mall.miniapp.bean.StorageBean">
+        SELECT
+            storage_id,
+            company_wechat_id,
+            company_name,
+            storage_name,
+            storage_address,
+            storage_mobile,
+            type,
+            status,
+            is_default,
+            lng,
+            lat,
+            -- 使用哈弗辛公式计算球面距离(单位:公里)
+            ROUND(6371 * 2 * ASIN(
+                    SQRT(
+                                POW(SIN((RADIANS(23.09) - RADIANS(CAST(lat AS DECIMAL(10,6)))) / 2), 2) +
+                                COS(RADIANS(23.09)) * COS(RADIANS(CAST(lat AS DECIMAL(10,6)))) *
+                                POW(SIN((RADIANS(113.32) - RADIANS(CAST(lng AS DECIMAL(10,6)))) / 2), 2)
+                        )
+                ), 2) AS distance
+        FROM storage
+        WHERE del = 0
+            AND status = 1
+            AND lng IS NOT NULL
+            AND lat IS NOT NULL
+            AND lng != ''
+            AND lat != ''
+        ORDER BY distance ASC
+    </select>
+
 </mapper>