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