Phase1 后端核心:
- 新增 fsgx_v1.sql 迁移脚本(is_queue_goods/frozen_points/available_points/no_assess)
- SystemConfigServices 返佣设置扩展(周期人数/分档比例/范围/时机)
- StoreOrderCreateServices 周期循环佣金计算
- StoreOrderTakeServices 佣金发放后同步冻结积分
- StoreProductServices/StoreProduct 保存 is_queue_goods
Phase2 后端接口:
- GET /api/hjf/brokerage/progress 佣金周期进度
- GET /api/hjf/assets/overview 资产总览
- HjfPointsServices 每日 frozen_points 0.4‰ 释放定时任务
- PUT /adminapi/hjf/member/{uid}/no_assess 不考核接口
- GET /adminapi/hjf/points/release_log 积分日志接口
Phase3 前端清理:
- hjfCustom.js 路由精简(仅保留 points/log)
- hjfQueue.js/hjfMember.js API 清理/重定向至 CRMEB 原生接口
- pages.json 公排→推荐佣金/佣金记录/佣金规则
Phase4-5 前端改造:
- queue/status.vue 推荐佣金进度页整体重写
- 商品详情/订单确认/支付结果页文案与逻辑改造
- 个人中心/资产页/引导页/规则页文案改造
- HjfQueueProgress/HjfRefundNotice/HjfAssetCard 组件改造
- 推广中心嵌入佣金进度摘要
- hjfMockData.js 全量更新(公排字段→佣金字段)
Phase6 Admin 增强:
- 用户列表新增 frozen_points/available_points 列及不考核操作按钮
- hjfPoints.js USE_MOCK=false 对接真实积分日志接口
Phase7 配置文档:
- docs/fsgx-phase7-config-checklist.md 后台配置与全链路验收清单
Made-with: Cursor
157 lines
8.9 KiB
XML
157 lines
8.9 KiB
XML
<?xml version="1.0"?>
|
|
<ruleset
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd"
|
|
>
|
|
<arg name="basepath" value="."/>
|
|
<arg name="extensions" value="php"/>
|
|
<arg name="parallel" value="80"/>
|
|
<arg name="cache" value=".phpcs-cache"/>
|
|
<arg name="colors"/>
|
|
|
|
<!-- Show progress of the run and show sniff names -->
|
|
<arg value="ps"/>
|
|
|
|
<config name="php_version" value="70100"/>
|
|
|
|
<file>lib</file>
|
|
<file>tests</file>
|
|
|
|
<rule ref="Doctrine">
|
|
<exclude name="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint"/>
|
|
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint"/>
|
|
<exclude name="SlevomatCodingStandard.TypeHints.DeclareStrictTypes"/>
|
|
<exclude name="SlevomatCodingStandard.Classes.SuperfluousAbstractClassNaming"/>
|
|
<exclude name="SlevomatCodingStandard.Classes.SuperfluousExceptionNaming"/>
|
|
<exclude name="SlevomatCodingStandard.Classes.SuperfluousTraitNaming.SuperfluousSuffix"/>
|
|
<exclude name="SlevomatCodingStandard.Classes.DisallowLateStaticBindingForConstants.DisallowedLateStaticBindingForConstant"/>
|
|
<exclude name="SlevomatCodingStandard.ControlStructures.ControlStructureSpacing.IncorrectLinesCountAfterLastControlStructure"/>
|
|
|
|
<exclude name="PSR2.Methods.MethodDeclaration.Underscore"/>
|
|
<!-- https://github.com/slevomat/coding-standard/issues/867 -->
|
|
<exclude name="SlevomatCodingStandard.ControlStructures.JumpStatementsSpacing.IncorrectLinesCountAfterLastControlStructure"/>
|
|
<!-- See https://github.com/squizlabs/PHP_CodeSniffer/issues/2937 -->
|
|
<exclude name="Squiz.Arrays.ArrayDeclaration.ValueNoNewline"/>
|
|
<exclude name="Squiz.NamingConventions.ValidVariableName.PublicHasUnderscore"/>
|
|
</rule>
|
|
|
|
<!-- Disable the rules that will require PHP 7.4 -->
|
|
<rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint">
|
|
<properties>
|
|
<property name="enableNativeTypeHint" value="false"/>
|
|
</properties>
|
|
</rule>
|
|
|
|
<rule ref="PSR1.Methods.CamelCapsMethodName.NotCamelCaps">
|
|
<exclude-pattern>*/lib/Doctrine/Common/Annotations/DocParser.php</exclude-pattern>
|
|
</rule>
|
|
<rule ref="Squiz.Classes.ValidClassName.NotCamelCaps">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/ClassNoNamespaceNoComment.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Commenting.ForbiddenAnnotations.AnnotationForbidden">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/AbstractReaderTest.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Namespaces.UseDoesNotStartWithBackslash.UseStartsWithBackslash">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="PSR12.Files.ImportStatement.LeadingSlash">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.TypeHints.LongTypeHints.UsedLongTypeHint">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Namespaces.UseFromSameNamespace.UseFromSameNamespace">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Namespaces.UseDoesNotStartWithBackslash.UseStartsWithBackslash">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Namespaces.UseSpacing.IncorrectLinesCountBetweenSameTypeOfUse">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.Namespaces.MultipleUsesPerLine.MultipleUsesPerLine">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/*</exclude-pattern>
|
|
</rule>
|
|
|
|
<!-- https://github.com/slevomat/coding-standard/issues/1066 -->
|
|
<rule ref="SlevomatCodingStandard.PHP.UselessParentheses">
|
|
<exclude-pattern>*/lib/Doctrine/Common/Annotations/DocParser.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly.ReferenceViaFullyQualifiedName">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/PhpParserTest.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<!-- It is easier to understand tests that involve annotations if you can
|
|
declare several dummy classes with annotations in the same file -->
|
|
<rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
|
|
<exclude-pattern>*/tests/*</exclude-pattern>
|
|
</rule>
|
|
<rule ref="Squiz.Classes.ClassFileName.NoMatch">
|
|
<exclude-pattern>*/tests/*</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Ticket/DCOM58Test.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/AbstractReaderTest.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/PhpParserTest.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/NamespaceWithClosureDeclaration.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/ClassWithRequire.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<!-- these classes do not have a namespace on purpose -->
|
|
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/SingleClassLOC1000.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/NonNamespacedClass.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Ticket/DCOM58Entity.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/ClassNoNamespaceNoComment.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/TopLevelAnnotation.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint.MissingAnyTypeHint">
|
|
<!-- there is a class property with an empty var annotation on purpose -->
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/AbstractReaderTest.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/ClassWithValidAnnotationTarget.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="SlevomatCodingStandard.Namespaces.DisallowGroupUse.DisallowedGroupUse">
|
|
<!-- The name of the file alone explains this -->
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/GroupUseStatement.php</exclude-pattern>
|
|
</rule>
|
|
<rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint.MissingTraversableTypeHintSpecification">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/AnnotationWithVarType.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming.SuperfluousSuffix">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/EmptyInterface.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/InterfaceThatExtendsAnInterface.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming.SuperfluousPrefix">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/InterfaceThatExtendsAnInterface.php</exclude-pattern>
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/InterfaceWithConstants.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase">
|
|
<!-- Usage of mixed case constants seems pretty deliberate here -->
|
|
<exclude-pattern>*/lib/Doctrine/Common/Annotations/ImplicitlyIgnoredAnnotationNames.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<rule ref="Squiz.Functions.GlobalFunction.Found">
|
|
<exclude-pattern>*/tests/Doctrine/Tests/Common/Annotations/Fixtures/functions.php</exclude-pattern>
|
|
</rule>
|
|
|
|
<!-- Single-line PHPDoc blocks will confuse PHPUnit 7.5 -->
|
|
<rule ref="SlevomatCodingStandard.Commenting.RequireOneLineDocComment.MultiLineDocComment">
|
|
<exclude-pattern>*/tests</exclude-pattern>
|
|
</rule>
|
|
</ruleset>
|