落地空运单聊询价字段与线路选择。

必填核对后再建单;多条线路走 H5 点选;费用只展示该线路 TMS 回包,不套用整单空运费。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-22 15:02:32 +08:00
co-authored by Cursor
parent 8afe909230
commit cfbce2fd69
53 changed files with 3470 additions and 372 deletions
@@ -142,6 +142,8 @@ public class SysRoleController {
try {
role.setCreateTime(new Date());
sysRoleService.save(role);
// 询价后台新增角色后需立即授权菜单,必须把雪花 id 回传前端
result.setResult(role);
result.success("添加成功!");
} catch (Exception e) {
log.error(e.getMessage(), e);
@@ -30,15 +30,7 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM
@Override
public void saveRolePermission(String roleId, String permissionIds) {
String ip = "";
try {
//获取request
HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
//获取IP地址
ip = IpUtils.getIpAddr(request);
} catch (Exception e) {
ip = "127.0.0.1";
}
String ip = resolveOperateIp();
LambdaQueryWrapper<SysRolePermission> query = new QueryWrapper<SysRolePermission>().lambda().eq(SysRolePermission::getRoleId, roleId);
this.remove(query);
List<SysRolePermission> list = new ArrayList<SysRolePermission>();
@@ -56,15 +48,13 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM
@Override
public void saveRolePermission(String roleId, String permissionIds, String lastPermissionIds) {
String ip = "";
try {
//获取request
HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
//获取IP地址
ip = IpUtils.getIpAddr(request);
} catch (Exception e) {
ip = "127.0.0.1";
// 询价后台编辑角色时若未传 lastpermissionIds,增量 diff 会把已存在权限当新增插入导致授权失败;
// 与 Jeecg 原生抽屉不同,此处兜底走全量覆盖,保证幂等。
if (oConvertUtils.isEmpty(lastPermissionIds)) {
saveRolePermission(roleId, permissionIds);
return;
}
String ip = resolveOperateIp();
List<String> add = getDiff(lastPermissionIds,permissionIds);
if(add!=null && add.size()>0) {
List<SysRolePermission> list = new ArrayList<SysRolePermission>();
@@ -88,11 +78,30 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM
}
/**
* 从diff中找出main中没有的元素
* @param main
* @param diff
* @return
* 写入 sys_role_permission.operate_ip;反向代理可能带回超长 X-Forwarded-For,截断避免入库失败。
*/
private String resolveOperateIp() {
String ip = "127.0.0.1";
try {
HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
ip = IpUtils.getIpAddr(request);
} catch (Exception e) {
ip = "127.0.0.1";
}
if (oConvertUtils.isEmpty(ip)) {
return "127.0.0.1";
}
int comma = ip.indexOf(',');
if (comma > 0) {
ip = ip.substring(0, comma).trim();
}
if (ip.length() > 45) {
ip = ip.substring(0, 45);
}
return ip;
}
/** 从 diff 中找出 main 中没有的元素,供增量授权增删菜单。 */
private List<String> getDiff(String main,String diff){
if(oConvertUtils.isEmpty(diff)) {
return null;