Merge remote-tracking branch 'origin/main'

This commit is contained in:
attiya 2025-04-29 09:08:21 +08:00
commit 80bda515df
16 changed files with 785 additions and 9 deletions

View File

@ -24,10 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.*;
import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeBatteryInfoTableDef.EBIKE_BATTERY_INFO;
import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeHelmetInfoTableDef.EBIKE_HELMET_INFO;
@ -823,8 +820,17 @@ public class EbikeBikeInfoController {
public JsonResult<?> updateVehicleStatus(@RequestBody ReqVehicleStatusUpdateDto request) {
// 调用服务层方法执行车辆状态修改操作
return ebikeBikeInfoService.updateVehicleStatus(request);
}
/**
* 完成投放
*
* @param request 完成投放请求参数 orderId
* @return
*/
@PostMapping("completeDeployment")
public JsonResult<?> completeDeployment(@RequestBody Map<String,Object> request) {
// 调用服务层方法执行完成投放操作
return ebikeBikeInfoService.completeDeployment(request);
}
}

View File

@ -11,6 +11,7 @@ import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import java.util.List;
import java.util.Map;
/**
* 车辆基本信息 服务层
@ -278,4 +279,13 @@ public interface EbikeBikeInfoService extends IService<EbikeBikeInfo> {
* @return
*/
JsonResult<?> updateVehicleStatus(ReqVehicleStatusUpdateDto queryParam);
/**
* 完成投放
*
* @param param 完成投放请求参数 orderId
* @return
*/
JsonResult<?> completeDeployment(Map<String,Object> param);
}

View File

@ -1,6 +1,7 @@
package com.cdzy.ebikemaintenance.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson2.JSONObject;
import com.cdzy.common.enums.Code;
import com.cdzy.common.model.CoreResult;
@ -1334,6 +1335,37 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
} else {
return JsonResult.failed("车辆状态修改失败");
}
}
/**
* 完成投放
*
* @param param 完成投放请求参数 orderId
* @return
*/
public JsonResult<?> completeDeployment(Map<String,Object> param) {
String orderId = MapUtil.getStr(param, "orderId");
//根据orderId 完成订单
EbikeBikeOrder ebikeBikeOrder = new EbikeBikeOrder();
ebikeBikeOrder.setOrderId(orderId);
ebikeBikeOrder.setHandleState("1");
ebikeBikeOrder.setUpdatedAt(LocalDateTime.now());
ebikeBikeOrderMapper.update(ebikeBikeOrder);
//根据订单ID 查出需要投放的车辆 进行修改状态
QueryWrapper query = QueryWrapper.create();
query.eq("order_id",orderId);
List<EbikeDispatchRecords> ebikeDispatchRecords = ebikeDispatchRecordsMapper.selectListByQuery(query);
for (EbikeDispatchRecords ebikeDispatchRecord : ebikeDispatchRecords) {
ebikeDispatchRecord.setDispatchState("1");
ebikeDispatchRecordsMapper.update(ebikeDispatchRecord);
ReqVehicleStatusUpdateDto reqVehicleStatusUpdateDto = new ReqVehicleStatusUpdateDto();
reqVehicleStatusUpdateDto.setBikeCode(ebikeDispatchRecord.getBikeCode());
reqVehicleStatusUpdateDto.setState("2");
updateVehicleStatus(reqVehicleStatusUpdateDto);
}
return JsonResult.success("投放成功");
}
}

View File

@ -1,6 +1,7 @@
package com.cdzy.ebikeoperate.controller;
import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRoperatesetsDto;
import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSysRoperatesetsDto;
import com.cdzy.ebikeoperate.model.pojo.EbikeSysRoperateset;
import com.cdzy.ebikeoperate.service.EbikeSysRoperatesetService;
import org.springframework.beans.factory.annotation.Autowired;
@ -36,8 +37,15 @@ public class EbikeSysRoperatesetController {
* @param ebikeSysRoperateset 区域运营信息配置表
* @return {@code true} 更新成功{@code false} 更新失败
*/
@PutMapping("update")
@PostMapping("update")
public boolean update(@RequestBody EbikeSysRoperateset ebikeSysRoperateset) {
return ebikeSysRoperatesetService.updateById(ebikeSysRoperateset);
}
@RequestMapping("getRegionConfigById")
public ResEbikeSysRoperatesetsDto getRegionConfigById(@RequestParam(value = "regionId")
String regionId) {
ResEbikeSysRoperatesetsDto resEbikeSysRoperatesetsDto = new ResEbikeSysRoperatesetsDto();
return resEbikeSysRoperatesetsDto;
}
}

View File

