Jelajahi Sumber

骑手经纬度/叮咚币记录表

licailing 5 tahun lalu
induk
melakukan
753d39dd14

+ 3 - 0
src/main/java/com/izouma/dingdong/domain/MoneyRecord.java

@@ -49,6 +49,9 @@ public class MoneyRecord extends BaseEntity {
     @ApiModelProperty(value = "金额", name = "amount")
     private BigDecimal amount;
 
+    @ApiModelProperty(value = "内容", name = "content")
+    private String content;
+
     @ApiModelProperty(value = "备注", name = "remark")
     private String remark;
 

+ 47 - 0
src/main/java/com/izouma/dingdong/domain/rider/RiderLocation.java

@@ -0,0 +1,47 @@
+package com.izouma.dingdong.domain.rider;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@EntityListeners(AuditingEntityListener.class)
+@ApiModel(value = "骑手位置", description = "骑手位置")
+public class RiderLocation implements Serializable {
+    /*
+    id 无需传
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    /*
+    创建时间,无需传
+     */
+    @CreatedDate
+    @ApiModelProperty(value = "创建时间", name = "createdAt")
+    private LocalDateTime createdAt;
+
+    @ApiModelProperty(value = "骑手Id", name = "riderId")
+    private Long riderId;
+
+    @ApiModelProperty(value = "经度", name = "longitude")
+    private Double longitude;
+
+    @ApiModelProperty(value = "纬度", name = "latitude")
+    private Double latitude;
+
+}

+ 9 - 2
src/main/java/com/izouma/dingdong/domain/rider/RiderSign.java

@@ -22,12 +22,18 @@ public class RiderSign extends BaseEntity {
     @ApiModelProperty(value = "骑手Id", name = "riderId")
     private Long riderId;
 
-//    @ApiModelProperty(value = "签到", name = "signIn")
-//    private Boolean signIn;
+    /**
+     * true开始接单,false停止接单
+     */
+    @ApiModelProperty(value = "开始接单", name = "takingOrders")
+    private Boolean takingOrders;
 
     @ApiModelProperty(value = "签到时间", name = "signTime")
     private LocalDateTime signTime;
 
+//    @ApiModelProperty(value = "签到时间", name = "signTime")
+//    private LocalDateTime signTime;
+
 //    @ApiModelProperty(value = "位置")
 //    private String location;
 
@@ -36,4 +42,5 @@ public class RiderSign extends BaseEntity {
 
     @ApiModelProperty(value = "纬度", name = "latitude")
     private Double latitude;
+
 }

+ 6 - 5
src/main/java/com/izouma/dingdong/enums/FinancialType.java

@@ -1,12 +1,13 @@
 package com.izouma.dingdong.enums;
 
 public enum FinancialType {
-    USER_BUY("购买"),
+//    USER_BUY("购买"),
     INCOME("收入"),
-    REFUND("退款"),
-    COMPENSATE_RIDER("补偿骑手"),
-    LOSE_MONEY("赔钱"),
-    WITHDRAW("提现");
+    EXPENDITURE("支出");
+//    REFUND("退款"),
+//    COMPENSATE_RIDER("补偿骑手"),
+//    LOSE_MONEY("赔钱"),
+//    WITHDRAW("提现");
 
     private final String description;
 

+ 16 - 0
src/main/java/com/izouma/dingdong/enums/RiderMoneyType.java

@@ -0,0 +1,16 @@
+package com.izouma.dingdong.enums;
+
+public enum RiderMoneyType {
+    //配送收入
+    DISTRIBUTION_REVENUE,
+    //顾客打赏
+    CUSTOMER_REWARDS,
+    //平台补偿
+    PLATFORM_COMPENSATION,
+    //提现
+    WITHDRAW,
+    //货到付款扣除
+    CASH_ON_DELIVERY_DEDUCTION,
+    //违规扣款
+    DEDUCTIONS_FOR_VIOLATIONS
+}

+ 14 - 0
src/main/java/com/izouma/dingdong/repo/rider/RiderLocationRepo.java

@@ -0,0 +1,14 @@
+package com.izouma.dingdong.repo.rider;
+
+import com.izouma.dingdong.domain.rider.RiderLocation;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+public interface RiderLocationRepo extends JpaRepository<RiderLocation, Long>, JpaSpecificationExecutor<RiderLocation> {
+
+    //按创建时间查找
+    List<RiderLocation> findAllByCreatedAt(LocalDateTime dateTime);
+}

+ 5 - 0
src/main/java/com/izouma/dingdong/repo/rider/RiderSignRepo.java

@@ -4,5 +4,10 @@ import com.izouma.dingdong.domain.rider.RiderSign;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
+import java.util.List;
+
 public interface RiderSignRepo extends JpaRepository<RiderSign, Long>, JpaSpecificationExecutor<RiderSign> {
+
+    //查找开启接单的骑手
+    RiderSign findByRiderIdAndTakingOrders(Long riderId, Boolean takingOrders);
 }

+ 22 - 0
src/main/java/com/izouma/dingdong/service/MoneyRecordService.java

@@ -1,13 +1,35 @@
 package com.izouma.dingdong.service;
 
+import com.izouma.dingdong.domain.MoneyRecord;
+import com.izouma.dingdong.domain.User;
+import com.izouma.dingdong.enums.FinancialType;
+import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.MoneyRecordRepo;
+import com.izouma.dingdong.repo.UserRepo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+
 @Service
 @AllArgsConstructor
 public class MoneyRecordService {
 
     private MoneyRecordRepo moneyRecordRepo;
+    private UserRepo        userRepo;
+
+    public void money(Long userId, FinancialType type, BigDecimal amount, String content, String remark) {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
+        if (FinancialType.INCOME.equals(type)) {
+            user.setMoney(user.getMoney().add(amount));
+        } else {
+            user.setMoney(user.getMoney().subtract(amount));
+        }
+        userRepo.save(user);
 
+        moneyRecordRepo.save(MoneyRecord.builder()
+                .content(content)
+                .remark(remark)
+                .build());
+    }
 }

+ 11 - 20
src/main/java/com/izouma/dingdong/service/OrderRefundApplyService.java

@@ -11,7 +11,6 @@ import com.izouma.dingdong.repo.OrderRefundApplyRepo;
 import com.izouma.dingdong.repo.SysConfigRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.merchant.MerchantRepo;
-import com.izouma.dingdong.repo.rider.RiderRepo;
 import com.izouma.dingdong.service.merchant.MerchantSettingsService;
 import com.izouma.dingdong.service.rider.RiderService;
 import com.izouma.dingdong.utils.SnowflakeIdWorker;
@@ -23,7 +22,6 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.List;
 
 
 @Service
@@ -137,14 +135,15 @@ public class OrderRefundApplyService {
                 BigDecimal deliveryAmount = orderInfo.getDeliveryAmount();
                 //骑手收入
                 Long merId = merchantRepo.findUserIdById(orderInfo.getMerchantId());
-                riderService.income(orderInfo.getRiderId(), merId, deliveryAmount, FinancialType.INCOME, apply.getOrderId()
-                        .toString());
+                riderService.income(orderInfo.getRiderId(), merId, deliveryAmount, FinancialType.INCOME, apply
+                        .getOrderId().toString(), RiderMoneyType.PLATFORM_COMPENSATION
+                );
                 //商家支出
                 //User riderUser = userRepo.findById(riderRepo.findUserIdById(orderInfo.getRiderId())).orElseThrow(new BusinessException("无用户"));
                 Long riderUserId = orderInfo.getRiderId();
-                merchantSettingsService.income(apply.getMerchantId(), riderUserId, deliveryAmount, FinancialType.LOSE_MONEY, apply
+                merchantSettingsService.income(apply.getMerchantId(), riderUserId, deliveryAmount, FinancialType.EXPENDITURE, apply
                         .getOrderId()
-                        .toString());
+                        .toString(),"客户退款");
             }
 
         } else {
@@ -178,14 +177,6 @@ public class OrderRefundApplyService {
         orderRefundApplyRepo.save(apply);
     }
 
-    /*
-    商家的所有退款订单
-     */
-    public List<OrderRefundApply> merchantRefund(Long id) {
-        return orderRefundApplyRepo.findAllByMerchantId(id);
-    }
-
-
     //平台
     public void platformAudit(Long applyId, Boolean agree, BigDecimal merchantLiability, BigDecimal riderLiability, Boolean isCarryOut) {
 
@@ -213,17 +204,17 @@ public class OrderRefundApplyService {
             if (!merchantLiability.equals(BigDecimal.ZERO)) {
                 //商家所赔金额
                 BigDecimal merAmount = orderInfo.getRealAmount().multiply(merchantLiability);
-                merchantSettingsService.income(apply.getMerchantId(), orderInfo.getUserId(), merAmount, FinancialType.REFUND, apply
+                merchantSettingsService.income(apply.getMerchantId(), orderInfo.getUserId(), merAmount, FinancialType.EXPENDITURE, apply
                         .getOrderId()
-                        .toString());
+                        .toString(),"违约扣款");
             }
 
             if (!riderLiability.equals(BigDecimal.ZERO)) {
                 //骑手赔付金额
                 BigDecimal riderAmount = orderInfo.getRealAmount().multiply(riderLiability);
-                riderService.income(orderInfo.getRiderId(), orderInfo.getUserId(), riderAmount, FinancialType.REFUND, apply
+                riderService.income(orderInfo.getRiderId(), orderInfo.getUserId(), riderAmount, FinancialType.EXPENDITURE, apply
                         .getOrderId()
-                        .toString());
+                        .toString(), RiderMoneyType.DEDUCTIONS_FOR_VIOLATIONS);
             }
 
             //改状态
@@ -261,12 +252,12 @@ public class OrderRefundApplyService {
         BigDecimal deserve = subtractDelivery.subtract(platform);
         merchantSettingsService.income(orderInfo.getMerchantId(), orderInfo.getUserId(), deserve, FinancialType.INCOME, orderInfo
                 .getId()
-                .toString());
+                .toString(),"用户消费");
 
         //骑手应得
         riderService.income(orderInfo.getRiderId(), orderInfo.getUserId(), orderInfo.getDeliveryAmount(), FinancialType.INCOME, orderInfo
                 .getId()
-                .toString());
+                .toString(), RiderMoneyType.DISTRIBUTION_REVENUE);
     }
 
     /*

+ 1 - 1
src/main/java/com/izouma/dingdong/service/WithdrawApplyService.java

@@ -103,7 +103,7 @@ public class WithdrawApplyService {
                             .name("提现")
                             .userId(withdrawals.getUserId())
                             .time(LocalDateTime.now())
-                            .type(FinancialType.WITHDRAW)
+                            .type(FinancialType.EXPENDITURE)
                             .remark(bankCard.getBankName())
                             .amount(withdrawals.getAmount())
                             .build()

+ 2 - 1
src/main/java/com/izouma/dingdong/service/merchant/MerchantSettingsService.java

@@ -95,7 +95,7 @@ public class MerchantSettingsService {
      * @param type       类型
      * @param remark     备注
      */
-    public void income(Long merchantId, Long fromUserId, BigDecimal amount, FinancialType type, String remark) {
+    public void income(Long merchantId, Long fromUserId, BigDecimal amount, FinancialType type, String remark, String content) {
         //按商户Id找出用户
         User userMer = userRepo.findById(merchantRepo.findUserIdById(merchantId))
                 .orElseThrow(new BusinessException("无用户"));
@@ -117,6 +117,7 @@ public class MerchantSettingsService {
                         .userId(userMer.getId())
                         .fromUserId(fromUserId)
                         .enabled(true)
+                        .content(content)
                         .remark(remark)
                         .build()
         );

+ 13 - 0
src/main/java/com/izouma/dingdong/service/rider/RiderLocationService.java

@@ -0,0 +1,13 @@
+package com.izouma.dingdong.service.rider;
+
+import com.izouma.dingdong.repo.rider.RiderLocationRepo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@AllArgsConstructor
+public class RiderLocationService {
+
+    private RiderLocationRepo riderLocationRepo;
+}

+ 32 - 8
src/main/java/com/izouma/dingdong/service/rider/RiderService.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.*;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.rider.Rider;
+import com.izouma.dingdong.domain.rider.RiderLocation;
 import com.izouma.dingdong.domain.rider.RiderSign;
 import com.izouma.dingdong.dto.RiderDTO;
 import com.izouma.dingdong.dto.RiderDistanceDTO;
@@ -15,6 +16,7 @@ import com.izouma.dingdong.repo.MoneyRecordRepo;
 import com.izouma.dingdong.repo.OrderInfoRepo;
 import com.izouma.dingdong.repo.SysConfigRepo;
 import com.izouma.dingdong.repo.UserRepo;
+import com.izouma.dingdong.repo.rider.RiderLocationRepo;
 import com.izouma.dingdong.repo.rider.RiderRepo;
 import com.izouma.dingdong.repo.rider.RiderSignRepo;
 import com.izouma.dingdong.service.OrderRefundApplyService;
@@ -39,6 +41,7 @@ public class RiderService {
     private OrderRefundApplyService orderRefundApplyService;
     private RiderSignRepo           riderSignRepo;
     private SysConfigRepo           sysConfigRepo;
+    private RiderLocationRepo       riderLocationRepo;
 
 
     /*
@@ -104,6 +107,7 @@ public class RiderService {
                 .longitude(longitude)
                 .riderId(riderId)
                 .signTime(LocalDateTime.now())
+                .takingOrders(false)
                 .build());
     }
 
@@ -116,24 +120,30 @@ public class RiderService {
      * @param type       流水类型
      * @param remark     备注
      */
-    public void income(Long riderId, Long fromUserId, BigDecimal amount, FinancialType type, String remark) {
+    public void income(Long riderId, Long fromUserId, BigDecimal amount, FinancialType type, String remark, RiderMoneyType moneyType) {
         //骑手应得  riderRepo.findUserIdById(riderId)
         User riderUser = userRepo.findById(riderId).orElseThrow(new BusinessException("无用户"));
         riderUser.setMoney(riderUser.getMoney().add(amount));
         userRepo.save(riderUser);
 
-        //购买的user
-        User user = userRepo.findById(fromUserId).orElseThrow(new BusinessException("无用户"));
-
+        String avatar = "";
+        String name = "叮咚外卖平台";
+        if (fromUserId != null) {
+            //购买的user
+            User user = userRepo.findById(fromUserId).orElseThrow(new BusinessException("无用户"));
+            avatar = user.getAvatar();
+            name = user.getNickname();
+        }
         moneyRecordRepo.save(MoneyRecord.builder()
                 .amount(amount)
-                .avatar(user.getAvatar())
-                .name(user.getNickname())
+                .avatar(avatar)
+                .name(name)
                 .type(type)
                 .fromUserId(fromUserId)
                 .userId(riderUser.getId())
                 .time(LocalDateTime.now())
                 .remark(remark)
+                .content(moneyType.toString())
                 .enabled(true)
                 .build());
     }
@@ -177,10 +187,13 @@ public class RiderService {
         订单量相同,距离最近接单
         商家3km内无骑手,取消订单
      */
-    public void dispatch(Long orderId, List<RiderDistanceDTO> dtos) {
+    public void dispatch(Long orderId) {
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
+        //查找骑手位置列表
+        List<RiderLocation> locationList = riderLocationRepo.findAllByCreatedAt(orderInfo.getOrderTime());
+
         Map<Long, Double> map = new HashMap<>();
-        dtos.forEach(d -> {
+        locationList.forEach(d -> {
             Merchant merchant = orderInfo.getMerchant();
             Double distance = MapUtils.distance(merchant.getLongitude(), merchant.getLatitude(), d.getLongitude(), d.getLatitude());
             map.put(d.getRiderId(), distance);
@@ -246,5 +259,16 @@ public class RiderService {
         orderInfoRepo.save(orderInfo);
     }
 
+    /*
+    开始停止接单
+     */
+    public void stop(Long riderId) {
+//        Rider rider = riderRepo.findById(riderId).orElseThrow(new BusinessException("骑手"));
+        RiderSign riderSign = riderSignRepo.findByRiderIdAndTakingOrders(riderId, true);
+        if (ObjectUtil.isNotNull(riderSign)) {
+            riderSign.setTakingOrders(false);
+        }
+
+    }
 
 }

+ 0 - 3
src/main/java/com/izouma/dingdong/web/merchant/MerchantController.java

@@ -1,8 +1,6 @@
 package com.izouma.dingdong.web.merchant;
 
-import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.dto.MerchantDTO;
-import com.izouma.dingdong.repo.merchant.MerchantSettingsRepo;
 import com.izouma.dingdong.service.merchant.MerchantSettingsService;
 import com.izouma.dingdong.utils.SecurityUtils;
 import com.izouma.dingdong.web.BaseController;
@@ -32,7 +30,6 @@ import java.util.Map;
 public class MerchantController extends BaseController {
     private MerchantService merchantService;
     private MerchantRepo merchantRepo;
-    private MerchantSettingsRepo merchantSettingsRepo;
     private MerchantSettingsService merchantSettingsService;
 
     //@PreAuthorize("hasRole('ADMIN')")

+ 8 - 0
src/main/java/com/izouma/dingdong/web/rider/RiderController.java

@@ -10,6 +10,7 @@ import com.izouma.dingdong.repo.rider.RiderRepo;
 import com.izouma.dingdong.utils.ObjUtils;
 import com.izouma.dingdong.utils.excel.ExcelUtils;
 
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -62,8 +63,15 @@ public class RiderController extends BaseController {
     }
 
     @GetMapping("/receiver")
+    @ApiOperation("骑手手动接单")
     public void riderReceiveOrder(Long orderId, Boolean pass) {
         riderService.riderReceiveOrder(SecurityUtils.getAuthenticatedUser().getId(), orderId, pass);
     }
+
+    @GetMapping("/autoReceive")
+    @ApiOperation("无骑手接单,自动分配订单")
+    public void autoReceive(Long orderId) {
+        riderService.dispatch(orderId);
+    }
 }
 

+ 63 - 0
src/main/java/com/izouma/dingdong/web/rider/RiderLocationController.java

@@ -0,0 +1,63 @@
+package com.izouma.dingdong.web.rider;
+
+import com.izouma.dingdong.web.BaseController;
+import com.izouma.dingdong.domain.rider.RiderLocation;
+import com.izouma.dingdong.service.rider.RiderLocationService;
+import com.izouma.dingdong.dto.PageQuery;
+import com.izouma.dingdong.exception.BusinessException;
+import com.izouma.dingdong.repo.rider.RiderLocationRepo;
+import com.izouma.dingdong.utils.ObjUtils;
+import com.izouma.dingdong.utils.excel.ExcelUtils;
+
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@RestController
+@RequestMapping("/riderLocation")
+@AllArgsConstructor
+public class RiderLocationController extends BaseController {
+    private RiderLocationService riderLocationService;
+    private RiderLocationRepo riderLocationRepo;
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/save")
+    public RiderLocation save(@RequestBody RiderLocation record) {
+        if (record.getId() != null) {
+            RiderLocation orig = riderLocationRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            return riderLocationRepo.save(orig);
+        }
+        return riderLocationRepo.save(record);
+    }
+
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @GetMapping("/all")
+    public Page<RiderLocation> all(PageQuery pageQuery) {
+        return riderLocationRepo.findAll(toSpecification(pageQuery,RiderLocation.class), toPageRequest(pageQuery));
+    }
+
+    @GetMapping("/get/{id}")
+    public RiderLocation get(@PathVariable Long id) {
+        return riderLocationRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable Long id) {
+        riderLocationRepo.deleteById(id);
+    }
+
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+        List<RiderLocation> data = all(pageQuery).getContent();
+        ExcelUtils.export(response, data);
+    }
+}
+

+ 1 - 0
src/main/resources/genjson/RiderLocation.json

@@ -0,0 +1 @@
+{"tableName":"RiderLocation","className":"RiderLocation","remark":"骑手位置表","genTable":true,"genClass":true,"genList":false,"genForm":false,"genRouter":false,"javaPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/java/com/izouma/dingdong","viewPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/vue/src/views","routerPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/vue/src","resourcesPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/resources","dataBaseType":"Mysql","fields":[{"name":"createdAt","modelName":"createdAt","remark":"创建时间","showInList":true,"showInForm":true,"formType":"datetime"},{"name":"riderId","modelName":"riderId","remark":"骑手Id","showInList":true,"showInForm":true,"formType":"number"},{"name":"longitude","modelName":"longitude","remark":"经度","showInList":true,"showInForm":true,"formType":"number"},{"name":"latitude","modelName":"latitude","remark":"纬度","showInList":true,"showInForm":true,"formType":"number"}],"readTable":false,"dataSourceCode":"dataSource","genJson":"","subtables":[],"update":false,"basePackage":"com.izouma.dingdong","tablePackage":"com.izouma.dingdong.domain.rider.RiderLocation","genPackage":"rider"}

+ 25 - 0
src/test/java/com/izouma/dingdong/repo/RiderLocationTest.java

@@ -0,0 +1,25 @@
+package com.izouma.dingdong.repo;
+
+import com.izouma.dingdong.domain.rider.RiderLocation;
+import com.izouma.dingdong.repo.rider.RiderLocationRepo;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class RiderLocationTest {
+    @Autowired
+    private RiderLocationRepo riderLocationRepo;
+
+    @Test
+    public void test() {
+        riderLocationRepo.save(RiderLocation.builder()
+                .riderId(1L)
+                .latitude(1.0)
+                .longitude(1.0)
+                .build());
+    }
+}