315 Revīzijas e34eeed280 ... dc23d00009

Autors SHA1 Ziņojums Datums
  xucaiqin dc23d00009 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk afc9cbb795 1、司机app查询列表新增字段; 2 gadi atpakaļ
  zk bf281e9656 1、司机app查询列表新增字段; 2 gadi atpakaļ
  zk df20daa302 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk 83e235113e 1、司机app查询列表新增字段; 2 gadi atpakaļ
  yzc 18dffd8123 1.消息列表、统计、已读接口调整 2 gadi atpakaļ
  yzc d39ea89318 1.消息列表、统计、已读接口调整 2 gadi atpakaļ
  zk 76daf77d35 1、司机app查询列表新增字段; 2 gadi atpakaļ
  czh 42a6bf595b Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh b037d4f3cc 减少入参 2 gadi atpakaļ
  15928045575 826af3a4bd fix banner 2 gadi atpakaļ
  czh 080a723481 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh e8a9a5621f bugfix 2 gadi atpakaļ
  xucaiqin 8e0ff10a1f Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 4a1fe1b4ae app端对账详情中,缺少财务联系人字段 2 gadi atpakaļ
  lengfaqiang 73536278c1 报表服务pom新增引入 2 gadi atpakaļ
  czh 3f26aaeb87 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh a2bdeb5672 测试代码 2 gadi atpakaļ
  lengfaqiang dce95430f0 修复bugSAS-956 2 gadi atpakaļ
  czh f2bf000574 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 1849e37a60 新增登录返参 2 gadi atpakaļ
  zk a0f3ae44cc 1、运力查询; 2 gadi atpakaļ
  czh bf6ddc3183 数据权限 2 gadi atpakaļ
  czh 48eaa2d80a Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh cfc1606de3 数据权限 2 gadi atpakaļ
  lengfaqiang f838f6050e 承运订单/托运订单-导出接口由mongo迁移至数据库 2 gadi atpakaļ
  zk 00e5a1c41b 1、数据获取判空; 2 gadi atpakaļ
  xucaiqin b1475e7441 新增物流结算修改订单状态的dubbo引用 2 gadi atpakaļ
  xucaiqin 1dc7680a04 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang 2de1e51118 还原运单列表和运单看板查询报错 2 gadi atpakaļ
  yzc e71540f41b 商品地址信息字段长度调整 2 gadi atpakaļ
  xucaiqin 66076e326c 金额保留两位处理 2 gadi atpakaļ
  xucaiqin 209f2e95b1 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 97210a78f8 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 492a552337 新增防重复提交标签 2 gadi atpakaļ
  xucaiqin 1ed371cfae 金额字段反显 保留两位小数 2 gadi atpakaļ
  xucaiqin 3a1f795f05 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin b527c76eb1 含税金额计算 2 gadi atpakaļ
  czh 77827a0e5e 代码优化 2 gadi atpakaļ
  xucaiqin c87c66bf16 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin ff2d0aad31 计费方式字典 2 gadi atpakaļ
  czh 9ec351b259 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 6997291d41 新增dubbo接口 2 gadi atpakaļ
  zk c1bae7eb7d 1、司机更换手机号调整; 2 gadi atpakaļ
  lengfaqiang 3e47a81abc 对账界面新增页面数据 2 gadi atpakaļ
  zk 31302b3f1b 1、添加准驾车型类型名称; 2 gadi atpakaļ
  zk 6a32bd9910 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk 034e43ccbe 1、添加准驾车型类型名称; 2 gadi atpakaļ
  15928045575 c96f4e6ddf Merge branch 'dev' into sky_v1 2 gadi atpakaļ
  15928045575 c4cd2ca175 bug 2 gadi atpakaļ
  lengfaqiang a433fd029f Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang 6f85c262c5 解除合同修改返回方式 2 gadi atpakaļ
  czh 6c3c5016b2 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh b171f7050f 新增dubbo接口 2 gadi atpakaļ
  zk 2fb75a41ef 1、单证完善详情调整; 2 gadi atpakaļ
  lengfaqiang 8873bfd987 运单管理/运单看板bugfixSAS-929 2 gadi atpakaļ
  lengfaqiang 18f45da18e 停止接单数据转换 2 gadi atpakaļ
  xucaiqin 117a63c774 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 8159a2bf58 bugfix 修复更新对账单金额失败的问题 2 gadi atpakaļ
  zk 18ec19ef91 1、循环派车接单数计算调整; 2 gadi atpakaļ
  yzc e70c71f3f5 对账关联订单列表响应字段调整 2 gadi atpakaļ
  lengfaqiang 4fb79d295c 派车数据查询字段翻译 2 gadi atpakaļ
  lengfaqiang a81e7c8720 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang fd6f40cda6 承运订单-托运订单-新增订单新增数据字段 2 gadi atpakaļ
  zk 6f06e8df2b 1、运单看板添加状态操作时间; 2 gadi atpakaļ
  lengfaqiang 90dcdd1bf5 承运订单-托运订单-新增订单新增数据字段 2 gadi atpakaļ
  xucaiqin e4f2f5a814 对账结算 track记录表状态调整 2 gadi atpakaļ
  yzc ebc989ceb1 贸易订单下单、修改时新增单位联系人id字段,详情返回联系人id 2 gadi atpakaļ
  zk 37126663de Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk d543ca91af 1、新增车辆运单地址查询; 2 gadi atpakaļ
  yzc b73469221a 贸易订单下单、修改时新增单位联系人id字段,详情返回联系人id 2 gadi atpakaļ
  yzc c2dbcc9e2d message消费文本内容变量替换为实际值保存 2 gadi atpakaļ
  lengfaqiang f7dc4da27d Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang ef46166abe 增加运单详情翻译字段 2 gadi atpakaļ
  czh 2bbec66e87 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh ab3f4b7978 bugfix 2 gadi atpakaļ
  lengfaqiang 20312d09d5 承运托运合同去重 2 gadi atpakaļ
  lengfaqiang 5d2a7b366a 迁移承运合同托运合同由mongo查询变更为mysql查询 2 gadi atpakaļ
  lengfaqiang cb2e7d85f1 修复bugSAS-911 2 gadi atpakaļ
  chenlin b675218077 update 亏扣无配置不计算 2 gadi atpakaļ
  chenlin 84d3f9b5e2 update 更新扣亏量计算 2 gadi atpakaļ
  czh 08bae03d53 合同履约更新 2 gadi atpakaļ
  yzc 7292915c56 手动或自动完结贸易订单时更新对应合同的履约量 2 gadi atpakaļ
  xucaiqin b610449ac8 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 13736821f3 对账结算单号生成修改 2 gadi atpakaļ
  zk e9048de3b4 1、派车时时间装卸货时间为空; 2 gadi atpakaļ
  yzc 0403aa534d 贸易订单列表统计接口查询效率优化 2 gadi atpakaļ
  czh 5419b862b4 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 0a255341e4 bugfix + 合同履约更新 2 gadi atpakaļ
  lengfaqiang 3153a7f894 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang c9acf58d2f 修复bugSAS-906 2 gadi atpakaļ
  15928045575 92937c334e Merge branch 'dev' into sky_v1 2 gadi atpakaļ
  15928045575 69b03e4c31 add modules operation 2 gadi atpakaļ
  xucaiqin f39a945b35 提交遗漏的钱包部分代码 2 gadi atpakaļ
  xucaiqin 973ddd3334 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 30fb99d64d 调整字段映射 2 gadi atpakaļ
  chenlin df760118c6 Merge branch 'dev' of http://git.sckaiwu.cn/17358629955/sckw-service-platform into dev 2 gadi atpakaļ
  chenlin acbb0d5dec update 2 gadi atpakaļ
  xucaiqin 70abe71f83 钱包部分功能 2 gadi atpakaļ
  xucaiqin 14d284de78 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin edde4620bb 对账结算功能,返回提交人、双方财务联系人取错问题 2 gadi atpakaļ
  chenlin 097f8d0989 update 修改运单统计分类查询状态 2 gadi atpakaļ
  lengfaqiang c16ef94811 订单详情翻译优化 2 gadi atpakaļ
  lengfaqiang d42a5417b6 完结订单-状态+数据验证 2 gadi atpakaļ
  lengfaqiang a76d60edb0 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang 735a7b1b5a 车辆运单枚举类增加方法 2 gadi atpakaļ
  yzc ad3702f5b1 贸易订单草稿价格、总量允许为null 2 gadi atpakaļ
  15928045575 fa21e64c21 Merge branch 'sky_v1' into dev 2 gadi atpakaļ
  15928045575 e683b8927c bug 2 gadi atpakaļ
  yzc 9a7adcfaac 对账单关联订单列表筛选条件加上支付方式 2 gadi atpakaļ
  lengfaqiang d8965e753a 查询企业双方是否存在合作关系(物流订单业务)接口改造 2 gadi atpakaļ
  zk da1ca663e6 1、循环车辆运单卸货mongodb新增一条数据; 2 gadi atpakaļ
  zk a1af3076bf 1、循环车辆运单卸货mongodb新增一条数据; 2 gadi atpakaļ
  xucaiqin 6548bfbbab Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  chenlin daa1b9d845 update app增加运单列表吨量统计 2 gadi atpakaļ
  lengfaqiang f914a42d94 承运订单-派车新增查询派车和待运量接口 2 gadi atpakaļ
  xucaiqin 28ef1cdc01 确认企业关联的结算单是否存在关联业务 接口调整 2 gadi atpakaļ
  czh e209b3489d Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 15060f242c 运营端不验证企业 2 gadi atpakaļ
  chenlin 27a29639bc Merge branch 'dev' of http://git.sckaiwu.cn/17358629955/sckw-service-platform into dev 2 gadi atpakaļ
  chenlin 214f88aeb4 update app运单列表返回结构 2 gadi atpakaļ
  czh c9dd60e42f 运营端不验证企业冻结 2 gadi atpakaļ
  czh 698c770a3e bugfix 2 gadi atpakaļ
  yzc 2321153214 企业解除合作关系判断是否有关联订单dubbo接口 2 gadi atpakaļ
  yzc 84238c1d96 企业解除合作关系判断是否有关联订单dubbo接口 2 gadi atpakaļ
  czh 39f3b6005f 新的登录 2 gadi atpakaļ
  czh 783dbcbea8 用新的过滤器 2 gadi atpakaļ
  xucaiqin 62d7328658 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 52f830bbb2 新增钱包接口相关参数实体 2 gadi atpakaļ
  yzc a1f90d0f43 提供获取短信验证码后台接口 2 gadi atpakaļ
  xucaiqin ac5db6994f 参数调整 2 gadi atpakaļ
  xucaiqin 867e0e3698 bugfix:SAS-855 预计回款时间 去掉时分秒 2 gadi atpakaļ
  xucaiqin 47a8466015 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 2d40746b0f bugfix:SAS-855 预计回款时间 去掉时分秒 2 gadi atpakaļ
  czh d290a1da74 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh cd66d594ce 去掉最外层抛异常 2 gadi atpakaļ
  zk ce26631bae 1、车辆循环单接单逻辑调整; 2 gadi atpakaļ
  zk f8100f80c7 1、车辆循环单接单逻辑调整; 2 gadi atpakaļ
  yzc f8a47eaba6 贸易订单下单代码优化 2 gadi atpakaļ
  czh e4185b4e0c Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh bb537f82f8 去掉最外层抛异常 2 gadi atpakaļ
  chenlin b76250afa5 Merge branch 'dev' of http://git.sckaiwu.cn/17358629955/sckw-service-platform into dev 2 gadi atpakaļ
  chenlin ba981e167a update 增加运单相关状态标签字符值 2 gadi atpakaļ
  lengfaqiang 678bdada54 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang f24228c0ce 修复bugSAS-866 2 gadi atpakaļ
  chenlin 9c5ee0e5fb update 增加app运单列表接口 2 gadi atpakaļ
  zk 2ad2b193d6 1、车辆上报失败错误提示调整; 2 gadi atpakaļ
  zk 2292abb2b8 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk 4def66719f 1、车辆上报失败错误提示调整; 2 gadi atpakaļ
  yzc 88eaae22ed 贸易订单详情返回全部进程 2 gadi atpakaļ
  czh 735b597e8f Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 0ba6a09429 代码撤回一下 2 gadi atpakaļ
  zk d9ac9b470f 1、车辆上报失败错误提示调整; 2 gadi atpakaļ
  czh bfcdf3dc12 迁移代码 2 gadi atpakaļ
  czh f403fb4977 迁移代码 2 gadi atpakaļ
  czh 89f63ce344 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh cd00873042 迁移代码 2 gadi atpakaļ
  yzc 448e3c53ad 订单号创建失败不回退 2 gadi atpakaļ
  lengfaqiang fe32a37344 修复bugSAS-824;SAS-836;SAS-794;SAS-781;SAS-767 2 gadi atpakaļ
  czh 30cdbab720 优化 2 gadi atpakaļ
  czh 745ac23af6 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 7f60953aa5 优化 2 gadi atpakaļ
  yzc 7d138e243e 1.提供商品是否有关联供应企业dubbo接口 2 gadi atpakaļ
  yzc 9e6fe7c7a3 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  yzc 8c89b1e950 订单号生成异常直接结束订单流程 2 gadi atpakaļ
  czh 730b5d1310 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh b62575ac9e 设置默认地址修改 2 gadi atpakaļ
  chenlin b2c0125f91 Merge branch 'dev' of http://git.sckaiwu.cn/17358629955/sckw-service-platform into dev 2 gadi atpakaļ
  chenlin 21e8c51d75 update 修复运单bug 2 gadi atpakaļ
  zk b864de1f4c 1、方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐; 2 gadi atpakaļ
  zk cbf0ea139a 1、集合初始化时,指定集合初始值大小; 2 gadi atpakaļ
  lengfaqiang 7bcf90eb52 物流生成单据号异常事务处理 2 gadi atpakaļ
  yzc fc2034fadb 贸易订单号生成提前到第一行代码 2 gadi atpakaļ
  zk e46967fb89 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk 10eac23b1d 1、车辆上报新增车、司机与企业关联关系; 2 gadi atpakaļ
  yzc f74770d4be 贸易订单号生成规则逻辑优化 2 gadi atpakaļ
  zk 773af776fd 1、车辆运单循环单出车逻辑调整; 2 gadi atpakaļ
  zk cfc777b34d 1、车辆运单循环单接单逻辑调整; 2 gadi atpakaļ
  zk a05267434e 1、车辆运单循环单接单逻辑调整; 2 gadi atpakaļ
  lengfaqiang 5179a17c42 承运订单-分包托运增加页面数据展示字段 2 gadi atpakaļ
  zk da64495004 1、参照阿里代码规约进行调整; 2 gadi atpakaļ
  yzc 6977ff3bb2 订单号工具类优化 2 gadi atpakaļ
  czh 6625fcbb30 E签宝 线上合同 2 gadi atpakaļ
  lengfaqiang 6626936377 工具类增加 2 gadi atpakaļ
  lengfaqiang 3e4c6c85a8 单据编号生成工具类 2 gadi atpakaļ
  15928045575 f16d812d1b Merge branch 'dev' of http://git.sckaiwu.cn/17358629955/sckw-service-platform into dev 2 gadi atpakaļ
  yzc 6fe51d4aca 短信请求频率1分钟1次,验证码有效时间5分钟 2 gadi atpakaļ
  yzc 303378d722 订单号生成过期时间优化 2 gadi atpakaļ
  15928045575 95245defa6 Merge branch 'dev' into sky_v1 2 gadi atpakaļ
  15928045575 da193c99db bug 2 gadi atpakaļ
  lengfaqiang cfe5a77d3e 单据编号生成工具类 2 gadi atpakaļ
  yzc e7b4c51a6e 日志切面加入优先级,预防spring事务失效 2 gadi atpakaļ
  czh cb65d53eb8 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 727fdedd79 bugfix 2 gadi atpakaļ
  yzc c0f2d00b62 订单号去掉- 2 gadi atpakaļ
  sptkw 30ce6c656b 新增物流结算更新对账已结算金额字段 2 gadi atpakaļ
  czh 89783d8a5b Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh fbc1d313ad 迭代版本 2 gadi atpakaļ
  lengfaqiang 5785c49ac0 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang f0ee7306d2 企业app新增托运详情查询接口 2 gadi atpakaļ
  czh 83a6b6daf5 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  czh 9691fcbb99 迭代版本 2 gadi atpakaļ
  zk f08fcb814b 1、单证审核接口名调整; 2 gadi atpakaļ
  zk 4878d51021 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  zk f680fc8013 1、接口过滤器暂时屏蔽; 2 gadi atpakaļ
  chenlin 5065e64aab update 新增简洁版运单详情接口 2 gadi atpakaļ
  zk 9944014e5c 1、新增单证审核编辑接口; 2 gadi atpakaļ
  zk 4005fc01a7 1、接口请求拦截处理; 2 gadi atpakaļ
  yzc 8df02fd593 1.贸易订单列表、合同关联订单列表、对账关联订单列表增加待分配运输量字段 2 gadi atpakaļ
  lengfaqiang 22e138e6f5 承运订单详情。获取字典null bugfix 2 gadi atpakaļ
  czh 757375f965 迭代版本 2 gadi atpakaļ
  18482106067 60873f1bea Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 1bb71588d2 迭代版本 2 gadi atpakaļ
  lengfaqiang a9e90eeef4 承运订单-托运订单-查看驳回原因-查看撤销原因接口兼容app 2 gadi atpakaļ
  18482106067 e7029904e5 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 3f0601dda9 迭代版本 2 gadi atpakaļ
  yzc d60002ae1e RpcContext过时替换 2 gadi atpakaļ
  zk 53499b3c77 1、账号登录接口、短信登录接口名称调整; 2 gadi atpakaļ
  lengfaqiang 57045df0b2 还原yml 2 gadi atpakaļ
  lengfaqiang b6091db7ca 1:修复bug-SAS-791 2 gadi atpakaļ
  lengfaqiang 49c212a958 1:修复bug-SAS-791 2 gadi atpakaļ
  18482106067 a55424ce25 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 5a65bb68c1 迭代版本 2 gadi atpakaļ
  yzc f49ce8ad03 uuid去掉- 2 gadi atpakaļ
  lengfaqiang 7e3cceb56b 1:修复bug-SAS-786 2 gadi atpakaļ
  lengfaqiang 1b8fd46edf Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang 63a198701c 1:修复bug-SAS-768 2 gadi atpakaļ
  yzc 778621819b 订单提交、修改、受理接口加入合同信息校验 2 gadi atpakaļ
  yzc ead3a8f133 订单提交、修改、受理接口加入合同信息校验 2 gadi atpakaļ
  lengfaqiang b4b9d1253c 承运订单/托运订单 2 gadi atpakaļ
  yzc c07c18134b Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  yzc 25b1416611 运需、求购草稿状态也校验字段必填,并都支持批量上架操作 2 gadi atpakaļ
  xucaiqin 4e0e89022e 去除重复声明的api 2 gadi atpakaļ
  xucaiqin 47eb6db2aa common-log模块父级模块指定错误 2 gadi atpakaļ
  yzc 02d3993f94 订单进程创建时间字段修改 2 gadi atpakaļ
  chenlin 9956435d02 Merge branch 'dev' of http://git.sckaiwu.cn/17358629955/sckw-service-platform into dev 2 gadi atpakaļ
  chenlin 94186ea691 update 修改循环运单返回ID 2 gadi atpakaļ
  18482106067 d15c906246 bugfix 2 gadi atpakaļ
  18482106067 1f4294740e Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 acab96939b bugfix 2 gadi atpakaļ
  yzc 77c22c9810 修复bug:【管理端】交易管理-我的运需。选择了装卸地址,页面显示未null 2 gadi atpakaļ
  xucaiqin f43aca6682 结算单 实际结算金额字段赋值错误问题 2 gadi atpakaļ
  zk 5487ea72b0 1、循环车辆运单接单操作统计接单量; 2 gadi atpakaļ
  yzc 824aefbcb7 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  sptkw 1ebfdf911d 全局唯一traceId链路日志打印追踪(KwpSettlementOfflineController、KwpSettlementWalletController冲突) 2 gadi atpakaļ
  sptkw c102cdea44 处理过滤失败问题 2 gadi atpakaļ
  lengfaqiang fb00e3fac9 承运订单/托运订单 2 gadi atpakaļ
  sptkw 5f87140524 处理过滤失败问题 2 gadi atpakaļ
  18482106067 d4e3812001 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 d4b69a4272 bugfix 2 gadi atpakaļ
  15928045575 4c39b9604c fixed bug-726 2 gadi atpakaļ
  xucaiqin 9d19b763d1 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin 16a42a90c4 对账非发起方,列表页面全部中,去掉已保存、已撤回的数据 2 gadi atpakaļ
  18482106067 d35c51b019 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 6517750977 bugfix 2 gadi atpakaļ
  yzc 7be3e4713c 订单详情返回创建时间字段 2 gadi atpakaļ
  15928045575 de4a1e5043 Merge branch 'dev' into sky_v1 2 gadi atpakaļ
  15928045575 b5f5475238 bug-731 2 gadi atpakaļ
  zk 0760fc5eef 1、单证编辑前置条件调整; 2 gadi atpakaļ
  18482106067 0777d77f5f bugfix 2 gadi atpakaļ
  18482106067 46611f29b6 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 f9b9a68394 bugfix 2 gadi atpakaļ
  yzc b888f93546 消息接口调整 2 gadi atpakaļ
  15928045575 85d6b2c157 fixed bug-625 2 gadi atpakaļ
  yzc 9b34472fec 商品状态已上架改为上架中 2 gadi atpakaļ
  yzc d8a0909a61 app主界面贸易订单统计接口 2 gadi atpakaļ
  yzc 81321f8c75 app主界面贸易订单统计接口 2 gadi atpakaļ
  lengfaqiang caa53da9d0 承运订单/托运订单-详情数据增加翻译字段 2 gadi atpakaļ
  zk d5fb5e94dd 1、接口访问校验调整; 2 gadi atpakaļ
  lengfaqiang 7463aa26cc 还原配置yml 2 gadi atpakaļ
  lengfaqiang d64afbf9dd Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang e49d141027 企业app首页数据统计 2 gadi atpakaļ
  xucaiqin 421dce28f1 app端结算接口增加结算比例展示、app端结算详情接口 2 gadi atpakaļ
  yzc 9515828296 贸易订单详情、列表返回商品缩略图 2 gadi atpakaļ
  lengfaqiang d4ddba4f6d 提供dubbo接口 2 gadi atpakaļ
  yzc c11c5056b9 增加日志模块,自动打印controller、dubbo接口入参出参 2 gadi atpakaļ
  xucaiqin f4424ed8ab 新增部分对账、结算 运营app端接口;提供给合作单位删除,查询关联对账单、结算单的dubbo校验接口 2 gadi atpakaļ
  yzc 90ee3f1c9b 求购列表查询优化 2 gadi atpakaļ
  18482106067 821265bb81 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 76a3e1a3fa bugfix 2 gadi atpakaļ
  zk ea9f85ca76 1、接口访问校验调整; 2 gadi atpakaļ
  chenlin a3585d833e update 增加运单详情状态字段 2 gadi atpakaļ
  18482106067 ec6b771c09 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 7fb80d76ae bugfix 2 gadi atpakaļ
  lengfaqiang 25193344af 接单bugfix 2 gadi atpakaļ
  lengfaqiang cfaa9d30b8 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  lengfaqiang a7f934d11f 1:提供dubbo接口 2 gadi atpakaļ
  yzc 43682499b8 贸易订单详情返回订单进程 2 gadi atpakaļ
  yzc 1aa7825e67 商品价格段-1翻译为不限 2 gadi atpakaļ
  18482106067 36f51afc8d Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 86ce28bc16 dubbo加判空 2 gadi atpakaļ
  lengfaqiang 3281261dd8 承运订单-托运订单列表bugfix 2 gadi atpakaļ
  18482106067 e0d7281059 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 10394aca6c bugfix 2 gadi atpakaļ
  18482106067 7405a60ffa bugfix 2 gadi atpakaļ
  yzc 43a359c11d 订单供采双方企业合作关系校验优化 2 gadi atpakaļ
  18482106067 a5b38ee6e0 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 a45a4d05a9 增加注释 2 gadi atpakaļ
  zk 7e151644c6 1、司机档案、车辆档案、车辆上报Excel文件存储oss; 2 gadi atpakaļ
  sptkw 1ac327b6e2 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  sptkw b0b0b0f9e3 临时处理一个错误调用方法 2 gadi atpakaļ
  lengfaqiang 17620af31e 承运订单-托运订单bugfix 2 gadi atpakaļ
  15928045575 4c88ca588f Merge branch 'sky_v1' into dev 2 gadi atpakaļ
  15928045575 8fed8a803f fix bug-651 2 gadi atpakaļ
  xucaiqin 3944633ab6 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  xucaiqin d2d1ba953c 删除不用代码 2 gadi atpakaļ
  yzc 04b0c06ab5 企业是否有关联进行中的贸易订单dubbo接口逻辑优化 2 gadi atpakaļ
  18482106067 7a98a086f8 bugfix 2 gadi atpakaļ
  18482106067 afff362c70 提供单个查询接口 2 gadi atpakaļ
  18482106067 f50b06715a Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  18482106067 960717728c BUGFIX 2 gadi atpakaļ
  18482106067 5f495694f9 BUGFIX 2 gadi atpakaļ
  sptkw ee56c61082 Merge remote-tracking branch 'origin/dev' into dev 2 gadi atpakaļ
  sptkw 22ba30a8be 修改结算列表筛选不全问题 2 gadi atpakaļ
  15928045575 56566669ba fixed bug-666 2 gadi atpakaļ