@ -0,0 +1,37 @@
package com.cdzy.ebikeoperate.model.dto.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 运营配置运营类型 查询参数
*
* @author dingchao
* @date 2025/4/15
* @modified by:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ReqEbikeSysOperateSetSaveDto {
/**
* 区域ID
*/
private String reginId;
/**
* 星期几;,分隔null为按时间段运营
*/
private String weekday;
/**
* 工作开始时间;HH:mm:ss
*/
private String startWorktime;
/**
* 工作结束时间;HH:mm:ss
*/
private String endWorktime;
}

View File

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author:Ding
@ -202,4 +203,8 @@ public class ReqEbikeSysRoperatesetDto implements Serializable {
*/
private LocalDateTime stopEndTime;
/**
* 按周运营时间配置列表
*/
private List<ReqEbikeSysOperateSetSaveDto> operateTimeByWeek;
}

View File

@ -0,0 +1,36 @@
package com.cdzy.ebikeoperate.model.dto.response;
import lombok.Data;
import java.io.Serializable;
/**
* 区域电话客服设置表 实体类
*
* @author user
* @since 2025-04-28
*/
@Data
public class ResEbikeSysLinktelDto implements Serializable {
/**
* 区域ID
*/
private String reginId;
/**
* 电话号码
*/
private String telnum;
/**
* 工作时间()
*/
private String worktimeStart;
/**
* 工作时间()
*/
private String worktimeEnd;
}

View File

@ -0,0 +1,38 @@
package com.cdzy.ebikeoperate.model.dto.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 运营配置运营类型 查询参数
*
* @author dingchao
* @date 2025/4/15
* @modified by:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResEbikeSysOperateSetDto {
/**
* 区域ID
*/
private String reginId;
/**
* 星期几;,分隔null为按时间段运营
*/
private String weekday;
/**
* 工作开始时间;HH:mm:ss
*/
private String startWorktime;
/**
* 工作结束时间;HH:mm:ss
*/
private String endWorktime;
}

View File

@ -0,0 +1,93 @@
package com.cdzy.ebikeoperate.model.dto.response;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 区域还车配置表 实体类
*
* @author user
* @since 2025-04-28
*/
@Data
public class ResEbikeSysRbacksetDto implements Serializable {
/**
* 区域ID
*/
private String reginId;
/**
* 是否站点还车
*/
private String isSite;
/**
* 默认还车距离;1是 0否
*/
private BigDecimal returnDistance;
/**
* 规范停车强制还车;1是 0否
*/
private String forceRegular;
/**
* 是否90度停车;1是 0否
*/
private String parkNinety;
/**
* 规范还车智能跳过;1是 0否
*/
private String ignoreRegular;
/**
* 还车判断用户坐标;1是 0否
*/
private String location;
/**
* 用户与车辆距离
*/
private BigDecimal distance;
/**
* 学习免调度费还车;1是 0否
*/
private String freeDispatchStudy;
/**
* AI拍照是否在站点内;1是 0否
*/
private String photoInStation;
/**
* 站点偏移角度误差
*/
private Integer angulaOffsetError;
/**
* 规范还车失败跳过次数
*/
private Integer ignoreRegularErrorCount;
/**
* 规范还车跳过类型
*/
private String ignoreRegularType;
/**
* 学习免调度费还车类型
*/
private String freeReturnType;
/**
* 学习免调度费次数
*/
private String freeDispatchCount;
}

View File

@ -0,0 +1,56 @@
package com.cdzy.ebikeoperate.model.dto.response;
import lombok.Data;
import java.io.Serializable;
/**
* 区域锁车配置表 实体类
*
* @author user
* @since 2025-04-28
*/
@Data
public class ResEbikeSysRlocksetDto implements Serializable {
/**
* 区域ID
*/
private String reginId;
/**
* 自动锁车分钟
*/
private Integer autoLock;
/**
* 临时锁车自动还车分钟
*/
private Integer autoReturn;
/**
* 自动还车配置;0自动锁车 1先临时锁车再自动还
*/
private String autoReturnType;
/**
* 有单无坐标自动锁车分钟
*/
private Integer autoLockNolocation;
/**
* 开启自动锁车监控;1是 0否
*/
private String autoLockMonitor;
/**
* 超区临时锁车限制;1是 0否
*/
private String limitOverZone;
/**
* 车辆断电检测频率
*/
private Integer powerChecking;
}

View File

