Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

wangming 4 өдөр өмнө
parent
commit
0eead7f60b

+ 61 - 0
yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderRiderLocationController.java

@@ -0,0 +1,61 @@
+package com.yami.shop.api.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yami.shop.bean.app.param.OrderPayInfoParam;
+import com.yami.shop.bean.model.OrderRiderLocation;
+import com.yami.shop.common.util.R;
+import com.yami.shop.service.OrderRiderLocationService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+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.annotation.Resource;
+
+
+/**
+ * 订单配送骑手位置实现
+ *
+ * @author fbj
+ * @version 1.0.0
+ * @since 2025-10-15
+ */
+@RestController
+@RequestMapping("/p/location")
+public class OrderRiderLocationController {
+
+    @Resource
+    private OrderRiderLocationService orderRiderLocationService;
+
+
+//    /**
+//     * 分页获取
+//     *
+//     * @param pageParam          分页参数
+//     * @param orderRiderLocation 订单配送骑手位置
+//     */
+//    @GetMapping("/page")
+//    public Page<OrderRiderLocation> page(Page<OrderRiderLocation> pageParam, OrderRiderLocation orderRiderLocation) {
+//        return orderRiderLocationService.page(pageParam, orderRiderLocation);
+//    }
+
+    /**
+     * 通过订单号获取骑手位置信息
+     * @param orderNumber 订单号
+     *
+     */
+    @GetMapping("/info")
+    @ApiOperation(value = "通过订单号获取", notes = "通过订单号获取")
+    @ApiImplicitParam(name = "orderNumber", value = "订单流水号", required = true, dataType = "String")
+    public R<OrderRiderLocation> getOrderPayInfoByOrderNumber(@RequestParam("orderNumber") String orderNumber) {
+
+        return R.SUCCESS(orderRiderLocationService.getOne(new LambdaQueryWrapper<OrderRiderLocation>()
+                .eq(OrderRiderLocation::getOrderNumber, orderNumber)));
+    }
+
+
+}

+ 14 - 0
yami-shop-api/src/main/java/com/yami/shop/api/controller/ShopDetailController.java

@@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yami.shop.bean.app.dto.ShopHeadInfoDto;
 import com.yami.shop.bean.model.ShopDetail;
 import com.yami.shop.bean.model.UserCollectionShop;
+import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.service.ShopDetailService;
 import com.yami.shop.service.UserCollectionShopService;
@@ -89,4 +90,17 @@ public class ShopDetailController {
         return shopDetailService.neighborShop(lat, lon, platform);
     }
 
+    @GetMapping("/addrShop")
+    @ApiOperation("根据地址获取最近店铺")
+    public ResponseEntity<List<ShopHeadInfoDto>> neighborShopByAddr(@RequestParam("platform") Integer platform,
+                                                                    @RequestParam(value = "addrId", required = false) Long addrId,
+                                                                    @RequestParam(value = "lat", required = false) String lat,
+                                                                    @RequestParam(value = "lon", required = false) String lon) {
+        if (null == addrId) {
+            if (null == lat || null == lon) throw new GlobalException("当地址id为空时,经纬度不能为空");
+            return shopDetailService.neighborShopList(lat, lon, platform);
+        }
+        return shopDetailService.neighborShopByAddr(addrId, platform);
+    }
+
 }

+ 6 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopHeadInfoDto.java

@@ -13,13 +13,19 @@ package com.yami.shop.bean.app.dto;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.yami.shop.common.serializer.json.ImgJsonSerializer;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * 店铺的头信息
  * @author LGH
  */
 @Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
 public class ShopHeadInfoDto {
 
     @ApiModelProperty(value = "店铺id", required = true)

+ 6 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderRiderLocation.java

@@ -18,6 +18,7 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
+ * 骑手位置
  * @author Hasee
  */
 @Data
@@ -66,6 +67,11 @@ public class OrderRiderLocation implements Serializable {
      * 创建时间
      */
     private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
 }
 
 

+ 15 - 9
yami-shop-security/yami-shop-security-api/src/main/java/com/yami/shop/security/api/config/ResourceServerConfiguration.java

@@ -37,15 +37,21 @@ public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter
                 -> http.addFilterBefore(yamiAuthenticationProcessingFilter, UsernamePasswordAuthenticationFilter.class));
 
         http