100 mainītis faili ar 2554 papildinājumiem un 430 dzēšanām
  1. 31 115
      sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java
  2. 10 2
      sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java
  3. 0 17
      sckw-auth/src/main/java/com/sckw/auth/service/IAuthService.java
  4. 62 50
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  5. 1 0
      sckw-common/pom.xml
  6. 26 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/annotation/RepeatSubmit.java
  7. 3 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/LogAspect.java
  8. 59 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/NoRepeatSubmitAspect.java
  9. 13 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/StringConstant.java
  10. 6 4
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  11. 2 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  12. 180 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java
  13. 134 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckInterceptor.java
  14. 29 3
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java
  15. 11 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java
  16. 12 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/ClientTypeEnum.java
  17. 62 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/OrderRuleEnum.java
  18. 62 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/RedisOrderGenerateEnum.java
  19. 49 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/TaxRateTypeEnum.java
  20. 50 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/bannerDistrictEnum.java
  21. 18 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java
  22. 2 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageResult.java
  23. 1 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/vo/BasePara.java
  24. 3 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/BeanUtils.java
  25. 3 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/CollectionUtils.java
  26. 69 13
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java
  27. 47 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/EncryUtil.java
  28. 2 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/FileUtils.java
  29. 15 9
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/ListUtils.java
  30. 7 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/NumberUtils.java
  31. 25 30
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OkHttpUtils.java
  32. 226 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateSeqNoUtils.java
  33. 7 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateUtils.java
  34. 8 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java
  35. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/RegularUtils.java
  36. 69 8
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java
  37. 3 3
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/workerUtils.java
  38. 8 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  39. 9 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/context/LoginUserHolder.java
  40. 5 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/model/LoginUserInfo.java
  41. 35 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/request/RequestReadUtils.java
  42. 107 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/request/RequestUtil.java
  43. 29 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/ResponseUtil.java
  44. 3 1
      sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  45. 8 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java
  46. 11 4
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java
  47. 55 0
      sckw-common/sckw-common-log/pom.xml
  48. 133 0
      sckw-common/sckw-common-log/src/main/java/com/sckw/log/aspect/LogInfoAspect.java
  49. 24 0
      sckw-common/sckw-common-log/src/main/java/com/sckw/log/config/WebConfig.java
  50. 32 0
      sckw-common/sckw-common-log/src/main/java/com/sckw/log/interceptor/LogInterceptor.java
  51. 15 0
      sckw-common/sckw-common-log/src/main/java/com/sckw/log/utils/UuidUtils.java
  52. 3 0
      sckw-common/sckw-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  53. 13 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  54. 5 0
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java
  55. 3 5
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java
  56. 46 8
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java
  57. 47 0
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/RedissonUtils.java
  58. 6 6
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/TestService.java
  59. 33 0
      sckw-common/sckw-common-remote/src/main/java/com/sckw/remote/filter/TraceIdFilter.java
  60. 15 0
      sckw-common/sckw-common-remote/src/main/java/com/sckw/remote/utils/UuidUtils.java
  61. 1 0
      sckw-common/sckw-common-remote/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
  62. 42 69
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java
  63. 6 2
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java
  64. 22 0
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/UserInfo.java
  65. 4 3
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/utils/SmsUtil.java
  66. 29 0
      sckw-gateway/pom.xml
  67. 59 0
      sckw-gateway/src/main/java/com/sckw/gateway/filter/RequestLogFilter.java
  68. 38 0
      sckw-gateway/src/main/java/com/sckw/gateway/filter/TraceFilter.java
  69. 15 0
      sckw-gateway/src/main/java/com/sckw/gateway/utils/UuidUtils.java
  70. 20 0
      sckw-gateway/src/main/resources/bootstrap-local.yml
  71. 2 2
      sckw-gateway/src/main/resources/log4j2.xml
  72. 9 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java
  73. 8 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java
  74. 10 1
      sckw-modules-api/sckw-manage-api/src/main/java/com/sckw/manage/api/RemoteManageService.java
  75. 12 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java
  76. 5 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/GoodsInfoDetailRes.java
  77. 7 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java
  78. 6 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java
  79. 27 0
      sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/dubbo/PaymentDubboService.java
  80. 54 2
      sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/constant/ChannelEnum.java
  81. 13 0
      sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/constant/OrderEnum.java
  82. 2 1
      sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/dto/WalletDto.java
  83. 4 3
      sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/dto/WalletInfo.java
  84. 9 0
      sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java
  85. 10 1
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java
  86. 27 7
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java
  87. 10 4
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/req/RegisterReqDto.java
  88. 5 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/EntCacheResDto.java
  89. 14 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsUserResDto.java
  90. 24 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java
  91. 18 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/LogisticsOrderDTO.java
  92. 35 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/ContractSignLogisticsParam.java
  93. 6 1
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/LogisticsOrderParam.java
  94. 6 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/LogisticsOrderVO.java
  95. 9 0
      sckw-modules/sckw-contract/pom.xml
  96. 4 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCarrierController.java
  97. 13 15
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  98. 11 11
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  99. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcOpenapiController.java
  100. 4 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java

+ 31 - 115
sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java

@@ -3,8 +3,6 @@ package com.sckw.auth.controller;
 import com.sckw.auth.model.vo.req.*;
 import com.sckw.auth.service.IAuthService;
 import com.sckw.core.common.enums.enums.DictEnum;
-import com.sckw.core.exception.SystemException;
-import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.LoginMethodEnum;
 import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.utils.RegularUtils;
@@ -29,62 +27,6 @@ public class AuthController {
     @Autowired
     private IAuthService authService;
 
-    @PostMapping("/login1")
-    public HttpResult login(@RequestHeader(name = "System-Type") int systemType,
-                            @RequestHeader(name = "Client-Type") String clientType,
-                            @RequestBody @Valid LoginBase loginBase) {
-        loginBase.setSystemType(systemType);
-        loginBase.setClientType(clientType);
-        loginBase.setLoginMethod(LoginMethodEnum.ORDINARY.getValue());
-
-        /**参数校验**/
-        HttpResult result = checkParams(loginBase);
-        if (result.getCode() != HttpStatus.SUCCESS_CODE) {
-            return result;
-        }
-
-        /**运营端/企业端登录(PC/APP)**/
-        if (loginBase.getSystemType() == SystemTypeEnum.MANAGE.getCode()
-                || loginBase.getSystemType() == SystemTypeEnum.COMPANY.getCode()) {
-            return authService.commonAuth(loginBase);
-        }
-
-        /**司机端**/
-        if (loginBase.getSystemType() == SystemTypeEnum.DRIVER.getCode()) {
-            return authService.driverAuth(loginBase);
-        }
-
-        return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
-    }
-
-    @PostMapping("/smsLogin")
-    public HttpResult smsAuth(@RequestHeader(name = "System-Type") int systemType,
-                            @RequestHeader(name = "Client-Type") String clientType,
-                            @RequestBody @Valid LoginBase loginBase) {
-        loginBase.setSystemType(systemType);
-        loginBase.setClientType(clientType);
-        loginBase.setLoginMethod(LoginMethodEnum.SMS.getValue());
-
-        /**参数校验**/
-        HttpResult result = checkParams(loginBase);
-        if (result.getCode() != HttpStatus.SUCCESS_CODE) {
-            return result;
-        }
-
-        /**运营端/企业端登录(PC/APP)**/
-        if (loginBase.getSystemType() == SystemTypeEnum.MANAGE.getCode()
-                || loginBase.getSystemType() == SystemTypeEnum.COMPANY.getCode()) {
-            return authService.commonAuth(loginBase);
-        }
-
-        /**司机端**/
-        if (loginBase.getSystemType() == SystemTypeEnum.DRIVER.getCode()) {
-            return authService.driverAuth(loginBase);
-        }
-
-        return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
-    }
-
     /**
      * @param
      * @return
@@ -140,56 +82,44 @@ public class AuthController {
     @PostMapping("/login")
     public HttpResult login(@Valid @RequestBody LoginReqVo reqVo,
                             @RequestHeader(name = "Client-Type", required = true) String clientType,
-                            @RequestHeader(name = "System-Type", required = true) int systemType) throws SystemException {
+                            @RequestHeader(name = "System-Type", required = true) int systemType) {
         reqVo.setSystemType(systemType);
         reqVo.setClientType(clientType);
-        return HttpResult.ok(authService.login(reqVo));
-    }
+        LoginBase loginBase = new LoginBase();
+        loginBase.setAccount(reqVo.getAccount());
+        loginBase.setPassword(reqVo.getPassword());
+        loginBase.setCaptcha(reqVo.getCaptcha());
+        loginBase.setSystemType(systemType);
+        loginBase.setClientType(clientType);
 
-    /**
-     * @param reqVo 注册
-     * @return HttpResult
-     * @desc: 用户注册
-     * @author: czh
-     * @date: 2023/6/16
-     */
-    @PostMapping("/register")
-    public HttpResult register(@Valid @RequestBody RegisterReqVo reqVo,
-                               @RequestHeader(name = "System-Type", required = true) int systemType) throws SystemException {
-        reqVo.setSystemType(systemType);
-        authService.register(reqVo);
-        return HttpResult.ok(HttpStatus.MSG_007);
-    }
+        loginBase.setLoginMethod(LoginMethodEnum.ORDINARY.getValue());
+        if (StringUtils.isNotBlank(loginBase.getCaptcha())) {
+            loginBase.setLoginMethod(LoginMethodEnum.SMS.getValue());
+        }
 
-    /**
-     * @param reqVo 忘记密码入参
-     * @return HttpResult
-     * @desc: 忘记密码
-     * @author: czh
-     * @date: 2023/6/19
-     */
-    @PostMapping("/forgetPassword")
-    public HttpResult forgetPassword(@Valid @RequestBody ForgetPasswordReqVo reqVo,
-                                     @RequestHeader(name = "System-Type", required = true) int systemType) throws SystemException {
-        reqVo.setSystemType(systemType);
-        authService.forgetPassword(reqVo);
-        return HttpResult.ok(HttpStatus.MSG_002);
-    }
+        /**参数校验**/
+        HttpResult result = checkParams(loginBase);
+        if (result.getCode() != HttpStatus.SUCCESS_CODE) {
+            return result;
+        }
 
-    /**
-     * @param {password 旧密码、newPassword 新密码、account 账号}
-     * @description 修改密码
-     * @author zk
-     * @date 2023/06/02
-     **/
-    @PostMapping("/updatePassword")
-    public HttpResult updatePassword(@Valid @RequestBody UpdatePasswordReqVo reqVo,
-                                     @RequestHeader(name = "System-Type", required = true) int systemType) {
-        reqVo.setSystemType(systemType);
-        authService.updatePassword(reqVo);
-        return HttpResult.ok(HttpStatus.MSG_002);
+        /**运营端/企业端登录(PC/APP)**/
+        if (loginBase.getSystemType() == SystemTypeEnum.MANAGE.getCode()
+                || loginBase.getSystemType() == SystemTypeEnum.COMPANY.getCode()) {
+            return authService.commonAuth(loginBase);
+        }
+
+        /**司机端**/
+        if (loginBase.getSystemType() == SystemTypeEnum.DRIVER.getCode()) {
+            return authService.driverAuth(loginBase);
+        }
+
+        return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
     }
 
+
+
+
     /**
      * @param id 主键ID
      * @description 重置密码
@@ -202,18 +132,4 @@ public class AuthController {
         return HttpResult.ok(HttpStatus.MSG_001);
     }
 
-    /**
-     * @desc: 获取验证码
-     * @param: reqVo 入参
-     * @author: czh
-     * @date 2023/7/23
-     * @return HttpResult
-     */
-    @PostMapping("getRegisterSms")
-    public HttpResult getRegisterSms(@Valid @RequestBody GetRegisterSmsReqVo reqVo,
-                                   @RequestHeader(name = "System-Type", required = true) int systemType) {
-        reqVo.setSystemType(systemType);
-        return HttpResult.ok(authService.getRegisterSms(reqVo));
-    }
-
 }

+ 10 - 2
sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java

