ypsdf1
|
449976478e
|
充值对账页面+防重复支付+高频补单+轮询器改进
- recharge_orders.php + recharge_orders_api.php: 管理员充值订单对账页面
- admin.php 侧边栏添加充值对账入口
- pay.php: 创建订单时检测已有未支付订单(复用),防重复支付
- player.php: 续支付检测+支付成功后清除本地订单+恢复按钮
- poller_online.php + pay.php: 添加web_transactions唯一索引
- .gitignore: 排除密钥.md
关闭 #1056 #1057 #1055 #1060 部分
|
2026-07-15 18:00:11 +08:00 |
|
ypsdf1
|
3a53ec5fdc
|
queryOrder 自动触发 pay_poller 补单(非阻塞 curl 3秒超时)
|
2026-07-15 14:56:28 +08:00 |
|
ypsdf1
|
8c857b4715
|
还原PAY_NOTIFY_URL为域名(直连IP导致404),回调靠poller补单
|
2026-07-15 14:51:17 +08:00 |
|
ypsdf1
|
ab762ad3a9
|
修复支付回调:排除action参数导致签名验证失败 + 详细日志 + 直连IP绕CF
- verifyNotifySign 排除 action 参数(平台签名不含URL路由参数,多出 action=xxx 导致 MD5 不匹配)
- PAY_NOTIFY_URL 改 http://43.153.203.46(同服务器回调走 Cloudflare 被 WAF 拦截 403)
- handleNotify/verifyNotifySign 增加详细 debugLog(请求方法、remote_addr、验签过程)
- 额外创建 pay_poller.php(直接读平台MySQL轮询已支付订单,绕过HTTP回调)
|
2026-07-15 14:40:38 +08:00 |
|
ypsdf1
|
d0b9e8a92d
|
修复在线充值:私钥损坏无法自验,切回MD5签名(平台keytype=0允许)\n\n- 用户新私钥经诊断无法openssl_verify自签自验(self-verify=0),密钥数据损坏\n- PAY_SIGN_TYPE切回MD5,MD5签名已验证通过平台验签并成功创建订单\n- 通知回调仍用RSA验签(平台公钥验平台私钥签名,平台密钥有效)
|
2026-07-15 13:21:58 +08:00 |
|
ypsdf1
|
deabd1de98
|
修复在线充值:切换RSA签名+本地中转页POST提交,补齐submit_params列与web_transactions表兜底
- PAY_SIGN_TYPE 切回 RSA(新商户私钥已配对平台商户公钥)
- create_order 签名后落库 submit_params,pay_redirect 自动 POST 到网关(规避GET下 notify_url 内 & 被截断)
- ensurePayOrdersTable 用 PRAGMA 探测并 ALTER 补齐 submit_params 列(兼容旧表)
- handleNotify 新增 ensureWebTransactionsTable 幂等兜底,避免新部署缺少流水表导致回调 fail
- 仅改动 api/pay.php,密钥文件不进版本库
|
2026-07-15 11:35:52 +08:00 |
|
ypsdf1
|
8d151d865c
|
fix(pay): 移除密钥加载对本地txt文件的引用,仅使用pay_secrets.php\n\n- loadPayKeys() 不再读取「密钥文件_git拉黑.txt」,避免服务器上存在旧txt时被误用\n- 删除 parsePayKeyFile() 函数及相关txt路径探测逻辑\n- 同步修正 pay_secrets.php 注释,明确服务器端仅认本文件\n- 本地txt文件仅作人工本地记录,严禁代码引用
|
2026-07-15 00:56:04 +08:00 |
|
ypsdf1
|
a4d6a5d487
|
revert(pay): 恢复排除sign_type字段(彩虹易支付标准签名规则)\n\n- 测试包含sign_type后仍失败,改回排除sign_type(文档明确要求)\n- 密钥更新:商户公钥已更新为与新私钥匹配\n- 诊断结果:商户私钥与商户公钥匹配,但与平台公钥不匹配\n- 用户需在支付平台后台核对公钥
|
2026-07-15 00:26:42 +08:00 |
|
ypsdf1
|
efcc0be26a
|
fix(pay): 尝试在签名中包含sign_type字段\n\n- 彩虹易支付签名规则可能要求包含sign_type字段\n- 修改buildSign函数:只跳过sign字段,保留sign_type\n- 此为诊断性修改,若仍失败需改回排除sign_type
|
2026-07-15 00:17:44 +08:00 |
|
ypsdf1
|
8ae0fe9b7d
|
revert(pay): 恢复SHA256签名算法(彩虹易支付V2标准)\n\n- 测试SHA1算法后仍失败,改回SHA256(文档明确V2使用SHA256WithRSA)\n- 诊断脚本证实:商户私钥与商户公钥不是一对,导致所有签名方式验签失败\n- 根本问题:密钥不匹配,需用户核对支付平台后台公钥
|
2026-07-15 00:11:38 +08:00 |
|
ypsdf1
|
af5f31c87e
|
fix(pay): 尝试将RSA签名算法从SHA256改为SHA1以匹配彩虹易支付平台\n\n- 彩虹易支付V2接口可能使用SHA1而非SHA256签名算法\n- 用户反馈:用Unix时间戳RSA签名校验失败,用ISO 8601格式报时间戳错误\n- 此为诊断性修改,若仍失败需改回SHA256并检查其他参数
|
2026-07-15 00:02:38 +08:00 |
|
ypsdf1
|
7878c07a22
|
fix(pay): 修正 timestamp 为10位Unix时间戳(秒)以符合平台接口要求\n\n- 平台要求 timestamp 为10位数Unix时间戳(单位秒),而非ISO 8601格式\n- 改回 (string)time() 生成10位秒级时间戳\n- 签名规则不变:参数按ASCII升序、排除sign/sign_type/空值,RSA-SHA256签名\n- 此前ISO 8601格式导致平台报'时间戳字段不正确,请检查服务器时间'
|
2026-07-14 23:51:06 +08:00 |
|
ypsdf1
|
2a6c6edad2
|
fix(pay): 修正 timestamp 为 ISO 8601 格式以符合彩虹易支付 V2 接口签名规范\n\n- 原 Unix 时间戳字符串改为 date('c') 生成的 ISO 8601 格式(如 2026-07-14T23:27:54+08:00),与平台文档示例一致\n- 签名规则未变:参数按 ASCII 升序、排除 sign/sign_type/空值,RSA-SHA256 签名\n- 若平台仍校验失败,需核对商户私钥与平台后台公钥是否匹配
|
2026-07-14 23:33:00 +08:00 |
|
ypsdf1
|
7fd559531c
|
Merge branch 'php-wip' into php
# Conflicts:
# .gitignore
# api/pay.php
# api/sync.php
|
2026-07-14 23:18:44 +08:00 |
|
ypsdf1
|
cb2f68cfd8
|
fix(pay): 修复商户私钥 PKCS#1/PKCS#8 头不匹配导致的 RSA 签名失败
- wrapPem 对私钥按 DER 结构(version 之后紧跟 INTEGER 0x02 为 PKCS#1,SEQUENCE 0x30 为 PKCS#8)自动选择 PEM 头,不再一概用 PKCS#8 头
- 新增 opensslLoadKey 容错加载器:首次加载失败后自动在 RSA PRIVATE KEY 与 PRIVATE KEY 头之间切换重试,彻底规避头格式不匹配引发的签名/验签失败
- 该路径为支付关键链路,签名失败会导致 create_order 直接 500,必须健壮
|
2026-07-14 23:17:34 +08:00 |
|
ypsdf1
|
57124cab5c
|
fix(pay): 修复 create_order 返回 HTML 导致前端 JSON 解析失败
根因:PHP 8.0+ 中 openssl_free_key() 已弃用,调用会触发弃用警告。
服务端若 html_errors=On,该警告以 <br> 等 HTML 形式输出,污染 JSON 响应,
前端 res.json() 报 'Unexpected token <'。
修复:
- buildSign / verifyNotifySign 中仅在 PHP < 8.0 时调用 openssl_free_key
- 文件顶部设置 display_errors=0 / html_errors=0 / error_reporting=E_ALL,
确保 API 错误只进日志,不污染响应
|
2026-07-14 22:07:17 +08:00 |
|
ypsdf1
|
1c9e5808a1
|
WIP: php 本地未提交改动
包含:
- admin.php / api/land_api.php / api/sync.php / login.php 修改
- 新增 active_players.php / online_curve.php / today_bonds.php
注:后续将视 origin/php 情况 reset --hard 对齐,本分支用于保留 WIP。
|
2026-07-14 22:02:10 +08:00 |
|
ypsdf1
|
8ec89ef841
|
feat: 债券在线充值联控(彩虹易支付RSA版) — pay.php + player.php
- api/pay.php: 下单/回调/查询 + RSA(SHA256)签名验签 + pay_orders表
- player.php: 在线充值UI + ?paid=1回跳 + 3s轮询补单
- 密钥仅从 git-ignored 的 pay_secrets.php / 密钥文件_git拉黑.txt 读取,不入库
- fix: 去除 open_basedir 限制的 /pay_keys 候选路径 + @抑制文件访问警告,避免污染响应
|
2026-07-14 21:12:56 +08:00 |
|
ypsdf1
|
9a78c693bf
|
feat: 债券在线充值联控(彩虹易支付RSA版) — pay.php + player.php
- api/pay.php: 下单/回调/查询 + RSA(SHA256)签名验签 + pay_orders表
- player.php: 在线充值UI + ?paid=1回跳 + 3s轮询补单
- 密钥仅从 git-ignored 的 pay_secrets.php / 密钥文件_git拉黑.txt 读取,不入库
- fix: 去除 open_basedir 限制的 /pay_keys 候选路径 + @抑制文件访问警告,避免污染响应
|
2026-07-14 21:03:28 +08:00 |
|
ypsdf1
|
5515d22d4c
|
security: 支付密钥文件 git 拉黑 (double insurance)
- .gitignore 新增 密钥文件_git拉黑.txt / pay_secrets.php / *.paykey
- 防止彩虹易支付 RSA 私钥/公钥/商户ID 误提交到 git
- 部署脚本 deploy_php_only.py 同步排除该文件防止上传公网 web 根目录
|
2026-07-14 20:25:06 +08:00 |
|
ypsdf1
|
4e11845636
|
R23: sync.php新增sync_admins+sync_bans处理(修复Java推送返回未知操作)
|
2026-07-12 23:00:05 +08:00 |
|
ypsdf1
|
b34753d1fd
|
新增封禁名单联控 + 用户管理封禁显示
- land_api.php: web_player_bans表 + handleSyncBans + sync_bans action
- admin.php: list_bans API接口
- admin.php前端: 用户行显示封禁状态(红色+禁图标+hover详情)
|
2026-07-12 22:08:46 +08:00 |
|
ypsdf1
|
498245d967
|
插件管理员权限扩展 + admin名单同步
- 新增web_plugin_admins表 + isPluginAdmin/canManageLand辅助函数
- handleAddVisitor/handleRemoveVisitor/handleChangeVisitorRole/handleUpdateLandField/handleUpdateVisitorPerm/handleGetMemberPerms/handleUpdateMemberPerm/handleClearMemberPerm/handleLandDetail 9处权限检查从owner-only扩展为owner+admin
- 新增sync_admins action:Java推送tag管理员名单,PHP全量写入web_plugin_admins
|
2026-07-12 19:46:44 +08:00 |
|
ypsdf1
|
be04c8b451
|
修复三个问题:1)sync.php缺少:peace_mode绑定导致同步后和平模式值丢失;2)player.php效果命名修正(火焰抗性→抗火,英雄→村庄英雄);3)peace_mode前端渲染反转(isInverted从false改true)
|
2026-07-12 13:03:48 +08:00 |
|
ypsdf1
|
f5879f4087
|
修复PHP操作效果后JSON解析崩溃:convertEffectsForFrontend增加容错处理+handleUpdateLandField统一管道格式到变更队列+player.php所有effects JSON.parse加try-catch
|
2026-07-12 11:41:26 +08:00 |
|
ypsdf1
|
0760cc1d2e
|
修复Java删除成员后PHP不同步删除的问题:移除syncPermissions中导致删除永远不生效的120秒宽限期,改为检查web_admin_changes待处理变更保护
|
2026-07-12 11:20:11 +08:00 |
|
ypsdf1
|
8645c57839
|
修复Java撤职后被PHP stale pending变更覆盖的问题:syncPermissions接收Java同步时Ack掉冲突的待处理perm_change/add_visitor
|
2026-07-12 10:56:55 +08:00 |
|
ypsdf1
|
0b283483a7
|
修复: 成员权限显示未合并领地默认权限
handleGetMemberPerms 新增返回领地默认权限映射(default_perms),
严格对齐 Java getLandDefaultDeny 语义(含 denyDrop/denyPickup 反向列)。
前端 renderMemberPermDetail 对无自定义覆盖的权限键回退到领地默认,
与游戏内 getEffectiveDeny 的领地默认回退逻辑一致,
修复网页端显示"允许"而游戏内实际"禁止/限制"的权限不同步问题。
|
2026-07-12 10:32:10 +08:00 |
|
ypsdf1
|
c266cf8555
|
R17: 修复token被误判为一次性 - 清理validateTokenSilent诊断日志+修复getDB重复ROLLBACK
|
2026-07-11 20:26:13 +08:00 |
|
ypsdf1
|
a4972dde7e
|
R16: 修复add_visitor超时边界(>65→>=60)
|
2026-07-11 18:10:43 +08:00 |
|
ypsdf1
|
d7da6ec1a6
|
R15: PHP添加成员改为Java验证后入库(参考改领地主流程)
- handleAddVisitor改为先写pending队列,等Java验证后入库
- 新增handleAddVisitorCallback回调PHP添加成员结果
- 新增handleGetAddVisitorStatus供前端轮询状态
- player.php添加成员后轮询状态,支持异步验证显示
|
2026-07-11 15:53:12 +08:00 |
|
ypsdf1
|
0115cbda41
|
R14: 修复PHP添加成员静默失败+syncPermissions删除清理
- handleAddVisitor: 移除异步验证阻塞,先添加成员再异步校验
- syncPermissions: 新增删除清理逻辑,同步Java端已移除的成员
- 120秒宽限期防止PHP刚添加的成员被误删
|
2026-07-11 15:11:00 +08:00 |
|
ypsdf1
|
ed57c8f82c
|
R13: PHP端handleChangeVisitorRole 新成员走add_visitor流程
- 新增成员时change_type从perm_change改为add_visitor,确保Java白名单同步
|
2026-07-11 14:19:08 +08:00 |
|
ypsdf1
|
4998d7bdfa
|
修复PHP添加/移除成员不通知Java同步:写入web_admin_changes变更队列
1. handleAddVisitor: 添加访客后写入add_visitor变更记录,Java轮询后同步到area_land_permissions+白名单
2. handleRemoveVisitor: 移除访客后写入remove_visitor变更记录,Java轮询后同步删除
3. playerExists已检查login.db兜底,确保添加不存在的玩家会被拒绝
|
2026-07-11 13:36:03 +08:00 |
|
ypsdf1
|
646ecfa162
|
修复撤职管理员报无效角色member+效果中英文名兼容
1. land_api.php: handleChangeVisitorRole白名单增加member角色
2. player.php: addGiveEffect改用中文效果名(EN_TO_CN映射)发送给Java
3. player.php: addClearEffect兼容中文效果名匹配
|
2026-07-11 12:21:32 +08:00 |
|
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 |
|