用户扫码记录
This commit is contained in:
parent
e79a4762dc
commit
f8b201102f
@ -6,6 +6,7 @@ import com.cdzy.common.model.JsonResult;
|
||||
import com.ebike.feign.component.FeignTokenInterceptor;
|
||||
import com.ebike.feign.config.ExampleFeignConfiguration;
|
||||
import com.ebike.feign.model.res.ResFeignOrderPaymentDto;
|
||||
import com.ebike.feign.model.rsp.FeignRideRecord;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -89,4 +90,12 @@ public interface OrdersFeignClient {
|
||||
@GetMapping("userOrders/failRefund")
|
||||
JsonResult<?> failRefund(@RequestParam("orderId")Long orderId);
|
||||
|
||||
/**
|
||||
* 车辆扫码记录
|
||||
* @param bikeId 车辆ID
|
||||
* @return @ {@code 200} 成功,{@code 500} 失败
|
||||
*/
|
||||
@GetMapping("userOrders/getRideRecord")
|
||||
JsonResult<List<FeignRideRecord>> getRideRecord(@RequestParam("bikeId")String bikeId);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.ebike.feign.model.rsp;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author attiya
|
||||
* @since 2025-08-01
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class FeignRideRecord {
|
||||
|
||||
private LocalDateTime rideTime;
|
||||
|
||||
private String ridePoint;
|
||||
|
||||
private String userName;
|
||||
|
||||
private String phone;
|
||||
|
||||
}
|
||||
@ -4,15 +4,17 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cdzy.common.model.EcuSnDto;
|
||||
import com.cdzy.common.model.JsonResult;
|
||||
import com.cdzy.common.model.ResGPSDto;
|
||||
import com.cdzy.common.utils.ConvertUtil;
|
||||
import com.cdzy.ebikemaintenance.model.dto.request.*;
|
||||
import com.cdzy.ebikemaintenance.model.dto.response.*;
|
||||
import com.cdzy.ebikemaintenance.model.pojo.*;
|
||||
import com.cdzy.ebikemaintenance.service.*;
|
||||
import com.cdzy.common.utils.ConvertUtil;
|
||||
import com.cdzy.ebikemaintenance.utils.MinioUtil;
|
||||
import com.cdzy.ebikemaintenance.utils.RedisUtil;
|
||||
import com.ebike.feign.clients.OrdersFeignClient;
|
||||
import com.ebike.feign.model.res.ReqEcuSnDto;
|
||||
import com.ebike.feign.model.rsp.EbikeBikeBaseInfo;
|
||||
import com.ebike.feign.model.rsp.FeignRideRecord;
|
||||
import com.ebike.feign.model.rsp.RspBikeInfo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
@ -20,7 +22,6 @@ import com.mybatisflex.core.update.UpdateChain;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@ -46,6 +47,9 @@ public class EbikeBikeInfoController {
|
||||
@Resource
|
||||
private EbikeBikeInfoService ebikeBikeInfoService;
|
||||
|
||||
@Resource
|
||||
private OrdersFeignClient ordersFeignClient;
|
||||
|
||||
@Resource
|
||||
private EbikeEcuInfoService ebikeEcuInfoService;
|
||||
|
||||
@ -622,7 +626,7 @@ public class EbikeBikeInfoController {
|
||||
try {
|
||||
return JsonResult.success(ebikeBikeInfoService.getOrientationInfo(reqEbikeGetBikeDetailsDto));
|
||||
} catch (Exception e) {
|
||||
log.error("getOrientationInfo===>" + e.getMessage() + Arrays.toString(e.getStackTrace()));
|
||||
log.error("getOrientationInfo===>{}{}", e.getMessage(), Arrays.toString(e.getStackTrace()));
|
||||
return JsonResult.failed("获取信息失败");
|
||||
}
|
||||
}
|
||||
@ -912,7 +916,7 @@ public class EbikeBikeInfoController {
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
|
||||
/**
|
||||
* 根据车辆id将车辆设置为待使用状态
|
||||
@ -929,5 +933,16 @@ public class EbikeBikeInfoController {
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
* 根据车辆id将车辆设置为待使用状态
|
||||
*
|
||||
* @param bikeId 车辆id
|
||||
* @return 结果
|
||||
*/
|
||||
@GetMapping("getRideRecord")
|
||||
JsonResult<?> getRideRecord(@RequestParam("bikeId") String bikeId) {
|
||||
JsonResult<List<FeignRideRecord>> rideRecord = ordersFeignClient.getRideRecord(bikeId);
|
||||
return JsonResult.success(rideRecord.getData());
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList;
|
||||
import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
import com.cdzy.orders.service.UserOrdersService;
|
||||
import com.ebike.feign.model.res.ResFeignOrderPaymentDto;
|
||||
import com.ebike.feign.model.rsp.FeignRideRecord;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -291,9 +292,18 @@ public class EbikeUserOrdersController {
|
||||
*/
|
||||
@GetMapping("getRefundOrderInfo/{orderId}")
|
||||
public JsonResult<?> getRefundOrderInfo(@PathVariable("orderId") String orderId) {
|
||||
|
||||
|
||||
EbikeUserOrders userOrders = userOrdersService.getById(orderId);
|
||||
return JsonResult.success(userOrders);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取车辆扫码记录
|
||||
* @param bikeId 车辆id
|
||||
* @return 结果
|
||||
*/
|
||||
@GetMapping("getRideRecord")
|
||||
public JsonResult<?> getRideRecord(@RequestParam("bikeId") String bikeId) {
|
||||
List<FeignRideRecord> record = userOrdersService.getRideRecord(bikeId);
|
||||
return JsonResult.success(record);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList;
|
||||
import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
import com.ebike.feign.model.res.ResFeignOrderPaymentDto;
|
||||
import com.ebike.feign.model.rsp.FeignRideRecord;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -144,4 +145,11 @@ public interface UserOrdersService extends IService<EbikeUserOrders> {
|
||||
* @return 站点列表
|
||||
*/
|
||||
JsonResult<?> siteRegionList(ReqSiteDto siteDto);
|
||||
|
||||
/**
|
||||
* 获取车辆扫码记录
|
||||
* @param bikeId 车辆id
|
||||
* @return 扫码记录
|
||||
*/
|
||||
List<FeignRideRecord> getRideRecord(String bikeId);
|
||||
}
|
||||
|
||||
@ -1,12 +1,19 @@
|
||||
package com.cdzy.orders.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cdp.product.security.context.SecurityContext;
|
||||
import com.cdp.product.security.exception.DecryptFailureException;
|
||||
import com.cdp.product.security.exception.EncryptFailureException;
|
||||
import com.cdp.product.security.exception.SignFailureException;
|
||||
import com.cdp.product.security.strategyImpl.SM2StrategyImpl;
|
||||
import com.cdzy.common.enums.Code;
|
||||
import com.cdzy.common.model.EcuSnDto;
|
||||
import com.cdzy.common.model.JsonResult;
|
||||
import com.cdzy.common.model.ReqBatchRegionDto;
|
||||
import com.cdzy.common.model.ResGPSDto;
|
||||
import com.cdzy.orders.component.EbikeCoreHandler;
|
||||
import com.cdzy.orders.config.RealNameVerifyConfig;
|
||||
import com.cdzy.orders.enums.*;
|
||||
import com.cdzy.orders.mapper.EbikeOrderDetailsMapper;
|
||||
import com.cdzy.orders.mapper.UserOrdersMapper;
|
||||
@ -20,6 +27,7 @@ import com.cdzy.orders.service.UserOrdersService;
|
||||
import com.cdzy.orders.uitls.NumberUtils;
|
||||
import com.cdzy.orders.uitls.RedisUtil;
|
||||
import com.cdzy.orders.uitls.TimeUtils;
|
||||
import com.cdzy.orders.uitls.VerifyUtil;
|
||||
import com.ebike.feign.clients.MaintenanceFeignClient;
|
||||
import com.ebike.feign.clients.OperateFeignClient;
|
||||
import com.ebike.feign.model.res.ResFeignEbikeSysRcostsetDto;
|
||||
@ -31,17 +39,17 @@ import com.mybatisflex.core.keygen.impl.SnowFlakeIDKeyGenerator;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@ -49,6 +57,8 @@ import java.util.stream.Collectors;
|
||||
import static com.cdzy.orders.enums.TimeDivisionCharging.TIME_SLOT;
|
||||
import static com.cdzy.orders.enums.TimeDivisionCharging.WEEK;
|
||||
import static com.cdzy.orders.model.entity.table.EbikeUserOrdersTableDef.EBIKE_USER_ORDERS;
|
||||
import static com.cdzy.orders.model.entity.table.EbikeUserRealinfoTableDef.EBIKE_USER_REALINFO;
|
||||
import static com.cdzy.orders.model.entity.table.EbikeUserTableDef.EBIKE_USER;
|
||||
|
||||
/**
|
||||
* 用户订单表 服务层实现。
|
||||
@ -56,6 +66,7 @@ import static com.cdzy.orders.model.entity.table.EbikeUserOrdersTableDef.EBIKE_U
|
||||
* @author attiya
|
||||
* @since 2025-03-28
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUserOrders> implements UserOrdersService {
|
||||
|
||||
@ -80,8 +91,13 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
|
||||
@Resource
|
||||
EbikePaymentService paymentService;
|
||||
|
||||
@Resource
|
||||
private VerifyUtil verifyUtil;
|
||||
|
||||
private static final SnowFlakeIDKeyGenerator snowFlakeIDKeyGenerator = new SnowFlakeIDKeyGenerator();
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Long saveRide(ReqOrderDto orderDto) {
|
||||
@ -733,4 +749,43 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
|
||||
}
|
||||
return operateFeignClient.selectSiteListByOperationRegionId(Long.valueOf(operationId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FeignRideRecord> getRideRecord(String bikeId) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.select(
|
||||
EBIKE_USER_ORDERS.START_TIME.as(FeignRideRecord::getRideTime),
|
||||
EBIKE_USER_ORDERS.RIDE_POINT.as(FeignRideRecord::getRidePoint),
|
||||
EBIKE_USER_REALINFO.USER_REAL_NAME.as(FeignRideRecord::getUserName),
|
||||
EBIKE_USER.MOBILE.as(FeignRideRecord::getPhone)
|
||||
)
|
||||
.from(EBIKE_USER_ORDERS)
|
||||
.where(EBIKE_USER_ORDERS.BIKE_ID.eq(bikeId))
|
||||
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_USER_ORDERS.USER_ID))
|
||||
.leftJoin(EBIKE_USER_REALINFO).on(EBIKE_USER_REALINFO.USER_ID.eq(EBIKE_USER_ORDERS.USER_ID));
|
||||
List<FeignRideRecord> records = userOrdersMapper.selectListByQueryAs(queryWrapper, FeignRideRecord.class);
|
||||
for (FeignRideRecord record : records) {
|
||||
try {
|
||||
String realName = verifyUtil.decryptRealName(record.getUserName());
|
||||
record.setUserName(maskString(realName,'*'));
|
||||
} catch (DecryptFailureException e) {
|
||||
log.error("结果解密失败", e);
|
||||
throw new RuntimeException("结果解密失败");
|
||||
}
|
||||
}
|
||||
return records;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字符串除首位外的字符替换为指定字符
|
||||
*/
|
||||
public static String maskString(String str, char maskChar) {
|
||||
if (str == null || str.isEmpty()) {
|
||||
return str; // 返回空或null值
|
||||
}
|
||||
|
||||
// 创建掩码字符串:首字符 + 重复的掩码字符
|
||||
return str.charAt(0) +
|
||||
String.valueOf(maskChar).repeat(str.length() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -306,4 +306,12 @@ public class VerifyUtil {
|
||||
}
|
||||
return secureComponent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密用户真名
|
||||
* @return 真名
|
||||
*/
|
||||
public String decryptRealName(String name) throws DecryptFailureException {
|
||||
return securityContext.decrypt(name,privateKey);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.cdzy.orders.mapper.UserOrdersMapper;
|
||||
import com.cdzy.orders.model.dto.res.ResOperationInAllDto;
|
||||
import com.cdzy.orders.model.dto.res.TimeSegment;
|
||||
import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
import com.cdzy.orders.service.UserOrdersService;
|
||||
import com.cdzy.orders.uitls.RedisUtil;
|
||||
import com.ebike.feign.clients.OperateFeignClient;
|
||||
import com.ebike.feign.model.res.ResFeignEbikeSysRcostsetDto;
|
||||
@ -155,4 +156,10 @@ class EbikeOrdersApplicationTests {
|
||||
System.out.println("成功");
|
||||
}
|
||||
|
||||
@Test
|
||||
void check() {
|
||||
boolean checked = redisUtil.isPointInOperation(103.915756, 30.572008, 258106438092689409L, 275024268783185920L);
|
||||
System.out.println("是否在运营区内:" + checked);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user