@@ -18,8 +18,6 @@ import java.util.List;
 @Data
 public class LoginResVo1 implements Serializable {
 
-
-
     /**
      * 用户id
      */
@@ -77,6 +75,12 @@ public class LoginResVo1 implements Serializable {
      */
     private Integer approval;
 
+    /**
+     * 是否有效
+     */
+    private Boolean valid;
+
+
     /**
      * 企业类型(名称)
      */
@@ -102,4 +106,8 @@ public class LoginResVo1 implements Serializable {
      */
     private String token;
 
+    private Long deptId;
+
+    private Long roleId;
+
 }

+ 0 - 17
sckw-auth/src/main/java/com/sckw/auth/service/IAuthService.java

@@ -33,14 +33,6 @@ public interface IAuthService {
      */
     void forgetPassword(ForgetPasswordReqVo reqDto);
 
-    /**
-     * @param reqVo 修改密码入参
-     * @desc: 修改密码
-     * @author: czh
-     * @date: 2023/7/3
-     */
-    void updatePassword(UpdatePasswordReqVo reqVo);
-
     /**
      * @param id 用户id
      * @desc: 重置密码
@@ -49,15 +41,6 @@ public interface IAuthService {
      */
     void resetPassword(Long id);
 
-    /**
-     * @desc: 获取验证码
-     * @param: reqVo 入参
-     * @author: czh
-     * @date 2023/7/23
-     * @return String
-     */
-    String getRegisterSms(GetRegisterSmsReqVo reqVo);
-
     /**
      * 司机端登录
      * @param loginBase

+ 62 - 50
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -8,6 +8,7 @@ import com.sckw.auth.model.vo.res.EntInfoResVo;
 import com.sckw.auth.model.vo.res.LoginResVo;
 import com.sckw.auth.model.vo.res.LoginResVo1;
 import com.sckw.auth.util.AsyncFactory;
+import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.model.enums.ClientTypeEnum;
 import com.sckw.core.model.enums.LoginMethodEnum;
 import com.sckw.core.model.enums.SystemTypeEnum;
@@ -18,7 +19,7 @@ import com.sckw.core.web.model.LoginUserInfo;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RDriverDetailVo;
-import com.sckw.message.api.dubbo.SmsInfoService;
+import com.sckw.redis.constant.RedisConstant;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.req.*;
 import com.sckw.system.api.model.dto.res.KwsRoleResDto;
@@ -51,14 +52,11 @@ public class AuthServiceImpl implements IAuthService {
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService systemService;
 
-    @DubboReference(version = "1.0.0", group = "design", check = false)
-    private SmsInfoService smsInfoService;
-
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteFleetService fleetService;
 
     @Override
-    public LoginResVo login(LoginReqVo reqDto) throws SystemException {
+    public LoginResVo login(LoginReqVo reqDto) {
         /*1、根据账号密码或者手机号校验码登录, 手机号后面处理*/
         KwsUserResDto kwsUser = checkLogin(reqDto);
         LoginResVo loginResVo = new LoginResVo();
@@ -66,7 +64,7 @@ public class AuthServiceImpl implements IAuthService {
         BeanUtils.copyProperties(kwsUser, loginResVo);
 
         //平台管理员直接过了
-        if (kwsUser.getIsMain() == Global.YES && kwsUser.getSystemType() == SystemTypeEnum.MANAGE.getCode()) {
+        if (kwsUser.getIsMain() == Global.YES && kwsUser.getSystemType().equals(SystemTypeEnum.MANAGE.getCode())) {
             afterProcessor(loginResVo);
             return loginResVo;
         }
@@ -116,8 +114,8 @@ public class AuthServiceImpl implements IAuthService {
         entInfoResVo.setCertificateInfo(entCertificateResDtoList);
 
         //企业资质有效性判断  1、当前资质没过期,且状态是已认证  2、只要有认证过一次就算有效  参数判断
-        String checkType = "2";
-        if (checkType.equals("1")) {
+        String checkType = String.valueOf(Global.NUMERICAL_TWO);
+        if (checkType.equals(Global.NUMERICAL_ONE)) {
             for (EntCertificateResDto entCertificateResDto : entCertificateResDtoList) {
                 Date expireTime = entCertificateResDto.getExpireTime();
                 entInfoResVo.setValid(DateUtil.compare(new Date(), expireTime) <= 0);
@@ -137,7 +135,7 @@ public class AuthServiceImpl implements IAuthService {
         return loginResVo;
     }
 
-    private KwsUserResDto checkLogin(LoginReqVo reqDto) throws SystemException {
+    private KwsUserResDto checkLogin(LoginReqVo reqDto) {
         List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(reqDto.getAccount(), reqDto.getSystemType());
         KwsUserResDto kwsUser = kwsUsers.get(0);
         //密码校验、验证码
@@ -145,11 +143,11 @@ public class AuthServiceImpl implements IAuthService {
             remoteUserService.checkPassword(reqDto.getPassword(), kwsUser.getPassword());
         } else {
             String key = Global.USER_LOGIN_CAPTCHA + reqDto.getSystemType() + Global.COLON + kwsUser.getAccount();
-            String captcha = RedissonUtils.getString(key);
-            if (StringUtils.isBlank(captcha) || StringUtils.isBlank(reqDto.getCaptcha()) || !reqDto.getCaptcha().equals(captcha)) {
-                throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.CAPCHA_ERROR);
-            }
-            RedissonUtils.delete(key);
+//            String captcha = RedissonUtils.getString(key);
+//            if (StringUtils.isBlank(captcha) || StringUtils.isBlank(reqDto.getCaptcha()) || !reqDto.getCaptcha().equals(captcha)) {
+//                throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.CAPCHA_ERROR);
+//            }
+//            RedissonUtils.delete(key);
         }
         return kwsUser;
     }
@@ -176,15 +174,11 @@ public class AuthServiceImpl implements IAuthService {
     @Transactional(rollbackFor = {})
     public void register(RegisterReqVo reqVo) {
         /*校验验证码*/
-        String key = Global.USER_LOGIN_CAPTCHA + reqVo.getPhone() + Global.COLON + reqVo.getSystemType();
+        String key = StringUtils.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, DictEnum.SMS_REGISTER.getValue(), reqVo.getPhone());
         String sms = RedissonUtils.getString(key);
-//        if (!reqVo.getCaptcha().equals(sms)) {
-//            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.CAPTCHA_ERROR);
-//        }
-        if (!"12345".equals(reqVo.getCaptcha())) {
+        if (!reqVo.getCaptcha().equals(sms)) {
             throw new SystemException(HttpStatus.CODE_10301, HttpStatus.CAPTCHA_ERROR);
         }
-
         RegisterReqDto registerReqDto = new RegisterReqDto();
         BeanUtils.copyProperties(reqVo, registerReqDto);
         remoteUserService.register(registerReqDto);
@@ -193,34 +187,17 @@ public class AuthServiceImpl implements IAuthService {
 
 
     @Override
-    public void forgetPassword(ForgetPasswordReqVo reqDto) throws SystemException {
+    public void forgetPassword(ForgetPasswordReqVo reqDto) {
         ForgetPasswordReqDto forgetPasswordReqDto = new ForgetPasswordReqDto();
         BeanUtils.copyProperties(reqDto, forgetPasswordReqDto);
         remoteUserService.forgetPassword(forgetPasswordReqDto);
     }
 
-    @Override
-    public void updatePassword(UpdatePasswordReqVo reqVo) throws SystemException {
-        UpdatePasswordReqDto updatePassword = new UpdatePasswordReqDto();
-        BeanUtils.copyProperties(reqVo, updatePassword);
-        remoteUserService.updatePassword(updatePassword);
-    }
-
     @Override
     public void resetPassword(Long id) {
         remoteUserService.resetPassword(id);
     }
 
-    @Override
-    public String getRegisterSms(GetRegisterSmsReqVo reqVo) {
-        String code = "";
-        remoteUserService.checkRegisterParam(reqVo.getEntName(), reqVo.getPhone(), reqVo.getSystemType());
-        String key = Global.USER_LOGIN_CAPTCHA + reqVo.getPhone() + Global.COLON + reqVo.getSystemType();
-        RedissonUtils.put(key, code, 30L);
-        return code;
-    }
-
-
     static class AsyncProcess implements Runnable {
 
         private final LoginResVo loginResVo;
@@ -319,7 +296,7 @@ public class AuthServiceImpl implements IAuthService {
             long id = loginResVo.getId();
             List<UserAccessMenuInfoResDto> userAccessMenuInfo = remoteUserService.queryUserAccessMenu(id);
             if (CollectionUtils.isEmpty(userAccessMenuInfo)) {
-                RedissonUtils.delete(Global.REDIS_SYS_MENU_PREFIX + loginResVo.getSystemType() + Global.COLON + id);
+                RedissonUtils.delete(Global.REDIS_SYS_MENU_PREFIX + loginResVo.getClientType() + Global.COLON + id);
                 log.error("未查询到用户{}的菜单权限", id);
                 return;
             }
@@ -331,7 +308,7 @@ public class AuthServiceImpl implements IAuthService {
                     menus.addAll(Arrays.asList(userAccessMenuInfoResDto.getLinks().split(",")));
                 }
             }
-            RedissonUtils.putSet(Global.REDIS_SYS_MENU_PREFIX + id, menus);
+            RedissonUtils.putSet(Global.REDIS_SYS_MENU_PREFIX + loginResVo.getClientType() + Global.COLON + id, menus);
         }
 
         /**
@@ -385,7 +362,7 @@ public class AuthServiceImpl implements IAuthService {
         REnterpriseVo enterprise = systemService.queryEntDetails(driver.getEntId());
 
         /**生成token**/
-        String token = EncryUtil.encryV1(Global.PRI_KEY, String.valueOf(driver.getId()));
+        String token = generateToken(loginBase, driver.getId());
         if (StringUtils.isBlank(token)) {
             return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
         }
@@ -401,9 +378,9 @@ public class AuthServiceImpl implements IAuthService {
         loginRes.setPhone(driver.getPhone());
         loginRes.setStatus(driver.getStatus());
         loginRes.setEntId(driver.getEntId());
-        loginRes.setFirmName(enterprise == null ? enterprise.getFirmName() : null);
-        loginRes.setApproval(enterprise == null ? enterprise.getApproval() : null);
-        loginRes.setEntTypeNames(enterprise == null ? enterprise.getEntTypeNames() : null);
+        loginRes.setFirmName(enterprise != null ? enterprise.getFirmName() : null);
+        loginRes.setApproval(enterprise != null ? enterprise.getApproval() : null);
+        loginRes.setEntTypeNames(enterprise != null ? enterprise.getEntTypeNames() : null);
         loginRes.setClientType(loginBase.getClientType());
         loginRes.setSystemType(loginBase.getSystemType());
         loginRes.setToken(token);
@@ -441,7 +418,7 @@ public class AuthServiceImpl implements IAuthService {
         }
 
         /**生成token**/
-        String token = EncryUtil.encryV1(Global.PRI_KEY, String.valueOf(user.getId()));
+        String token = generateToken(loginBase, user.getId());
         if (StringUtils.isBlank(token)) {
             return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
         }
@@ -467,9 +444,37 @@ public class AuthServiceImpl implements IAuthService {
         loginRes.setClientType(loginBase.getClientType());
         loginRes.setSystemType(loginBase.getSystemType());
         loginRes.setToken(token);
+        loginRes.setDeptId(user.getDeptId());
+        loginRes.setRoleId(user.getRoleId());
+        if (user.getSystemType().equals(SystemTypeEnum.MANAGE.getCode())) {
+            loginRes.setValid(true);
+        }
+
+        loginRes.setValid(Objects.isNull(enterprise) ? false : enterprise.getValid());
         return HttpResult.ok(loginRes);
     }
 
+    /**
+     * @param loginBase {}
+     * @param userId 用户ID
+     * @desc 生成token
+     * @author zk
+     * @date 2023/8/18
+     **/
+    private String generateToken(LoginBase loginBase, Long userId) {
+        Map<String, Object> info = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+        info.put("userId", userId);
+        info.put("account", loginBase.getAccount());
+        info.put("clientType", loginBase.getClientType());
+        info.put("systemType", loginBase.getSystemType());
+//        info.put("timestamp", System.currentTimeMillis());
+        String key = Global.getFullUserTokenKey(loginBase.getClientType(), userId);
+        String token = EncryUtil.encryV1(Global.PRI_KEY, JSON.toJSONString(info));
+        int expireTime = ClientTypeEnum.expireTime(loginBase.getClientType());
+        RedissonUtils.putString(key, token, expireTime);
+        return token;
+    }
+
     static class AsyncProcess1 implements Runnable {
         private final LoginBase loginBase;
 
@@ -514,7 +519,7 @@ public class AuthServiceImpl implements IAuthService {
             }
             LoginEntInfo loginEntInfo = new LoginEntInfo();
             BeanUtils.copyProperties(ent, loginEntInfo);
-            String key = Global.REDIS_ENTERPRISE_PREFIX + ent.getId();
+            String key = Global.getFullUserEntKey(loginEntInfo.getId());
             RedissonUtils.putString(key, JSON.toJSONString(loginEntInfo), Global.APP_TOKEN_EXPIRE);
         }
 
@@ -540,7 +545,8 @@ public class AuthServiceImpl implements IAuthService {
             loginUserInfo.setEntId(enterprise != null ? enterprise.getId() : null);
             loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
             loginUserInfo.setClientType(loginBase.getClientType());
-            String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId(), loginBase.getClientType());
+            int expireTime = ClientTypeEnum.expireTime(loginBase.getClientType());
+            String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId());
             RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
         }
 
@@ -566,9 +572,15 @@ public class AuthServiceImpl implements IAuthService {
             loginUserInfo.setIsMain(user.getIsMain());
             loginUserInfo.setEntId(user.getEntId());
             loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
-            String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId(), loginBase.getClientType());
-            RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo),
-                    loginBase.getClientType().equals(ClientTypeEnum.pc.getValue()) ? Global.PC_TOKEN_EXPIRE : Global.APP_TOKEN_EXPIRE);
+
+            //普通用户需要填充数据权限
+            if (user.getIsMain().equals(Global.NO)) {
+                loginUserInfo.setAuthUserIdList(remoteUserService.queryAuthUserList(user.getId()));
+            }
+
+            int expireTime = ClientTypeEnum.expireTime(loginBase.getClientType());
+            String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId());
+            RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
 
             //存缓存请求地址
             SaveMenusToCache(user);

+ 1 - 0
sckw-common/pom.xml

@@ -24,6 +24,7 @@
         <module>sckw-common-sentinel</module>
         <module>sckw-common-seata</module>
         <module>sckw-common-startup</module>
+        <module>sckw-common-log</module>
     </modules>
 
     <properties>

+ 26 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/annotation/RepeatSubmit.java

@@ -0,0 +1,26 @@
+package com.sckw.core.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @author czh
+ * @desc 重复请求校验
+ * @date 2023/9/1
+ */
+@Inherited
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface RepeatSubmit {
+
+    /**
+     * 间隔时间(ms),小于此时间视为重复提交
+     */
+    long interval() default 5000;
+
+    /**
+     * 提示消息
+     */
+    String message() default "请求频率限制,请稍候再试";
+
+}

+ 3 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/LogAspect.java

@@ -12,6 +12,7 @@ import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Arrays;
 import java.util.Date;
@@ -34,7 +35,7 @@ public class LogAspect {
     public void loggerPointcut(Log l) {
     }
 
-    @Around("loggerPointcut(l)")
+    @Around(value = "loggerPointcut(l)", argNames = "p,l")
     public Object around(ProceedingJoinPoint p, Log l) throws Throwable {
         Object result = null;
         //开始时间
@@ -44,7 +45,7 @@ public class LogAspect {
         Object[] args = p.getArgs();
         Stream<?> stream = ArrayUtils.isEmpty(args) ? Stream.empty() : Arrays.stream(args);
         List<Object> logArgs = stream
-                .filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse)))
+                .filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse)) && !(arg instanceof MultipartFile))
                 .collect(Collectors.toList());
         //过滤后序列化无异常
         String param = JSON.toJSONString(logArgs);

+ 59 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/NoRepeatSubmitAspect.java

@@ -0,0 +1,59 @@
+package com.sckw.core.aspect;
+
+import com.sckw.core.annotation.RepeatSubmit;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.redis.utils.RedissonUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.lang.reflect.Method;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author czh
+ * @desc 防重复提交
+ * @date 2023/9/1
+ */
+@Aspect
+@Slf4j
+public class NoRepeatSubmitAspect {
+
+    @Around("@annotation(com.sckw.core.annotation.RepeatSubmit)")
+    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
+        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
+        HttpServletRequest request = servletRequestAttributes.getRequest();
+        String url = request.getRequestURI();
+        Long userId = LoginUserHolder.getUserId();
+        if (Objects.isNull(userId)) {
+            return pjp.proceed();
+        }
+
+        String key = Global.getRepeatSubmitKey(userId, url);
+        String res = RedissonUtils.getString(key);
+        MethodSignature signature = (MethodSignature) pjp.getSignature();
+        Method method = signature.getMethod();
+        RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class);
+        long interval = annotation.interval();
+        if (StringUtils.isNotBlank(res)) {
+            if (System.currentTimeMillis() - Long.parseLong(res) < interval) {
+                throw new SystemException(annotation.message());
+            }
+            return pjp.proceed();
+        }
+
+        RedissonUtils.putString(key, String.valueOf(System.currentTimeMillis()), interval, TimeUnit.MILLISECONDS);
+        return pjp.proceed();
+    }
+}

+ 13 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/StringConstant.java

@@ -3,7 +3,7 @@ package com.sckw.core.common.enums;
 import java.time.format.DateTimeFormatter;
 
 /**
- * @description:    定义字符串常量
+ * @description: 定义字符串常量
  * @author: LengFaQiang
  * @copyright
  * @create: 2022-01-27 16:02
@@ -15,7 +15,18 @@ public final class StringConstant {
     public static final String COLON = ":";
     public static final String SEMICOLON = ";";
     public static final String POINT = ".";
-    public static final String COMMA=",";
+
+    public static final String COMMA = ",";
+
+    /**
+     * 中横线
+     */
+    public static final String HYPHEN = "-";
+
+    /**
+     * 下划线
+     */
+    public static final String UNDERLINE = "_";
     public static final String HTTP_STRING = "http";
     public static final String HTTPS_STRING = "https";
     public static final String B = "B";

+ 6 - 4
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java

@@ -18,6 +18,8 @@ public enum DictEnum {
     /**
      *
      */
+    SYSTEM_MSG("msg_category", "SYSTEM", "系统消息"),
+    BUSINESS_MSG("msg_category", "BUSINESS", "业务消息"),
     SMS_REGISTER("send_sms_type", "register", "短信注册"),
     SMS_LOGIN("send_sms_type", "login", "短信登录"),
     SMS_UPDATE_PASSWORD("send_sms_type", "updatePassword", "短信修改密码"),
@@ -45,7 +47,7 @@ public enum DictEnum {
     DELIVERY_TYPE_0("delivery_type", "0", "签发交付"),
     DELIVERY_TYPE_1("delivery_type", "1", "签收交付"),
     TORDER_SOURCE_1("tOrder_source", "1", "采购下单"),
-    TORDER_SOURCE_2("tOrder_source", "2", "销售代客下单"),
+    TORDER_SOURCE_2("tOrder_source", "2", "代客下单"),
     TORDER_STATUS_0("tOrder_status", "0", "已保存"),
     TORDER_STATUS_1("tOrder_status", "1", "待受理"),
     TORDER_STATUS_2("tOrder_status", "2", "已退回"),
@@ -71,7 +73,7 @@ public enum DictEnum {
     CATEGORY_TYPE_0("category_type", "0", "山砂"),
     PRODUCT_NAME_TYPE_0("product_name_type", "0", "毛石"),
     GOODS_STATUS_0("goods_status", "0", "已保存"),
-    GOODS_STATUS_1("goods_status", "1", "上架"),
+    GOODS_STATUS_1("goods_status", "1", "上架"),
     GOODS_STATUS_2("goods_status", "2", "已下架"),
     CHARGING_TYPE_1("charging_type", "1", "按装货量") ,
     CHARGING_TYPE_2("charging_type", "2", "按卸货量") ,
@@ -79,10 +81,10 @@ public enum DictEnum {
     SIGNING_WAY_1("signing_way", "1", "线上签约"),
     SIGNING_WAY_2("signing_way", "2", "线下签约"),
     TRANSPORT_DEMAND_STATUS_0("transport_demand_status", "0","已保存"),
-    TRANSPORT_DEMAND_STATUS_1("transport_demand_status", "1","上架"),
+    TRANSPORT_DEMAND_STATUS_1("transport_demand_status", "1","上架"),
     TRANSPORT_DEMAND_STATUS_2("transport_demand_status", "2","已下架"),
     WANT_BUY_STATUS_0("want_buy_status", "0","已保存"),
-    WANT_BUY_STATUS_1("want_buy_status", "1","上架"),
+    WANT_BUY_STATUS_1("want_buy_status", "1","上架"),
     WANT_BUY_STATUS_2("want_buy_status", "2","已下架"),
     PREPAID_LIMIT_NO("prepaid_limit", "0","否"),
     PREPAID_LIMIT_YES("prepaid_limit", "1","是"),

+ 2 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -11,6 +11,7 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum DictTypeEnum {
+    MSG_CATEGORY("msg_category", "消息分类"),
     SEND_SMS_TYPE("send_sms_type", "发送短信类型"),
     INTEGRAL_TYPE("integral_type", "积分类型"),
     UNIT_TYPE("unit_type", "商品单位类型"),
@@ -38,6 +39,7 @@ public enum DictTypeEnum {
     ENERGY_TYPE("energy_type", "能源类型"),
     TRUCK_TYPE("truck_type", "车辆类型"),
     USE_TYPE("use_type", "使用性质"),
+    APPROVED_DRIVING("approved_driving", "准驾车型"),
     SIGNING_WAY("signing_way", "签约方式"),
     WEIGHT_CAR("weight_car", "以车的限重"),
     TAX_RATE_TYPE("tax_rate_type", "合理损耗单位"),

+ 180 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java

@@ -0,0 +1,180 @@
+package com.sckw.core.filter;
+
+import com.alibaba.fastjson.JSON;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.ClientTypeEnum;
+import com.sckw.core.model.enums.SystemTypeEnum;
+import com.sckw.core.utils.EncryUtil;
+import com.sckw.core.utils.NumberUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.config.CustomConfig;
+import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.constant.RequestConstant;
+import com.sckw.core.web.context.LoginEntHolder;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.model.LoginEntInfo;
+import com.sckw.core.web.model.LoginUserInfo;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.core.web.response.ResponseUtil;
+import com.sckw.redis.utils.RedissonUtils;
+import jakarta.annotation.PostConstruct;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @desc: 登录过滤
+ * @author: czh
+ * @date: 2023/6/14
+ */
+public class RequestCheckFilter implements Filter {
+    @Autowired
+    CustomConfig customConfig;
+
+    private static final List<String> EXCLUDEPATH = new ArrayList<>();
+
+    private static final String REGISTER = "/kwsEnt/register";
+
+    /**
+     * @desc: 初始化放行路径
+     * @author: czh
+     */
+    @PostConstruct
+    private void initExcludePath() {
+        String links = customConfig.getLinks();
+        if (StringUtils.isNotBlank(links)) {
+            EXCLUDEPATH.addAll(Arrays.asList(links.split(Global.COMMA)));
+        }
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
+                         FilterChain filterChain) throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest) servletRequest;
+        HttpServletResponse response = (HttpServletResponse) servletResponse;
+        String token = request.getHeader(RequestConstant.TOKEN);
+        String clientType = request.getHeader(RequestConstant.CLIENT_TYPE);
+        String systemType = request.getHeader(RequestConstant.SYSTEM_TYPE);
+        String requestUri = request.getRequestURI();
+
+        /*1、非token校验接口放行*/
+        if (EXCLUDEPATH.contains(requestUri)) {
+            filterChain.doFilter(servletRequest, servletResponse);
+            return;
+        }
+
+        /*2、校验token**/
+        /*2.1、校验token非空*/
+        if (StringUtils.isBlank(token)) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.UN_LOGIN_CODE, HttpStatus.UN_LOGIN_MESSAGE));
+            return;
+        }
+
+        /*2.2、token解析*/
+        Map<String, Object> tokenMap = EncryUtil.descryV2(Global.PRI_KEY, token);
+        if (tokenMap == null) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, HttpStatus.TOKEN_INVALID_MESSAGE));
+            return;
+        }
+
+        /*2.3、从redis获取用户登录token*/
+        Long userId = StringUtils.isNotBlank(tokenMap.get("userId")) ? NumberUtils.parseLong(tokenMap.get("userId")) : null;
+        String redisUserToken = RedissonUtils.getString(Global.getFullUserTokenKey(clientType, userId));
+        if (StringUtils.isBlank(redisUserToken)) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, HttpStatus.TOKEN_INVALID_MESSAGE));
+            return;
+        }
+
+        /*2.4、请求token和redis中token不一致,说明账号在别处登录了*/
+        if (!token.equals(redisUserToken)) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.ACCOUNT_OTHER_LOGIN_CODE, HttpStatus.ACCOUNT_OTHER_LOGIN_MESSAGE));
+            return;
+        }
+
+        /*3、校验登录用户信息*/
+        String key = Global.getFullUserLoginKey(NumberUtils.parseInt(systemType), userId);
+        String userInfoStr = RedissonUtils.getString(key);
+        LoginUserInfo loginUserInfo = StringUtils.isNotBlank(userInfoStr) ? JSON.parseObject(userInfoStr, LoginUserInfo.class) : null;
+        if (StringUtils.isBlank(userInfoStr) || loginUserInfo == null) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, HttpStatus.TOKEN_INVALID_MESSAGE));
+            return;
+        }
+
+
+        if (loginUserInfo.getIsMain() == Global.YES && Integer.parseInt(systemType) == SystemTypeEnum.MANAGE.getCode()) {
+            LoginUserHolder.set(loginUserInfo);
+            RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
+            RedissonUtils.putString(Global.getFullUserLoginKey(NumberUtils.parseInt(systemType), loginUserInfo.getId()), JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
+            RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
+            filterChain.doFilter(servletRequest, servletResponse);
+            LoginUserHolder.remove();
+            return;
+        }
+
+        //校验用户账号是否冻结
+        if (loginUserInfo.getStatus() == Global.YES) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "您的账号已被冻结,请联系系统管理员!"));
+            return;
+        }
+
+        /*4、登录中的企业信息*/
+        String loginEntStr = RedissonUtils.getString(Global.getFullUserEntKey(loginUserInfo.getEntId()));
+        LoginEntInfo loginEntInfo = StringUtils.isNotBlank(loginEntStr) ? JSON.parseObject(loginEntStr, LoginEntInfo.class) : null;
+        if ((StringUtils.isBlank(loginEntStr) || loginEntInfo == null) && NumberUtils.parseInt(systemType) != SystemTypeEnum.MANAGE.getCode()) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, HttpStatus.UN_LOGIN_MESSAGE));
+            return;
+        } else {
+            //校验用户企业是否冻结
+            if (Objects.isNull(loginEntInfo) || loginEntInfo.getStatus() == Global.YES) {
+                ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "您所属企业已被冻结,请联系系统管理员!"));
+                return;
+            }
+
+            //校验用户企业审批状态
+            if (!loginEntInfo.getValid() && !REGISTER.equals(requestUri)) {
+                ResponseUtil.writer(response, HttpResult.error(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ENTCERTIFICATES_INVAILD));
+                return;
+            }
+        }
+
+        /*5、请求权限校验*/
+        //非管理员有接口权限才放行
+        if (loginUserInfo.getIsMain() != Global.YES
+                && NumberUtils.parseInt(systemType) == SystemTypeEnum.MANAGE.getCode()
+                && !checkMenu(clientType, loginUserInfo.getId(), requestUri)) {
+            ResponseUtil.writer(response, HttpResult.error(HttpStatus.AUTHORITY_NO_CODE, HttpStatus.ACCESS_FIAL));
+            return;
+        }
+
+        LoginUserHolder.set(loginUserInfo);
+        LoginEntHolder.set(loginEntInfo);
+        RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
+        RedissonUtils.putString(Global.getFullUserLoginKey(NumberUtils.parseInt(systemType), loginUserInfo.getId()), JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
+        RedissonUtils.putString(Global.getFullUserEntKey(loginEntInfo.getId()), JSON.toJSONString(loginEntInfo), Global.APP_TOKEN_EXPIRE);
+        RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
+        filterChain.doFilter(servletRequest, servletResponse);
+        LoginUserHolder.remove();
+        LoginEntHolder.remove();
+    }
+
+
+    /**
+     * @param userId 用户菜单权限key  url 当前请求url
+     * @return boolean
+     * @desc: 校验url权限
+     * @author: czh
+     * @date: 2023/6/28
+     */
+    private boolean checkMenu(String clientType, Long userId, String url) {
+        return RedissonUtils.contains(Global.REDIS_SYS_MENU_PREFIX + clientType + Global.COLON + userId, url);
+    }
+
+    public static void main(String[] args) {
+        Map<String, Object> tokenMap = EncryUtil.descryV2(Global.PRI_KEY, "dade5058e78847ca5672263c5b821fc09d06083611ab0f6d076af88f082f05384838b3714729e48088c6fc1d1c09763e85e35675a20ac9df50e443b92e1c18e06f9951c7d6a2905a79b889f8617ab143fc97350b5c68f0512f7c18dbf2e49eaf");
+        System.out.println(tokenMap);
+    }
+}

+ 134 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckInterceptor.java