-            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
-            .and()
-            .requestMatchers().anyRequest()
-            .and()
-            .anonymous()
-            .and()
-            .authorizeRequests()
-            //配置/p访问控制,必须认证过后才可以访问
-            .antMatchers("/p/**").authenticated();
+                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
+                .and()
+                .requestMatchers().anyRequest()
+                .and()
+                .anonymous()
+                .and()
+
+//                .authorizeRequests()
+//                .antMatchers(
+//                        "/p/**").permitAll()
+//                .and()
+
+                .authorizeRequests()
+                //配置/p访问控制,必须认证过后才可以访问
+                .antMatchers("/p/**").authenticated();
     }
 
 

+ 26 - 0
yami-shop-service/src/main/java/com/yami/shop/service/OrderRiderLocationService.java

@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
+ *
+ * https://www.gz-yami.com/
+ *
+ * 未经允许,不可做商业用途!
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.yami.shop.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yami.shop.bean.model.Delivery;
+import com.yami.shop.bean.model.OrderRiderLocation;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ *
+ * @author fbj
+ */
+public interface OrderRiderLocationService extends IService<OrderRiderLocation> {
+
+
+}

+ 3 - 0
yami-shop-service/src/main/java/com/yami/shop/service/ShopDetailService.java

@@ -107,4 +107,7 @@ public interface ShopDetailService extends IService<ShopDetail> {
     ResponseEntity<ShopHeadInfoDto> neighborShop(String lat, String lon);
 
     ResponseEntity<ShopHeadInfoDto> neighborShop(String lat, String lon, Integer platform);
+    ResponseEntity<List<ShopHeadInfoDto>> neighborShopList(String lat, String lon, Integer platform);
+
+    ResponseEntity<List<ShopHeadInfoDto>> neighborShopByAddr(Long addr, Integer platform);
 }

+ 7 - 16
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java

