1、新增小程序相关接口

2、调整OA
This commit is contained in:
2026-09-18 16:31:37 +08:00
parent 0fa0eae43c
commit 01993779a7
71 changed files with 6463 additions and 213 deletions
@@ -73,6 +73,7 @@ public interface ISysClient {
String REGION = API_PREFIX + "/region";
String FEE_ITEMS = API_PREFIX + "/fee-items";
String CARGO_TYPES = API_PREFIX + "/cargo-types";
String PERMISSIONS = API_PREFIX + "/permissions";
/**
* 获取菜单
@@ -316,4 +317,13 @@ public interface ISysClient {
@GetMapping(CARGO_TYPES)
R<List<CargoType>> getCargoTypes();
/**
* 获取角色权限标识集合(按钮编号)
*
* @param roleId 角色id
* @return 权限标识
*/
@GetMapping(PERMISSIONS)
R<List<String>> getPermissions(@RequestParam("roleId") String roleId);
}
@@ -174,4 +174,9 @@ public class ISysClientFallback implements ISysClient {
return R.fail("获取数据失败");
}
@Override
public R<List<String>> getPermissions(String roleId) {
return R.fail("获取数据失败");
}
}
@@ -0,0 +1,66 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.system.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* OA人员分页同步结果
*
* @author Chill
*/
@Data
@Schema(description = "OA人员分页同步结果")
public class OaPersonSyncPageVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "当前页")
private Integer current;
@Schema(description = "每页条数")
private Integer size;
@Schema(description = "OA人员总条数")
private Long total;
@Schema(description = "本页从OA拉取的条数")
private Integer fetchedCount;
@Schema(description = "本页同步成功条数")
private Integer syncedCount;
@Schema(description = "本页跳过条数")
private Integer skippedCount;
@Schema(description = "是否已到最后一页")
private Boolean finished;
}
@@ -0,0 +1,30 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
@Schema(description = "调度端司机搜索项")
public class AdminDriverOptionVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "司机ID")
private Long id;
@Schema(description = "姓名")
private String name;
@Schema(description = "手机号")
private String phone;
@Schema(description = "绑定车牌")
private String vehicleNo;
}
@@ -0,0 +1,47 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 调度端首页快捷入口角标
*/
@Data
@Schema(description = "调度端首页角标")
public class AdminHomeBadgesVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "异常处置待办数(disposalStatus≠completed")
private long exception;
@Schema(description = "风险记录待办数(disposalStatus=pending")
private long risk;
}
@@ -0,0 +1,53 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 调度端首页顶部统计(对齐小程序 admin/home
*/
@Data
@Schema(description = "调度端首页运单状态统计")
public class AdminHomeStatsVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "运输中(businessStatus=running")
private long transporting;
@Schema(description = "待接单(businessStatus=pending")
private long pendingAccept;
@Schema(description = "在途异常(异常处置状态≠已完成)")
private long exception;
@Schema(description = "已完成(businessStatus=completed")
private long completed;
}
@@ -0,0 +1,55 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 调度端首页聚合数据(统计 + 角标 + 待处理 feed + 用户名)
*/
@Data
@Schema(description = "调度端首页聚合")
public class AdminHomeVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "当前登录用户姓名")
private String userName;
@Schema(description = "顶部运单状态统计")
private AdminHomeStatsVO stats = new AdminHomeStatsVO();
@Schema(description = "快捷入口角标")
private AdminHomeBadgesVO badges = new AdminHomeBadgesVO();
@Schema(description = "待处理事项(异常处置状态≠已完成)")
private List<AdminTodoItemVO> feed = new ArrayList<>();
}
@@ -0,0 +1,65 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 调度端首页「待处理事项」条目
*/
@Data
@Schema(description = "调度端首页待处理事项")
public class AdminTodoItemVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "条目ID(异常处置ID")
private Long id;
@Schema(description = "类型:exception=异常待处置 / reassign=重新派单待处理")
private String type;
@Schema(description = "标题")
private String title;
@Schema(description = "相对时间文案,如「2分钟」")
private String timeAgo;
@Schema(description = "摘要描述")
private String desc;
@Schema(description = "运单号")
private String waybillNo;
@Schema(description = "操作按钮文案")
private String actionLabel;
@Schema(description = "跳转路径(小程序内路径)")
private String targetUrl;
}
@@ -0,0 +1,24 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
@Schema(description = "调度端车牌搜索项")
public class AdminVehicleOptionVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "车牌号")
private String vehicleNo;
@Schema(description = "关联司机名(可选)")
private String driverName;
}
@@ -0,0 +1,95 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 调度端运单列表卡片(对齐小程序 admin/waybill-list
*/
@Data
@Schema(description = "调度端运单列表卡片")
public class AdminWaybillCardVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "运单ID")
private Long id;
@Schema(description = "运单号")
private String waybillNo;
@Schema(description = "起点")
private String fromName;
@Schema(description = "终点")
private String toName;
@Schema(description = "货物名称")
private String cargo;
@Schema(description = "重量(带单位)")
private String weight;
@Schema(description = "计划开始时间")
private String planTime;
@Schema(description = "计划结束时间")
private String planTimeEnd;
@Schema(description = "状态:0待接单/1运输中/2已完成/3已取消")
private Integer status;
@Schema(description = "承运方")
private String carrierName;
@Schema(description = "司机姓名")
private String driverName;
@Schema(description = "车牌号")
private String vehicleNo;
@Schema(description = "是否有未完成异常")
private Boolean hasException;
@Schema(description = "运输组织类型:common普通 / load配载")
private String transportType;
@Schema(description = "运输方式:road / 公路运输 / 铁路运输 等")
private String transportMode;
@Schema(description = "创建时间")
private String createTime;
@Schema(description = "需重新派单(司机已拒单)")
private Boolean needReassign;
@Schema(description = "采购方是否已付款(预留)")
private Boolean buyerPaid;
}
@@ -0,0 +1,154 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.transport.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 调度端运单详情(对齐小程序 pages/waybill/detail
*/
@Data
@Schema(description = "调度端运单详情")
public class AdminWaybillDetailVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "运单ID")
private Long id;
@Schema(description = "运单号")
private String waybillNo;
@Schema(description = "状态:0待接单/1运输中/2已完成/3已取消")
private Integer status;
@Schema(description = "起点名称")
private String fromName;
@Schema(description = "终点名称")
private String toName;
@Schema(description = "起点地址")
private String fromAddress;
@Schema(description = "终点地址")
private String toAddress;
@Schema(description = "装货地址")
private String pickupAddress;
@Schema(description = "卸货地址")
private String unloadAddress;
@Schema(description = "货物名称")
private String cargoName;
@Schema(description = "货物数量(带单位)")
private String cargoQuantity;
@Schema(description = "重量(带单位)")
private String weight;
@Schema(description = "合计货重")
private String totalWeight;
@Schema(description = "运输方式文案:公路运输 / 铁路运输 等")
private String transportType;
@Schema(description = "运输方式字典值:road 等")
private String transportMode;
@Schema(description = "运输组织:common普通 / load配载")
private String transportOrgType;
@Schema(description = "计划发货时间")
private String planShipTime;
@Schema(description = "计划完成时间")
private String planFinishTime;
@Schema(description = "承运方")
private String carrierName;
@Schema(description = "司机姓名")
private String driverName;
@Schema(description = "司机联系方式")
private String driverPhone;
@Schema(description = "车牌号")
private String vehicleNo;
@Schema(description = "备注")
private String remark;
@Schema(description = "是否有未完成异常")
private Boolean hasException;
@Schema(description = "最近一条未完成异常处置ID(有异常时返回)")
private Long exceptionId;
@Schema(description = "需重新派单")
private Boolean needReassign;
@Schema(description = "司机接单状态:pending/accepted/rejected")
private String acceptStatus;
@Schema(description = "司机拒绝接单原因")
private String rejectReason;
@Schema(description = "原指派司机ID")
private Long driverId;
@Schema(description = "装卸点列表")
private List<AdminRoutePointVO> routePoints;
@Schema(description = "过程打卡节点(与司机端 punchNodes 同结构)")
private List<DriverPunchNodeVO> punchNodes;
@Schema(description = "途打卡记录")
private List<DriverEnrouteRecordVO> enrouteRecords;
@Data
@Schema(description = "装卸点")
public static class AdminRoutePointVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "点位名称")
private String name;
@Schema(description = "详细地址")
private String address;
@Schema(description = "状态:pending/done/active")
private String status;
}
}
@@ -133,4 +133,55 @@ public class DriverWaybillCardVO implements Serializable {
@Schema(description = "过程配置中 punch=是 的打卡节点列表(详情返回)")
private List<DriverPunchNodeVO> punchNodes;
/* ===== pages/waybill/detail 接单查看字段 ===== */
@Schema(description = "货物名称")
private String cargoName;
@Schema(description = "装货地址")
private String pickupAddress;
@Schema(description = "卸货地址")
private String unloadAddress;
@Schema(description = "货物数量(带单位)")
private String cargoQuantity;
@Schema(description = "运输方式文案:公路运输等")
private String transportType;
@Schema(description = "计划发货时间")
private String planShipTime;
@Schema(description = "计划完成时间")
private String planFinishTime;
@Schema(description = "合计货重")
private String totalWeight;
@Schema(description = "备注")
private String remark;
@Schema(description = "装卸点(详情返回)")
private List<DriverRoutePointVO> routePoints;
@Schema(description = "过程配置 JSON(详情返回,供前端兜底推导打卡节点)")
private String processJson;
@Data
@Schema(description = "司机端装卸点")
public static class DriverRoutePointVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "点位名称")
private String name;
@Schema(description = "详细地址")
private String address;
@Schema(description = "状态:pending/done/active")
private String status;
}
}
@@ -61,6 +61,7 @@ public interface IUserClient {
String SAVE_IAM_USER = API_PREFIX + "/save-iam-user";
String REGISTER_USER = API_PREFIX + "/register-user";
String REMOVE_USER = API_PREFIX + "/remove-user";
String BIND_WX_MINI_OPENID = API_PREFIX + "/bind-wx-mini-openid";
/**
* 获取用户信息
@@ -187,4 +188,18 @@ public interface IUserClient {
@PostMapping(REMOVE_USER)
R<Boolean> removeUser(@RequestParam("tenantIds") String tenantIds);
/**
* 绑定微信小程序 openid(写入 blade_user_oauthsource=WECHAT_MINI
*
* @param tenantId 租户ID
* @param userId 用户ID
* @param openid 微信 openid
* @param phone 手机号(可选,写入 username)
*/
@PostMapping(BIND_WX_MINI_OPENID)
R<Boolean> bindWxMiniOpenId(@RequestParam("tenantId") String tenantId,
@RequestParam("userId") Long userId,
@RequestParam("openid") String openid,
@RequestParam(value = "phone", required = false) String phone);
}
@@ -0,0 +1,54 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.system.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 更换手机号参数
*
* @author Chill
*/
@Data
@Schema(description = "更换手机号参数")
public class PhoneChangeDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "新手机号", requiredMode = Schema.RequiredMode.REQUIRED)
private String newPhone;
@Schema(description = "短信校验 ID(发送验证码接口返回)", requiredMode = Schema.RequiredMode.REQUIRED)
private String id;
@Schema(description = "新手机号短信验证码", requiredMode = Schema.RequiredMode.REQUIRED)
private String code;
}
@@ -0,0 +1,51 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.system.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 原手机号短信校验参数
*
* @author Chill
*/
@Data
@Schema(description = "原手机号短信校验参数")
public class PhoneVerifyDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "短信校验 ID(发送验证码接口返回)", requiredMode = Schema.RequiredMode.REQUIRED)
private String id;
@Schema(description = "短信验证码", requiredMode = Schema.RequiredMode.REQUIRED)
private String code;
}