Commit Graph
100 Commits
Author SHA1 Message Date
ypsdf1 eaeab955e3 修复PHP三个bug:1.changeVisitorRole支持三角色切换(admin/member/visitor)并允许领地主自由切换;2.token验证兼容POST;3.成员权限toggleMemberPerm DOM检测修正 2026-07-10 23:16:32 +08:00
ypsdf1 a28083f4ca 修复PHP两个bug:1.land_api.php玩家端token验证兼容POST(changeVisitorRole等POST请求不再误报需要登录);2.player.php成员权限toggle检测逻辑修正(isCustom原本查span但自定义文字在div里,导致永远走无自定义分支只能给不能撤) 2026-07-10 22:51:04 +08:00
ypsdf1 b67480d073 PHP权限管理全面对齐Java:1.handleUpdateLandField白名单从4项扩展到33项(覆盖所有deny/allow权限开关);2.sync.php补齐14个缺失字段的INSERT和bind(deny_mount/deny_ender_pearl/deny_bow/deny_potion/deny_fire/deny_raid/deny_container/deny_mob_attack/is_public_building/allow_visitor_teleport/confiscate_items/deny_use_items/punish_commands/clear_all_bad);3.player.php新增领地权限开关面板(34项开关,与Java GUI getPermEntries一致,支持deny/allow反转显示);4.sync.php补充新列ALTER TABLE迁移 2026-07-10 22:34:39 +08:00
ypsdf1 555b9382b5 修复PHP三个关键bug:1.player.php效果字段名clear_all_bad_effects→clear_all_bad匹配DB列名;2.validation_callback的add_visitor写入web_area_permissions表(与handleAddVisitor一致,修复成员不入库);3.validatePlayerViaJava优先本地playerExists验证,减少异步等待;4.auth兜底保底防止update_land_field误入invalid secret 2026-07-10 22:00:31 +08:00
ypsdf1 b63ecc02b8 修复PHP接口:增益效果接口补齐必要参数,玩家存在性校验兼容登录库,同步新增实体交互权限字段 2026-07-10 19:08:18 +08:00
ypsdf1 1238c6a20c 修复: core.php web_area_permissions 添加 UNIQUE(land_id,player_name) 约束
- 根因: core.php 创建表时缺少 UNIQUE 约束,导致 sync.php 的 ON CONFLICT 永远不触发,每次同步插入新行
- 新增迁移逻辑: 检测旧表缺少 UNIQUE 时自动重建表并迁移数据
2026-07-10 12:52:44 +08:00
ypsdf1 e49fcaccd8 修复: syncPermissions ON CONFLICT替代INSERT OR REPLACE防角色降级
sync.php + land_api.php: 同步权限时用ON CONFLICT, 保留已有admin/member角色
2026-07-10 10:59:12 +08:00
ypsdf1 eed83a552f 领地权限切换加全链路日志+已授权用户降级为访客的拦截
- handleChangeVisitorRole: 修复$permRow未定义(旧$oldPerms恒空);新增 admin/member 降级为 visitor 的拦截并返回错误;三处 error_log 追踪切换角色流程
- handleUpdateVisitorPerm: 入口/拦截/放行三处 error_log
- handleUpdateMemberPerm: 写入 web_admin_changes 前 error_log 记录新权限JSON
- 配合 Java 端 AreaProtection.updateVisitorPermFromWeb 的 getLogger().info 端到端追踪
2026-07-10 01:34:24 +08:00
ypsdf1 c960c3ac0c 修复调整访客权限误重置管理员身份(role默认visitor+INSERT OR REPLACE覆盖);保留付费访客expires_at;change_visitor_role同步land_name 2026-07-10 00:16:04 +08:00
ypsdf1 ae1ff5ffd8 异地登录检测/账号冻结解冻 + 公共邮件辅助函数
- core.php: 新增smtpSendEmail/queryLoginIpLocation/getBaseUrl/sendLocationAlertEmail
- security_alert.php: 接收Java通知比对IP归属并发送提醒邮件(含冻结/改密链接)
- freeze.php: 验证freeze_token冻结账号并写freeze指令
- sync.php: 冻结账号禁止Web登录; smtpSendEmail上移至core.php统一复用
- reset_password.php: 改密成功后解冻(清frozen+写unfreeze)
2026-07-09 17:09:35 +08:00
ypsdf1 1e97285459 PHP端:购物车发货前material验证 + 退款接收接口
- shop.php buy_cart: 扣款前验证每件商品material为Java可识别值(合法Material或附魔书id+ENCHANTED_BOOK组合)
- sync.php: 新增write_shop_refund action接收Java退款请求(恢复bond_cache+写refund交易)
2026-07-09 10:54:59 +08:00
ypsdf1 c1234c6700 修复重启重复发货:processing超时回退60s→3600s + pull_pending_transactions不再选中processing状态交易 2026-07-08 19:47:35 +08:00
ypsdf1 e076596b4d 修复收银台小票推送:settlement 误传中文标签导致重复发小票潜影盒
api/shop.php 推送 give_receipt_book 时误用 $modeName(中文:塞背包(环保单)/潜影盒打包)
而非原始代码,导致 Java 端 equals('backpack'/'shulker') 守卫不匹配、仍单独发小票潜影盒。
现改为推送原始 $settlement 代码;Java 端守卫已同步兼容中文标签做双保险。
2026-07-08 17:35:04 +08:00
ypsdf1 e9ecb0ae53 修复收银台:背包(环保单)模式尊重游戏内 green_discount
此前背包模式固定按 cart_backpack_rate(0.98=98折)结算,
忽略游戏内 /sdf1_login shop setgreen 设置的折扣。
现改为:green_discount<10 时以游戏折扣为准(如 setgreen 9 -> ×0.9),
覆盖默认98折;未设置(=10)时仍走 cart_backpack_rate 保持环保优惠。
前端预览 RATES.backpack 同步读取 green_discount,避免界面/实付不一致。
2026-07-08 16:35:04 +08:00
ypsdf1 ab7443b5b5 修复订单页 orders.php 的 esc 函数:重写转义逻辑,清除导致 JS 语法错误的损坏字符 2026-07-08 15:19:00 +08:00
ypsdf1 77ee56cca4 修复收银台98折错误地叠加环保单折扣导致实付约95折
- api/shop.php: 塞背包模式不再额外叠加 green_discount,仅按 cart_backpack_rate(0.98=98折) 计费,ecoPct 置0
- cashier.php: 结算标签改为动态显示真实折扣率;前端 recalc 中 ecoPct 恒为0,与后端一致,消除显示与扣款不符
2026-07-08 13:53:01 +08:00
ypsdf1 3f3fbd68bb #800 orders.php 增强缓存破坏头(解决浏览器/CDN缓存旧版导致SyntaxError)
- 新增 Pragma: no-cache 和 Expires: 0 头
- Cache-Control 增加 proxy-revalidate(强制代理/CDN不缓存)
- 线上验证通过:HTTP 200 / 14893 bytes / 全部JS函数就位 / 无PHP错误
2026-07-08 11:42:38 +08:00
ypsdf1 d9cc806177 修复: orders.php诊断错误处理中E_RECOVERABLE_ERROR误用冒号导致PHP Parse error(整页崩溃/loadOrders未定义)
- 第12行数组 E_RECOVERABLE_ERROR:'Recoverable' 误用冒号(应为 =>),导致PHP解析失败、整页只输出Parse error、所有前端JS函数(loadOrders等)缺失
- 改为 E_RECOVERABLE_ERROR=>'Recoverable',页面恢复正常(实测线上HTTP 200、STATE JSON有效、全部JS函数就位)
2026-07-08 11:08:00 +08:00
ypsdf1 c3ee6a5c5a 增强: orders.php错误诊断增强(PHP错误捕获+前置输出检测+全局JS错误捕获+Promise rejection捕获) 2026-07-08 10:57:54 +08:00
ypsdf1 cb65e34f2d 修复收银台未登录时 $initialCanCash 未定义警告(默认0) 2026-07-08 01:05:51 +08:00
ypsdf1 1ea6f4963f 修复: web.db initTables中cashiers.can_cash冗余加列用@抑制挡不住SQLite3Exception,导致每条请求抛duplicate column并刷爆debug.log(33MB)写满磁盘阻断FTP上传——改为try/catch幂等兜底 2026-07-08 00:27:56 +08:00
ypsdf1 28c7aa119e 修复: green_discount折扣率(折数)语义——前端/后端计算ecoAmt改为×折数/10,管理面板max=10默认值10,校验与文案全改 2026-07-08 00:18:47 +08:00
ypsdf1 ac79628076 修复: PHP端packmoney从(int)强转改为(float)支持小数(cashier/shop/sync三处) 2026-07-07 23:54:20 +08:00
ypsdf1 02dc706635 修复: orders.db冗余ALTER加列导致duplicate column name异常、getOrdersDB首调失败订单丢失——改为幂等兜底try/catch 2026-07-07 23:39:37 +08:00
ypsdf1 d0be292a78 修复: 收银台api()加25s超时兜底(解决结账卡死) + buy_cart小票推送容错 + 订单错误堆栈日志 + orders会话判定保护 2026-07-07 22:43:51 +08:00
ypsdf1 822f47dd05 修复: 收银台API顶层异常捕获升级为Throwable + 订单查询异常落盘debug.log便于定位 2026-07-07 21:39:40 +08:00
ypsdf1 78e3b2ff1e 修复:订单记录页order_list接口加固(查询异常返回合法JSON,杜绝PHP报错污染响应导致前端报错);orders.php渲染对getCurrentCashier空值做保护 2026-07-07 21:26:14 +08:00
ypsdf1 8286a4c09c 新增: 商品目录定时镜像同步接口 set_shop_catalog(支持删分类/加商品) + 修复 getShopConfigSync 未定义函数500错误 2026-07-07 19:40:47 +08:00
ypsdf1 6775465c21 修复: 订单页JS语法错误导致永久转圈(onclick内联JSON引号冲突改data属性+事件委托) 2026-07-07 16:52:59 +08:00
ypsdf1 9c269cc184 重构: 收银台订单库彻底独立于web.db,根除订单加载卡死
根因:订单记录原写在 web.db,与 Java 经 sync.php 高频写入共享同一 SQLite 文件,
产生文件级锁竞争(database is locked)。原 62f5323 用 busy_timeout=15s + 重试 hack
缓解,但 Java 持续写入仍会顶住 PHP 订单读查询,导致订单页长期转圈。

