From fd3c114f6dea28fe92b82bf35a6a33e3bb9a8485 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 14 一月 2025 10:02:05 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java                            |    4 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java   |    1 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java |    6 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GeodesyUtil.java                   |   73 ++++++++++++++++++++++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java    |   12 ++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java          |   14 +---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java                |    4 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java            |   25 ++++++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Region.java                      |    5 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java                         |    3 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml                     |   28 ++++-----
 11 files changed, 144 insertions(+), 31 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
index 72e4204..45c4966 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
@@ -143,6 +143,10 @@
     @TableField("express_pay_method")
     private Integer expressPayMethod;
 
+    @ApiModelProperty(value = "配送方式(1=自提,2=快递)")
+    @TableField("distribution_mode")
+    private Integer distributionMode;
+
     @ApiModelProperty(value = "第三方快递信息")
     @TableField("express_json")
     private String expressJson;
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Region.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Region.java
index bbaa873..0e48e13 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Region.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Region.java
@@ -1,6 +1,7 @@
 package com.ruoyi.other.api.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -8,6 +9,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.List;
 
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -28,4 +30,7 @@
     private Long parentId;
 
     private String english;
+
+    @TableField(exist = false)
+    private List<Region> childs;
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
index 384a27e..0475c35 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.account.api.model.*;
 import com.ruoyi.account.mapper.AppUserMapper;
 import com.ruoyi.account.service.*;
+import com.ruoyi.account.util.GeodesyUtil;
 import com.ruoyi.account.util.SMSUtil;
 import com.ruoyi.account.util.payment.PaymentUtil;
 import com.ruoyi.account.util.payment.model.CloseOrderResult;
@@ -713,7 +714,18 @@
 						nearbyReferrerVo.setVip("合伙人");
 						break;
 				}
+
+				String latitude = nearbyReferrerVo.getLatitude();
+				String longitude = nearbyReferrerVo.getLongitude();
+				Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, nearbyReferrer.getLongitude() + "," + nearbyReferrer.getLatitude()).get("WGS84");
+				nearbyReferrerVo.setDistance(wgs84);
 			}
+			list.sort(new Comparator<NearbyReferrerVo>() {
+				@Override
+				public int compare(NearbyReferrerVo o1, NearbyReferrerVo o2) {
+					return o1.getDistance().compareTo(o2.getDistance());
+				}
+			});
 			return pageInfo.setRecords(list);
 		}
 		return null;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
index 2dc890d..549f8b3 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
@@ -68,8 +68,10 @@
 			couponInfoVo.setDiscountAmount(couponInfo.getDiscountAmount());
 			couponInfoVo.setMoneyAmount(couponInfo.getMoneyAmount());
 			couponInfoVo.setDiscount(couponInfo.getDiscount());