@@ -53,15 +53,11 @@ public class HBOrderService implements IHBOrderService {
     private final ShopDetailMapper shopDetailMapper;
     private final UserService userService;
     private final UserAddrOrderService userAddrOrderService;
-    private final UserAddrService userAddrService;
     private final ProductMapper productMapper;
     private final SkuMapper skuMapper;
     private final OrderRiderLocationMapper orderRiderLocationMapper;
     private final OrderRefundService orderRefundService;
-    private final OrderItemService orderItemService;
     private final OrderService orderService;
-    private final OrderRefundSkuMapper orderRefundSkuMapper;
-    private final Snowflake snowflake;
 
 
     public HBR addHBGoods(JSONObject hbRequest) {
@@ -265,27 +261,22 @@ public class HBOrderService implements IHBOrderService {
         String bodyStr = hBRequest.getString("body");
         log.info("订单信息,body:{}", bodyStr);
         JSONObject bodyJson = JSON.parseObject(bodyStr);
-//        Order order = orderMapper.getOrderAndOrderItemByOrderNumber(bodyJson.getString("channelOrderId"));
         String channelOrderId = bodyJson.getString("channelOrderId");
-        String courierName = bodyJson.getString("courierName");
-        String courierPhone = bodyJson.getString("courierPhone");
-        Double latitude = bodyJson.getDouble("latitude");
-        Double longitude = bodyJson.getDouble("longitude");
-        Long pushTime = bodyJson.getLong("pushTime");
         OrderRiderLocation orderRiderLocation = new OrderRiderLocation();
         orderRiderLocation.setOrderNumber(channelOrderId);
-        orderRiderLocation.setCourierName(courierName);
-        orderRiderLocation.setCourierPhone(courierPhone);
-        orderRiderLocation.setLatitude(latitude);
-        orderRiderLocation.setLongitude(longitude);
-        orderRiderLocation.setPushTime(pushTime);
-        orderRiderLocation.setCreateTime(new Date());
+        orderRiderLocation.setCourierName(bodyJson.getString("courierName"));
+        orderRiderLocation.setCourierPhone(bodyJson.getString("courierPhone"));
+        orderRiderLocation.setLatitude(bodyJson.getDouble("latitude"));
+        orderRiderLocation.setLongitude(bodyJson.getDouble("longitude"));
+        orderRiderLocation.setPushTime(bodyJson.getLong("pushTime"));
+        orderRiderLocation.setUpdateTime(new Date());
 
         OrderRiderLocation orderRiderLocation1 = orderRiderLocationMapper.selectOne(new LambdaQueryWrapper<OrderRiderLocation>().eq(OrderRiderLocation::getOrderNumber, channelOrderId));
         if (orderRiderLocation1 != null) {
             orderRiderLocation.setId(orderRiderLocation1.getId());
             orderRiderLocationMapper.updateById(orderRiderLocation);
         } else {
+            orderRiderLocation.setCreateTime(new Date());
             orderRiderLocationMapper.insert(orderRiderLocation);
         }
     }

+ 30 - 0
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRiderLocationServiceImpl.java

@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
+ *
+ * https://www.gz-yami.com/
+ *
+ * 未经允许,不可做商业用途!
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.yami.shop.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yami.shop.bean.model.OrderRiderLocation;
+import com.yami.shop.dao.OrderRiderLocationMapper;
+import com.yami.shop.service.OrderRiderLocationService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * @author fbj
+ * @date 2025/10/15
+ */
+@Service
+@AllArgsConstructor
+public class OrderRiderLocationServiceImpl extends ServiceImpl<OrderRiderLocationMapper, OrderRiderLocation> implements OrderRiderLocationService {
+
+
+}

+ 1 - 1
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopCategoryServiceImpl.java

@@ -172,7 +172,7 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
             category.setPic(sc.getPic());
             category.setSeq(sc.getNum());
             category.setGrade(sc.getLevel());
-            if(null!=sc.getLabel()){
+            if (null != sc.getLabel() && !sc.getLabel().isEmpty()) {
                 Label label = labelMapper.selectOne(new LambdaQueryWrapper<Label>()
                         .eq(Label::getId, Long.valueOf(sc.getLabel()))
                         .eq(Label::getIsDelete, 0)

+ 23 - 8
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopDetailServiceImpl.java

@@ -14,16 +14,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.shop.bean.app.dto.ShopHeadInfoDto;
+import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.ShopDetailParam;
 import com.yami.shop.bean.enums.AuditStatus;
 import com.yami.shop.bean.enums.OfflineHandleEventStatus;
 import com.yami.shop.bean.enums.OfflineHandleEventType;
 import com.yami.shop.bean.enums.ShopStatus;
 import com.yami.shop.bean.event.OpenShopInitEvent;
-import com.yami.shop.bean.model.OfflineHandleEvent;
-import com.yami.shop.bean.model.ShopAuditing;
-import com.yami.shop.bean.model.ShopDetail;
-import com.yami.shop.bean.model.ShopWallet;
 import com.yami.shop.bean.param.OfflineHandleEventAuditParam;
 import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.exception.YamiShopBindException;
@@ -31,6 +28,7 @@ import com.yami.shop.common.util.PageParam;
 import com.yami.shop.dao.ProductMapper;
 import com.yami.shop.dao.ShopDetailMapper;
 import com.yami.shop.dao.ShopWalletMapper;
+import com.yami.shop.dao.UserAddrMapper;
 import com.yami.shop.service.OfflineHandleEventService;
 import com.yami.shop.service.ShopAuditingService;
 import com.yami.shop.service.ShopDetailService;
@@ -48,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author lgh on 2018/08/29.
@@ -71,6 +70,7 @@ public class ShopDetailServiceImpl extends ServiceImpl<ShopDetailMapper, ShopDet
     private final ApplicationContext applicationContext;
 
     private final PasswordEncoder passwordEncoder;
+    private final UserAddrMapper userAddrMapper;
 
     @Resource
     private ShopWalletService shopWalletService;
@@ -311,7 +311,7 @@ public class ShopDetailServiceImpl extends ServiceImpl<ShopDetailMapper, ShopDet
 
     @Override
     public ResponseEntity<ShopHeadInfoDto> neighborShop(String lat, String lon) {
-        List<ShopDetail> shopDetails = shopDetailMapper.neighborShop(lat, lon,null);
+        List<ShopDetail> shopDetails = shopDetailMapper.neighborShop(lat, lon, null);
         ShopHeadInfoDto dto = new ShopHeadInfoDto();
         dto.setShopId(shopDetails.get(0).getShopId());
         dto.setShopName(shopDetails.get(0).getShopName());
@@ -319,16 +319,31 @@ public class ShopDetailServiceImpl extends ServiceImpl<ShopDetailMapper, ShopDet
     }
 
     @Override
-    public ResponseEntity<ShopHeadInfoDto> neighborShop(String lat, String lon,Integer platform) {
-        List<ShopDetail> shopDetails = shopDetailMapper.neighborShop(lat, lon,platform);
+    public ResponseEntity<ShopHeadInfoDto> neighborShop(String lat, String lon, Integer platform) {
+        List<ShopDetail> shopDetails = shopDetailMapper.neighborShop(lat, lon, platform);
         ShopHeadInfoDto dto = new ShopHeadInfoDto();
-        if(ObjectUtils.isNotEmpty(shopDetails)){
+        if (ObjectUtils.isNotEmpty(shopDetails)) {
             dto.setShopId(shopDetails.get(0).getShopId());
             dto.setShopName(shopDetails.get(0).getShopName());
         }
         return ResponseEntity.ok(dto);
     }
 
+    @Override
+    public ResponseEntity<List<ShopHeadInfoDto>> neighborShopList(String lat, String lon, Integer platform) {
+        List<ShopHeadInfoDto> collect = shopDetailMapper.neighborShop(lat, lon, platform)
+                .stream().map((s) -> ShopHeadInfoDto.builder().shopId(s.getShopId()).shopName(s.getShopName()).build()).collect(Collectors.toList());
+        return ResponseEntity.ok(collect);
+    }
+
+    @Override
+    public ResponseEntity<List<ShopHeadInfoDto>> neighborShopByAddr(Long addr, Integer platform) {
+        UserAddr userAddr = userAddrMapper.selectById(addr);
+        List<ShopHeadInfoDto> collect = shopDetailMapper.neighborShop(userAddr.getLatitude().toString(), userAddr.getLongitude().toString(), platform)
+                .stream().map((s) -> ShopHeadInfoDto.builder().shopId(s.getShopId()).shopName(s.getShopName()).build()).collect(Collectors.toList());
+        return ResponseEntity.ok(collect);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(cacheNames = "shop_detail", key = "#shopId")

+ 43 - 44
yami-shop-service/src/main/resources/mapper/PointsRecordMapper.xml

@@ -18,52 +18,51 @@
     </select>
 
       <select id="statisticsAllScorePoint" resultType="com.yami.shop.bean.dto.ScoreDataDto">
-
           SELECT
-          (
-          SUM(CASE WHEN points_type = 1 THEN points ELSE 0 END)
-          - SUM(
-          CASE WHEN points_audit IN (1, 2) AND expiry_date &lt;= NOW() THEN
-          CASE
-          WHEN points_audit = 1 THEN
-          CASE points_type
-          WHEN 1 THEN points
-          WHEN 3 THEN variable_points
-          ELSE 0
-          END
-          WHEN points_audit = 2 THEN
-          CASE points_type
-          WHEN 1 THEN points - variable_points
-          WHEN 3 THEN variable_points - variable_points
-          END
-          END
-          ELSE 0 END
-          )
-          - SUM(CASE WHEN points_type = 2 THEN variable_points ELSE 0 END)
-          + SUM(CASE WHEN points_type = 3 THEN variable_points ELSE 0 END)
-          ) AS total_available_points,
-          SUM(CASE WHEN points_type = 1 THEN points ELSE 0 END) AS total_recharged_points,
-          SUM(
-          CASE WHEN points_audit IN (1, 2) AND expiry_date &lt;= NOW() THEN
-          CASE
-          WHEN points_audit = 1 THEN
-          CASE points_type
-          WHEN 1 THEN points
-          WHEN 3 THEN variable_points
-          ELSE 0
-          END
-          WHEN points_audit = 2 THEN
-          CASE points_type
-          WHEN 1 THEN points - variable_points
-          WHEN 3 THEN variable_points - variable_points
-          END
-          END
-          ELSE 0 END
-          ) AS expired_points,
-          SUM(CASE WHEN points_type = 2 THEN variable_points ELSE 0 END) AS consumed_points,
-          SUM(CASE WHEN points_type = 3 THEN variable_points ELSE 0 END) AS refund_points
+              (
+                  SUM(CASE WHEN points_type = 1 THEN points ELSE 0 END)
+                      - SUM(
+                          CASE WHEN points_audit IN (1, 2) AND expiry_date &lt;= NOW() THEN
+                                   CASE
+                                       WHEN points_audit = 1 THEN
+                                           CASE points_type
+                                               WHEN 1 THEN points
+                                               WHEN 3 THEN points
+                                               ELSE 0
+                                               END
+                                       WHEN points_audit = 2 THEN
+                                           CASE points_type
+                                               WHEN 1 THEN points - variable_points
+                                               WHEN 3 THEN points
+                                               END
+                                       END
+                               ELSE 0 END
+                        )
+                      - SUM(CASE WHEN points_type = 2 THEN variable_points ELSE 0 END)
+                      + SUM(CASE WHEN points_type = 3 THEN points ELSE 0 END)
+                  ) AS total_available_points,
+              SUM(CASE WHEN points_type = 1 THEN points ELSE 0 END) AS total_recharged_points,
+              SUM(
+                      CASE WHEN points_audit IN (1, 2) AND expiry_date &lt;= NOW() THEN
+                               CASE
+                                   WHEN points_audit = 1 THEN
+                                       CASE points_type
+                                           WHEN 1 THEN points
+                                           WHEN 3 THEN points
+                                           ELSE 0
+                                           END
+                                   WHEN points_audit = 2 THEN
+                                       CASE points_type
+                                           WHEN 1 THEN points - variable_points
+                                           WHEN 3 THEN points
+                                           END
+                                   END
+                           ELSE 0 END
+              ) AS expired_points,
+              (SUM(CASE WHEN points_type = 2 THEN variable_points ELSE 0 END) - SUM(CASE WHEN points_type = 3 THEN points ELSE 0 END)) AS consumed_points,
+              SUM(CASE WHEN points_type = 3 THEN points ELSE 0 END) AS refund_points
           FROM
-          tz_points_record
+              tz_points_record
           WHERE
           user_id = #{userId}
           AND channel_id = #{platform}

+ 1 - 1
yami-shop-user/yami-shop-user-comment/src/main/java/com/yami/shop/user/comment/service/impl/UserScoreDetailServiceImpl.java

@@ -177,7 +177,7 @@ public class UserScoreDetailServiceImpl extends ServiceImpl<UserScoreDetailMappe
                     case 3:
                         pointsRecord.setPointsTypeStr("退款");
                         mark = "+";
-                        pointsRecord.setVariablePointsStr(mark + (null!=pointsRecord.getVariablePoints()?pointsRecord.getVariablePoints():"0"));
+                        pointsRecord.setVariablePointsStr(mark + pointsRecord.getPoints());
                         break;
                 }
             }