改动:
- 新增独立 orders.db 常量(ORDERS_DB_PATH),Java 永不读写此库
- core.php 新增 getOrdersDB() 连接独立库(WAL + busy_timeout=5s),建表并幂等迁移 web.db 历史订单
- recordCashierOrder() 改写写入 orders.db,订单写失败仅记日志返回空单号,绝不阻断购买主流程
- shop.php 将订单记录移出 web.db 事务,放到 COMMIT 之后写独立库
- cashier.php cashierOrderList() 直接读 orders.db,去掉 busy_timeout 与 5 次重试兜底 hack
- web.db 内旧 cashier_orders 表保留为历史死表(仅作迁移源),不再被读写

效果:订单查询与 Java 写入完全解耦,订单页不再受 CF/Java 锁影响而卡死。
2026-07-07 15:25:25 +08:00
ypsdf1 62f53234e7 修复: 订单记录页opcache失效确保新版生效 + 订单查询放宽busy_timeout至15s并增加重试(规避database is locked) 2026-07-07 14:26:45 +08:00
ypsdf1 a72bbfd970 修复: 订单记录页加载卡死(增加请求超时与重试) + 订单接口释放会话锁并对database is locked重试 2026-07-07 13:38:00 +08:00
ypsdf1 7a4aad46c6 功能: 订单记录独立页+小票书+packmoney/green修复(??替代||)
1. 新增 orders.php 独立订单记录页面(搜索/筛选/详情弹窗)
2. 收银台底部订单区改为跳转链接(→orders.php)
3. buy_cart 成功后推送 give_receipt_book 到 Java 队列(发放 Written Book)
4. 修复 packmoney/green_discount 前端 JS || falsy 回退 bug(改用 ??)
5. 费率从后端 shop_config 动态读取(不再硬编码 RATES)
6. cashierGetConfig 扩展读取 cart_backpack_rate/cart_shulker_rate
2026-07-07 12:28:26 +08:00
ypsdf1 fdd8ccb340 优化: 收银台新增打包小票(小票弹窗+打印) + buy_cart返回order_no 2026-07-07 11:37:48 +08:00
ypsdf1 9456f787f8 优化: 收银台购物延迟压至15秒内(busy_timeout 60s→8s、移除热路径冗余DDL、合并配置批量读取) 2026-07-07 10:39:17 +08:00
ypsdf1 6634fdefa0 修复收银台SQLite3Stmt::fetch崩溃并应用环保单减免配置 2026-07-07 00:33:24 +08:00
ypsdf1 f32c7cfe86 收银台双模式收款与打包配置全链路实现
- 收银员新增 can_cash 现金收款权限字段(登录/列表/新增/编辑全链路)
- 购物车结算支持 pay_mode=cash/bond 双模式,现金模式跳过余额校验与扣债券
- 收银台前端读取可配置 packmoney 实时报价,修复此前硬编码+2元与实际收费不符
- 管理后台新增打包费(packmoney)与环保减免(green_discount)配置端口
- 同步接口新增 get/set_shop_config,Java端定时器拉取配置
- 购物小票书塞入首个潜影盒,免费潜影盒订正为原色(SHULKER_BOX)
2026-07-06 23:48:44 +08:00
ypsdf1 86b2d6ebdf 收银台前端样式统一:输入框/下拉框深色主题、自定义滚动条,修复与背景质感不搭 2026-07-06 21:48:42 +08:00
ypsdf1 c22386b8fc 修复收银台角色标签CSS样式缺失问题
- 补充 .tag-admin / .tag-cashier 标签样式定义,统一管理员与收银员角色标签颜色与边框
- 同步修正HTML初始span与JS动态赋值的class,消除无样式标签
2026-07-06 20:01:49 +08:00
ypsdf1 59701d1627 新增独立收银台页面与收银员账号体系:支持收银员/管理员登录、手动折扣(服务端强制上限)、订单记录;同步修复代购≥1000仍误报需玩家密码问题(#733 #734) 2026-07-06 19:27:14 +08:00
ypsdf1 0e1f26508b 管理后台用户组页新增全局传送点上限(maxhome)配置入口(#726)
- loadUserGroups拉取get_config展示全局home上限卡片
- 新增showHomeConfig/saveHomeConfig弹窗,POST update_config(key=max_home_per_player)
- 复用现有area_config通路,与Java端max_home_per_player配置项对应
2026-07-06 18:10:36 +08:00
ypsdf1 8de2cffe82 新增管理后台独立收银台模式:管理员可为指定玩家代购商品(商品浏览+购物车+背包/潜影盒结算+颜色可选收费+≥1000债券密码确认) 2026-07-06 17:54:55 +08:00
ypsdf1 dd425f4946 修复商城database is locked;购物车结算增强:≥1000元强制密码校验、潜影盒颜色可选收费(默认紫色免费);玩家端新增购物车模式与颜色选择器 2026-07-06 17:33:15 +08:00
ypsdf1 7a283ae4e0 商城购物车模式+收银台结算+后台折扣配置:前端购物车FAB/抽屉/结算弹窗,后端buy_cart接口事务批量购买,admin购物车配置卡片,cart_config/save_shop_config接口 2026-07-06 16:39:47 +08:00
ypsdf1 e46ee109d3 修复PHP管理面板相关问题 2026-07-06 11:22:31 +08:00
ypsdf1 ffb6e24d5f fix: PHP到期时间解析修正秒→分钟的单位换算 2026-07-03 23:37:37 +08:00
ypsdf1 31493de10d feat: PHP管理面板到期时间改为智能解析,支持数字/中文单位/日期格式,玩家只需填'30'表示30分钟 2026-07-03 22:41:34 +08:00
ypsdf1 1277c1fdf3 feat: php管理面板添加用户组成员时增加到期时间输入框 - 管理员可手动设置expiry_time - 成员表格展示到期时间列 - 到期为0表示按用户组duration_minutes自动计算 2026-07-03 19:37:05 +08:00
ypsdf1 5fa59b71b2 fix: PHP删除用户组同步 + handleDeleteUserGroup先删成员表再删组表 2026-07-03 14:27:27 +08:00
ypsdf1 591d71ede0 fix: PHP数据库锁修复 + 用户组添加/移除错误处理
1. initTables()统一创建所有核心表(web_user_groups, web_user_group_members等)
2. handleAddGroupMember改用playerExists()本地验证替代异步validatePlayerViaJava()
3. handleRemoveGroupMember增加错误处理和affected行数检查
4. 移除validation_callback/visitor中的CREATE TABLE IF NOT EXISTS
2026-07-03 13:41:22 +08:00
ypsdf1 4927aaed01 fix: Java推送成员变更到PHP新增add/remove_group_member_by_java接口; Java端调用改名加_java后缀 2026-07-03 01:16:23 +08:00
ypsdf1 6337bc3e75 fix: player.php添加自定义玻璃拟态确认对话框showConfirm(),替换原生confirm() 2026-07-02 23:48:37 +08:00
ypsdf1 d394bd0ec8 fix: PHP购买用户组流程完善 - 1. 修复duration=0永久验证(从<=0改为<0) - 2. 替换原生alert/confirm为自定义toast玻璃拟态UI - 3. 添加bond记录同步(handleSyncBondRecord) - 4. 前端购买弹窗使用玻璃拟态确认对话框 - 5. 修复可用用户组列表SQL缺失列自动迁移 2026-07-02 22:41:15 +08:00
ypsdf1 60151dc1d0 修复handleListAvailableGroups迁移缺失列+修复领地禁止点燃双方向检查 2026-07-02 20:15:12 +08:00
ypsdf1 35eb054e4f 清理仓库:移除误提交的Java编译产物
- 移除.idea/目录(IDE配置文件)
- 移除target/目录(Java编译产物)
- 移除Sdf1_login.iml(IDE模块文件)
2026-07-02 16:57:22 +08:00
ypsdf1 bcc68aa4e5 feat: 实现TimerE用户组续费轮询完整流程 - poll_group_renews action + renew_group_callback + web_group_renew表 2026-07-01 20:36:17 +08:00
ypsdf1 6d68c4a05b feat: 改主弹窗替换为毛玻璃居中弹窗 (glassPrompt) 2026-06-29 20:57:03 +08:00
ypsdf1 3dacc80fe1 feat: 领地删除走pending队列 + sync清理PHP残留
- land_api: handleDeleteLand改为写web_admin_changes队列
- land_api: 新增delete_land_callback处理Java回调
- sync.php: syncLands增加删除PHP中不存在的领地
- 修复admin面板过户按钮(同步到plugin目录)
2026-06-29 20:45:38 +08:00
ypsdf1 62798f2a90 添加改主状态查询API,PHP前端轮询机制 2026-06-29 20:06:27 +08:00
ypsdf1 64ed1e6ada 修复改主认证: admin.php改用secret认证, 移除不存在的transfer_land_admin函数, secret认证时设置isAdmin=true 2026-06-29 19:39:55 +08:00
ypsdf1 5403479a2c 修复PHP改主校验流程:Java失败时PHP自动回退+前端不立即刷新
1. PHP handleUpdateLandOwner: 不再直接更新web_area_lands,写入pending队列,返回pending=true
2. PHP handleOwnerChangeCallback失败时:回退owner为旧值,记录日志
3. PHP admin.php adminTransferLand: 收到pending=true时不立即刷新列表,改为5秒后轮询
4. 按钮禁用防重复提交,等待回调后恢复
2026-06-29 16:38:31 +08:00
ypsdf1 e9bd63a1e4 修复过户面板:移除独立过户按钮改为主改主、adminTransferLand/deleteLand函数修复、改主流程改为pending等待Java验证、添加owner_change_callback回调 2026-06-29 15:24:04 +08:00
ypsdf1 866b5abe15 refactor: 过户流程重构 - PHP暂存等Java验证
1. handleTransferLand: 不再立即改owner,改为status=pending等Java验证
2. 新增handleTransferCallback: Java验证成功→改owner+cooldown;失败→标记failed
3. handleCancelTransfer: 支持pending状态撤回+cooldown状态回退
4. handleTransferStatus: 增加id字段
5. transfer_callback加入syncFromPhpActions
2026-06-29 12:12:10 +08:00
ypsdf1 2237f6c855 feat: 领地过户功能 + 管理面板改主修复
1. 领地过户: 添加web_land_transfers冷却表,handleTransferLand/handleCancelTransfer/handleTransferStatus
2. 管理面板改主: 移除异步验证,直接写入web_admin_changes让Java端执行(管理员操作可信任)
3. admin.php: 过户按钮+adminTransferLand JS函数+confirm二次确认
4. 玩家名正则统一为3-16位
2026-06-29 11:48:51 +08:00
ypsdf1 3925dea586 修复: sync.php新增check_player_registered action,解决Java端拉取注册数据报'未知操作' 2026-06-28 23:55:43 +08:00
ypsdf1 02c2e91531 fix: admin.php modal重复叠加导致ugNewMember获取失败 + 异步验证pending处理
- admin.php showModal: 新增[data-modal-overlay]清理逻辑防止多次打开modal导致元素复用
- doAddGroupMember: 固定player名正则3-16位, 改善错误提示文案, 处理pending响应
- admin.php modal: 移除旧的querySelectorByStyle选择器改为data属性
2026-06-28 17:12:08 +08:00
ypsdf1 c0afb47535 feat: PHP玩家验证改为异步模式
- land_api.php: 新增 pending_player_validations 表(待验证队列)
- validatePlayerViaJava(): 改为异步模式(查缓存→写pending→返回null)
- 新增 handleGetPendingValidations: Java拉取待验证列表
- 新增 handleValidationCallback: Java推送验证结果
- handleAddGroupMember/UpdateLandOwner/AddVisitor: 适配异步验证
- 改善错误提示文案
2026-06-28 15:59:42 +08:00
ypsdf1 f6265dd994 feat: 玩家验证改调Java回调服务器(替代直接读login.db)
- land_api.php: 新增 validatePlayerViaJava() 函数
  POST http://GAME_SERVER_HOST:9090/validate_player
- handleAddGroupMember: 替换直接读login.db为Java验证
- handleAddVisitor: 替换playerExists()为Java验证
- handleUpdateLandOwner: 替换playerExists()为Java验证
- config.php: 新增 GAME_SERVER_HOST (默认127.0.0.1)
2026-06-28 15:30:09 +08:00
ypsdf1 2342cc2cab fix: 用户组成员添加校验(玩家名格式+login.db存在性检查) 2026-06-28 15:16:36 +08:00
ypsdf1 35f15db034 feat: 用户组成员变更写入admin_changes通知Java同步 2026-06-28 14:27:04 +08:00
ypsdf1 1f97e3b969 修复clear_all_bad字段名不一致+handleUpdateLandField整数列类型 2026-06-28 12:17:21 +08:00
ypsdf1 72d2032f95 fix: PHP admin统计接口catch(Exception)改为catch(\Throwable),修复PHP8兼容性导致概率性unknown 2026-06-28 11:47:13 +08:00
ypsdf1 d568a2ce5d feat: PHP效果选择器+管理员角色切换+JSON编码修复
- player.php: 新增glassSelect()毛玻璃选择器弹窗(29种MC药水效果)
- player.php: addClearEffect/addGiveEffect从手动输入改为效果选择器
- player.php: 访客表格角色列改为可点击标签,点击切换管理员/访客
- land_api.php: 新增change_visitor_role API + handleChangeVisitorRole()
- land_api.php: handleListUserGroups添加JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
2026-06-28 10:48:09 +08:00
ypsdf1 5f3bd70987 fix: SQLite只读数据库修复+远程权限修复API
- getDB(): 新增自动chmod修复数据库文件/WAL/SHM权限
- getDB(): initTables和migrateDatabase加try-catch容错,防止写入失败导致500
- 新增fixDbPermissions()远程修复API: 可修复目录/数据库/WAL文件权限+写入测试
- sync.php: 注册fix_db_permissions action
2026-06-28 10:45:33 +08:00
ypsdf1 ca212233a3 feat: 用户组PHP→Java变更通知
- handleUpdateUserGroup: 更新后写入web_admin_changes(group_change)
- handleDeleteUserGroup: 删除后写入web_admin_changes(group_change)
- Java端pollAdminChanges收到group_change后自动重载用户组配置
2026-06-28 00:16:25 +08:00
ypsdf1 a5a2ef733c feat(admin): 添加用户组管理页面
- 侧边栏新增「👥 用户组」管理入口
- 支持新建/编辑/删除用户组(组ID、显示名、颜色、优先级)
- 支持配置用户组独立领地单价和最大领地数
- 支持编辑用户组默认权限(38项权限复选框)
- 支持管理用户组成员(添加/移除玩家)
- API认证列表补充用户组相关action
2026-06-27 23:50:20 +08:00
ypsdf1 5f43fb1407 feat: 用户组同步+管理API (sync_user_groups, land_api endpoints) 2026-06-27 23:05:27 +08:00
ypsdf1 c0672ad47a feat: 公共建筑is_public_building同步字段 2026-06-27 22:44:50 +08:00
ypsdf1 63251c6033 fix: ack_admin_changes GET/POST兼容 2026-06-27 22:04:01 +08:00
ypsdf1 742578a107 修复PHP用户端两个bug:权限配置空白+glassPrompt未定义
1. 移到try-catch之前,修复handleGetMemberPerms调用时变量未定义导致perm_types返回null
2. player.php新增glassPrompt HTML元素(label/input/hint)和JS函数
3. glassAlertResolve支持glassPrompt返回输入框值
2026-06-27 21:43:00 +08:00
ypsdf1 c8c8db6220 修复IP归属地查询卡死bug:超时控制+前端AbortController
1. doQueryIpLocation增加单IP总超时5秒(防止4个API依次超时卡死)
2. 单API超时从3-5秒降至2-3秒
3. 批次从3个减为2个(最坏10秒,安全于30秒PHP限制)
4. 前端fetch增加AbortController 15秒超时
5. fetchIpApiWithTimeout默认超时改为3秒
2026-06-27 20:31:53 +08:00
ypsdf1 fc42b777ca 修复配置值前导零bug:handleUpdateConfig/syncConfig去除前导0
- handleUpdateConfig: (string)(int)去前导零
- syncConfig: 同样处理Java推送的配置值
2026-06-27 20:15:39 +08:00
ypsdf1 48ad7035ea 修复PHP→Java配置同步:handleUpdateConfig写入变更队列
- PHP修改配置后写入 web_admin_changes (config_change)
- Java pollAdminChanges 轮询拉取并应用到本地 area_config
2026-06-27 19:58:05 +08:00
ypsdf1 b6db8e56d5 权限变更同步:handleUpdateMemberPerm写入web_admin_changes
PHP端玩家修改成员权限后,写入变更队列,Java端pollAdminChanges可拉取同步回本地DB

修复:玩家端修改权限后Java不感知,下次推送时覆盖玩家修改
2026-06-27 16:55:22 +08:00
ypsdf1 bbd0049602 修复领地系统3个bug:
1. JSON解析崩溃:addConvertEffectsForFrontend将Java自定义格式转JSON数组
   - give_effects: 夜视:1:99999|SPEED:2:60 → [[夜视,1,99999],[SPEED,2,60]]
   - clear_effects: POISON,WITHER → [POISON,WITHER]
2. admin.php配置key名修复:land_price_per_sqm→create_price_per_sqm, max_lands→max_lands_per_player
3. handleUpdateLandField存储时将JSON数组转回Java格式
2026-06-27 14:52:34 +08:00
ypsdf1 b8dd9b7cd0 修复sync_lands报错:SQLITE3_DOUBLE改为SQLITE3_FLOAT 2026-06-27 14:14:20 +08:00
ypsdf1 5c47dd44fd 修复sync_lands报错:补全enable_announce等缺失列
问题:Java推送全部列,PHP表缺少enable_announce/announce_template/txt_content/deny_fluid/clear_all_bad → INSERT报错
修复:initLandTables添加5个ALTER TABLE迁移 + handleSyncLands INSERT补全对应列和bindValue
2026-06-27 13:54:51 +08:00
ypsdf1 967feb9b94 修复领地设置不同步:PHP端完整接收所有字段
问题1:handleSyncLands只存13个基础字段,30+权限字段全部丢弃
修复:INSERT扩展到63列,完整接收Java推送的所有deny_*、效果、传送点字段

问题2:web_area_lands表缺少权限列
修复:initLandTables添加46个ALTER TABLE迁移,兼容已有表

问题3:validateWebAccess检查窗口不匹配
修复:web_login_verified检查改用token实际有效期(非硬编码5分钟)
2026-06-27 13:37:29 +08:00
ypsdf1 9905f28886 新增sync_config配置同步端点 2026-06-27 12:27:30 +08:00
ypsdf1 3dfa7df18c 修复sync.php列值不匹配导致领地同步失败 2026-06-26 22:56:07 +08:00
ypsdf1 8de90708dc 修复:syncLands INSERT列值数量不匹配(deny_all_effects重复)+INSERT错误处理 2026-06-26 22:11:36 +08:00
ypsdf1 aa45bd5ca2 修复领地同步: 补全缺失字段迁移(deny_block_break等30+列)、修复重复deny_all_effects列、添加调试日志 2026-06-26 21:25:40 +08:00
ypsdf1 57fbc1ffc1 fix: Web自动登录安全+领地同步
1. validateWebAccess的view操作增加web_login_verified检查(5分钟有效)
2. pushPlayerLoginStatus在online=1时同步写入web_login_verified
3. 防止偷token自动登录: 未通过Java验证的token要求密码
2026-06-26 19:18:40 +08:00
ypsdf1 3ad96b1080 修复多个问题:库存无限+CDK逻辑简化
问题2修复: 库存无限商品数量限制
- player.php: 库存无限时最大数量从64改为999
- shop.php: 移除硬编码64上限,只检查stock>0时的库存

问题3修复: CDK兑换逻辑简化
- cdk.php: PHP不再更新bond_cache,只记录pending交易
- Java端负责拉取交易并处理加债券
- 返回给前端的balance_after改为当前余额(不预加)
2026-06-26 10:59:58 +08:00
ypsdf1 9eb0707729 问题10修复: CDK兑换不到账+假密码+隐藏密码框
player.php:
- 商城购买:总价≤1000时隐藏密码输入框,动态切换
- CDK兑换:完全移除密码输入框(CDK免验证)
- doBuy:小额交易不强制密码,大额才要求
- doCDKExchange:移除密码字段

shop.php:
- 移除硬性密码检查,交给validateWebAccess处理

cdk.php:
- 远程CDK兑换:改为cdk_redeem+pending(之前completed被Java跳过)
- 远程CDK兑换同时更新bond_cache+sync_requests
2026-06-26 10:21:49 +08:00
ypsdf1 cd86441a7a v21: PHP端增加Web登录全链路日志+验证状态同步
- check_web_login_confirmations: 返回php_verified字段(查询web_login_verified表供Java判断)
- webLoginRequest: 增加debugLog记录新请求创建
- completeWebLoginRequest: debugLog增加player和wrote_confirmations字段
- checkPendingWebLogins: 增加debugLog记录轮询结果
2026-06-25 19:36:05 +08:00
ypsdf1 cd6010bfbb v13: 安全加固 - 禁止PHP自验证密码
安全修复:
- sync.php: verifyWebPassword()函数体改为error(),完全禁止PHP直接验证密码
- 所有密码验证必须走web_login_request → Java插件本地验证 → complete_web_login_request回调
2026-06-25 14:42:01 +08:00
ypsdf1 8edc94b848 v12: PHP密码验证安全修复 + land_api GET参数支持
安全修复:
- sync.php: 删除verify_web_password端点,禁止PHP自验证密码
- core.php: validateWebAccess大额交易密码验证改为检查web_login_verified(Java验证结果)
- 密码验证强制走web_login_request流程

其他:
- land_api.php: handleAckAdminChanges支持GET参数ids(避免POST Content-Type问题)
2026-06-25 14:19:08 +08:00
ypsdf1 71777e3013 修复poll_admin_changes返回JSON包含Unicode转义序列 2026-06-24 21:36:18 +08:00
ypsdf1 06854054ca Fix land_api.php: add land_id to web_land_owner_changes INSERT, add perm_change sync for visitor perms 2026-06-24 13:09:47 +08:00