-			couponInfoVo.setPeriodStartTime(couponInfo.getPeriodStartTime().format(formatter));
-			couponInfoVo.setPeriodEndTime(couponInfo.getPeriodEndTime().format(formatter));
+			if(null != couponInfo.getPeriodStartTime()){
+				couponInfoVo.setPeriodStartTime(couponInfo.getPeriodStartTime().atTime(0, 0, 0).format(formatter));
+				couponInfoVo.setPeriodEndTime(couponInfo.getPeriodEndTime().atTime(23, 59, 59).format(formatter));
+			}
             String forGoodIds = couponInfo.getForGoodIds();
             String[] split = forGoodIds.split(",");
 			if("-1".equals(forGoodIds)){
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GeodesyUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GeodesyUtil.java
new file mode 100644
index 0000000..a11e311
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GeodesyUtil.java
@@ -0,0 +1,73 @@
+package com.ruoyi.account.util;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GeodeticCalculator;
+import org.gavaghan.geodesy.GeodeticCurve;
+import org.gavaghan.geodesy.GlobalCoordinates;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 计算两个金纬度坐标之间的直线距离
+ */
+public class GeodesyUtil {
+
+
+    /**
+     * 获取直线距离
+     * @param fromLonLat
+     * @param toLonLat
+     * @return
+     */
+    public static Map<String, Double> getDistance(String fromLonLat, String toLonLat){
+        Map<String, Double> map = null;
+        if(StringUtils.isNotEmpty(fromLonLat) && StringUtils.isNotEmpty(toLonLat)){
+            map = new HashMap<>();
+            String[] from = fromLonLat.split(",");
+            String[] to = toLonLat.split(",");
+            GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0]));
+            GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0]));
+            double Sphere = getDistanceMeter(source, target, Ellipsoid.Sphere);
+            double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84);
+            double GRS80 = getDistanceMeter(source, target, Ellipsoid.GRS80);
+            double GRS67 = getDistanceMeter(source, target, Ellipsoid.GRS67);
+            double ANS = getDistanceMeter(source, target, Ellipsoid.ANS);
+            double WGS72 = getDistanceMeter(source, target, Ellipsoid.WGS72);
+            double Clarke1858 = getDistanceMeter(source, target, Ellipsoid.Clarke1858);
+            double Clarke1880 = getDistanceMeter(source, target, Ellipsoid.Clarke1880);
+//            System.out.println("Sphere坐标系计算结果:"+Sphere + "米");
+//            System.out.println("WGS84坐标系计算结果:"+WGS84 + "米");
+//            System.out.println("GRS80坐标系计算结果:"+GRS80 + "米");
+//            System.out.println("GRS67坐标系计算结果:"+GRS67 + "米");
+//            System.out.println("ANS坐标系计算结果:"+ANS + "米");
+//            System.out.println("WGS72坐标系计算结果:"+WGS72 + "米");
+//            System.out.println("Clarke1858坐标系计算结果:"+Clarke1858 + "米");
+//            System.out.println("Clarke1880坐标系计算结果:"+Clarke1880 + "米");
+            map.put("Sphere", Sphere);
+            map.put("WGS84", WGS84);
+            map.put("GRS80", GRS80);
+            map.put("GRS67", GRS67);
+            map.put("ANS", ANS);
+            map.put("WGS72", WGS72);
+            map.put("Clarke1858", Clarke1858);
+            map.put("Clarke1880", Clarke1880);
+        }
+        return map;
+    }
+
+
+    private static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){
+        //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
+        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
+        return geoCurve.getEllipsoidalDistance();
+    }
+
+
+
+    public static void main(String[] ages){
+        GeodesyUtil geodesyUtil = new GeodesyUtil();
+        getDistance("115.481028,39.989643", "114.465302,40.004717");
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java
index b0f84a2..91df8e4 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java
@@ -22,7 +22,9 @@
 	@ApiModelProperty("会员类型名称")
 	private String vip;
 	@ApiModelProperty("距离(m)")
-	private BigDecimal distance;
+	private Double distance;
 	@ApiModelProperty("手机号")
 	private String phone;
+	private String longitude;
+	private String latitude;
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
index 73e0486..e4f8604 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
@@ -35,22 +35,18 @@
     
     
     <select id="getNearbyReferrer" resultType="com.ruoyi.account.vo.NearbyReferrerVo">
-        select * from (
-            select
-                id,
-                avatar,
-                `name`,
-                vip_id as vip,
-                ST_Distance_Sphere(
-                    point(#{nearbyReferrer.longitude},#{nearbyReferrer.latitude}),
-                    point(longitude, latitude)
-                ) as distance,
-                phone
-            from t_app_user where city_code = #{cityCode} and del_flag = 0 and status = 1 and vip_id >= 4
-            <if test="null != nearbyReferrer.name and '' != nearbyReferrer.name">
-                and `name` like CONCAT('%', #{nearbyReferrer.name}, '%')
-            </if>
-        ) as aa order by aa.distance
+        select
+        id,
+        avatar,
+        `name`,
+        vip_id as vip,
+        longitude,
+        latitude,
+        phone
+        from t_app_user where city_code = #{cityCode} and del_flag = 0 and status = 1 and vip_id >= 4
+        <if test="null != nearbyReferrer.name and '' != nearbyReferrer.name">
+            and `name` like CONCAT('%', #{nearbyReferrer.name}, '%')
+        </if>
     </select>
 
     <select id="getAppuserPage" resultType="com.ruoyi.account.api.model.AppUser">
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 4c347d4..8507664 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -157,9 +157,8 @@
         // 收货地址
         String addressJson = order.getAddressJson();
         UserAddress userAddress = new UserAddress();
-        if (StringUtils.isNotEmpty(addressJson)){
+        if (2 == order.getDistributionMode()){
             userAddress = JSONObject.parseObject(addressJson, UserAddress.class);
-
         }
         // 优惠券
         String couponJson = order.getCouponJson();
@@ -759,18 +758,13 @@
         orderInfo.setExpressAmount(order.getExpressAmount());
         orderInfo.setPaymentAmount(order.getPaymentAmount());
         orderInfo.setGetPoint(order.getGetPoint());
-        if(StringUtils.isNotEmpty(order.getAddressJson())){
+        if(2 == order.getDistributionMode()){
             UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class);
             orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone());
             userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress());
             orderInfo.setAddress(userAddress.getRecieveAddress());
-        }
-        if(StringUtils.isNotEmpty(order.getExpressJson()) && !"NULL".equals(order.getExpressJson())){
-            JSONObject jsonObject = JSON.parseObject(order.getExpressJson());
-            String com = jsonObject.getString("com");
-            String num = jsonObject.getString("num");
-            QueryKD100Vo queryKD100Vo = ExpressDeliveryUtil.kd100QueryTrack(com, num);
-            orderInfo.setExpress(queryKD100Vo);
+            MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(order.getExpressResult(), MapTrackKD100Vo.class);
+            orderInfo.setExpress(mapTrackKD100Vo);
         }
         List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0));
         int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index d6f1b01..cbc3f2d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -995,6 +995,7 @@
 		order.setDelFlag(0);
 		order.setCreateTime(LocalDateTime.now());
 		order.setExpressPayMethod(shoppingCartPayment.getFreightPaymentType());
+		order.setDistributionMode(shoppingCartPayment.getDistributionMode());
 
 		if(2 == shoppingCartPayment.getPaymentType()){
 			BigDecimal balance = appUser.getBalance();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
index 9f41e2c..348da92 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
@@ -1,5 +1,6 @@
 package com.ruoyi.order.vo;
 
+import com.ruoyi.order.util.vo.MapTrackKD100Vo;
 import com.ruoyi.order.util.vo.QueryKD100Vo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -53,7 +54,7 @@
 	@ApiModelProperty("收件地址")
 	private String address;
 	@ApiModelProperty("物流信息")
-	private QueryKD100Vo express;
+	private MapTrackKD100Vo express;
 	@ApiModelProperty("商品数量")
 	private Integer goodsNum;
 	@ApiModelProperty("商品信息")
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java
index 05c2cc2..0e0a518 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java
@@ -10,7 +10,9 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/region")
@@ -23,11 +25,32 @@
      * 省市区级联
      */
     @GetMapping("/getProvinceList")
-    @ApiOperation("省市区级联")
+    @ApiOperation(value = "省市区级联", tags = "管理后台")
     public R<List<Region>> getProvinceList(@ApiParam("父级id") @RequestParam Long parentId) {
         return R.ok(regionService.list(new LambdaQueryWrapper<Region>()
                 .eq(Region::getParentId, parentId)));
     }
+
+
+    /**
+     * 省市区级联
+     */
+    @GetMapping("/getProvinceList1")
+    @ApiOperation(value = "省市区级联",tags = {"小程序"})
+    public R<List<Region>> getProvinceList1() {
+        List<Region> list = regionService.list();
+        List<Region> collect = list.stream().filter(s -> s.getParentId() == 0).collect(Collectors.toList());
+        for (Region region : collect) {
+            List<Region> collect1 = list.stream().filter(s -> s.getParentId() == region.getId()).collect(Collectors.toList());
+            for (Region region1 : collect1) {
+                List<Region> collect2 = list.stream().filter(s -> s.getParentId() == region1.getId()).collect(Collectors.toList());
+                region1.setChilds(collect2);
+            }
+            region.setChilds(collect1);
+        }
+        return R.ok(collect);
+    }
+
     
     
     /**

--
Gitblit v1.7.1