| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace addons\Agent\common\logic\reward;
- use addons\Agent\common\enums\ComputingEnum;
- class RewardSort
- {
- /**
- * 按客户需求进行数据排序(同一种类型在一起,并且按等级从低到高。优先极差,平级,其他的奖励类型无所谓)
- * 写入等级就按大到小,查询出来是倒叙就是从小到大了
- *
- * @param array $insert_wallet
- *
- * @return array
- */
- public static function insertWalletSort(array $insert_wallet): array
- {
- if (empty($insert_wallet)) {
- return $insert_wallet;
- }
- // 按关系练从大到小,查的时候倒叙,就是从小到大了
- $insert_wallet = array_reverse($insert_wallet);
- $sortArr = [];
- array_walk($insert_wallet, function ($item) use (&$sortArr) {
- // 平1 平2 放一起
- if (in_array($item['capital_type'], [ComputingEnum::EXTRA_EQUAL_PRIZE_1, ComputingEnum::EXTRA_EQUAL_PRIZE_2], true)) {
- $sortArr[ComputingEnum::EXTRA_EQUAL_PRIZE_1][] = $item;
- return;
- }
- $sortArr[$item['capital_type']][] = $item;
- });
- array_walk($sortArr, function (&$item) {
- // 按level降序
- usort($item, function ($s1, $s2) {
- $res = $s1['seller_level'] <=> $s2['seller_level'];
- if ($res === 0) {
- return 0;
- }
- return $res === 1 ? - 1 : 1;
- });
- });
- $teamPrize = [];
- $equalPrize = [];
- $equalPrize1 = [];
- if (isset($sortArr[ComputingEnum::TEAM_PRIZE])) {
- $teamPrize = $sortArr[ComputingEnum::TEAM_PRIZE];
- unset($sortArr[ComputingEnum::TEAM_PRIZE]);
- }
- if (isset($sortArr[ComputingEnum::EQUAL_PRIZE])) {
- $equalPrize = $sortArr[ComputingEnum::EQUAL_PRIZE];
- unset($sortArr[ComputingEnum::EQUAL_PRIZE]);
- }
- if (isset($sortArr[ComputingEnum::EXTRA_EQUAL_PRIZE_1])) {
- $equalPrize1 = $sortArr[ComputingEnum::EXTRA_EQUAL_PRIZE_1];
- unset($sortArr[ComputingEnum::EXTRA_EQUAL_PRIZE_1]);
- }
- $res = [];
- if ($sortArr) {
- $res = array_merge($res, array_merge(...array_values($sortArr)));
- }
- return array_merge($res, $equalPrize, $equalPrize1, $teamPrize);
- }
- }
|