@@ -0,0 +1,134 @@
+//package com.sckw.core.filter;
+//
+//import com.sckw.core.annotation.RepeatSubmit;
+//import com.sckw.core.model.auth.context.LoginEnterpriseHolder;
+//import com.sckw.core.web.context.LoginUserHolder;
+//import jakarta.servlet.http.HttpServletRequest;
+//import jakarta.servlet.http.HttpServletResponse;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.lang.Nullable;
+//import org.springframework.web.method.HandlerMethod;
+//import org.springframework.web.servlet.HandlerInterceptor;
+//
+//import java.lang.reflect.Method;
+//import java.util.Map;
+//
+///**
+// * @author zk
+// * @desc 拦截器
+// * @date 2023/8/18
+// */
+//public class RequestCheckInterceptor implements HandlerInterceptor {
+//
+//    /**
+//     * @desc 请求处理之前执行
+//     * @author zk
+//     * @date 2023/8/18
+//     **/
+//    @Override
+//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+////        if (handler instanceof HandlerMethod) {
+////            HandlerMethod handlerMethod = (HandlerMethod) handler;
+////            Method method = handlerMethod.getMethod();
+////            //判断是否添加了防重复提交的注解
+////            RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class);
+////            if (annotation != null) {
+////                //判断该请求是否重复提交
+////                if (isRepeatSubmit(request, annotation)) {
+////                    //封装错误信息,直接返回
+////                    String message = annotation.message();
+////                    return false;
+////                }
+////            }
+////            return true;
+////        } else {
+////            return true;
+////        }
+//    }
+//
+//
+//    /**
+//     * @desc preHandle成功后执行
+//     * @author zk
+//     * @date 2023/8/18
+//     **/
+//    @Override
+//    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
+//        LoginUserHolder.remove();
+//        LoginEnterpriseHolder.remove();
+//    }
+//
+//
+//    public boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation)
+//    {
+//        String nowParams = "";
+//        if (request instanceof RepeatedlyRequestWrapper)
+//        {
+//            RepeatedlyRequestWrapper repeatedlyRequest = (RepeatedlyRequestWrapper) request;
+//            nowParams = HttpHelper.getBodyString(repeatedlyRequest);
+//        }
+//        //获取请求参数
+//        // body参数为空,获取Parameter的数据
+//        if (StringUtils.isEmpty(nowParams))
+//        {
+//            nowParams = JSON.toJSONString(request.getParameterMap());
+//        }
+//        Map<String, Object> nowDataMap = new HashMap<String, Object>();
+//        nowDataMap.put(REPEAT_PARAMS, nowParams);
+//        nowDataMap.put(REPEAT_TIME, System.currentTimeMillis());
+//
+//        // 请求地址(作为存进Redis的key值),没有使用url是因为所有请求的前缀都是一样的(http://ip地址:端口号),微服务
+//        项目使用nginx所在服务器的IP地址和端口号,之后再转发到网关。
+//        String url = request.getRequestURI();
+//        // 唯一值(没有消息头则使用请求地址)
+//        String submitKey = StringUtils.trimToEmpty(request.getHeader(header));
+//
+//        // 唯一标识(指定key + url + 消息头) 消息头相当于登录用户的唯一标识,唯一标识主要靠token区分。
+//        String cacheRepeatKey = CacheConstants.REPEAT_SUBMIT_KEY + url + submitKey;
+//        //从Redis获取锁
+//        Object sessionObj = redisCache.getCacheObject(cacheRepeatKey);
+//        if (sessionObj != null)
+//        {
+//            Map<String, Object> sessionMap = (Map<String, Object>) sessionObj;
+//            if (sessionMap.containsKey(url))
+//            {
+//                Map<String, Object> preDataMap = (Map<String, Object>) sessionMap.get(url);
+//                //如果请求地址相同、请求参数相同而且时间间隔小于间隔时间,则视为重复请求,直接返回。
+//                if (compareParams(nowDataMap, preDataMap) && compareTime(nowDataMap, preDataMap, annotation.interval()))
+//                {
+//                    return true;
+//                }
+//            }
+//        }
+//        //如果不是重复请求则将锁存进Redis中,过期时间为所设定的时间间隔然后返回。
+//        Map<String, Object> cacheMap = new HashMap<String, Object>();
+//        cacheMap.put(url, nowDataMap);
+//        redisCache.setCacheObject(cacheRepeatKey, cacheMap, annotation.interval(), TimeUnit.MILLISECONDS);
+//        return false;
+//    }
+//
+//    /**
+//     * 判断参数是否相同
+//     */
+//    private boolean compareParams(Map<String, Object> nowMap, Map<String, Object> preMap)
+//    {
+//        String nowParams = (String) nowMap.get(REPEAT_PARAMS);
+//        String preParams = (String) preMap.get(REPEAT_PARAMS);
+//        return nowParams.equals(preParams);
+//    }
+//
+//    /**
+//     * 判断两次间隔时间
+//     */
+//    private boolean compareTime(Map<String, Object> nowMap, Map<String, Object> preMap, int interval)
+//    {
+//        long time1 = (Long) nowMap.get(REPEAT_TIME);
+//        long time2 = (Long) preMap.get(REPEAT_TIME);
+//        if ((time1 - time2) < interval)
+//        {
+//            return true;
+//        }
+//        return false;
+//    }
+//
+//}

+ 29 - 3
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java

