sqlite-web 0.7.2
gitea.db
issue
Create
Query
access
access_token
action
action_artifact
action_run
action_run_index
action_run_job
action_runner
action_runner_token
action_schedule
action_schedule_spec
action_task
action_task_output
action_task_step
action_tasks_version
action_variable
app_state
attachment
auth_token
badge
branch
collaboration
comment
commit_status
commit_status_index
commit_status_summary
commit_sync_log
commit_sync_status
dbfs_data
dbfs_meta
deploy_key
email_address
email_hash
external_login_user
follow
gpg_key
gpg_key_import
hook_task
issue
issue_assignees
issue_content_history
issue_dependency
issue_index
issue_label
issue_pin
issue_user
issue_watch
label
language_stat
lfs_lock
lfs_meta_object
login_source
milestone
mirror
notice
notification
oauth2_application
oauth2_authorization_code
oauth2_grant
org_user
package
package_blob
package_blob_upload
package_cleanup_rule
package_file
package_property
package_version
project
project_board
project_issue
protected_branch
protected_tag
public_key
pull_auto_merge
pull_request
push_mirror
reaction
release
renamed_branch
repo_archiver
repo_hidden_file
repo_indexer_status
repo_license
repo_redirect
repo_topic
repo_transfer
repo_unit
repository
review
review_state
secret
session
sqlite_sequence
star
stopwatch
system_setting
task
team
team_invite
team_repo
team_unit
team_user
topic
tracked_time
two_factor
upload
user
user_badge
user_blocking
user_open_id
user_redirect
user_setting
version
watch
webauthn_credential
webhook
Toggle helper tables
Structure
Content
Query
Insert
Drop
Import
Export
Delete row 511 from issue
id
511
repo_id
21
index
198
poster_id
1
original_author
original_author_id
0
name
🔍 代码审查报告:pay-260616 - 续费测试
content
## 自动代码审查报告 **分支**: pay-260616 **提交**: `fa288c0b9
## 自动代码审查报告 **分支**: pay-260616 **提交**: `fa288c0b9532b637d09636635ecc4117b87e14a2` **提交人**: LITTLEMAIDI (11833999+littlemaidi@user.noreply.gitee.com) **时间**: 2026-06-04 10:31:27 --- ## 1. 审查摘要 - **代码质量评分**:5.5 / 10 分 - **总体评价**:业务逻辑覆盖较全面,具备订单计费、会员折扣、优惠券抵扣等核心能力。但代码存在明显的**安全漏洞(SQL拼接)**、**逻辑缺陷(变量覆盖)**、**性能瓶颈(重复加载模型/循环计算)**以及**规范缺失(调试代码残留、魔法数字泛滥)**。整体可维护性较差,需进行结构性重构。 - **风险等级**:🔴 高 - **框架说明**:提示中提及 `phpci`,但代码特征(`defined('BASEPATH')`、`get_instance()`、`$this->load->model()`)明确为 **CodeIgniter 3** 框架。以下审查基于 CI3 架构规范进行。 ## 2. 问题详情 | 严重程度 | 文件/行号 | 问题描述 | 建议修改方案 | 代码示例 (可选) | | :--- | :--- | :--- | :--- | :--- | | 🔴 严重 | `Neworderservice.php`<br>(约第300行) | **SQL 注入风险**:`$pack_goods_where = "wares_package._package_id in (" . implode(",", $id_array['package_id']) . ")";` 直接拼接外部传入的数组到 SQL 条件中,若未严格过滤将导致注入。 | 使用 CI3 查询构造器或参数绑定,彻底杜绝拼接。 | `$this->CI->db->where_in('wares_package._package_id', $id_array['package_id']);`<br>`$wares_package_goods = $this->CI->Ahead_wares_package_goods_model->getPackageGoodsInfo($this->CI->db);` | | 🔴 严重 | `Neworderservice.php`<br>(约第450行) | **调试代码残留**:`echo $vip_upgrade_data_actual_pay;` 未清理。在生产环境中会破坏 JSON 响应结构或导致页面渲染异常。 | 立即移除 `echo`,改用 CI 日志系统记录。 | `log_message('debug', 'vip_upgrade_data_actual_pay: ' . $vip_upgrade_data_actual_pay);` | | 🟠 警告 | `Neworderservice.php`<br>(约第580行) | **变量覆盖导致财务计算错误**:`$order['_prime_service_charge']` 被连续赋值两次,第二次 `$order['_prime_service_charge'] = $service_charge;` 覆盖了首次赋值的 `$prime_after_paid_service_charge`。 | 明确业务意图,若需区分“经理打折前/后”服务费,应使用独立键名。 | `$order['_prime_after_paid_service_charge'] = $prime_after_paid_service_charge;`<br>`$order['_service_charge'] = $service_charge;` | | 🟠 警告 | `RoomPackage.php`<br>(第3行) | **框架引入不规范**:`include FCPATH . 'application' . DIRECTORY_SEPARATOR . ...` 硬编码路径且绕过 CI 自动加载机制,易引发路径错误或重复加载。 | 使用 CI 内置常量 `APPPATH`,或直接依赖 CI 的控制器自动加载(通常无需手动 `include`)。 | `require_once APPPATH . 'controllers/mini/hz/Index.php';`<br>*(若父类已注册自动加载,可直接删除此行)* | | 🟠 警告 | `RoomPackage.php`<br>(`timePackagePayPage` 方法) | **潜在未定义变量/逻辑分支隐患**:`$not_enough_time_notice` 仅在 `$package_id` 分支定义,自定义时长分支未定义,依赖 `?? ''` 兜底。若后续逻辑调整易引发 Notice 警告。 | 在方法开头显式初始化变量,提升代码健壮性。 | `$not_enough_time_notice = '';`<br>`$minutes = 0; $amount = 0; $end_time = 0;` | | 🟠 警告 | `Neworderservice.php`<br>(多处) | **性能瓶颈**:`count($this->CI->Ahead_vip_level_model::VIP_LEVEL_DEFAULT_NAME)` 在多个方法中重复执行;循环内频繁 `$this->CI->load->model()`。 | 将常量提取为类属性或在构造函数中缓存;模型统一在 `__construct` 中加载。 | `private $vip_max_level;`<br>`public function __construct() {`<br>` $this->CI =& get_instance();`<br>` $this->CI->load->model('Ahead_vip_level_model');`<br>` $this->vip_max_level = count($this->CI->Ahead_vip_level_model::VIP_LEVEL_DEFAULT_NAME);`<br>`}` | | 🟡 建议 | `Neworderservice.php`<br>(`getOrderTypeInfo`) | **违反单一职责原则 (SRP)**:该方法超 500 行,混合了商品、套餐、会员、优惠券、服务费、低消等数十种计算逻辑,极难测试与维护。 | 采用**策略模式 (Strategy Pattern)**,按订单类型 (`1/13`, `2/4`) 拆分独立的计费处理器类。 | `interface OrderCalculator { public function calculate($params); }`<br>`class GoodsOrderCalculator implements OrderCalculator { ... }`<br>`class RoomPackageCalculator implements OrderCalculator { ... }` | | 🟡 建议 | 两个文件 | **代码规范与可读性**:大量魔法数字(`1, 2, 3, 4, 7, 100, -1`)、硬编码字符串、未遵循 PSR-12 缩进与命名规范。 | 提取为类常量或配置文件;统一使用驼峰命名;遵循 PSR-12 格式化。 | `const ORDER_TYPE_DRINKS = 1;`<br>`const PAY_PLATFORM_WECHAT = 1;`<br>`const VIP_DISCOUNT_FULL = 100;` | | 🟡 建议 | `RoomPackage.php` | **输入验证缺失**:直接使用 `$this->param` 未做类型转换或 CI 输入过滤,存在越权或类型转换漏洞风险。 | 使用 CI3 的 `input` 类或 `form_validation` 库进行严格校验。 | `$order_type = $this->input->post('order_type') ?? '2';`<br>`$order_id = $this->input->post('order_id', TRUE);` | ## 3. 总结与行动建议 ### 🔑 优先修复的关键问题(P0/P1) 1. **立即修复 SQL 注入**:替换所有 `implode` 拼接 SQL 的逻辑,全面改用 `$this->db->where_in()` 或参数绑定。 2. **清理调试代码**:全局搜索并移除 `echo`、`var_dump`、`print_r`,改用 `log_message()`。 3. **修正财务计算覆盖**:检查 `$order['_prime_service_charge']` 的业务意图,确保打折前后服务费独立存储,避免对账差异。 ### 🛠 后续重构与优化方向 1. **架构解耦(策略模式)**:`Neworderservice::getOrderTypeInfo` 已严重膨胀。建议按订单类型拆分为 `GoodsOrderService`、`RoomPackageOrderService` 等独立类,通过工厂类路由,大幅降低圈复杂度。 2. **统一输入与输出规范**: - 控制器层统一使用 `$this->input->post/get()` 获取参数,并配合 `form_validation` 进行类型与范围校验。 - 所有金额计算统一使用 `bcmath` 扩展或保留两位小数后入库,避免浮点数精度丢失(当前代码多处直接 `*` 和 `+`)。 3. **性能与缓存优化**: - 将高频调用的模型、配置项移至构造函数或 CI 的 `autoload.php`。 - 会员等级、折扣率等基础数据建议接入 Redis 缓存,减少重复 DB 查询。 4. **代码规范落地**:引入 `PHP_CodeSniffer` + `PSR-12` 规则集进行 CI/CD 静态检查;提取所有魔法数字至 `config/constants.php` 或类常量。 > ⚠️ **局限性说明**:提供的 `Neworderservice.php` 代码在末尾 `$result['have_good` 处被截断,未能审查完整返回结构及后续支付/落库逻辑。建议补充完整代码以便进行全链路数据流与事务一致性审查。 --- *此 Issue 由代码审查服务自动创建*
...
milestone_id
0
priority
0
is_closed
0
is_pull
0
num_comments
0
ref
deadline_unix
0
created_unix
1780540287
updated_unix
1780540287
closed_unix
0
is_locked
0
content_version
0
time_estimate
0
Delete
Cancel