@ -0,0 +1,205 @@
package com.cdzy.ebikeoperate.model.dto.response;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author:Ding
* @ClassName:ReqEbikeSysRoperatesetDto
* @Package:com.cdzy.ebikeoperate.model.pojo.request.ReqEbikeSysRoperatesetDto
* @Description:
* @CreateDate:2025年04月09日
* @Version:V1.0
**/
@Data
public class ResEbikeSysRoperatesetDto implements Serializable {
/**
* 区域ID
*/
private String reginId;
/**
* 是否运营;1运营中 0停止运营
*/
private String isOperate;
/**
* 运营类型;0默认 1按时间段运营 2按周运营
*/
private String operateType;
/**
* 停运公告;类型为0时null
*/
private String stopInfo;
/**
* 访问渠道;每一位表示一种支付是支持否不支持
*/
private String channel;
/**
* 认证条件;0默认 1实名认证 2学生认证 3无需认证
*/
private String authCondition;
/**
* 是否首单免费;1是 0否
*/
private String firstFree;
/**
* 是否首单免调度费;1是 0否
*/
private String firstFreeDispatch;
/**
* 免费时长不计入计费时长;1是 0否
*/
private String freeNotRecord;
/**
* 每日免费次数;0为不限制大于0为免费次数使用次数
*/
private Integer freeEveryday;
/**
* 实名开启人脸识别;1是 0否
*/
private String faceRecogintion;
/**
* 是否收取押金;1是 0否
*/
private String deposit;
/**
* 违章罚款限制骑行;1是 0否
*/
private String violationFine;
/**
* 违章最低限制笔数
*/
private Integer minVoliation;
/**
* 地图显示附近车辆;1是 0否
*/
private String showNearbyBike;
/**
* 地图显示附近站点;1是 0否
*/
private String showNearbyStation;
/**
* 是否开启订单申诉;1是 0否
*/
private String orderAppeal;
/**
* 扣款优先使用余额;1是 0否
*/
private String balancePrefer;
/**
* 是否开启充值;1是 0否
*/
private String enableRecharge;
/**
* 地图车辆显示电量;1是 0否
*/
private String showElectricity;
/**
* 开启余额退款;1是 0否
*/
private String balanceRefund;
/**
* 开启车辆分账;1是 0否
*/
private String splitBilling;
/**
* 开启用户申请开票;1是 0否
*/
private String userApplyIncoice;
/**
* 用车前学习;1是 0否
*/
private String useStudy;
/**
* 是否显示保险信息;1是 0否
*/
private String showEnsuracy;
/**
* 扫码后详情显示;1是 0否
*/
private String showDetails;
/**
* 扫码后直接开锁;1是 0否
*/
private String openLockDirect;
/**
* 充值规则;默认5,10,20,50,100,200
*/
private String rechargeRule;
/**
* 在线客服;1开启 0关闭
*/
private String onlineService;
/**
* 首单免费金额
*/
private BigDecimal firstFreeAmount;
/**
* 申诉照片必传
*/
private String appealPicture;
/**
* 开票开始时间
*/
private String issueAnInvoiceStartTime;
/**
* 0公里申诉自动退款
*/
private String automaticRefund;
/**
* 余额退款自动通过
*/
private String balanceAutomaticRefund;
/**
* 余额退款扣减赠送金
*/
private String deductionGift;
/**
* 停运时间起
*/
private LocalDateTime stopStartTime;
/**
* 停运时间止
*/
private LocalDateTime stopEndTime;
}

View File

@ -0,0 +1,45 @@
package com.cdzy.ebikeoperate.model.dto.response;
import com.cdzy.ebikeoperate.model.dto.request.*;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author:Ding
* @ClassName:ReqEbikeSysRcostsetWeekDto
* @Package:com.cdzy.ebikeoperate.model.pojo.request.ReqEbikeSysRcostsetWeekDto
* @Description:区域费用配置-分时段配置
* @CreateDate:2025年04月09日
* @Version:V1.0
**/
@Data
public class ResEbikeSysRoperatesetsDto implements Serializable {
/**
* 运营区域配置信息
*/
private ResEbikeSysRoperatesetDto resEbikeSysRoperatesetDto;
/**
* 用车配置
*/
private ResEbikeSysRusecondsetDto resEbikeSysRusecondsetDto;
/**
* 锁车配置
*/
private ResEbikeSysRlocksetDto resEbikeSysRlocksetDto;
/**
* 还车配置
*/
private ResEbikeSysRbacksetDto resEbikeSysRbacksetDto;
/**
* 客服电话配置
*/
private List<ResEbikeSysLinktelDto> resEbikeSysLinktelDtos;
}

View File