@@ -36,7 +36,7 @@ public class Global {
     public static final int SHOW = 1;
     public static final int HIDE = 0;
     public static final int MINUS_ONE = -1;
-    /*正常/删除*/
+    /**正常/删除*/
     public static final int DELETED = 1;
     public static final int UN_DELETED = 0;
     /**是/否*/
@@ -65,7 +65,10 @@ public class Global {
     public static final int NUMERICAL_ONE = 1;
     public static final int NUMERICAL_TWO = 2;
     public static final int NUMERICAL_THREE = 3;
+    public static final int NUMERICAL_FOUR = 4;
+    public static final int NUMERICAL_EIGHT = 8;
     public static final int NUMERICAL_TWELVE = 12;
+    public static final int NUMERICAL_SIXTEEN = 16;
 
     /**pid等于0的*/
     public static final String PID = "0";
@@ -82,12 +85,16 @@ public class Global {
     /**忘记密码获取验证码*/
     public static final String FORGET_SMS = "forget:";
 
+    /**忘记密码获取验证码*/
+    public static final String REPEAT_SUBMIT = "repeatSubmit:";
+
     /**用户登录验证码*/
     public static final String USER_LOGIN_CAPTCHA = "userLoginCaptcha:";
 
     /**redis用户信息前缀*/
     public static final String REDIS_USER_LOGIN_PREFIX = "userLoginInfo:";
     public static final String REDIS_USER_PREFIX = "userInfo:";
+    public static final String REDIS_USER_TOKEN_PREFIX = "userToken:";
 
     /**redis企业信息前缀*/
     public static final String REDIS_ENTERPRISE_PREFIX = "enterpriseInfo:";
@@ -242,6 +249,9 @@ public class Global {
     public static final String CYCLE_MONTH = "月";
     public static final String CYCLE_YEAR = "年";
 
+    /**重量单位*/
+    public static final String UNIT_TON = "吨";
+    public static final String UNIT_KG = "千克";
 
     /**未读*/
     public static final Integer UN_READ = 0;
@@ -254,14 +264,25 @@ public class Global {
     /**已读*/
     public static final Integer READ = 1;
 
+
     /**完整的用户登录信息key*/
     public static String getFullUserLoginKey(Integer systemType, Long userId, String clientType) {
         return REDIS_USER_LOGIN_PREFIX + systemType + COLON + userId + COLON + clientType;
     }
 
+    /**完整的用户登录信息key*/
+    public static String getFullUserLoginKey(Integer systemType, Long userId) {
+        return REDIS_USER_LOGIN_PREFIX + systemType + COLON + userId;
+    }
+
+    /**完整的用户登录tokenkey*/
+    public static String getFullUserTokenKey(String clientType, Long userId) {
+        return REDIS_USER_TOKEN_PREFIX + clientType + COLON + userId;
+    }
+
     /**完整的用户企业信息key*/
-    public static String getFullUserEntKey(Integer systemType, Long userId) {
-        return REDIS_ENTERPRISE_PREFIX + systemType + COLON + userId;
+    public static String getFullUserEntKey(Long entId) {
+        return REDIS_ENTERPRISE_PREFIX + entId;
     }
 
     /**完整的用户菜单信息key*/
@@ -273,4 +294,9 @@ public class Global {
     public static String getForgetKey(Integer systemType, String account) {
         return FORGET_SMS + systemType + COLON + account;
     }
+
+    /**完整的校验重复请求key*/
+    public static String getRepeatSubmitKey(Long userId, String url) {
+        return REPEAT_SUBMIT + userId + COLON + url;
+    }
 }

+ 11 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -1,5 +1,8 @@
 package com.sckw.core.model.enums;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author lfdc
  * @description 车辆运单状态枚举
@@ -111,6 +114,14 @@ public enum CarWaybillEnum {
         return null;
     }
 
+    public static List<Integer> getCodes() {
+        List<Integer> codes = new ArrayList<>();
+        for (CarWaybillEnum waybillEnum : CarWaybillEnum.values()) {
+            codes.add(waybillEnum.getCode());
+        }
+        return codes;
+    }
+
     /**
      * @param code 状态码
      * @desc 是否可以变更司机/车辆

+ 12 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/ClientTypeEnum.java

@@ -1,5 +1,7 @@
 package com.sckw.core.model.enums;
 
+import com.sckw.core.model.constant.Global;
+
 /**
  * @Description 客户端类型枚举
  * @Author dengyinghui
@@ -43,4 +45,14 @@ public enum ClientTypeEnum {
     public void setValue(String value) {
         this.value = value;
     }
+
+    public static int expireTime(String clientType) {
+        if (clientType.equals(pc.getValue())) {
+            return Global.PC_TOKEN_EXPIRE;
+        } else if (clientType.equals(ios.getValue()) || clientType.equals(android.getValue())) {
+            return Global.APP_TOKEN_EXPIRE;
+        } else {
+            return Global.COMMON_EXPIRE;
+        }
+    }
 }

+ 62 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/OrderRuleEnum.java

@@ -0,0 +1,62 @@
+package com.sckw.core.model.enums;
+
+/**
+ * @author lfdc
+ * @description redis生成编号 key枚举定义
+ * @date 2023-08-25 15:07:23
+ */
+public enum OrderRuleEnum {
+
+    /**
+     * 物流订单
+     */
+    LOGISTICS_ORDER("logisticsOrder", "T", "物流订单业务类别"),
+
+    /**
+     * 贸易订单
+     */
+    TRADE_ORDER("tradeOrder", "B", "贸易订单业务类别"),
+
+    /**
+     * 运单
+     */
+    WAYBILL_ORDER("waybillOrder", "T", "运单业务类别"),
+
+    /**
+     * 对账
+     */
+    LEDGER_LOGISTICS_ORDER("ledgerLogisticsOrder", "TR", "物流对账业务类别"),
+    LEDGER_TRADE_ORDER("ledgerTradeOrder", "BR", "贸易对账业务类别"),
+
+    /**
+     * 结算
+     */
+    SETTLEMENT_LOGISTICS_ORDER("settlementLogisticsOrder", "TP", "物流结算业务类别"),
+    SETTLEMENT_TRADE_ORDER("settlementTradeOrder", "BP", "贸易结算业务类别")    ;
+
+
+    private final String value;
+    private final String code;
+    private final String destination;
+
+
+    OrderRuleEnum(String value, String code, String destination) {
+        this.value = value;
+        this.code = code;
+        this.destination = destination;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getDestination() {
+        return destination;
+    }
+
+
+}

+ 62 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/RedisOrderGenerateEnum.java

@@ -0,0 +1,62 @@
+package com.sckw.core.model.enums;
+
+import lombok.Getter;
+
+/**
+ * @author lfdc
+ * @description redis生成编号 key枚举定义
+ * @date 2023-08-25 15:07:23
+ */
+@Getter
+public enum RedisOrderGenerateEnum {
+    /**
+     * 物流订单key
+     */
+    LOGISTICS_ORDER("logisticsOrder","logistics_order_no_generator:","物流订单key"),
+
+    /**
+     * 物流订单-分包key
+     */
+    LOGISTICS_SUBCONTRACT_ORDER("logisticsOrder","logistics_subcontract_order_no_generator:","物流订单-分包key"),
+
+    TRADE_ORDER("tradeOrder","trade_order_no_generator:","贸易订单key"),
+
+    /**
+     * 车辆运单key
+     */
+    WAYBILL_ORDER("waybillOrder","waybill_order_no_generator:","车辆运单key"),
+
+    /**
+     * 对账key
+     */
+    LEDGER_CHECKING("ledger","logistics_order_no_generator:","对账key"),
+    /**
+     * 结算key
+     */
+    SETTLEMENT_CHECKING("settlement","logistics_order_no_generator:","结算key"),
+    ;
+
+
+    private final String value;
+    private final String key;
+    private final String name;
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    RedisOrderGenerateEnum(String value, String key, String name) {
+        this.value = value;
+        this.key = key;
+        this.name = name;
+    }
+
+}

+ 49 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/TaxRateTypeEnum.java

@@ -0,0 +1,49 @@
+package com.sckw.core.model.enums;
+
+import lombok.Data;
+
+/**
+ * desc 合理损耗单位
+ * author zk
+ * date 2023/9/4 0004
+ */
+public enum TaxRateTypeEnum {
+
+    //‰
+    PERCENT(0, "‰", 1000),
+    //%
+    MILLIMETER(1, "%", 100);
+
+    private final Integer code;
+
+    private final String name;
+
+    private final Integer value;
+
+    TaxRateTypeEnum(Integer code, String name, Integer value){
+        this.code = code;
+        this.name = name;
+        this.value = value;
+    }
+
+    public static TaxRateTypeEnum getName(Integer code){
+        for (TaxRateTypeEnum typeEnum : values()) {
+            if (typeEnum.getCode().equals(code)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getValue() {
+        return value;
+    }
+}

+ 50 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/bannerDistrictEnum.java

@@ -0,0 +1,50 @@
+package com.sckw.core.model.enums;
+
+import lombok.Getter;
+
+/**
+ * @author sky
+ * @desc 默认地址类型
+ * @date 2023/6/15
+ */
+@Getter
+public enum bannerDistrictEnum {
+
+    //首页
+    BANNER_ZERO(0, "首页"),
+    //建材市场
+    BANNER_ONE(1, "建材市场"),
+    //求购大厅
+    BANNER_TWO(2, "求购大厅"),
+    //运需广场
+    BANNER_THREE(3, "运需广场"),
+    //运力大厅
+    BANNER_FOUR(4, "运力大厅"),
+    //金融服务
+    BANNER_FIVE(5, "金融服务"),
+    //车后服务
+    BANNER_SIX(6,"车后服务"),
+    //绿智新能
+    BANNER_SEVEN(7,"绿智新能");
+
+
+
+    private final int code;
+
+    private final String name;
+
+    bannerDistrictEnum(int code, String name){
+        this.code = code;
+        this.name = name;
+    }
+
+    public static bannerDistrictEnum getName(int code){
+        for (bannerDistrictEnum addressDefaultTypeEnum : values()) {
+            if (addressDefaultTypeEnum.getCode() == code) {
+                return addressDefaultTypeEnum;
+            }
+        }
+        return null;
+    }
+
+}

+ 18 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java

@@ -89,6 +89,24 @@ public class PageRes<T> {
         return tPageRes;
     }
 
+    /**
+     * 手动对list进行分页数据处理
+     *
+     * @param page     当前页
+     * @param pageSize 每页大小
+     * @param list     总数据
+     * @return
+     */
+    public static <T> PageRes<T> handPage(int page, int pageSize, List<T> list) {
+        PageRes<T> tPageRes = new PageRes<>();
+        tPageRes.setPage(page);
+        tPageRes.setPageSize(pageSize);
+        tPageRes.setSize(list.size());
+        tPageRes.setPages(list.size() / pageSize);
+        tPageRes.setList(list.stream().skip((long) (page - 1) * pageSize).limit(pageSize).toList());
+        return tPageRes;
+    }
+
     public void setPage(int page) {
         this.page = page;
     }

+ 2 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageResult.java

@@ -2,6 +2,7 @@ package com.sckw.core.model.page;
 
 import com.github.pagehelper.PageInfo;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
@@ -10,7 +11,7 @@ import java.util.Map;
  * @Author zk
  * @Date 2019/5/14
  */
-public class PageResult {
+public class PageResult implements Serializable {
 
     /**
      * 当前页数

+ 1 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/vo/BasePara.java

@@ -1,6 +1,5 @@
 package com.sckw.core.model.vo;
 
-import com.sckw.core.model.base.IdsList;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,7 +12,7 @@ import java.io.Serializable;
  */
 @Getter
 @Setter
-public class BasePara implements IdsList, Serializable {
+public class BasePara implements Serializable {
     @Serial
     private static final long serialVersionUID = 1881051859375157819L;
     /**

+ 3 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/BeanUtils.java

@@ -1,6 +1,7 @@
 package com.sckw.core.utils;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.sckw.core.model.constant.Global;
 
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.Field;
@@ -235,7 +236,7 @@ public class BeanUtils extends BeanUtil {
             String fieldName = field[j].getName();
             // 通过属性名称获取对象属性值
             Object value = BeanUtils.getProperty(source, fieldName);
-            if (StringUtils.isNotBlank(value)) {
+            if (value != null) {
                 // 为对象属性赋值
                 BeanUtils.setProperty(target, fieldName, value);
             }
@@ -243,7 +244,7 @@ public class BeanUtils extends BeanUtil {
     }
 
     public static Map<String, Object> convertToMap(Object yourObject) {
-        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         try {
             Field[] fields = yourObject.getClass().getDeclaredFields();
             for (Field field : fields) {

+ 3 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/CollectionUtils.java

@@ -230,7 +230,8 @@ public class CollectionUtils extends CollectionUtil {
 		if (list.size() == 0) {
 			return null;
 		}
-		Integer count = list.size(); // 记录总数
+		// 记录总数
+		Integer count = list.size();
 		int fromIndex = Math.min((page - 1) * pageSize,count);
 		int toIndex = Math.min(fromIndex + pageSize,count);
 
@@ -391,7 +392,7 @@ public class CollectionUtils extends CollectionUtil {
 	 * @throws IllegalAccessException
 	 */
 	public static Map beanToMap(Object object) throws Exception {
-		Map<String, Object> map = new HashMap<String, Object>();
+		Map<String, Object> map = new HashMap<>(Global.NUMERICAL_SIXTEEN);
 		Field[] fields = object.getClass().getDeclaredFields();
 		for (Field field : fields) {
 			field.setAccessible(true);

+ 69 - 13
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -4,6 +4,8 @@ import cn.hutool.core.date.DateUtil;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
@@ -103,6 +105,36 @@ public class DateUtils extends DateUtil {
         return null;
     }
 
+
+    /**
+     * 日期格式化 日期格式为:yyyy-MM-dd
+     *
+     * @param date    日期
+     * @return 返回yyMMdd格式日期
+     */
+    public static String formatDate(Date date) {
+        if (date != null) {
+            SimpleDateFormat df = new SimpleDateFormat(FORMAT8);
+            return df.format(date);
+        }
+        return null;
+    }
+
+
+    /**
+     * 日期格式化 日期格式为:yyyy-MM-dd
+     *
+     * @param expireDate    日期
+     * @return 返回yyMMdd格式日期
+     */
+    public static String formatDateToYYMMDD(Date expireDate) {
+        if (expireDate != null) {
+            String str = new SimpleDateFormat("yyMMdd").format(expireDate);
+            return str;
+        }
+        return null;
+    }
+
     /**
      * @param date
      * @return String    返回类型
@@ -183,7 +215,8 @@ public class DateUtils extends DateUtil {
      * @return
      */
     public static String numberDateFormat(String timestamp, String simpleDateFormatType) {
-        SimpleDateFormat sdf = new SimpleDateFormat(simpleDateFormatType);//要转换的时间格式
+        //要转换的时间格式
+        SimpleDateFormat sdf = new SimpleDateFormat(simpleDateFormatType);
         String date = null;
         if (timestamp.length() == THIRTEEN) {
             date = sdf.format(Long.parseLong(timestamp));
@@ -201,7 +234,8 @@ public class DateUtils extends DateUtil {
      * @return
      */
     public static Date numberDateFormatToDate(String timestamp, String simpleDateFormatType) {
-        SimpleDateFormat sdf = new SimpleDateFormat(simpleDateFormatType);//要转换的时间格式
+        //要转换的时间格式
+        SimpleDateFormat sdf = new SimpleDateFormat(simpleDateFormatType);
         Date date = null;
         try {
             if (timestamp.length() == THIRTEEN) {
@@ -239,12 +273,18 @@ public class DateUtils extends DateUtil {
      * @Date: 2019/7/18 0018 16:46
      */
     public static String getTimeBySecond(long seconds) {
-        long days = seconds / 86400;//转换天数
-        seconds = seconds % 86400;//剩余秒数
-        long hours = seconds / 3600;//转换小时数
-        seconds = seconds % 3600;//剩余秒数
-        long minutes = seconds / 60;//转换分钟
-        seconds = seconds % 60;//剩余秒数
+        //转换天数
+        long days = seconds / 86400;
+        //剩余秒数
+        seconds = seconds % 86400;
+        //转换小时数
+        long hours = seconds / 3600;
+        //剩余秒数
+        seconds = seconds % 3600;
+        //转换分钟
+        long minutes = seconds / 60;
+        //剩余秒数
+        seconds = seconds % 60;
         if (0 < days) {
             return days + "天," + hours + "小时," + minutes + "分," + seconds + "秒";
         } else {
@@ -314,6 +354,17 @@ public class DateUtils extends DateUtil {
         return String.format("%.5f", newTime);
     }
 
+    /**
+     * 获取当天剩余秒数
+     *
+     * @return
+     */
+    public static Long getSecondsDay() {
+        LocalDateTime nextDay = LocalDate.now().plusDays(1).atStartOfDay();
+        LocalDateTime now = LocalDateTime.now();
+        return Duration.between(now, nextDay).getSeconds();
+    }
+
 
     public static void main(String[] ager) throws InterruptedException {
 
@@ -385,17 +436,22 @@ public class DateUtils extends DateUtil {
             endCalendar.set(Calendar.DATE, 1);
             endCalendar.roll(Calendar.DATE, -1);
             if (day == (endCalendar.get(Calendar.DATE) - startCalendar.get(Calendar.DATE))) {
-                monthCount = 1;// 两日期间满一个月
+                // 两日期间满一个月
+                monthCount = 1;
             } else {
-                monthCount = 0;// 两日期间不足一个月
+                // 两日期间不足一个月
+                monthCount = 0;
             }
-        } else if (year != 0 && month == 0) {// 年份不同月份相同
-            if (startCalendar.get(Calendar.DATE) < endCalendar.get(Calendar.DATE)) {// 两日期间的天数,小于等于当月
+            // 年份不同月份相同
+        } else if (year != 0 && month == 0) {
+            // 两日期间的天数,小于等于当月
+            if (startCalendar.get(Calendar.DATE) < endCalendar.get(Calendar.DATE)) {
                 monthCount = 1;
             }
             monthCount += year * 12 + month;
         } else {
-            if (startCalendar.get(Calendar.DATE) >= endCalendar.get(Calendar.DATE)) {// 起始日期DATE 大于等于结束日期DATE
+            // 起始日期DATE 大于等于结束日期DATE
+            if (startCalendar.get(Calendar.DATE) >= endCalendar.get(Calendar.DATE)) {
                 monthCount = year * 12 + month;
             } else {
                 monthCount = year * 12 + month + 1;

+ 47 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/EncryUtil.java

@@ -165,6 +165,52 @@ public class EncryUtil {
     }
 
 
+    /**
+     * 解密
+     * @param appSecret 私钥
+     * @param encryStr 加密了的字符串
+     * @author dengyinghui
+     * #date 2019/02/27
+     * @return
+     */
+    public synchronized static String descryV1(String appSecret, String encryStr) {
+        try {
+            Key key = new SecretKeySpec(toByteArray(appSecret), "AES");
+            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
+            cipher.init(Cipher.DECRYPT_MODE, key);
+            byte[] decodeResult = cipher.doFinal(org.apache.commons.codec.binary.Hex.decodeHex(encryStr));
+            return new String(decodeResult);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
+    /**
+     * 解密
+     * @param appSecret 私钥
+     * @param encryStr 加密了的字符串
+     * @author dengyinghui
+     * #date 2019/02/27
+     * @return
+     */
+    public synchronized static Map<String, Object> descryV2(String appSecret, String encryStr) {
+        try {
+            Key key = new SecretKeySpec(toByteArray(appSecret), "AES");
+            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
+            cipher.init(Cipher.DECRYPT_MODE, key);
+            byte[] decodeResult = cipher.doFinal(org.apache.commons.codec.binary.Hex.decodeHex(encryStr));
+            String decodeStr = new String(decodeResult);
+
+            return JSON.parseObject(decodeStr, HashMap.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
     /**
      * 解密
      * @param appSecret 私钥
@@ -214,7 +260,7 @@ public class EncryUtil {
      **/
     public static boolean checkSign(HttpServletRequest request, String accessSecret) {
         Enumeration<?> pNames = request.getParameterNames();
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         while (pNames.hasMoreElements()) {
             String pName = (String) pNames.nextElement();
             if (SIGN_KEY.equals(pName)) {

+ 2 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/FileUtils.java

@@ -947,7 +947,8 @@ public class FileUtils {
         try {
             br = new BufferedReader(new StringReader(text));
             bw = new BufferedWriter(new FileWriter(file));
-            char[] buf = new char[1024 * 64];          //字符缓冲区
+            //字符缓冲区
+            char[] buf = new char[1024 * 64];
             int len;
             while ((len = br.read(buf)) != -1) {
                 bw.write(buf, 0, len);

+ 15 - 9
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/ListUtils.java

@@ -1,5 +1,7 @@
 package com.sckw.core.utils;
 
+import com.sckw.core.model.constant.Global;
+
 import java.util.*;
 
 /**
@@ -46,7 +48,8 @@ public class ListUtils {
     }
 
     public static void main(String[] args) {
-        String sortTyp = "asc"; // desc-倒叙  asc-正序
+        // desc-倒叙  asc-正序
+        String sortTyp = "asc";
         // 组装测试数据
         List<Map<String, Object>> list = initMapList();
 
@@ -103,18 +106,21 @@ public class ListUtils {
     public static Map<String, Object> sortMap(Map<String, Object> map, String sortTyp) {
         try {
             if ("desc".equals(sortTyp)) {
-
-                Set<String> sortSet = new TreeSet<>(Comparator.reverseOrder()); // 定义个倒叙的set
-                sortSet.addAll(map.keySet()); // 获取全部key,添加后就自然倒序了
+                // 定义个倒叙的set
+                Set<String> sortSet = new TreeSet<>(Comparator.reverseOrder());
+                // 获取全部key,添加后就自然倒序了
+                sortSet.addAll(map.keySet());
 
                 Map<String, Object> resp = new LinkedHashMap<>();
                 for (String key : sortSet) {
-                    resp.put(key, map.get(key)); // 按顺序放入新map
+                    // 按顺序放入新map
+                    resp.put(key, map.get(key));
                 }
 
                 return resp;
             } else {
-                return new TreeMap<>(map); // TreeMap 本身就是正序的
+                // TreeMap 本身就是正序的
+                return new TreeMap<>(map);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -146,19 +152,19 @@ public class ListUtils {
     private static List<Map<String, Object>> initMapList() {
         List<Map<String, Object>> lists = new ArrayList<>();
 
-        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         map.put("name", "王五");
         map.put("age", 55);
         map.put("mobile", "15900001112");
         lists.add(map);
 
-        Map<String, Object> map1 = new HashMap<>();
+        Map<String, Object> map1 = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         map1.put("name", "李四");
         map1.put("age", 18);
         map1.put("mobile", "15900001111");
         lists.add(map1);
 
-        Map<String, Object> map2 = new HashMap<>();
+        Map<String, Object> map2 = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         map2.put("name", "赵六");
         map2.put("age", 58);
         map2.put("mobile", "13700001111");

+ 7 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/NumberUtils.java

@@ -24,6 +24,13 @@ public class NumberUtils {
         }
     }
 
+    public static Integer parseIntV1(Object obj) {
+        if (obj == null) {
+            return null;
+        }
+        return parseInt(obj, 0);
+    }
+
     public static int parseInt(Object obj) {
         return parseInt(obj, 0);
     }

+ 25 - 30
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OkHttpUtils.java

@@ -6,6 +6,7 @@ import okhttp3.*;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hc.client5.http.classic.methods.HttpPost;
 import org.apache.hc.client5.http.entity.mime.FileBody;
+import org.apache.hc.client5.http.entity.mime.HttpMultipartMode;
 import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder;
 import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
 import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
@@ -14,6 +15,7 @@ import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.io.entity.EntityUtils;
 import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.protocol.HTTP;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.util.CollectionUtils;
 
@@ -21,7 +23,9 @@ import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
@@ -413,46 +417,37 @@ public class OkHttpUtils {
 
     /**
      * post请求提交form-data上传文件
+     *
      * @param url
      * @return
      */
     public static String doPostUploadFile(String url, Map<String, Object> param) {
         HttpPost httpPost = new HttpPost(url);
         CloseableHttpResponse response = null;
-
         String respContent = null;
-
-        long startTime = System.currentTimeMillis();
-
-        // 设置请求头 boundary边界不可重复,重复会导致提交失败
-        String boundary = "-------------------------" + UUIDUtils.get32UUID();
-        httpPost.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
-
-        // 创建MultipartEntityBuilder
-        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
-        // 设置字符编码
-        builder.setCharset(StandardCharsets.UTF_8);
-        // 设置边界
-        builder.setBoundary(boundary);
-        for (String key : param.keySet()) {
-            Object value = param.get(key);
-            if (value instanceof File) {
-                File file = (File) value;
-                builder.addPart(key, new FileBody(file));
-                builder.addBinaryBody("media", file, ContentType.create("application/octet-stream"), file.getName());
-            } else {
-                builder.addTextBody(key, String.valueOf(value));
-            }
-        }
-        HttpEntity entity = builder.build();
-        httpPost.setEntity(entity);
         CloseableHttpClient httpClient = HttpClients.createDefault();
         try {
+            String boundary = "--" + UUIDUtils.get32UUID();
+            httpPost.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
+            MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.LEGACY);
+            builder.setCharset(StandardCharsets.UTF_8);
+            builder.setBoundary(boundary);
+            for (String key : param.keySet()) {
+                Object value = param.get(key);
+                if (value instanceof File file) {
+                    FileBody fileBody = new FileBody(file);
+                    builder.addBinaryBody(key, fileBody.getInputStream(), ContentType.DEFAULT_BINARY, fileBody.getFilename());
+                } else {
+                    builder.addBinaryBody(key, String.valueOf(value).getBytes(StandardCharsets.UTF_8));
+                }
+            }
+            HttpEntity entity = builder.build();
+            httpPost.setEntity(entity);
             response = httpClient.execute(httpPost);
             if (response != null) {
                 HttpEntity he = response.getEntity();
                 if (he != null) {
-                    respContent = EntityUtils.toString(he, "UTF-8");
+                    respContent = EntityUtils.toString(he, HTTP.UTF_8);
                 }
             } else {
                 log.error("对方响应的状态码不在符合的范围内!");
@@ -463,12 +458,12 @@ public class OkHttpUtils {
             log.error("网络访问异常,请求url地址={},响应体={},error={}", url, response, e);
             throw new RuntimeException();
         } finally {
-            log.info("统一外网请求参数打印,post请求url地址={},响应={},耗时={}毫秒", url, respContent, (System.currentTimeMillis() - startTime));
+            log.info("统一外网请求参数打印,post请求url地址={},响应={}", url, respContent);
             try {
                 if (response != null) {
                     response.close();
                 }
-                if(null != httpClient){
+                if (null != httpClient) {
                     httpClient.close();
                 }
             } catch (IOException e) {
@@ -485,7 +480,7 @@ public class OkHttpUtils {
      * @param httpMethod
      */
     private static void packageHeader(Map<String, String> paramsHeads, HttpRequestBase httpMethod) {
-        if (null!= paramsHeads && paramsHeads.size()>0) {
+        if (null != paramsHeads && paramsHeads.size() > 0) {
             Set<Map.Entry<String, String>> entrySet = paramsHeads.entrySet();
             for (Map.Entry<String, String> entry : entrySet) {
                 httpMethod.setHeader(entry.getKey(), entry.getValue());

+ 226 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateSeqNoUtils.java

@@ -0,0 +1,226 @@
+package com.sckw.core.utils;
+
+import com.sckw.core.common.enums.StringConstant;
+import com.sckw.core.model.enums.OrderRuleEnum;
+import com.sckw.core.model.enums.RedisOrderGenerateEnum;
+import com.sckw.redis.utils.RedissonUtils;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.support.atomic.RedisAtomicLong;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * @author lfdc
+ * @description 物流订单编号生成工具类
+ * @date 2023-08-25 16:08:41
+ */
+@Slf4j
+@Component
+public class OrderGenerateSeqNoUtils {
+
+
+    @Resource
+    private RedisTemplate redisTemplate;
+
+    /**
+     * 物流订单编号生成
+     *
+     * @param redisOrderGenerateEnum 传入指定枚举的key
+     * @param prefix                 业务类别
+     * @param orderType              单据创建类型
+     * @param level                  所属几级分包
+     * @param number                 同级分包次数
+     * @return
+     */
+    public static String getSeqNo(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix, String orderType, String level, String number) {
+        if (prefix == null) {
+            throw new RuntimeException("Order Generate SeqNo Error");
+        }
+        Date now = new Date();
+        String appendKey = getKey(redisOrderGenerateEnum, prefix, now);
+        //设置过期时间,这里设置为当天的23:59:59
+        Long secondsDay = DateUtils.getSecondsDay();
+        Long seq = generate(appendKey, secondsDay);
+        String date = DateUtils.formatDateToYYMMDD(now);
+        String sequence = String.format("%04d", seq);
+        /**拼接业务编号*/
+        String seqNo = prefix.getCode() + date + sequence;
+        /**extendBusiness 根据实际业务是否需要 */
+        String seqNoEnd = extendBusiness(seqNo, orderType, level, number);
+        log.info("KEY:{}, 序列号生成:{}, 过期时间:{}秒", appendKey, seqNo, secondsDay);
+        return seqNoEnd;
+    }
+
+    private static String extendBusiness(String seqNo, String orderType, String level, String number) {
+        return seqNo + orderType + level + number;
+    }
+
+    /**
+     * 拼接redis key 公共key+[业务标识]+日期
+     *
+     * @param redisOrderGenerateEnum
+     * @param prefix
+     * @param date
+     * @return
+     */
+    public static String getKey(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix, Date date) {
+        StringBuilder stringBuilder = new StringBuilder();
+        StringBuilder appendKey = stringBuilder.append(redisOrderGenerateEnum.getKey()).append(prefix.getCode()).append(DateUtils.formatDate(date));
+        return appendKey.toString();
+    }
+
+    /**
+     * 拼接redis key 公共key+[业务标识]+日期
+     *
+     * @param redisOrderGenerateEnum
+     * @param prefix
+     * @param date
+     * @return
+     */
+    public static String getKey(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix, Date date,String lOrderId) {
+        StringBuilder stringBuilder = new StringBuilder();
+        StringBuilder appendKey = stringBuilder.append(redisOrderGenerateEnum.getKey()).append(prefix.getCode()).append(DateUtils.formatDate(date)).append(lOrderId);
+        return appendKey.toString();
+    }
+
+    /**
+     * 拼接redis key 公共key+[业务标识]不携带日期
+     *
+     * @param redisOrderGenerateEnum
+     * @param prefix
+     * @param str
+     * @return
+     */
+    public static String getKeyNotDate(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix, String str) {
+        StringBuilder stringBuilder = new StringBuilder();
+        StringBuilder appendKey = new StringBuilder();
+        if (StringUtils.isNotEmpty(str)) {
+            appendKey = stringBuilder.append(redisOrderGenerateEnum.getKey()).append(prefix.getCode()).append(str);
+        } else {
+            appendKey = stringBuilder.append(redisOrderGenerateEnum.getKey()).append(prefix.getCode());
+        }
+        return appendKey.toString();
+    }
+
+    /**
+     * //返回当前redis中的key的最大值
+     *
+     * @param redisTemplate
+     * @param key           redisKey
+     * @param expireTime    过期时间
+     * @return
+     */
+    public long generate(RedisTemplate<?, ?> redisTemplate, String key, Date expireTime) {
+        //RedisAtomicLong为原子类,根据传入的key和redis链接工厂创建原子类
+        RedisAtomicLong counter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
+        //设置过期时间
+        counter.expireAt(expireTime);
+        //返回redis中key的值,内部实现下面详细说明
+        return counter.incrementAndGet();
+    }
+
+
+    /**
+     * 返回当前redis中的key的最大值
+     *
+     * @param key        redisKey
+     * @param expireTime 过期时间
+     * @return
+     */
+    public static long generate(String key, Long expireTime) {
+        //RedisAtomicLong counter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
+//        //设置过期时间
+//        counter.expireAt(expireTime);
+//        //返回redis中key的值,内部实现下面详细说明
+//        return counter.incrementAndGet();
+        return RedissonUtils.getAtomicLong(key, expireTime);
+    }
+
+
+    /**
+     * redis 根据key需要减一
+     *
+     * @param redisOrderGenerateEnum
+     * @param prefix
+     * @return
+     */
+    public static String getSeqNoMinusOne(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix) {
+        if (prefix == null) {
+            throw new RuntimeException("Order Generate SeqNo Error");
+        }
+        Date now = new Date();
+        String appendKey = getKey(redisOrderGenerateEnum, prefix, now);
+        //设置过期时间,这里设置为当天的23:59:59
+        Long secondsDay = DateUtils.getSecondsDay();
+        Long seq = getMinusOne(appendKey, secondsDay);
+        String date = DateUtils.formatDateToYYMMDD(now);
+        String sequence = String.format("%04d", seq);
+        /**拼接业务编号*/
+        String seqNo = prefix.getCode() + date + sequence;
+        log.info("KEY:{}, 序列号生成:{}, 过期时间:{}秒", appendKey, seqNo, secondsDay);
+        return seqNo;
+    }
+
+    public static long getMinusOne(String key, Long expireTime) {
+        long seq = RedissonUtils.decrementAndGet(key, expireTime);
+//        RedisAtomicLong counter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
+//        //设置过期时间
+//        counter.expireAt(expireTime);
+//        //返回redis中key的值,内部实现下面详细说明
+//        return counter.incrementAndGet();
+        return seq;
+    }
+
+
+    /**
+     * 贸易订单/对账/结算生成规则
+     *
+     * @param redisOrderGenerateEnum 传入枚举指定的key
+     * @param prefix                 业务类别
+     * @return
+     */
+    public static String getOtherSeqNo(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix) {
+        if (Objects.isNull(prefix)) {
+            throw new RuntimeException("Order Generate SeqNo Error");
+        }
+        Date now = new Date();
+        String appendKey = getKey(redisOrderGenerateEnum, prefix, now);
+        //设置过期时间,这里设置为当天的23:59:59
+        Long secondsDay = DateUtils.getSecondsDay();
+        Long seq = generate(appendKey, secondsDay);
+        String date = DateUtils.formatDateToYYMMDD(now);
+        String sequence = String.format("%04d", seq);
+        /**拼接业务编号*/
+        String seqNo = prefix.getCode() + date + sequence;
+        log.info("KEY:{}, 序列号生成:{}, 过期时间:{}秒", appendKey, seqNo, secondsDay);
+        return seqNo;
+    }
+
+
+    /**
+     * 车辆运单编号规则生成
+     *
+     * @param redisOrderGenerateEnum 传入枚举指定的key
+     * @param prefix                 业务类别
+     * @return
+     */
+    public static String getWaybillSeqNo(RedisOrderGenerateEnum redisOrderGenerateEnum, OrderRuleEnum prefix, String pidOrderNo) {
+        if (Objects.isNull(prefix)) {
+            throw new RuntimeException("Order Generate SeqNo Error");
+        }
+        String appendKey = getKeyNotDate(redisOrderGenerateEnum, prefix, pidOrderNo);
+        //设置过期时间,这里设置为当天的23:59:59
+        Long secondsDay = DateUtils.getSecondsDay();
+        Long seq = generate(appendKey, secondsDay);
+        String sequence = com.sckw.core.utils.StringUtils.addZeroForNum(seq.toString(), 3);
+        /**拼接业务编号*/
+        String seqNo = pidOrderNo + StringConstant.HYPHEN + sequence;
+        log.info("KEY:{}, 序列号生成:{}, 过期时间:{}秒", appendKey, seqNo, secondsDay);
+        return seqNo;
+    }
+}

+ 7 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateUtils.java

@@ -26,6 +26,12 @@ public class OrderGenerateUtils {
     private static final String ORDER_NO_GENERATOR = "order_no_generator:";
 
 
+    /**
+     * redisson生成订单号 name(物流订单)
+     */
+    private static final String LOGISTICS_ORDER_NO_GENERATOR = "logistics_order_no_generator:";
+
+
     /**
      * @desc: 生成订单号
      * @author: yzc
@@ -36,7 +42,7 @@ public class OrderGenerateUtils {
     public static String generateOrderNo(String prefix) {
         String date = getNowDateStr();
         long orderId = RedissonUtils.getAtomicLong(ORDER_NO_GENERATOR + date,60L);
-        return String.format("%s-%s%04d", prefix, date, orderId);
+        return String.format("%s%s%04d", prefix, date, orderId);
     }
 
     /**

+ 8 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java

@@ -122,13 +122,19 @@ public class PasswordUtils {
 
     public static void main(String[] args) {
 
-        String password = PasswordUtils.entryptPassword(PasswordUtils.md5("17358629955"));
-        String md5 = PasswordUtils.md5("17358629955");
+        String password = PasswordUtils.entryptPassword(PasswordUtils.md5("18581845668"));
+        String md5 = PasswordUtils.md5("18581845668");
         System.out.println(password);
         System.out.println(md5);
         System.out.println(validatePassword(md5, password));
 //        System.out.println(PasswordUtils.md5("czh"));
 //        System.out.println(PasswordUtils.entryptPassword(PasswordUtils.md5("czh")));
         System.out.println(validatePassword(md5, "86e07d48c04c8a4bd9fe9dc819c608c43efda576b215995e9f138809"));
+
+
+        byte[] salt = Digests.generateSalt(SALT_SIZE);
+        byte[] hashPassword = Digests.sha1(md5.getBytes(), salt, HASH_INTERATIONS);
+        System.out.println(Encodes.encodeHex(salt));
+        System.out.println(Encodes.encodeHex(hashPassword));
     }
 }

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/RegularUtils.java

@@ -72,7 +72,7 @@ public class RegularUtils {
     /**
      * 中文汉字
      */
-    public static final String CHINESE = "^[\\u4e00-\\u9fa5]{2,4}$";
+    public static final String CHINESE = "^[\\u4e00-\\u9fa5]{1,6}$";
 
     /**
      * 姓名相关

+ 69 - 8
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java

@@ -1,6 +1,7 @@
 package com.sckw.core.utils;
 
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.constant.Global;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.*;
@@ -367,6 +368,20 @@ public class StringUtils {
         return false;
     }
 
+    /**
+     * 截取字符串从index到最后
+     *
+     * @param str
+     * @param index
+     * @return
+     */
+    public static String subStrFromIndexToEnd(String str, Integer index) {
+        if (StringUtils.isBlank(str) || str.length() <= index) {
+            return str;
+        }
+        return str.substring(str.length() - index);
+    }
+
     /**
      * 字符串转数组
      *
@@ -493,7 +508,7 @@ public class StringUtils {
      * @return url请求参数部分
      */
     public static Map<String, String> urlRequest(String url) {
-        Map<String, String> mapRequest = new HashMap<String, String>();
+        Map<String, String> mapRequest = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         String[] arrSplit = null;
         String strUrlParam = truncateUrlPage(url);
         if (strUrlParam == null) {
@@ -526,7 +541,7 @@ public class StringUtils {
      * @return url请求参数部分
      */
     public static Map<String, String> urlParams(String strUrlParam) {
-        Map<String, String> mapRequest = new HashMap<String, String>();
+        Map<String, String> mapRequest = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         String[] arrSplit = null;
         if (strUrlParam == null) {
             return mapRequest;
@@ -699,18 +714,38 @@ public class StringUtils {
             // already capitalized
             return str;
         }
-
-        final int newCodePoints[] = new int[strLen]; // cannot be longer than the char array
+        // cannot be longer than the char array
+        final int newCodePoints[] = new int[strLen];
         int outOffset = 0;
-        newCodePoints[outOffset++] = newCodePoint; // copy the first codepoint
+        // copy the first codepoint
+        newCodePoints[outOffset++] = newCodePoint;
         for (int inOffset = Character.charCount(firstCodepoint); inOffset < strLen; ) {
             final int codepoint = str.codePointAt(inOffset);
-            newCodePoints[outOffset++] = codepoint; // copy the remaining ones
+            // copy the remaining ones
+            newCodePoints[outOffset++] = codepoint;
             inOffset += Character.charCount(codepoint);
         }
         return new String(newCodePoints, 0, outOffset);
     }
 
+
+    /**
+     * 字符串格式化长度不足补0
+     */
+    public static String addZeroForNum(String str, int strLength) {
+        int strLen = str.length();
+        if (strLen < strLength) {
+            StringBuffer sb = new StringBuffer(str);
+            while (strLen < strLength) {
+                // 左补0
+                sb.insert(0, "0");
+                strLen = sb.length();
+            }
+            str = sb.toString();
+        }
+        return str;
+    }
+
     /**
      * 值替换
      *
@@ -722,8 +757,34 @@ public class StringUtils {
         return String.format(prefix, args);
     }
 
+    /**
+     * @desc: 替换文本变量,变量格式为:${}
+     * @author: yzc
+     * @date: 2023-09-01 9:03
+     * @Param text: 文本
+     * @Param varNames:  变量名map
+     * @return: java.util.List<java.lang.String>  替换后的文本
+     */
+    public static String replaceTextVar(String text, Map<String, Object> varNames) {
+        if (StringUtils.isBlank(text) || CollectionUtils.isEmpty(varNames)) {
+            return text;
+        }
+        Pattern pattern = Pattern.compile("\\$\\{([^}]+)\\}");
+        Matcher matcher = pattern.matcher(text);
+        StringBuilder result = new StringBuilder();
+        while (matcher.find()) {
+            String varName = matcher.group(1);
+            Object varValue = varNames.get(varName);
+            if (Objects.nonNull(varValue)) {
+                matcher.appendReplacement(result, varValue.toString());
+            }
+        }
+        matcher.appendTail(result);
+        return result.toString();
+    }
+
     public static void main(String[] args) {
-        Map<String, Object> param = new HashMap();
+        Map<String, Object> param = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         param.put("account", "17358629955");
         param.put("pwd", "123456");
         String template = "账号创建成功,欢迎使用危品汇!登录账号:${account},默认密码:${pwd}!";
@@ -732,7 +793,7 @@ public class StringUtils {
         }
         System.out.println(template);
 
-        Map<String, Object> m = new HashMap<>();
+        Map<String, Object> m = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         m.put("account", "han");
         m.put("pwd", "zhong");
         System.out.println(replace1(template, m));

+ 3 - 3
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/workerUtils.java

@@ -121,9 +121,9 @@ public class workerUtils {
         // 上次生成ID的时间截
         lastTimestamp = timestamp;
         // 移位并通过或运算拼到一起组成64位的ID
-        return ((timestamp - twepoch) << timestampLeftShift) //
-                | (datacenterId << datacenterIdShift) //
-                | (workerId << workerIdShift) //
+        return ((timestamp - twepoch) << timestampLeftShift)
+                | (datacenterId << datacenterIdShift)
+                | (workerId << workerIdShift)
                 | sequence;
     }
 

+ 8 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -146,6 +146,7 @@ public class HttpStatus {
     public static final String COOPERATE_CANCEL_EXISTS = "未查询到可撤销的记录";
     public static final String ADDRESS_NOT_EXISTS = "未查询到地址记录或已失效";
     public static final String CONTRACT_NOT_EXISTS = "未查询到合同或已失效";
+    public static final String BANNER_NOT_EXISTS = "未查询到banner数据或已失效";
 
     /**自定义提示消息*/
     public static final String PASSWD_ERROR = "密码不正确";
@@ -181,5 +182,12 @@ public class HttpStatus {
     public static final String MSG_028 = "合同未签约,不能手动完结!";
     public static final String MSG_029 = "合同编号超长!";
     public static final String MSG_030 = "合同名称超长!";
+    public static final String MSG_031 = "您与所选企业存在未完结销售订单,当前无法删除!";
+
+    public static final String MSG_032 = "您与所选企业存在未完结托运承运订单,当前无法删除!";
+
+    public static final String MSG_033 = "当前企业资质在审核中,无法删除!";
+
+    public static final String MSG_034 = "您与所选企业存在未完结对账单,当前无法删除!";
 
 }

+ 9 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/context/LoginUserHolder.java

@@ -2,6 +2,9 @@ package com.sckw.core.web.context;
 
 import com.sckw.core.web.model.LoginUserInfo;
 
+import java.util.Collections;
+import java.util.List;
+
 /**
  * 当前登录用户的临时保存容器
  * @Author zk
@@ -137,5 +140,11 @@ public class LoginUserHolder {
         return LONGIN_USER_HOLDER.get() == null ? null : LONGIN_USER_HOLDER.get().getDeptIds();
     }
 
+    /**
+     * 用户权限
+     */
+    public static List<Long> getAuthUserIdList() {
+        return LONGIN_USER_HOLDER.get() == null ? Collections.emptyList() : LONGIN_USER_HOLDER.get().getAuthUserIdList();
+    }
 
 }

+ 5 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/model/LoginUserInfo.java

@@ -2,6 +2,8 @@ package com.sckw.core.web.model;
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 登录中的用户信息
  * @Author zhaokang
@@ -55,12 +57,13 @@ public class LoginUserInfo {
      */
     private String entName;
 
+    private List<Long> authUserIdList;
 
     public LoginUserInfo() {
     }
 
     public LoginUserInfo(Long id, Integer systemType, String account, String userName, String phone,
-                         int isMain, int status, Long entId, String clientType, String deptIds) {
+                         int isMain, int status, Long entId, String clientType, String deptIds, List<Long> authUserIdList) {
         this.id = id;
         this.systemType = systemType;
         this.account = account;
@@ -71,5 +74,6 @@ public class LoginUserInfo {
         this.entId = entId;
         this.clientType = clientType;
         this.deptIds = deptIds;
+        this.authUserIdList = authUserIdList;
     }
 }

+ 35 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/request/RequestReadUtils.java

@@ -0,0 +1,35 @@
+package com.sckw.core.web.request;
+
+import jakarta.servlet.http.HttpServletRequest;
+import java.io.*;
+
+/**
+ * @desc
+ * @author zk
+ * @date 2020/08/19
+ */
+public class RequestReadUtils {
+    private static final int BUFFER_SIZE = 1024 * 8;
+
+    public static String read(HttpServletRequest request) throws IOException {
+        BufferedReader bufferedReader = request.getReader();
+        StringWriter writer = new StringWriter();
+        write(bufferedReader,writer);
+        return writer.getBuffer().toString();
+    }
+
+    public static long write(Reader reader, Writer writer) throws IOException {
+        return write(reader, writer, BUFFER_SIZE);
+    }
+
+    public static long write(Reader reader, Writer writer, int bufferSize) throws IOException {
+        int read;
+        long total = 0;
+        char[] buf = new char[bufferSize];
+        while( ( read = reader.read(buf) ) != -1 ) {
+            writer.write(buf, 0, read);
+            total += read;
+        }
+        return total;
+    }
+}

+ 107 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/request/RequestUtil.java

@@ -0,0 +1,107 @@
+package com.sckw.core.web.request;
+
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+import java.util.Enumeration;
+import java.util.Map;
+
+/**
+ * @desc 请求校验
+ * @author zk
+ * @date 2020/08/19
+ */
+public class RequestUtil {
+
+    /**
+     * 获取参数值
+     * @param request 请求
+     * @param key 键
+     * @throws Exception
+     */
+    public static String getParam(HttpServletRequest request, String key) throws Exception{
+        String value = request.getHeader(key);
+        if (StringUtils.isBlank(value)){
+            value = request.getParameter(key);
+        }
+        return value;
+    }
+
+    /**
+     * @description 获取请求参数
+     * @author zk
+     * @date 2020/8/17 18:24
+     * @param
+     * @return
+     **/
+    public static Map<String, Object> getParams(HttpServletRequest request){
+        Enumeration<?> pNames = request.getParameterNames();
+        Map<String, Object> params = CollectionUtils.createHashMap();
+        while (pNames.hasMoreElements()) {
+            String pName = (String) pNames.nextElement();
+            Object pValue = request.getParameter(pName);
+            params.put(pName, pValue);
+        }
+        return params;
+    }
+
+    /**
+     * @description 获取请求参数
+     * @author zk
+     * @date 2020/8/17 18:24
+     * @param
+     * @return
+
+    public static Object getBodyParams(HttpServletRequest request){
+        Object params;
+        try {
+            RequestWrapper requestWrapper = new RequestWrapper(request);
+            String reqBody = requestWrapper.getBodyString(request);
+            params = JSONObject.parse(reqBody);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return params;
+    }**/
+
+    /**
+     * @Description 获取 Nginx代理后的真实ip
+     * @author jiangwei
+     * @date 2019/9/11 10:46
+     */
+    public static String getClientIp(HttpServletRequest request) {
+        String ip = request.getHeader("X-Forwarded-For");
+        String unKnown = "unKnown";
+        if (StringUtils.isNotBlank(ip) && !unKnown.equalsIgnoreCase(ip)) {
+            //多次反向代理后会有多个ip值,第一个ip才是真实ip
+            int index = ip.indexOf(",");
+            if (index != -1) {
+                return ip.substring(0, index);
+            } else {
+
+                return ip;
+            }
+        }
+        ip = request.getHeader("X-Real-IP");
+        if (StringUtils.isNotBlank(ip) && !unKnown.equalsIgnoreCase(ip)) {
+            return ip;
+        }
+        return request.getRemoteAddr();
+    }
+
+
+    /**
+     * 拦截器中,通过@Autowired注入失效,需要通过以下方式获取service对象
+     * @param clazz  对象class类
+     * @param request http request
+     * @param <T>  对象类别
+     * @return 返回一个对象
+     */
+    public static <T> T getObject(Class<T> clazz, HttpServletRequest request) {
+        BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
+        return factory.getBean(clazz);
+    }
+}

+ 29 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/ResponseUtil.java

@@ -0,0 +1,29 @@
+package com.sckw.core.web.response;
+
+import com.alibaba.fastjson.JSON;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * @desc 响应
+ * @author zk
+ * @date 2020/08/19
+ */
+public class ResponseUtil {
+
+    /**
+     * 相应输出
+     * @param response 响应
+     * @param httpResult 相应内容
+     * @throws Exception
+     */
+    public static void writer(HttpServletResponse response, HttpResult httpResult) throws IOException {
+        response.setCharacterEncoding("utf-8");
+        PrintWriter printWriter = response.getWriter();
+        printWriter.write(JSON.toJSONString(httpResult));
+        printWriter.flush();
+        printWriter.close();
+    }
+}

+ 3 - 1
sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1,7 +1,9 @@
 com.sckw.core.aspect.DaoAspect
+com.sckw.core.aspect.NoRepeatSubmitAspect
 com.sckw.core.exception.GlobalSystemExceptionHandler
 com.sckw.core.web.config.CustomConfig
-com.sckw.core.filter.LoginFilter
+#com.sckw.core.filter.LoginFilter
+com.sckw.core.filter.RequestCheckFilter
 com.sckw.core.config.MybatisPlusConfig
 com.sckw.core.config.JacksonConfig
 com.sckw.core.filter.ExceptionFilterConfig

+ 8 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -22,6 +22,7 @@ public class DateUtil {
     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
     public static final String DEF_DATE_FORMAT = "yyyy-MM-dd";
     public static final DateTimeFormatter YYYY_MM_DD_HH_MM_SS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+    public static final DateTimeFormatter YYYYMMDDHHMMSS = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
     public static final DateTimeFormatter YYYY_MM_DD = DateTimeFormatter.ofPattern("yyyy-MM-dd");
     public static final DateTimeFormatter HH_MM_SS = DateTimeFormatter.ofPattern("HH:mm:ss");
 
@@ -99,6 +100,13 @@ public class DateUtil {
         return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
     }
 
+
+    public static String localDateTimeToString(LocalDateTime localDateTime) {
+        String localDateTimeNowStr = localDateTime.format(YYYYMMDDHHMMSS);
+        return localDateTimeNowStr;
+    }
+
+
     /**
      * yyyy-MM-dd 转换成 LocalDateTime
      *

+ 11 - 4
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java

@@ -7,10 +7,14 @@ import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson.JSONObject;
 import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.annotation.ExcelContext;
 import com.sckw.excel.annotation.ExcelSelected;
-import com.sckw.excel.config.easyexcel.*;
+import com.sckw.excel.config.easyexcel.ExcelSelectedResolve;
+import com.sckw.excel.config.easyexcel.LocalDateTimeConverter;
+import com.sckw.excel.config.easyexcel.RowWriteHandlerImpl;
+import com.sckw.excel.config.easyexcel.SelectedSheetWriteHandler;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.Assert;
@@ -21,7 +25,7 @@ import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
 import java.net.URLEncoder;
-import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -101,11 +105,14 @@ public class ExcelUtil {
     }
 
     private static void buildResponse(HttpServletResponse response, String fileName) throws UnsupportedEncodingException {
-        fileName = URLEncoder.encode(fileName + "-" + DateUtil.dateToStr(LocalDate.now()), "UTF-8").replaceAll("\\+", "%20");
+        fileName = URLEncoder.encode(fileName + "-" + DateUtil.localDateTimeToString(LocalDateTime.now()), "UTF-8").replaceAll("\\+", "%20");
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("UTF-8");
         response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
+        //下面 浏览器下载正常,但是postman下载文件名称乱码
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        //下面这是用postman测名称正常,换到浏览器会多了filename_=utf-8等字样。。)
+//        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")+ ".xlsx" + ";filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8")+ ".xlsx");
     }
 
     private static void buildResponse(HttpServletResponse response, Exception e) {
@@ -214,7 +221,7 @@ public class ExcelUtil {
      * @return Map<下拉框列索引, 下拉框内容> map
      */
     private static <T> Map<Integer, ExcelSelectedResolve> resolveSelectedAnnotation(Class<T> head) {
-        Map<Integer, ExcelSelectedResolve> selectedMap = new HashMap<>();
+        Map<Integer, ExcelSelectedResolve> selectedMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
 
         // getDeclaredFields(): 返回全部声明的属性;getFields(): 返回public类型的属性
         Field[] fields = head.getDeclaredFields();

+ 55 - 0
sckw-common/sckw-common-log/pom.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
+        <version>1.0.0</version>
+    </parent>
+
+    <artifactId>sckw-common-log</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 133 - 0
sckw-common/sckw-common-log/src/main/java/com/sckw/log/aspect/LogInfoAspect.java

@@ -0,0 +1,133 @@
+package com.sckw.log.aspect;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * @desc: controller层接口日志打印
+ * @author: yzc
+ * @date: 2023-08-21 11:23
+ */
+@Aspect
+@Component
+@Slf4j
+@Order(Ordered.HIGHEST_PRECEDENCE)
+public class LogInfoAspect {
+
+    public static final String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss:SSS";
+
+    @Pointcut("execution(* com.sckw.*.controller.*.*(..))")
+    public void cutController() {
+    }
+
+    @Around(value = "cutController()", argNames = "p")
+    public Object cutController(ProceedingJoinPoint p) throws Throwable {
+        return getResult(p);
+
+    }
+
+    @Pointcut("execution(* com.sckw.*.dubbo.*.*(..))")
+    public void cutDubbo() {
+    }
+
+    @Around(value = "cutDubbo()", argNames = "p")
+    public Object around(ProceedingJoinPoint p) throws Throwable {
+        return getResult(p);
+    }
+
+    private Object getResult(ProceedingJoinPoint p) throws Throwable {
+        Object result = null;
+        //开始时间
+        Date startTime = new Date();
+        String targetName = p.getTarget().getClass().getName();
+        String methodName = p.getSignature().getName();
+        Object[] args = p.getArgs();
+        Stream<?> stream = ArrayUtils.isEmpty(args) ? Stream.empty() : Arrays.stream(args);
+        List<Object> logArgs = stream
+                .filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse)) && !(arg instanceof MultipartFile))
+                .collect(Collectors.toList());
+        //过滤后序列化无异常
+        String param = JSON.toJSONString(logArgs);
+        String exception = "";
+        try {
+            //执行结果,返回参数
+            result = p.proceed();
+        } catch (Throwable e) {
+            exception = e.getMessage();
+            //异常抛出
+            throw e;
+        } finally {
+            Date endTime = new Date();
+            long time = endTime.getTime() - startTime.getTime();
+            Boolean slowRequest = (time > 1500L);
+            log.info("{}.{}," +
+                            "param={}," +
+                            "result={}," +
+                            "exception={}," +
+                            "[{}->{}],slowRequest{}=[{}]", targetName, methodName,
+                    param,
+                    JSON.toJSONString(result),
+                    exception,
+                    DateFormatUtils.format(startTime, TIME_PATTERN),
+                    DateFormatUtils.format(endTime, TIME_PATTERN),
+                    slowRequest,
+                    time);
+        }
+        return result;
+    }
+
+    @Pointcut("execution(* com.sckw.*.service.*.*(..))")
+    public void cutService() {
+    }
+
+    @AfterThrowing(pointcut = "cutService()", throwing = "e")
+    public void doAfterThrowing(JoinPoint point, Throwable e) throws Throwable {
+        Date startTime = new Date();
+        String targetName = point.getTarget().getClass().getName();
+        String methodName = point.getSignature().getName();
+        //获取用户请求方法的参数并序列化为JSON格式字符串
+        StringBuilder params = new StringBuilder();
+        if (point.getArgs() != null && point.getArgs().length > 0) {
+            for (int i = 0; i < point.getArgs().length; i++) {
+                Object object = point.getArgs()[i];
+                if (!(object instanceof MultipartFile)) {
+                    params.append(JSONObject.toJSONString(point.getArgs()[i])).append(";");
+                }
+            }
+        }
+
+        Date endTime = new Date();
+        long time = endTime.getTime() - startTime.getTime();
+        log.error("{}.{}," +
+                        "param={}," +
+                        "exception={}," +
+                        "[{}->{}]=[{}]", targetName, methodName,
+                params,
+                e.getMessage(),
+                DateFormatUtils.format(startTime, TIME_PATTERN),
+                DateFormatUtils.format(endTime, TIME_PATTERN),
+                time);
+    }
+
+}

+ 24 - 0
sckw-common/sckw-common-log/src/main/java/com/sckw/log/config/WebConfig.java

@@ -0,0 +1,24 @@
+package com.sckw.log.config;
+
+import com.sckw.log.interceptor.LogInterceptor;
+import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @desc: 配置日志拦截器
+ * @author: yzc
+ * @date: 2023-08-23 10:40
+ */
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+    @Resource
+    private LogInterceptor logInterceptor;
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(logInterceptor)
+                .addPathPatterns("/**");
+    }
+}

+ 32 - 0
sckw-common/sckw-common-log/src/main/java/com/sckw/log/interceptor/LogInterceptor.java

@@ -0,0 +1,32 @@
+package com.sckw.log.interceptor;
+
+import com.sckw.log.utils.UuidUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.StringUtils;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+/**
+ * @desc: 日志拦截器
+ * @author: yzc
+ * @date: 2023-08-23 10:38
+ */
+@Slf4j
+@Configuration
+public class LogInterceptor implements HandlerInterceptor {
+    private static final String TRACE_ID = "traceId";
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        String traceId = request.getHeader(TRACE_ID);
+        if (!StringUtils.hasText(traceId)) {
+            MDC.put(TRACE_ID, UuidUtils.getUuid());
+        } else {
+            MDC.put(TRACE_ID, traceId);
+        }
+        return true;
+    }
+
+}

+ 15 - 0
sckw-common/sckw-common-log/src/main/java/com/sckw/log/utils/UuidUtils.java

@@ -0,0 +1,15 @@
+package com.sckw.log.utils;
+
+import java.util.UUID;
+
+/**
+ * @desc: 获取uuid
+ * @author: yzc
+ * @date: 2023-08-22 15:21
+ */
+public class UuidUtils {
+
+    public static String getUuid(){
+        return UUID.randomUUID().toString().replace("-", "");
+    }
+}

+ 3 - 0
sckw-common/sckw-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1,3 @@
+com.sckw.log.aspect.LogInfoAspect
+com.sckw.log.interceptor.LogInterceptor
+com.sckw.log.config.WebConfig

+ 13 - 1
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java

@@ -125,11 +125,13 @@ public class SckwLogisticsOrder {
     /**
      * 卸货日期
      */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date unloadTime;
 
     /**
      * 装货日期
      */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date loadTime;
 
     /**
@@ -276,6 +278,11 @@ public class SckwLogisticsOrder {
      */
     private Long checkEntId;
 
+    /**
+     * 托运一级企业主键ID
+     */
+    private Long checkTopEntId;
+
     /**
      * 托运企业名称
      */
@@ -296,6 +303,11 @@ public class SckwLogisticsOrder {
      */
     private Long carrierEntId;
 
+    /**
+     * 承运企业主键ID
+     */
+    private Long carrierTopEntId;
+
     /**
      * 承运企业名称
      */
@@ -451,7 +463,7 @@ public class SckwLogisticsOrder {
     private String delFlag;
 
     /**
-     * 关联的承运订单
+     * 车辆运单编
      */
     private String wOrderNo;
 

+ 5 - 0
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java

@@ -161,6 +161,11 @@ public class SckwTradeOrder {
      */
     private String goodsTaxRate;
 
+    /**
+     * 商品缩略图
+     */
+    private String goodsThumb;
+
     /**
      * 商品所属项目名称
      */

+ 3 - 5
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java

@@ -1,13 +1,11 @@
 package com.sckw.mongo.model;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
-import org.springframework.data.mongodb.core.mapping.Field;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -247,7 +245,7 @@ public class SckwWaybillOrder{
     /**
      * 商品类型
      */
-    private Long goodsType;
+    private String goodsType;
 
     /**
      * 商品行业
@@ -324,7 +322,7 @@ public class SckwWaybillOrder{
     /**
      * 装货所在地区
      */
-    private Integer loadCityCode;
+    private String loadCityCode;
 
     /**
      * 装货所属区域名称
@@ -369,7 +367,7 @@ public class SckwWaybillOrder{
     /**
      * 卸货所在地区
      */
-    private Integer unloadCityCode;
+    private String unloadCityCode;
 
     /**
      * 卸货所属区域名称

+ 46 - 8
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java

@@ -10,33 +10,63 @@ public class RedisConstant {
     /**
      * 短信验证码值key
      */
-    public static final String MESSAGE_SMS_VERIFY_CODE_VALUE_KEY = "sckw:sms:verifyCode:value:%s:%s";
+    public static final String MESSAGE_SMS_VERIFY_CODE_VALUE_KEY = "message:sms:verifyCode:value:%s:%s";
     /**
      * 短信验证码请求key
      */
-    public static final String MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY = "sckw:sms:verifyCode:request:%s:%s";
+    public static final String MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY = "message:sms:verifyCode:request:%s:%s";
+
+    /**
+     * 短信验证码请求时间
+     */
+    public static final Long SMS_VERIFY_CODE_REQUEST_TIME = 60L;
     /**
-     * 短信验证码有效时间(秒)
+     * 短信验证码锁key
      */
-    public static final Long SMS_VERIFY_CODE_VALID_TIME = 180L;
+    public static final String MESSAGE_SMS_VERIFY_CODE_LOCK_KEY = "message:sms:verifyCode:lock:%s:%s";
+    /**
+     * 短信验证码有效时间(秒)5分钟
+     */
+    public static final Long SMS_VERIFY_CODE_VALID_TIME = 300L;
 
     /**
      * message消费请求key
      */
-    public static final String MESSAGE_CONSUMER_REQUEST_KEY = "sckw:message:consumer:request:%s";
+    public static final String MESSAGE_CONSUMER_REQUEST_KEY = "message:msg:consumer:request:%s";
 
     /**
      * 商品更新库存锁key
      */
-    public static final String GOODS_UPDATE_AMOUNT_KEY = "sckw:product:goods:update:amount:%s";
+    public static final String GOODS_UPDATE_AMOUNT_KEY = "product:goods:update:amount:%s";
     /**
      * 更新贸易订单委托量、已履约量锁key
      */
-    public static final String TORDER_UPDATE_AMOUNT_KEY = "sckw:trade:order:update:amount:%s";
+    public static final String TORDER_UPDATE_AMOUNT_KEY = "order:trade:update:amount:%s";
     /**
      * 合同签约完成更新贸易订单状态锁key
      */
-    public static final String TORDER_CONTRACT_UPDATE_KEY = "sckw:trade:order:contract:update:%s";
+    public static final String TORDER_CONTRACT_UPDATE_KEY = "order:trade:contract:update:%s";
+
+    /**
+     * 合同签约完成更新物流订单状态锁key
+     */
+    public static final String LOGISTICS_ORDER_CONTRACT_UPDATE_KEY = "order:trade:logistics:update:%s";
+    /**
+     * 生成贸易订单号锁key
+     */
+    public static final String TORDER_NO_GENERATE_KEY = "order:trade:no:generate:%s";
+
+    /**
+     * 生成物流订单号锁key
+     */
+    public static final String LOGISTICS_NO_GENERATE_KEY = "order:logistics:no:generate:%s";
+
+
+    /**
+     * 生成物流订单号锁key
+     */
+    public static final String WAYBILL_NO_GENERATE_KEY = "order:waybill:no:generate:%s";
+
 
     /**
      * 消费请求有效时间(秒)
@@ -46,5 +76,13 @@ public class RedisConstant {
      * 结算单锁
      */
     public static final String SETTLEMENT_KEY = "sckw:kst:%s";
+    /**
+     * 企业关联钱包
+     */
+    public static final String WALLET_ENT = "wallet:ent";
+    /**
+     * 钱包关联企业
+     */
+    public static final String WALLET_UID = "wallet:uid";
 
 }

+ 47 - 0
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/RedissonUtils.java

@@ -135,6 +135,18 @@ public class RedissonUtils {
         log.debug("添加缓存【{}】 【{}】开始", key, value);
         RBucket<String> bucket = redissonUtils.redissonClient.getBucket(key, StringCodec.INSTANCE);
         bucket.set(value, expired <= 0 ? DEFAULT_EXPIRED : expired, TimeUnit.SECONDS);
+
+    }
+    /**
+     * 以string的方式设置缓存
+     *
+     * @param key
+     * @param value
+     */
+    public static void putString(String key, String value, long expired, TimeUnit timeUnit) {
+        log.debug("添加缓存【{}】 【{}】开始", key, value);
+        RBucket<String> bucket = redissonUtils.redissonClient.getBucket(key, StringCodec.INSTANCE);
+        bucket.set(value, expired <= 0 ? DEFAULT_EXPIRED : expired, timeUnit);
     }
 
     /**
@@ -283,6 +295,13 @@ public class RedissonUtils {
         }
     }
 
+    /**
+     * 原子增加
+     *
+     * @param name
+     * @param expired
+     * @return
+     */
     public static Long getAtomicLong(String name, Long expired) {
         RAtomicLong atomicLong = redissonUtils.redissonClient.getAtomicLong(name);
         long number = atomicLong.incrementAndGet();
@@ -290,6 +309,34 @@ public class RedissonUtils {
         return number;
     }
 
+    /**
+     * 原子减少
+     *
+     * @param name
+     * @param expired
+     * @return
+     */
+    public static Long decrementAndGet(String name, Long expired) {
+        RAtomicLong atomicLong = redissonUtils.redissonClient.getAtomicLong(name);
+        long number = atomicLong.decrementAndGet();
+        atomicLong.expire(expired <= 0 ? Duration.ofSeconds(DEFAULT_EXPIRED) : Duration.ofSeconds(expired));
+        return number;
+    }
+
+    /**
+     * 原子set
+     *
+     * @param name
+     * @param value
+     * @param expired
+     */
+    public static void setAtomicLong(String name, Long value, Long expired) {
+        RAtomicLong atomicLong = redissonUtils.redissonClient.getAtomicLong(name);
+        atomicLong.set(value);
+        atomicLong.expire(expired <= 0 ? Duration.ofSeconds(DEFAULT_EXPIRED) : Duration.ofSeconds(expired));
+    }
+
+
     public static void main(String[] args) {
         List<String> set = new ArrayList<>();
         set.add("asdsad");

+ 6 - 6
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/TestService.java

@@ -21,13 +21,13 @@ public class TestService {
 
         RBucket<Object> mytest = redisson.getBucket("mytest");
         mytest.set("value");
-        System.out.println(mytest.get());//value
+        System.out.println(mytest.get());
         mytest.set("value2");
-        System.out.println(mytest.get());//value2
-        boolean b = mytest.compareAndSet("value2", "value3"); //true
-        System.out.println(mytest.get());//value3
-        boolean b1 = mytest.compareAndSet("value2", "value4"); //flase
-        System.out.println(mytest.get());//value3
+        System.out.println(mytest.get());
+        boolean b = mytest.compareAndSet("value2", "value3");
+        System.out.println(mytest.get());
+        boolean b1 = mytest.compareAndSet("value2", "value4");
+        System.out.println(mytest.get());
     }
 
     public static void main(String[] args) {

+ 33 - 0
sckw-common/sckw-common-remote/src/main/java/com/sckw/remote/filter/TraceIdFilter.java

@@ -0,0 +1,33 @@
+package com.sckw.remote.filter;
+
+import com.sckw.remote.utils.UuidUtils;
+import org.apache.dubbo.common.constants.CommonConstants;
+import org.apache.dubbo.common.extension.Activate;
+import org.apache.dubbo.rpc.*;
+import org.slf4j.MDC;
+
+/**
+ * @desc: dubbo调用全局链路id
+ * @author: yzc
+ * @date: 2023-08-23 10:09
+ */
+@Activate(group = {CommonConstants.PROVIDER, CommonConstants.CONSUMER})
+public class TraceIdFilter implements Filter {
+    @Override
+    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
+        RpcServiceContext rpcContext = RpcContext.getServiceContext();
+        String traceId;
+        if (rpcContext.isConsumerSide()) {
+            traceId = MDC.get("traceId");
+            if (traceId == null) {
+                traceId = UuidUtils.getUuid();
+            }
+            rpcContext.setAttachment("traceId", traceId);
+        }
+        if (rpcContext.isProviderSide()) {
+            traceId = rpcContext.getAttachment("traceId");
+            MDC.put("traceId", traceId);
+        }
+        return invoker.invoke(invocation);
+    }
+}

+ 15 - 0
sckw-common/sckw-common-remote/src/main/java/com/sckw/remote/utils/UuidUtils.java

@@ -0,0 +1,15 @@
+package com.sckw.remote.utils;
+
+import java.util.UUID;
+
+/**
+ * @desc: 获取uuid
+ * @author: yzc
+ * @date: 2023-08-22 15:21
+ */
+public class UuidUtils {
+
+    public static String getUuid(){
+        return UUID.randomUUID().toString().replace("-", "");
+    }
+}

+ 1 - 0
sckw-common/sckw-common-remote/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter

@@ -1 +1,2 @@
 dubboExceptionFilter=com.sckw.remote.filter.DubboExceptionFilter
+traceIdFilter=com.sckw.remote.filter.TraceIdFilter

+ 42 - 69
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java

@@ -1,60 +1,73 @@
 package com.sckw.stream.enums;
 
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
 /**
  * @author zk
  * @description 短信模板
  * @date 2020/06/16 08:37:44
  */
+@AllArgsConstructor
+@Getter
 public enum MessageEnum {
-    /**SYSTEM 系统消息、BUSINESS业务消息、INDUSTRY行业消息**/
-    XXXXXX("SYSTEM", "xxxxx", "xxxx", "xxxxxx","terminal"),
-    XXXXXX1("BUSINESS", "xxxxx", "xxxx", "xxxxxx","terminal"),
-
-    //认证通过
-    AUDIT_PASS("SYSTEM","SYSTEM_ENT_APPR","认证通过通知","审核通过!您的资质已认证成功,危品汇欢迎您的入驻!","terminal,ios,android"),
-    //委托单-指派成功
-    RECEIVE_ASSIGN_ENTRUST("BUSINESS", "RECEIVE_ASSIGN_ENTRUST", "新委托单通知",
-            "${firmName}委托承运:从${loadAddress}至${unloadAddress},承运${supplyName},委托量${weight}吨,运价${price}!","terminal,ios,android");
+    /**
+     * 采发起采购下单
+     */
+    ORDER_INITIATE_PURCHASE("BUSINESS", "BUSINESS_ORDER_INITIATE_PURCHASE", "发起采购下单",
+            "贵司发起了对【${firmName}】的商品采购申请,请留意后续消息;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 有新的待受理订单
+     */
+    ORDER_NEW_PENDING("BUSINESS", "BUSINESS_TORDER_NEW_PENDING", "有新的待受理订单",
+                                   "【${firmName}】发起采购申请,请及时进行受理;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 发起代客下单
+     */
+    ORDER_INITIATE_SALE("BUSINESS", "BUSINESS_TORDER_INITIATE_SALE", "发起代客下单",
+                           "贵司已代【${firmName}】发起了商品采购,请及时联系往来单位;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 有新的代客下单信息
+     */
+    ORDER_NEW_VALET_MSG("BUSINESS", "BUSINESS_TORDER_NEW_VALET_MSG", "有新的代客下单信息",
+            "【${firmName}】代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 驳回采购订单
+     */
+    ORDER_REJECT_VALET("BUSINESS", "BUSINESS_TORDER_REJECT_VALET", "驳回采购订单",
+            "贵司驳回了【${firmName}】的采购申请,请及时通知采购单位;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 采购订单被驳回
+     */
+    ORDER_REJECT_PURCHASE("BUSINESS", "BUSINESS_TORDER_REJECT_PURCHASE", "采购订单被驳回",
+            "您的采购申请被【${firmName}】驳回,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    ;
 
     /**
-     * 消息分类
+     * 消息分类:BUSINESS业务消息,SYSTEM系统消息
      */
-    private String category;
+    private final String category;
 
     /**
      * 消息类型
      */
-    private String type;
+    private final String type;
 
     /**
      * 消息标题
      */
-    private String title;
+    private final String title;
 
     /**
      * 消息内容
      */
-    private String content;
+    private final String content;
 
     /**
      * 显示终端 terminal ios android
      */
-    private String pushType;
+    private final String pushType;
 
-    /**
-     * @description 构造方法
-     * @author zk
-     * @date 2020/6/08 11:28
-     * @param category 消息分类, type 消息类型, title 消息标题, content 消息内容
-     * @return
-     **/
-    private MessageEnum(String category, String type, String title, String content, String pushType) {
-        this.category = category;
-        this.type = type;
-        this.title = title;
-        this.content = content;
-        this.pushType = pushType;
-    }
 
     public static String getCategoryByType(String type) {
         for (MessageEnum entityEnum : MessageEnum.values()) {
@@ -82,44 +95,4 @@ public enum MessageEnum {
         }
         return null;
     }
-
-    public String getCategory() {
-        return category;
-    }
-
-    public void setCategory(String category) {
-        this.category = category;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-
-    public String getPushType() {
-        return pushType;
-    }
-
-    public void setPushType(String pushType) {
-        this.pushType = pushType;
-    }
 }

+ 6 - 2
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java

@@ -4,9 +4,12 @@ import com.sckw.stream.enums.MessageEnum;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
+
 /**
  * @desc: message消费对象
  * @author: yzc
@@ -15,6 +18,7 @@ import java.util.Map;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
+@Accessors(chain = true)
 public class SckwMessage {
 
     /**
@@ -53,9 +57,9 @@ public class SckwMessage {
     private Long createBy;
 
     /**
-     * 推送用户
+     * 推送用户信息
      */
-    private String userIds;
+    private List<UserInfo> userInfos;
 
     /**
      * 移动端推送

+ 22 - 0
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/UserInfo.java

@@ -0,0 +1,22 @@
+package com.sckw.stream.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @desc: 用户信息
+ * @author: yzc
+ * @date: 2023-09-01 16:59
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class UserInfo {
+
+    private Long userId;
+
+    private Long entId;
+}

+ 4 - 3
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/utils/SmsUtil.java

@@ -7,13 +7,14 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.profile.IClientProfile;
+import com.sckw.core.model.constant.Global;
 import com.sckw.stream.enums.SmsCodeEnum;
 import com.sckw.stream.model.SckwSms;
 import java.util.HashMap;
 
 public class SmsUtil {
-    //替换成自己申请的accessKeyId
-    private static String accessKeyId = "LTAI5tEyvh6N9HhxDMkW2MqT"; //替换成自己申请的accessKeySecret
+    //替换成自己申请的accessKeySecret
+    private static String accessKeyId = "LTAI5tEyvh6N9HhxDMkW2MqT";
     private static String accessKeySecret = "ClQ2q9fxytnhDraX7axAOjlK0zGJAP";
     static final String product = "Dysmsapi";
     static final String domain = "dysmsapi.aliyuncs.com";
@@ -58,7 +59,7 @@ public class SmsUtil {
         sckwSms.setPhone("17358629955");
         sckwSms.setSignName("矿拉拉");
         sckwSms.setTemplateCode(SmsCodeEnum.VERIFICATION_CODE);
-        sckwSms.setParams(new HashMap(){{put("code", "123456");}});
+        sckwSms.setParams(new HashMap<>(Global.NUMERICAL_SIXTEEN){{put("code", "123456");}});
         try {
             //发送短信 {"code":"123456"}
             SmsUtil.sendSms(sckwSms.getPhone(), sckwSms.getSignName(), sckwSms.getTemplateCode().getName(), JSON.toJSONString(sckwSms.getParams()));

+ 29 - 0
sckw-gateway/pom.xml

@@ -22,6 +22,31 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!--log4j2日志-->
+        <!--全局日志排除-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-logging</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!--采用log4j2 日志输出方式-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j2</artifactId>
         </dependency>
 
         <dependency>
@@ -57,6 +82,10 @@
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 59 - 0
sckw-gateway/src/main/java/com/sckw/gateway/filter/RequestLogFilter.java

@@ -0,0 +1,59 @@
+package com.sckw.gateway.filter;
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.cloud.gateway.route.Route;
+import org.springframework.core.Ordered;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.net.URI;
+
+import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR;
+import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR;
+
+/**
+ * @desc: 请求响应日志打印
+ * @author: yzc
+ * @date: 2023-08-22 17:28
+ */
+@Slf4j
+@Component
+@AllArgsConstructor
+public class RequestLogFilter implements GlobalFilter, Ordered {
+
+    private static final String START_TIME = "startTime";
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+        String requestUrl = exchange.getRequest().getURI().getRawPath();
+        String requestMethod = exchange.getRequest().getMethod().name();
+        log.info("发送{}请求:{}",requestMethod,requestUrl);
+        exchange.getAttributes().put(START_TIME, System.currentTimeMillis());
+        //路由转发路径
+        Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
+        URI routeUri = exchange.getAttribute(GATEWAY_REQUEST_URL_ATTR);
+        log.info("请求转发到: " + route.getId()
+                + ", uri:" + routeUri);
+        return chain.filter(exchange).then(Mono.fromRunnable(() -> {
+            ServerHttpResponse response = exchange.getResponse();
+            Long startTime = exchange.getAttribute(START_TIME);
+            long executeTime = 0L;
+            if (startTime != null) {
+                executeTime = (System.currentTimeMillis() - startTime);
+            }
+            log.info("响应状态:{},响应时间:{}ms",response.getStatusCode().value(),executeTime);
+            MDC.clear();
+        }));
+    }
+
+    @Override
+    public int getOrder() {
+        return Ordered.LOWEST_PRECEDENCE;
+    }
+}

+ 38 - 0
sckw-gateway/src/main/java/com/sckw/gateway/filter/TraceFilter.java

@@ -0,0 +1,38 @@
+package com.sckw.gateway.filter;
+
+import com.sckw.gateway.utils.UuidUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+/**
+ * @desc: 给请求增加TraceId
+ * @author: yzc
+ * @date: 2023-08-22 14:20
+ */
+@Component
+@Slf4j
+public class TraceFilter implements GlobalFilter, Ordered {
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+        //链路追踪id
+        String traceId = UuidUtils.getUuid();
+        MDC.put("traceId", traceId);
+        ServerHttpRequest request = exchange.getRequest().mutate()
+                .headers(h -> h.add("traceId", traceId))
+                .build();
+        ServerWebExchange build = exchange.mutate().request(request).build();
+        return chain.filter(build);
+    }
+
+    @Override
+    public int getOrder() {
+        return Ordered.HIGHEST_PRECEDENCE;
+    }
+}

+ 15 - 0
sckw-gateway/src/main/java/com/sckw/gateway/utils/UuidUtils.java

@@ -0,0 +1,15 @@
+package com.sckw.gateway.utils;
+
+import java.util.UUID;
+
+/**
+ * @desc: 获取uuid
+ * @author: yzc
+ * @date: 2023-08-22 15:21
+ */
+public class UuidUtils {
+
+    public static String getUuid(){
+        return UUID.randomUUID().toString().replace("-", "");
+    }
+}

+ 20 - 0
sckw-gateway/src/main/resources/bootstrap-local.yml

@@ -0,0 +1,20 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw-yzc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw-yzc
+        # 共享配置
+        group: sckw-service-platform
+

+ 2 - 2
sckw-gateway/src/main/resources/log4j2.xml

@@ -4,9 +4,9 @@
         <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符 -->
         <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
         <property name="LOG_PATTERN"
-                  value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
+                  value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %X{traceId} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
-                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
+                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %X{traceId} ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
         <property name="LOG_PATH" value="logs/sckw-gateway"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->

+ 9 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java

@@ -2,6 +2,7 @@ package com.sckw.contract.api;
 
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -20,4 +21,12 @@ public interface RemoteContractService {
      * @date: 2023/7/20
      */
     Map<Long, ContractCommonInfoResDto> queryContractBaseInfo(List<Long> contractId);
+
+    /**
+     * @param contractId 合同id  performedAmount履约量
+     * @desc: 更新已履约量
+     * @author: czh
+     * @date: 2023/8/31
+     */
+    void updatePerformed(Long contractId, BigDecimal performedAmount);
 }

+ 8 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java

@@ -3,6 +3,7 @@ package com.sckw.fleet.api;
 import com.sckw.fleet.api.model.vo.RDriverDetailVo;
 import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -70,4 +71,11 @@ public interface RemoteFleetService {
      **/
     int updateById(RTruckVo params);
 
+    /**
+     * @param entIds 企业ID
+     * @desc 企业运力统计
+     * @author zk
+     * @date 2023/9/4
+     **/
+    List<Map<String, Object>> capacityStatistics(List entIds);
 }

+ 10 - 1
sckw-modules-api/sckw-manage-api/src/main/java/com/sckw/manage/api/RemoteManageService.java

@@ -23,7 +23,7 @@ public interface RemoteManageService {
     Map<Long, List<EntAddressResDto>> queryEntAddressByEntIdList(List<Long> idList);
 
     /**
-     * @param entId 当前企业id  targetEntId对方企业id  cooperateType合作关系[CooperateTypeEnum]
+     * @param entId 当前企业id  targetEntId对方企业id  cooperateType合作关系(对方对于我来说是什么合作属性)[CooperateTypeEnum]
      * @return  FindEntCooperateResVo
      * @desc: 查询合作信息
      * @author: czh
@@ -31,4 +31,13 @@ public interface RemoteManageService {
      */
     List<FindEntCooperateResVo> findEntCooperate(Long entId, Long targetEntId, Integer cooperateType);
 
+    /**
+     * @param entId 集团企业id
+     * @return FindEntCooperateResVo
+     * @desc: 查询集团企业包括其主体单位下的合作单位所属的集团企业
+     * @author: czh
+     * @date: 2023/9/1
+     */
+    List<FindEntCooperateResVo> findAllCooperateEnt(Long entId);
+
 }

+ 12 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -65,11 +65,22 @@ public interface TradeOrderInfoService {
     void updateAssociateStatement(UpdateAssociateStatementParam param);
 
     /**
-     * @desc: 是否关联企业  true是,false否
+     * @desc: 是否关联企业  true是,false否 (废弃)
      * @author: yzc
      * @date: 2023-08-16 16:20
      * @Param entId:
      * @return: java.lang.Boolean
      */
+    @Deprecated
     Boolean associateEnt(Long entId);
+
+    /**
+     * @desc: 是否关联企业  true是,false否
+     * @author: yzc
+     * @date: 2023-08-30 9:08
+     * @Param firstEntId:
+     * @Param secondEntId:
+     * @return: java.lang.Boolean
+     */
+    Boolean associateEnt(Long firstEntId,Long secondEntId);
 }

+ 5 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/GoodsInfoDetailRes.java

@@ -101,4 +101,9 @@ public class GoodsInfoDetailRes implements Serializable {
      */
     private String collectionUnit;
 
+    /**
+     * 商品缩略图
+     */
+    private String goodsThumb;
+
 }

+ 7 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java

@@ -11,6 +11,7 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -149,6 +150,12 @@ public class OrderDetailRes implements Serializable {
      */
     private String createByName;
 
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
     /**
      * 商品信息
      */

+ 6 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java

@@ -25,7 +25,7 @@ public class UnitInfoDetailRes implements Serializable {
     private String unitTypeLabel;
 
     /**
-     * 单位类型(1销售单位、2采购单位)
+     * 单位类型(1采购单位、2销售单位)
      */
     private String unitType;
 
@@ -39,6 +39,11 @@ public class UnitInfoDetailRes implements Serializable {
      */
     private String firmName;
 
+    /**
+     * 联系人id
+     */
+    private Long contactsId;
+
     /**
      * 联系人姓名
      */

+ 27 - 0
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/dubbo/PaymentDubboService.java

@@ -0,0 +1,27 @@
+package com.sckw.payment.api.dubbo;
+
+import com.sckw.payment.api.model.constant.OrderEnum;
+
+import java.util.List;
+import java.util.Map;
+
+public interface PaymentDubboService {
+    /**
+     * 确认企业关联的对账单是否存在关联业务
+     *
+     * @param entId     企业id 托运方或采购方
+     * @param entTarget 另一方企业id 承运方或销售方
+     * @return 关联的订单号
+     */
+    Map<OrderEnum, List<String>> checkLedger(Long entId, Long entTarget);
+
+    /**
+     * 确认企业关联的结算单是否存在关联业务
+     *
+     * @param entId     企业id 托运方或采购方
+     * @param entTarget 另一方企业id 承运方或销售方
+     * @return
+     */
+    Map<OrderEnum, List<String>> checkSettlement(Long entId, Long entTarget);
+
+}

+ 54 - 2
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/constant/ChannelEnum.java

@@ -9,8 +9,16 @@ public enum ChannelEnum {
     HF("11", "1", "huifu", "汇付渠道"),
     XS("12", "2", "newpay", "新生渠道"),
     ZX("13", "3", "citic", "中信渠道");
-    private final String code;//预付款+支付渠道
-    private final String value;//渠道对应的字典值
+
+    /**
+     * 预付款+支付渠道
+     */
+    private final String code;
+
+    /**
+     * 渠道对应的字典值
+     */
+    private final String value;
     private final String channel;
     private final String desc;
 
@@ -23,4 +31,48 @@ public enum ChannelEnum {
         return null;
     }
 
+    /**
+     * 通过渠道获取
+     *
+     * @param channel 渠道
+     * @return
+     */
+    public static ChannelEnum getByChannel(String channel) {
+        for (ChannelEnum channelEnum : ChannelEnum.values()) {
+            if (channelEnum.getChannel().equals(channel)) {
+                return channelEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 通过渠道获取描述
+     *
+     * @param channel 渠道
+     * @return 渠道名称
+     */
+    public static String getDesc(String channel) {
+        for (ChannelEnum channelEnum : ChannelEnum.values()) {
+            if (channelEnum.getChannel().equals(channel)) {
+                return channelEnum.getDesc();
+            }
+        }
+        return "";
+    }
+
+    /**
+     * 通过字典值获取
+     *
+     * @param value
+     * @return
+     */
+    public static ChannelEnum getByValue(String value) {
+        for (ChannelEnum channelEnum : ChannelEnum.values()) {
+            if (channelEnum.getValue().equals(value)) {
+                return channelEnum;
+            }
+        }
+        return null;
+    }
 }

+ 13 - 0
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/constant/OrderEnum.java

@@ -0,0 +1,13 @@
+package com.sckw.payment.api.model.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum OrderEnum {
+    LOGISTICS("1", "物流"),
+    TRADE("2", "贸易");
+    private final String code;
+    private final String value;
+}

+ 2 - 1
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/dto/WalletDto.java

@@ -24,7 +24,7 @@ public class WalletDto implements Serializable {
 
     private String uid;
     /**
-     * 渠道
+     * 渠道 huifu
      */
     private String channel;
 
@@ -35,6 +35,7 @@ public class WalletDto implements Serializable {
     private String filter;
     /**
      * 冻结金额(分)
+     * note:冻结金额为预付金额
      */
     private Long freeze;
     /**

+ 4 - 3
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/dto/WalletInfo.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.annotation.JSONField;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * 钱包清单
@@ -31,14 +32,14 @@ public class WalletInfo implements Serializable {
      * 预付金额(分)
      */
     @JSONField(name = "ap_money")
-    private Long apMoney;
+    private BigDecimal apMoney;
     /**
      * 提现余额
      */
     @JSONField(name = "wd_money")
-    private Long wdMoney;
+    private BigDecimal wdMoney;
     /**
      * 可用余额
      */
-    private Long money;
+    private BigDecimal money;
 }

+ 9 - 0
sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java

@@ -60,4 +60,13 @@ public interface GoodsInfoService {
      * @return: java.lang.Boolean
      */
     Boolean associateManager(Long userId);
+
+    /**
+     * @desc: 是否有关联供应企业 true是,false否
+     * @author: yzc
+     * @date: 2023-08-29 9:48
+     * @Param entId:  企业id
+     * @return: java.lang.Boolean
+     */
+    Boolean associateSupplyEnt(Long entId);
 }

+ 10 - 1
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java

@@ -130,6 +130,15 @@ public interface RemoteSystemService {
      */
     Map<Long, EntCacheResDto> queryEntTreeByIds(List<Long> entIdList);
 
+    /**
+     * @param entId 企业id
+     * @return EntCacheResDto
+     * @desc: 查企业树
+     * @author: czh
+     * @date: 2023/7/17
+     */
+    EntCacheResDto queryEntTreeById(Long entId);
+
     /**
      * @param userId 用户id
      * @return UserCacheResDto
@@ -198,5 +207,5 @@ public interface RemoteSystemService {
      * @author zk
      * @date 2023/8/10
      **/
-    KwsUserResDto queryUserDetails(String account, int systemType);
+    KwsUserResDto queryUserDetails(String account, Integer systemType);
 }

+ 27 - 7
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java

@@ -1,6 +1,8 @@
 package com.sckw.system.api;
 
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.page.PageRes;
+import com.sckw.core.model.page.PageResult;
 import com.sckw.system.api.model.dto.req.*;
 import com.sckw.system.api.model.dto.res.*;
 import java.util.List;
@@ -90,21 +92,21 @@ public interface RemoteUserService {
 
 
     /**
-     * @param reqDto 忘记密码入参
-     * @desc: 忘记密码
+     * @param userLoginReqDto  用户登录信息
+     * @desc: 保存用户登录信息
      * @author: czh
      * @date: 2023/6/19
      */
-    void forgetPassword(ForgetPasswordReqDto reqDto);
+    void saveUserLogin(UserLoginReqDto userLoginReqDto);
+
 
     /**
-     * @param userLoginReqDto  用户登录信息
-     * @desc: 保存用户登录信息
+     * @param reqDto 忘记密码入参
+     * @desc: 忘记密码
      * @author: czh
      * @date: 2023/6/19
      */
-    void saveUserLogin(UserLoginReqDto userLoginReqDto);
-
+    void forgetPassword(ForgetPasswordReqDto reqDto);
 
     /**
      * @param userId 用户id
@@ -182,4 +184,22 @@ public interface RemoteUserService {
      * @date: 2023/7/27
      */
     List<EntTypeResDto> queryEntTypeById(Long entId);
+
+    /**
+     * @param cityCode 区域code  entTypeList 企业类型  page 页数 pageSize页大小
+     * @return PageResult
+     * @desc: 根据区域code和企业类型分页查询企业信息
+     * @author: czh
+     * @date: 2023/9/1
+     */
+    PageResult queryEntInfoByCityCodeAndEntTypesWithPage(Integer cityCode, List<Integer> entTypeList, Integer page, Integer pageSize);
+
+    /**
+     * @param id 用户id
+     * @return List
+     * @desc: 根据用户id查数据权限
+     * @author: czh
+     * @date: 2023/9/4
+     */
+    List<Long> queryAuthUserList(Long id);
 }

+ 10 - 4
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/req/RegisterReqDto.java

@@ -32,18 +32,24 @@ public class RegisterReqDto implements Serializable {
     private String phone;
 
     /**
-     * 是否是企业管理(1是 0否)
+     * 系统类型(1运营端、2企业开户)
      */
-    private Integer isMain;
+    private Integer systemType;
 
     /**
-     *系统类型(1运营端、2企业开户)
+     * 验证码
      */
-    private Integer systemType;
+    private String captcha;
+
+    /**
+     * 是否是企业管理(1是 0否)
+     */
+    private Integer isMain;
 
     /**
      * 密码
      */
     private String password;
 
+
 }

+ 5 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/EntCacheResDto.java

@@ -95,4 +95,9 @@ public class EntCacheResDto implements Serializable {
      */
     private String cityName;
 
+    /**
+     * 联系人id
+     */
+    private Long contactsId;
+
 }

+ 14 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsUserResDto.java

@@ -1,5 +1,7 @@
 package com.sckw.system.api.model.dto.res;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.sckw.core.utils.LongToStringUtils;
 import lombok.Data;
 
 import java.io.Serial;
@@ -111,4 +113,16 @@ public class KwsUserResDto implements Serializable {
      */
     private Long entId;
 
+    /**
+     * 机构id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private Long deptId;
+
+    /**
+     * 角色id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private Long roleId;
+
 }

+ 24 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java

@@ -4,6 +4,7 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
+import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
 import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
 
@@ -82,4 +83,27 @@ public interface TransportDubboService {
      * @return
      */
     HttpResult logisticsOrderAccountCheckingBind(AccountCheckingBindDTO accountCheckingBindDTO);
+
+    /**
+     * 根据企业id 判断是否存在未完成完结的物流订单
+     *
+     * @param entId 企业id
+     * @return  ture 代表还有未完结的  false代表没有未完结的
+     */
+    boolean checkLogisticsOrderFinishByEntId(Long entId);
+
+    /**
+     * 根据企业id 判断是否存在未完成完结的物流订单
+     *
+     * @param consignEntId 托运企业id
+     * @param acceptCarriageEntId 承运企业id
+     * @return   根据data是否为空判断 是否存在未完结订单  空  不存在  不为空  存在
+     */
+    HttpResult checkLogisticsOrderIsFinishByEntId(Long consignEntId,Long acceptCarriageEntId);
+
+    /**
+     * 合同变更,修改物流订单状态【仅仅支持待签约变更为已签约】  0 已签约 1待签约
+     * @param param
+     */
+    void contractSignLogisticsCompleted(ContractSignLogisticsParam param);
 }

+ 18 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/LogisticsOrderDTO.java

@@ -283,4 +283,22 @@ public class LogisticsOrderDTO implements Serializable {
      */
     @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")
     private Date createTime;
+
+    /**
+     * 含税金额
+     */
+    @JsonProperty("taxMoney")
+    private BigDecimal taxMoney;
+
+    /**
+     * 发货单位
+     */
+    @JsonProperty("forwardingUnit")
+   private  String forwardingUnit;
+
+    /**
+     * 收货单位
+     */
+    @JsonProperty("consignee")
+   private  String consignee;
 }

+ 35 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/ContractSignLogisticsParam.java

@@ -0,0 +1,35 @@
+package com.sckw.transport.api.model.param;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author lfdc
+ * @description 合同由待签约->已签约-->物流订单
+ * @date 2023-08-24 10:08:59
+ */
+@Data
+public class ContractSignLogisticsParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3050697770661381917L;
+
+    /**
+     * 合同id
+     */
+    private Long contractId;
+
+
+    /**
+     * 更新用户id 需传,订单状态变化记录需要
+     */
+    private Long updateBy;
+
+    /**
+     * 更新用户姓名 需传,订单状态变化记录需要
+     */
+    private String updateByName;
+
+}

+ 6 - 1
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/LogisticsOrderParam.java

@@ -2,6 +2,8 @@ package com.sckw.transport.api.model.param;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -10,7 +12,10 @@ import java.util.Date;
  * @date 2023-08-09 09:08:10
  */
 @Data
-public class LogisticsOrderParam {
+public class LogisticsOrderParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3050697770661381917L;
     /**
      * 物流订单id
      */

+ 6 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/LogisticsOrderVO.java

@@ -290,4 +290,10 @@ public class LogisticsOrderVO implements Serializable {
      */
     @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")
     private Date createTime;
+
+    /**
+     * 含税金额
+     */
+    @JsonProperty("taxMoney")
+    private BigDecimal taxMoney;
 }

+ 9 - 0
sckw-modules/sckw-contract/pom.xml

@@ -76,6 +76,15 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-log</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-transport-api</artifactId>
+        </dependency>
 
     </dependencies>
     <build>

+ 4 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCarrierController.java

@@ -33,7 +33,7 @@ public class KwcCarrierController {
      * @return HttpResult
      */
     @RequestMapping("queryListByPage")
-    public HttpResult queryListByPage(@RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult queryListByPage(@RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS4.getCode());
         return HttpResult.ok(kwcContractLogisticsService.queryListByPage(reqVo));
     }
@@ -46,7 +46,7 @@ public class KwcCarrierController {
      * @return HttpResult
      */
     @PostMapping("detail")
-    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) throws SystemException {
+    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) {
         return HttpResult.ok(kwcContractLogisticsService.detail(reqVo.getId()));
     }
 
@@ -57,7 +57,7 @@ public class KwcCarrierController {
      * @date 2023/7/17
      */
     @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS4.getCode());
         kwcContractLogisticsService.export(reqVo);
     }
@@ -70,7 +70,7 @@ public class KwcCarrierController {
      * @date: 2023/7/18
      */
     @PostMapping("findListGroup")
-    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS4.getCode());
         return HttpResult.ok(kwcContractLogisticsService.findListGroup(reqVo));
     }

+ 13 - 15
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java

@@ -7,7 +7,6 @@ import com.sckw.core.model.enums.EntTypeEnum;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import jakarta.validation.Valid;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -34,7 +33,7 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @RequestMapping("queryListByPage")
-    public HttpResult queryListByPage(@RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult queryListByPage(@RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS3.getCode());
         return HttpResult.ok(kwcContractLogisticsService.queryListByPage(reqVo));
     }
@@ -47,7 +46,7 @@ public class KwcCheckedController {
      * @date 2023/7/13
      */
     @RequestMapping("add")
-    public HttpResult addCheckedContract(@RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+    public HttpResult addCheckedContract(@RequestBody ContractLogisticsReqVo reqVo) {
         kwcContractLogisticsService.addCheckedContract(reqVo);
         return HttpResult.ok(HttpStatus.MSG_003);
     }
@@ -59,7 +58,7 @@ public class KwcCheckedController {
      * @date: 2023/7/14
      */
     @PostMapping("supplement")
-    public HttpResult supplement(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+    public HttpResult supplement(@Valid @RequestBody ContractLogisticsReqVo reqVo) {
         kwcContractLogisticsService.supplement(reqVo);
         return HttpResult.ok(HttpStatus.MSG_003);
     }
@@ -72,7 +71,7 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @PostMapping("detail")
-    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) throws SystemException {
+    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) {
         return HttpResult.ok(kwcContractLogisticsService.detail(reqVo.getId()));
     }
 
@@ -84,7 +83,7 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @PostMapping("submit")
-    public HttpResult submit(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+    public HttpResult submit(@Valid @RequestBody ContractLogisticsReqVo reqVo) {
         return HttpResult.ok(kwcContractLogisticsService.submit(reqVo));
     }
 
@@ -96,7 +95,7 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @PostMapping("update")
-    public HttpResult update(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+    public HttpResult update(@Valid @RequestBody ContractLogisticsReqVo reqVo) {
         kwcContractLogisticsService.update(reqVo);
         return HttpResult.ok();
     }
@@ -110,7 +109,7 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @PostMapping("complete")
-    public HttpResult complete(@Valid @RequestBody CompleteReqVo reqVo) throws SystemException {
+    public HttpResult complete(@Valid @RequestBody CompleteReqVo reqVo) {
         kwcContractLogisticsService.complete(reqVo);
         return HttpResult.ok();
     }
@@ -124,7 +123,7 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @PostMapping("delete")
-    public HttpResult delete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+    public HttpResult delete(@Valid @RequestBody IdsReqVo reqVo) {
         kwcContractLogisticsService.delete(reqVo.getIds());
         return HttpResult.ok();
     }
@@ -137,7 +136,7 @@ public class KwcCheckedController {
      * @date 2023/7/17
      */
     @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS3.getCode());
         kwcContractLogisticsService.export(reqVo);
     }
@@ -150,7 +149,7 @@ public class KwcCheckedController {
      * @date: 2023/7/18
      */
     @PostMapping("queryCurrentEntCheckedContractList")
-    public HttpResult queryCurrentEntCheckedContractList() throws SystemException {
+    public HttpResult queryCurrentEntCheckedContractList() {
         return HttpResult.ok(kwcContractLogisticsService.queryCurrentEntCheckedContractList());
     }
 
@@ -161,15 +160,14 @@ public class KwcCheckedController {
      * @date: 2023/7/18
      */
     @PostMapping("findListGroup")
-    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS3.getCode());
         return HttpResult.ok(kwcContractLogisticsService.findListGroup(reqVo));
     }
 
 
     @PostMapping("test")
-    public HttpResult test() throws SystemException {
-        kwcContractLogisticsService.test();
-        return HttpResult.ok();
+    public HttpResult test() {
+        return HttpResult.ok(kwcContractLogisticsService.test());
     }
 }

+ 11 - 11
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java

@@ -34,7 +34,7 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @RequestMapping("queryListByPage")
-    public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
         return HttpResult.ok(kwcContractTradeService.queryListByPage(reqVo));
     }
@@ -47,7 +47,7 @@ public class KwcContractSaleController {
      * @date: 2023/7/18
      */
     @RequestMapping("add")
-    public HttpResult addTradeContract(@RequestBody ContractTradeReqVo reqVo) throws SystemException {
+    public HttpResult addTradeContract(@RequestBody ContractTradeReqVo reqVo) {
         kwcContractTradeService.addTradeContract(reqVo);
         return HttpResult.ok(HttpStatus.MSG_003);
     }
@@ -59,7 +59,7 @@ public class KwcContractSaleController {
      * @date: 2023/7/14
      */
     @PostMapping("supplement")
-    public HttpResult supplement(@Valid @RequestBody ContractTradeReqVo reqVo) throws SystemException {
+    public HttpResult supplement(@Valid @RequestBody ContractTradeReqVo reqVo) {
         kwcContractTradeService.supplement(reqVo);
         return HttpResult.ok(HttpStatus.MSG_003);
     }
@@ -72,7 +72,7 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @PostMapping("detail")
-    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) throws SystemException {
+    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) {
         return HttpResult.ok(kwcContractTradeService.detail(reqVo.getId()));
     }
 
@@ -85,7 +85,7 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @PostMapping("submit")
-    public HttpResult submit(@Valid @RequestBody ContractTradeReqVo reqVo) throws SystemException {
+    public HttpResult submit(@Valid @RequestBody ContractTradeReqVo reqVo) {
         return HttpResult.ok(kwcContractTradeService.submit(reqVo));
     }
 
@@ -97,7 +97,7 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @PostMapping("update")
-    public HttpResult update(@Valid @RequestBody ContractTradeReqVo reqVo) throws SystemException {
+    public HttpResult update(@Valid @RequestBody ContractTradeReqVo reqVo) {
         kwcContractTradeService.update(reqVo);
         return HttpResult.ok();
     }
@@ -111,7 +111,7 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @PostMapping("complete")
-    public HttpResult complete(@Valid @RequestBody CompleteReqVo reqVo) throws SystemException {
+    public HttpResult complete(@Valid @RequestBody CompleteReqVo reqVo) {
         kwcContractTradeService.complete(reqVo);
         return HttpResult.ok();
     }
@@ -125,7 +125,7 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @PostMapping("delete")
-    public HttpResult delete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+    public HttpResult delete(@Valid @RequestBody IdsReqVo reqVo) {
         kwcContractTradeService.delete(reqVo.getIds());
         return HttpResult.ok();
     }
@@ -138,7 +138,7 @@ public class KwcContractSaleController {
      * @date 2023/7/17
      */
     @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
         kwcContractTradeService.export(reqVo);
     }
@@ -150,7 +150,7 @@ public class KwcContractSaleController {
      * @date: 2023/7/18
      */
     @PostMapping("queryCurrentEntSaleContractList")
-    public HttpResult queryCurrentEntSaleContractList() throws SystemException {
+    public HttpResult queryCurrentEntSaleContractList() {
         return HttpResult.ok(kwcContractTradeService.queryCurrentEntSaleContractList());
     }
 
@@ -161,7 +161,7 @@ public class KwcContractSaleController {
      * @date: 2023/7/18
      */
     @PostMapping("findListGroup")
-    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
         return HttpResult.ok(kwcContractTradeService.findListGroup(reqVo));
     }

+ 1 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcOpenapiController.java

@@ -31,7 +31,7 @@ public class KwcOpenapiController {
      * @return HttpResult
      */
     @RequestMapping("eSignCallBack")
-    public HttpResult eSignCallBack(@Valid @RequestBody ESignCallBackReqVo reqVo) throws SystemException {
+    public HttpResult eSignCallBack(@Valid @RequestBody ESignCallBackReqVo reqVo) {
         kwcOpenapiService.eSignCallBack(reqVo);
         return HttpResult.ok();
     }

+ 4 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java

@@ -33,7 +33,7 @@ public class KwcPurchaseController {
      * @return HttpResult
      */
     @RequestMapping("queryListByPage")
-    public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
         return HttpResult.ok(kwcContractTradeService.queryListByPage(reqVo));
     }
@@ -46,7 +46,7 @@ public class KwcPurchaseController {
      * @return HttpResult
      */
     @PostMapping("detail")
-    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) throws SystemException {
+    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) {
         return HttpResult.ok(kwcContractTradeService.detail(reqVo.getId()));
     }
 
@@ -58,7 +58,7 @@ public class KwcPurchaseController {
      * @date 2023/7/17
      */
     @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
         kwcContractTradeService.export(reqVo);
     }
@@ -70,7 +70,7 @@ public class KwcPurchaseController {
      * @date: 2023/7/18
      */
     @PostMapping("findListGroup")
-    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) {
         reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
         return HttpResult.ok(kwcContractTradeService.findListGroup(reqVo));
     }

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels