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