@ -0,0 +1,202 @@
package com.cdzy.ebikeoperate.model.dto.response;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 区域用车配置表 实体类
*
* @author user
* @since 2025-04-28
*/
@Data
public class ResEbikeSysRusecondsetDto implements Serializable {
/**
* 区域ID
*/
private String reginId;
/**
* 禁止用户借车电量;百分比默认30
*/
private BigDecimal minPower;
/**
* 是否充值后用车;1是 0否
*/
private String useRecharge;
/**
* 开启待支付充值;1是 0否
*/
private String pendingRecharge;
/**
* 骑行开启人脸识别;1是 0否
*/
private String ridingFaceRecognition;
/**
* 还车开启人脸识别;1是 0否
*/
private String overFaceRecognition;
/**
* 开启自动扣款;1是 0否
*/
private String autoDeduction;
/**
* 开启先付款后还车;1是 0否
*/
private String payFirst;
/**
* 车辆无坐标开放骑行;1是 0否
*/
private String enableNoLocation;
/**
* 低电骑行断电电量;低电骑行断电电量
*/
private BigDecimal poweroffCapcity;
/**
* 购买免押卡用车;1开启 0关闭
*/
private String nodepositCard;
/**
* 借车限制距离;0为不限制
*/
private BigDecimal limitDistance;
/**
* 是否同步电量里程;1是 0否
*/
private String synicCapcityMileage;
/**
* 区域外是否可用车;1是 0否
*/
private String useOuter;
/**
* 骑行超区临时通电;1是 0否
*/
private String outerTempRecharge;
/**
* 开启智能头盔;1是 0否
*/
private String smartHelmet;
/**
* 超区是否允许打开头盔;1是 0否
*/
private String outerOpenHelmet;
/**
* 开启自动弹出头盔;1是 0否
*/
private String autoPopupHelmet;
/**
* 头盔不在位用车限制;1是 0否
*/
private String nohelmetLimit;
/**
* 开启强制归还头盔;1是 0否
*/
private String forceHelmetReturn;
/**
* 是否取头盔通电;1是 0否
*/
private String poweronHelmetTaking;
/**
* 是否佩戴头盔通电;1是 0否
*/
private String poweronHelmetPutting;
/**
* 临时锁车需要归还头盔;1是 0否
*/
private String returnHelmetTempLock;
/**
* 桩位外是否可借车;1是 0否
*/
private String borrowOutside;
/**
* 调度中禁止骑行;1是 0否
*/
private String forbidWhileDispatch;
/**
* 是否关闭还车区域限制;1是 0否
*/
private String disableReturnLimit;
/**
* 是否开启道钉断电;1是 0否
*/
private String spikePoweroff;
/**
* 禁行区不可借车;1是 0否
*/
private String forbidZoneNoborrow;
/**
* 用车最低余额
*/
private BigDecimal minimumAmount;
/**
* 人脸验证间隔
*/
private String verificationInterval;
/**
* 智能跳过人脸开关
*/
private String intelligentSkipping;
/**
* 跳过人脸错误次数
*/
private Integer skipErrorCount;
/**
* 跳过人脸时间
*/
private Integer skipTime;
/**
* 是否开启低电提醒
*/
private String lowBatteryReminder;
/**
* 低电提醒频率
*/
private Integer lowBatteryReminderFrequency;
/**
* 区域外可用车时间
*/
private Integer useOutTime;
/**
* 区域外临时通电时间
*/
private Integer outTempPoweredOnTime;
}

View File

@ -2,6 +2,7 @@ package com.cdzy.ebikeoperate.service.impl;
import com.cdzy.ebikeoperate.mapper.EbikeSysLinktelMapper;
import com.cdzy.ebikeoperate.mapper.EbikeSysOperateSetMapper;
import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRoperatesetDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRoperatesetsDto;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
@ -61,6 +62,8 @@ public class EbikeSysRoperatesetServiceImpl extends ServiceImpl<EbikeSysRoperate
@Override
public Boolean save(ReqEbikeSysRoperatesetsDto reqEbikeSysRoperatesetsDto) {
ReqEbikeSysRoperatesetDto reqEbikeSysRoperatesetDto = reqEbikeSysRoperatesetsDto.getReqEbikeSysRoperatesetDto();
return null;
}
}

View File

@ -38,7 +38,7 @@ public class EbikeUser implements Serializable {
/**
* OPENID
*/
private String openid;
private String openId;
/**
* 手机号

View File

@ -31,7 +31,7 @@ public class EbikeUserServiceImpl extends ServiceImpl<EbikeUserMapper, EbikeUser
@Override
public EbikeUser getUserByOpenId(String openId) {
QueryWrapper query = QueryWrapper.create();
query.and(EBIKE_USER.OPENID.eq(openId));
query.and(EBIKE_USER.OPEN_ID.eq(openId));
return ebikeUserMapper.selectOneByQuery(query);
}