CommissionConfigEnum.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <?php
  2. namespace app\common\Enum;
  3. /**
  4. * 分销配置枚举类
  5. */
  6. class CommissionConfigEnum
  7. {
  8. // ===================== 分销层级 =====================
  9. /**
  10. * 分销层级
  11. */
  12. const LEVEL_DISABLE = 0; // 关闭
  13. const LEVEL_ONE = 1; // 一级
  14. const LEVEL_TWO = 2; // 二级
  15. const LEVEL_THREE = 3; // 三级
  16. public static $levelList = [
  17. self::LEVEL_DISABLE => '关闭',
  18. self::LEVEL_ONE => '一级',
  19. // self::LEVEL_TWO => '二级',
  20. // self::LEVEL_THREE => '三级'
  21. ];
  22. // ===================== 开关状态 =====================
  23. /**
  24. * 开关状态(分销自购、分销商审核等)
  25. */
  26. const SWITCH_OFF = 0; // 关闭/不需要
  27. const SWITCH_ON = 1; // 开启/需要
  28. public static $switchList = [
  29. self::SWITCH_OFF => '关闭',
  30. self::SWITCH_ON => '开启'
  31. ];
  32. public static $checkList = [
  33. self::SWITCH_OFF => '不需要',
  34. self::SWITCH_ON => '需要'
  35. ];
  36. public static $allowList = [
  37. self::SWITCH_OFF => '不允许',
  38. self::SWITCH_ON => '允许'
  39. ];
  40. public static $upgradeCheckList = [
  41. self::SWITCH_OFF => '自动升级',
  42. self::SWITCH_ON => '审核后升级'
  43. ];
  44. public static $needFormList = [
  45. self::SWITCH_OFF => '不需要',
  46. self::SWITCH_ON => '需要'
  47. ];
  48. public static $showProtocolList = [
  49. self::SWITCH_OFF => '不显示',
  50. self::SWITCH_ON => '显示'
  51. ];
  52. // ===================== 锁定下级条件 =====================
  53. /**
  54. * 锁定下级条件
  55. */
  56. const LOCK_SHARE = 'share'; // 首次通过分享进入
  57. const LOCK_PAY = 'pay'; // 首次付款
  58. const LOCK_AGENT = 'agent'; // 成为子分销商
  59. public static $inviteLockList = [
  60. self::LOCK_SHARE => '首次通过分享进入',
  61. // self::LOCK_PAY => '首次付款',
  62. // self::LOCK_AGENT => '成为子分销商'
  63. ];
  64. // ===================== 成为分销商条件 =====================
  65. /**
  66. * 成为分销商条件
  67. */
  68. const BECOME_REGISTER = 'register'; // 新会员注册
  69. const BECOME_APPLY = 'apply'; // 自助申请
  70. const BECOME_GOODS = 'goods'; // 购买任意商品
  71. const BECOME_CONSUME = 'consume'; // 消费累计
  72. public static $becomeAgentList = [
  73. // self::BECOME_REGISTER => '新会员注册',
  74. self::BECOME_APPLY => '自助申请',
  75. // self::BECOME_GOODS => '购买任意商品',
  76. // self::BECOME_CONSUME => '消费累计'
  77. ];
  78. // ===================== 商品结算方式 =====================
  79. /**
  80. * 商品结算方式
  81. */
  82. const REWARD_TYPE_PRICE = 'price'; // 商品价
  83. const REWARD_TYPE_PAY_PRICE = 'pay_price'; // 实际支付价
  84. public static $rewardTypeList = [
  85. self::REWARD_TYPE_PRICE => '商品价',
  86. self::REWARD_TYPE_PAY_PRICE => '实际支付价'
  87. ];
  88. // ===================== 佣金结算方式 =====================
  89. /**
  90. * 佣金结算方式
  91. */
  92. const REWARD_EVENT_PAID = 'paid'; // 支付后结算
  93. const REWARD_EVENT_RECEIVED = 'received'; // 确认收货结算
  94. const REWARD_EVENT_FINISHED = 'finished'; // 订单完成结算
  95. const REWARD_EVENT_MANUAL = 'manual'; // 手动打款
  96. public static $rewardEventList = [
  97. self::REWARD_EVENT_PAID => '支付后结算',
  98. self::REWARD_EVENT_RECEIVED => '确认收货结算',
  99. self::REWARD_EVENT_FINISHED => '订单完成结算',
  100. self::REWARD_EVENT_MANUAL => '手动打款'
  101. ];
  102. // ===================== 扣除设置 =====================
  103. /**
  104. * 退款扣除设置
  105. */
  106. const REFUND_NO_DEDUCT = 0; // 退款不扣除
  107. const REFUND_DEDUCT = 1; // 退款扣除
  108. public static $refundCommissionRewardList = [
  109. self::REFUND_NO_DEDUCT => '退款不扣除',
  110. self::REFUND_DEDUCT => '退款扣除'
  111. ];
  112. public static $refundCommissionOrderList = [
  113. self::REFUND_NO_DEDUCT => '退款不扣除',
  114. self::REFUND_DEDUCT => '退款扣除'
  115. ];
  116. // ===================== 辅助方法 =====================
  117. /**
  118. * 获取分销层级文本
  119. */
  120. public static function getLevelText($value)
  121. {
  122. return self::$levelList[$value] ?? '关闭';
  123. }
  124. /**
  125. * 获取开关状态文本
  126. */
  127. public static function getSwitchText($value)
  128. {
  129. return self::$switchList[$value] ?? '关闭';
  130. }
  131. /**
  132. * 获取审核状态文本
  133. */
  134. public static function getCheckText($value)
  135. {
  136. return self::$checkList[$value] ?? '不需要';
  137. }
  138. /**
  139. * 获取锁定条件文本
  140. */
  141. public static function getInviteLockText($value)
  142. {
  143. return self::$inviteLockList[$value] ?? '首次通过分享进入';
  144. }
  145. /**
  146. * 获取成为分销商条件文本
  147. */
  148. public static function getBecomeAgentText($value)
  149. {
  150. return self::$becomeAgentList[$value] ?? '自助申请';
  151. }
  152. /**
  153. * 获取商品结算方式文本
  154. */
  155. public static function getRewardTypeText($value)
  156. {
  157. return self::$rewardTypeList[$value] ?? '实际支付价';
  158. }
  159. /**
  160. * 获取佣金结算方式文本
  161. */
  162. public static function getRewardEventText($value)
  163. {
  164. return self::$rewardEventList[$value] ?? '支付后结算';
  165. }
  166. /**
  167. * 获取退款佣金扣除文本
  168. */
  169. public static function getRefundCommissionRewardText($value)
  170. {
  171. return self::$refundCommissionRewardList[$value] ?? '退款扣除';
  172. }
  173. /**
  174. * 获取退款业绩扣除文本
  175. */
  176. public static function getRefundCommissionOrderText($value)
  177. {
  178. return self::$refundCommissionOrderList[$value] ?? '退款扣除';
  179. }
  180. // ===================== 验证方法 =====================
  181. /**
  182. * 验证分销层级值
  183. */
  184. public static function isValidLevel($value)
  185. {
  186. return array_key_exists($value, self::$levelList);
  187. }
  188. /**
  189. * 验证开关值
  190. */
  191. public static function isValidSwitch($value)
  192. {
  193. return in_array($value, [self::SWITCH_OFF, self::SWITCH_ON]);
  194. }
  195. /**
  196. * 验证锁定条件值
  197. */
  198. public static function isValidInviteLock($value)
  199. {
  200. return array_key_exists($value, self::$inviteLockList);
  201. }
  202. /**
  203. * 验证成为分销商条件值
  204. */
  205. public static function isValidBecomeAgent($value)
  206. {
  207. return array_key_exists($value, self::$becomeAgentList);
  208. }
  209. /**
  210. * 验证商品结算方式值
  211. */
  212. public static function isValidRewardType($value)
  213. {
  214. return array_key_exists($value, self::$rewardTypeList);
  215. }
  216. /**
  217. * 验证佣金结算方式值
  218. */
  219. public static function isValidRewardEvent($value)
  220. {
  221. return array_key_exists($value, self::$rewardEventList);
  222. }
  223. /**
  224. * 获取所有配置的默认值
  225. */
  226. public static function getDefaultConfig()
  227. {
  228. return [
  229. 'level' => self::LEVEL_DISABLE,
  230. 'self_buy' => self::SWITCH_OFF,
  231. 'invite_lock' => self::LOCK_SHARE,
  232. 'agent_check' => self::SWITCH_OFF,
  233. 'upgrade_jump' => self::SWITCH_ON,
  234. 'upgrade_check' => self::SWITCH_OFF,
  235. 'become_agent' => json_encode(['type' => self::BECOME_APPLY, 'value' => '']),
  236. 'need_form' => self::SWITCH_OFF,
  237. 'show_protocol' => self::SWITCH_OFF,
  238. 'reward_type' => self::REWARD_TYPE_PAY_PRICE,
  239. 'reward_event' => self::REWARD_EVENT_PAID,
  240. 'refund_commission_reward' => self::REFUND_DEDUCT,
  241. 'refund_commission_order' => self::REFUND_DEDUCT,
  242. ];
  243. }
  244. }