| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812 |
- <?php
- namespace addons\Boss\common\logic;
- use addons\Boss\common\models\AddonsBoss;
- use addons\Boss\common\models\BossGoodsStatistics;
- use addons\FastMode\common\enums\FastModeEnum;
- use addons\FastMode\common\models\common\FastModeUpgradeCondition;
- use addons\FastMode\common\models\FastModeCommissionItemSetting;
- use addons\UpgradeGift\common\enums\GiftEnum;
- use addons\UpgradeGift\common\listeners\UpgradeGiftListener;
- use addons\ZaoDoubleCopy\common\models\ZaoDoubleCopyAchievement;
- use addons\ZaoDoubleCopy\common\models\ZaoDoubleCopyUser;
- use common\enums\AddonsEnum;
- use common\enums\OrderStatusEnum;
- use common\enums\PayTypeEnum;
- use common\enums\RabbitMqEnum;
- use common\enums\StatusEnum;
- use common\events\census\UserUpgradeAfterEvent;
- use common\helpers\ArrayHelper;
- use common\models\common\CapitalLog;
- use common\models\goods\GoodsCate;
- use common\models\goods\GoodsCateRelate;
- use common\models\mall\MallAddons;
- use common\models\order\Order;
- use common\models\order\OrderDetail;
- use common\models\statistics\UserAchievementStatisticsTotal;
- use common\models\statistics\UserStatisticsTotal;
- use common\models\statistics\UserTeamAchievementStatistics;
- use common\models\user\User;
- use common\models\user\UserLevel;
- use common\models\user\UserPartitionRelationship;
- use common\models\user\UserStatisticsTotalCopy1;
- use common\models\user\UserTeamProfitStatistics;
- use common\models\user\UserTeamStatistics;
- use services\common\UserWalletService;
- use Yii;
- use yii\helpers\Json;
- /**
- * Class UpgradeCondition
- * @Author: lun
- * @DateTime: 2022/9/12 0012 16:29
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @package addons\Boss\common\logic
- */
- class UpgradeCondition
- {
- public static $boss_condition_ids = [8, 9, 10, 11, 12, 18, 19, 20, 21, 22, 23, 55, 56, 64, 65,73, 102, 110, 111, 96, 105, 500,118, 121];//股东升级条件可显示的条件id
- public static $zao_double_copy_condition_ids = [61,62,63];//藻知道二二复制增加 股东升级条件可显示的条件id
- public static $data = [
- 8 => [
- 'id' => 8,
- 'content' => '购买商品升级',
- 'remark' => '',
- 'type' => 'buy_goods',
- 'setting' => []
- ],
- 9 => [
- 'id' => 9,
- 'content' => '直推客户消费满____元的人数满____个,间推客户消费满____元的人数满____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'direct_user_consume', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_user_consume_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'indirect_user_consume', 'default_val' => 0],
- ['type' => 'text', 'name' => 'indirect_user_consume_num', 'default_val' => 0],
- ]
- ],
- 10 => [
- 'id' => 10,
- 'content' => '直推____人,并且直推中购买商品ID____的人数____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'direct_user_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_user_buy_goods_id', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_user_buy_goods_id_num', 'default_val' => 0],
- ]
- ],
- 11 => [
- 'id' => 11,
- 'content' => "个人业绩____元,所有下级业绩____元",
- 'remark' => '统计的业绩包含平台+多商户',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'personal_achievement', 'default_val' => 0],
- ['type' => 'text', 'name' => 'subordinates_achievement', 'default_val' => 0],
- ]
- ],
- 12 => [
- 'id' => 12,
- 'content' => '间推客户数量____个,间推客户订单金额____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'indirect_user_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'indirect_user_order_price', 'default_val' => 0],
- ]
- ],
- 18 => [
- 'id' => 18,
- 'content' => '直推股东等级>=____数量____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'direct_boss_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'text', 'name' => 'direct_boss_level_num', 'default_val' => 0],
- ]
- ],
- 19 => [
- 'id' => 19,
- 'content' => '间推股东等级>=____数量____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'indirect_boss_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'text', 'name' => 'indirect_boss_level_num', 'default_val' => 0],
- ]
- ],
- 20 => [
- 'id' => 20,
- 'content' => '团队股东等级>=____数量____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'team_boss_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'text', 'name' => 'team_boss_level_num', 'default_val' => 0],
- ]
- ],
- 21 => [
- 'id' => 21,
- 'content' => '直推客户消费满____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'direct_user_consume', 'default_val' => 0],
- ]
- ],
- 22 => [
- 'id' => 22,
- 'content' => '本人购买指定商品____ 所需购买____件',
- 'remark' => '可设置多个ID英文逗号隔开,并且是计算订单完成的订单',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'goods_ids', 'default_val' => '', 'width' => 200],
- ['type' => 'text', 'name' => 'buy_num', 'default_val' => 0],
- ]
- ],
- 23 => [
- 'id' => 23,
- 'content' => '在____天内,直推____人每人购买商品ID____ 所需购买____件',
- 'remark' => '可设置多个ID英文逗号隔开,并且是计算订单完成的订单',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'day', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'goods_ids', 'default_val' => '', 'width' => 200],
- ['type' => 'text', 'name' => 'order_num', 'default_val' => 0],
- ]
- ],
- 55 => [
- 'id' => 55,
- 'content' => '个人订单满____笔,个人订单满____元',
- 'remark' => '注意:当个人支付订单满N笔,且个人支付订单金额满N元即可,售后不影响等级。(此条件仅计算平台订单)',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'personal_order_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'personal_order_achievement', 'default_val' => 0],
- ]
- ],
- 56 => [
- 'id' => 56,
- 'content' => '个人订单满____笔,个人订单满____元
- <input type="checkbox" name="personal_order_checkbox_56[]" checked value="1">平台</input>
- <input type="checkbox" name="personal_order_checkbox_56[]" value="2">多商户</input>
- ',
- 'remark' => '注意:当个人支付订单满N笔,且个人支付订单金额满N元即可,售后不影响等级。',
- 'type' => 'default',
- 'is_html' => true,
- 'setting' => [
- ['type' => 'text', 'name' => 'personal_order_num_56', 'default_val' => 0],
- ['type' => 'text', 'name' => 'personal_order_achievement_56', 'default_val' => 0],
- [
- 'type' => 'checkbox', 'name' => 'personal_order_checkbox_56', 'is_checkbox' => true, 'default_val' => [1],
- 'source' => ['class' => self::class, 'method' => 'getPersonalCheckbox56', 'key' => 'personal_checkbox_56']
- ],
- ]
- ],
- 61 => [
- 'id' => 61,
- 'content' => '链动一二号市场总业绩达____元,且单个市场业绩达____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'achievement', 'default_val' => 0],
- ['type' => 'text', 'name' => 'single_market', 'default_val' => 0],
- ]
- ],
- 62 => [
- 'id' => 62,
- 'content' => '链动一二号市场购买链动商品订单数达____件,且单个市场订单数达____件',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'achievement_order_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'single_market_order_num', 'default_val' => 0],
- ]
- ],
- 63 => [
- 'id' => 63,
- 'content' => '链动团队除最大市场外(即业绩最高市场)的团队小市场业绩总和达(不含复购链动商品)达____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'achievement_small', 'default_val' => 0],
- ]
- ],
- 64 => [
- 'id' => 64,
- 'content' => '团队总业绩____达到____元,业绩最高的前____个部门,每个部门的业绩不能低于____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'achievement_type', 'default_val' => 0, 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getAchievementType', 'key' => 'achievement_type_list']],
- ['type' => 'text', 'name' => 'team_achievement', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_achievement', 'default_val' => 0],
- ]
- ],
- 65 => [
- 'id' => 65,
- 'content' => '直推____人,当中____个团队的订单大于等于____单,团队总订单____单,商品类目ID组',
- 'remark' => '指定商品类目中的订单且为支付后才会进行计算',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'team_achievement', 'default_val' => 0],
- ['type' => 'text', 'name' => 'team_achievement_people_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'team_achievement_order_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'team_total_order_num', 'default_val' => 0],
- ['type' => 'selectGoodsCats', 'name' => 'team_goods_cats', 'default_val' => ''],
- ]
- ],
- 73 => [
- 'id' => 73,
- 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
- ]
- ],
- 102 => [
- 'id' => 102,
- 'content' => '指定商品ID____,并且单笔订单金额满____元',
- 'remark' => '注意:可填写多个商品每个商品间用英文逗号隔开,订单金额必须是订单完成的金额',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'goods_ids', 'default_val' => ''],
- ['type' => 'text', 'name' => 'finish_order_money', 'default_val' => 0],
- ]
- ],
- 121 => [
- 'id' => 121,
- 'content' => "个人业绩____元",
- 'remark' => '统计的业绩包含平台+多商户',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'personal_achievement', 'default_val' => 0],
- ]
- ],
- 110 => [
- 'id' => 110,
- 'content' => '简速模式累计收益金额____元',
- 'remark' => '累计收益金额指的是简速模式插件中的累计收益金额',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'commission', 'default_val' => 0]
- ]
- ],
- 111 => [
- 'id' => 111,
- 'content' => '个人购买简速模式指定商品金额____元',
- 'remark' => '指定商品为简速模式插件中指定的商品',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'order_price', 'default_val' => 0]
- ]
- ],
- 96 => [
- 'id' => 96,
- 'content' => '个人团队业绩-直推下级最高团队业绩 >= ____元',
- 'remark' => '统计的业绩包含平台+多商户',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'money', 'default_val' => 0],
- ]
- ],
- 105 => [
- 'id' => 105,
- 'content' => "群组(团队包含本人)商品售价业绩____达到____元",
- 'remark' => '统计的业绩包含平台+多商户',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
- ['type' => 'text', 'name' => 'money', 'default_val' => 0],
- ]
- ],
- 500 => [
- 'id' => 500,
- 'content' => "指定商品<el-tooltip class='item' effect='dark' content='设置>订单设置>业绩设置。请根据以上指引路径进行设置' placement='top'>
- <i class='el-icon-info'></i></el-tooltip>,<span>总团队业绩</span>
- <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='include_yourself_1' name='is_include_yourself' value='0'>
- <label for='include_yourself_1'>包含自己</label>
- <input type='radio' id='include_yourself_0' name='is_include_yourself' value='0' checked>
- <label for='include_yourself_0'>不包含自己</label>)</span><span style='display:none;'>____</span>
- <span>达到____元,大市场业绩达到____元,小市场业绩达到____元<el-tooltip class='item' effect='dark' content='统计的业绩包含平台+多商户' placement='top'>
- <i class='el-icon-info'></i></el-tooltip> (</span>
- <span class='radio-inline' v-if='is_set_condition'><input type='radio' id='is_when_settlement_500_1' name='is_when_settlement_500' value='0'>
- <label for='is_when_settlement_500_1'>订单支付</label>
- <input type='radio' id='is_when_settlement_500_0' name='is_when_settlement_500' value='0' checked>
- <label for='is_when_settlement_500_0'>订单完成</label></span><span style='display:none;'>____</span>
- <span>) 业绩计算类型(</span>
- <span class='radio-inline' v-if='is_set_condition'><input type='radio' id='settle_achievement_500_0' name='settle_achievement_500' value='0' checked>
- <label for='settle_achievement_500_0'>商品利润</label>
- <input type='radio' id='settle_achievement_500_1' name='settle_achievement_500' value='0'>
- <label for='settle_achievement_500_1'>实付金额</label>)</span><span style='display:none;'>____</span>
- <span>)</span>",
- 'remark' => '',
- 'type' => 'default',
- 'is_html' => 1,
- 'setting' => [
- ['type' => 'radio', 'name' => 'is_include_yourself', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getIsIncludesSelf', 'key' => 'radio_includes_self_list']],
- ['type' => 'text', 'name' => 'total_performance', 'default_val' => 0],
- ['type' => 'text', 'name' => 'max_performance', 'default_val' => 0],
- ['type' => 'text', 'name' => 'min_performance', 'default_val' => 0],
- ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
- ['type' => 'radio', 'name' => 'settle_achievement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getSettleAchievement', 'key' => 'radio_settle_achievement_list']],
- ]
- ],
- 118 => [
- 'id' => 118,
- 'content' => '团队____条线,出现____个____等级',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'team_num', 'default_val' => 0],
- ['type' => 'text', 'name' => 'level_num', 'default_val' => 0],
- ['type' => 'select', 'name' => 'agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ]
- ],
- ];
- public static function getData($ids = [])
- {
- $rows = self::$data;
- $arr = [];
- if (empty($ids)) return $rows;
- foreach ($ids as $id) {
- $arr[] = $rows[$id];
- }
- $arr = array_values(ArrayHelper::arraySort($arr, 'id', 'asc'));
- return $arr;
- }
- /**
- * 获取升级条件模板数据
- * @param $obj
- * @param $mall_id
- * @param $rules
- * @return array
- */
- public static function getUpgradeConditionData($obj, $mall_id, $rules)
- {
- $rule_list = [];
- $is_buy_goods = 0;
- $source_list = [];
- $key_arr = [];
- $checkbox_list = [];
- foreach ($rules as $k => $item) {
- if(!$item) continue;
- if ($item['type'] == 'buy_goods') {
- $is_buy_goods = 1;
- continue;
- }
- $rule_list[] = $item;
- $row = [];
- $row['key'] = $item['id'];
- foreach ($item['setting'] as $value) {
- $row['value'][$value['name']] = '';
- if ($value['is_checkbox']) {
- $row['value'][$value['name']] = [];
- if (!empty($value['default_val'])) {
- $row['value'][$value['name']] = $value['default_val'];
- }
- }
- if (!empty($value['source']['class']) && !empty($value['source']['method'])) {
- $class = $value['source']['class'];
- $method = $value['source']['method'];
- $rows = $class::$method(['mall_id' => $mall_id]);
- $source_list[$value['source']['key']] = $rows;
- if ($value['type'] == 'checkbox') {
- $checkbox_list[$value['source']['key']] = $rows;
- } else {
- $source_list[$value['source']['key']] = $rows;
- }
- }
- }
- $key_arr[] = $row;
- }
- $source_list = json_encode($source_list, JSON_NUMERIC_CHECK);
- $checkbox_list = json_encode($checkbox_list, JSON_NUMERIC_CHECK);
- $key_arr = json_encode($key_arr, JSON_NUMERIC_CHECK);
- $tpl = $obj->renderPartial('@backend/modules/mall/views/upgrade-condition/tpl/tpl.php', ['rules' => $rule_list, 'is_buy_goods' => $is_buy_goods, 'mall_id' => $mall_id]);
- $cats = Json::encode(GoodsCate::getTreeCate(GoodsCate::lists([
- 'where' => [
- ['mall_id' => $mall_id],
- ['status' => StatusEnum::ENABLED]
- ],
- 'select'=> 'id, name, parent_id'
- ])));
- return ['tpl' => $tpl, 'source_list' => $source_list, 'key_arr' => $key_arr, 'cat_list' => $cats, 'checkbox_list' => $checkbox_list];
- }
- /**
- * @desc:校验
- * @Author: hua
- * @Date: 2021/10/19
- * @Time: 14:26
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_id
- * @param $agent_level_arr
- * @return bool
- */
- public static function check($user_id, $agent_level_arr,$order_id = 0, $mall_id = 0)
- {
- if (empty($agent_level_arr['condition_type'])) return false;
- $condition_type = $agent_level_arr['condition_type'];
- $keys_arr = json_decode($agent_level_arr['checked_condition_keys'], true);
- $values_arr = json_decode($agent_level_arr['checked_condition_values'], true);
- if(empty($values_arr)) return false;
- $arr = [];//升级条件
- foreach ($values_arr as $K => $v) {
- $arr[$v['key']] = $v;
- }
- $is_return = false;
- sort($keys_arr);
- foreach ($keys_arr as $id) {
- $function = 'condition' . $id;
- $params['condition_data'] = self::$data;
- $params['user_id'] = $user_id;
- $params['arr'] = $arr;
- $params['key'] = $id;
- $params['children_id_arr1'] = [];
- $params['children_id_arr2'] = [];
- $params['user_id_arr'] = [];
- $params['children_id_arr'] = [];
- $params['name1'] = '';
- $params['name2'] = '';
- $params['mall_id'] = $mall_id;
- $params['model_class'] = '';
- $params['order_id'] = $order_id;
- if (!method_exists(self::class, $function)) continue;
- $is_bool = self::$function($params);
- //满足其一
- if ($condition_type == 1) {
- if ($is_bool) {
- $is_return = true;
- break;
- } else {
- $is_return = false;
- }
- }
- //满足所有
- if ($condition_type == 2) {
- if ($is_bool) {
- $is_return = true;
- } else {
- $is_return = false;
- break;
- }
- }
- }
- return $is_return;
- }
- /**
- * @desc:购买商品升级
- * @Author: hua
- * @Date: 2021/10/19
- * @Time: 14:51
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_id
- * @param $goods_type
- * @param $buy_goods_id
- * @param $goods_id_arr
- * @return bool
- */
- public static function buyGoods($goods_type, $buy_goods_id, $goods_id_arr)
- {
- //任意商品
- if ($goods_type == 1) return true;
- //购买指定商品
- if ($goods_type == 2) if (array_intersect($buy_goods_id, $goods_id_arr)) return true;
- return false;
- }
- /**
- * @desc:条件9
- * 直推客户消费满____元的人数满____个,间推客户消费满____元的人数满____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 11:37
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition9($params)
- {
- $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
- $children_id_arr2 = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
- return self::upgrade9(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $params['condition_data'][$params['key']]['setting'][2]['name'],
- $params['condition_data'][$params['key']]['setting'][3]['name'],
- $children_id_arr1,
- $children_id_arr2, $params['arr'], $params['key']);
- }
- /**
- * @desc:条件10
- * 直推____人,并且直推中购买商品ID____的人数____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 11:37
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition10($params)
- {
- $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
- return self::upgrade10(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $params['condition_data'][$params['key']]['setting'][2]['name'],
- $children_id_arr1,
- $params['arr'], $params['key']);
- }
- /**
- * @desc:条件11
- * 个人业绩____元,所有下级业绩____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition11($params)
- {
- return self::upgrade11(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件12
- * 间推客户数量____个,间推客户订单金额____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition12($params)
- {
- $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
- return self:: upgrade12(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $user_id_arr,
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件18
- * 直推股东等级____数量____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition18($params)
- {
- $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
- return self::upgrade14(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- 'addons\Boss\common\models\AddonsBoss',
- $user_id_arr,
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件19
- * 间推股东等级____数量____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition19($params)
- {
- $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
- return self::upgrade14(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- 'addons\Boss\common\models\AddonsBoss',
- $user_id_arr,
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件20
- * 团队股东等级____数量____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition20($params)
- {
- return self::upgrade15(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- 'addons\Boss\common\models\AddonsBoss',
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件21
- * 直推客户消费满____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 15:03
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition21($params)
- {
- $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
- return self::upgrade21(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $user_id_arr, $params['arr'],
- $params['key']);
- }
- /**
- * @desc:条件22
- * 本人购买指定商品____ 所需购买____件
- * @Author: lun
- * @DateTime: 2022/9/12 0012 17:07
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- public static function condition22($params)
- {
- $goods_ids = explode(',', $params['arr'][$params['key']]['value']['goods_ids']);// 商品ids
- $buy_num = Json::decode($params['arr'][$params['key']]['value']['buy_num']) ?? 0;// 购买数量
- if (empty($goods_ids)) return false;
- // 查询当前用户购商品数量
- $user_buy_num = BossGoodsStatistics::find()->where(['user_id' => $params['user_id'], 'goods_id' => $goods_ids, 'status' => StatusEnum::ENABLED])->sum('buy_num') ?? 0;
- return $user_buy_num >= $buy_num ? true : false;
- }
- /**
- * @desc:条件23
- * 在____天内,直推____人每人购买商品ID____ 所需购买____件
- * @Author: lun
- * @DateTime: 2022/9/12 0012 17:54
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- public static function condition23($params)
- {
- $day = $params['arr'][$params['key']]['value']['day'] ?? 0;// 天数
- $direct_num = $params['arr'][$params['key']]['value']['direct_num'] ?? 0;// 直推数量
- $goods_ids = explode(',', $params['arr'][$params['key']]['value']['goods_ids']);// 商品ids
- $buy_num = $params['arr'][$params['key']]['value']['order_num'] ?? 0;// 购买数量
- if (empty($goods_ids)) return false;
- // 获取用户N天前的日期
- $before_day = date('Ymd', strtotime("-{$day} day"));
- // 获取当前用户的直推用户id
- $direct_uids = User::find()->select('id')->where(['parent_id' => $params['user_id'], 'status' => StatusEnum::ENABLED])->column();
- if (count($direct_uids) < $direct_num) return false;
- // 查询当前用户购商品数量
- $buy_num_arr = BossGoodsStatistics::find()->select("user_id,sum(buy_num) user_buy_num")
- ->where(['user_id' => $direct_uids, 'goods_id' => $goods_ids, 'status' => StatusEnum::ENABLED])
- ->andWhere(['>', 'date', $before_day])
- ->groupBy('user_id')
- ->asArray()->all();
- if (count($buy_num_arr) < $direct_num) return false;// 直推购买人数不够退出
- $temp_buy_num = 0;
- foreach ($buy_num_arr as $user_id => $item) {
- // 购买的商品个数大于设置个数直接
- if ($item['user_buy_num'] >= $buy_num) $temp_buy_num++;
- }
- return $temp_buy_num >= $direct_num ? true : false;
- }
- /**
- * 当前用户下单笔数与下单金额
- * @param $params
- * @return bool
- */
- private static function condition55($params)
- {
- $user_id = $params['user_id'];
- // 积分是否不累计
- $scoreSettingStr = Yii::$app->services->setting->mall->get($params['mall_id'], 'pay.score');
- $isNotCumulative = !empty(json_decode($scoreSettingStr, true)['is_not_cumulative']);
- $orderQuery = Order::find()
- ->where(['user_id' => $user_id, 'pay_status' => StatusEnum::ENABLED])
- ->andWhere(['mch_id' => StatusEnum::DISABLED, 'store_id' => StatusEnum::DISABLED]);
- if (!empty($isNotCumulative)) {
- // 如果开启积分支付不计入
- $orderQuery->andWhere(['<>', 'payment_type', PayTypeEnum::SCORE]);
- }
- $orderList = $orderQuery->select('pay_money')->asArray()->all();
- if (empty($orderList)) return false; // 订单为空直接返回false
- // 计算订单金额
- $orderMoneySum = array_sum(array_column($orderList, 'pay_money'));
- $order_cnt_name = $params['condition_data'][$params['key']]['setting'][0]['name'];
- $order_amount_name = $params['condition_data'][$params['key']]['setting'][1]['name'];
- $arr = $params['arr'];
- $key = $params['key'];
- return count($orderList) >= $arr[$key]['value'][$order_cnt_name] && $orderMoneySum >= $arr[$key]['value'][$order_amount_name];
- }
- /**
- * @desc: 条件56
- * 备注:因为新需求根据用户选择条件进行订单查询
- * 个人订单满____笔,个人订单满____元 (1 平台 2 多商户 3 门店) 备注:括号中为多选。按插件订单进行数据查询
- * @param $params
- * @return bool
- */
- public static function condition56($params)
- {
- $user_id = $params['user_id'];
- // 获取积分支付配置
- $scorePaySetting = Yii::$app->services->setting->mall->get($params['mall_id'], 'pay.score');
- $scorePaySetting = !empty($scorePaySetting) ? json_decode($scorePaySetting, true) : [];
- $orderQuery = Order::find()
- ->where(['user_id' => $user_id, 'pay_status' => StatusEnum::ENABLED, 'mall_id' => $params['mall_id']]);
- if (!empty($scorePaySetting) && !empty($scorePaySetting['is_not_cumulative'])) {
- // 如果开启积分支付不计入
- $orderQuery->andWhere(['<>', 'payment_type', PayTypeEnum::SCORE]);
- }
- // 获取勾选订单插件
- $checkboxKey = $params['condition_data'][$params['key']]['setting'][2]['name'];
- $checkboxList = $params['arr'][$params['key']]['value'][$checkboxKey];
- if (!empty($checkboxList)) { // 判断是否勾选
- // 判断是否勾选平台
- if (!in_array(1, $checkboxList)) {
- $orderQuery->andWhere(['>', 'mch_id', 0]);
- }
- if (!in_array(2, $checkboxList)) { // 没有勾选多商户
- $orderQuery->andWhere(['mch_id' => 0]);
- }
- if (!in_array(3, $checkboxList)) { // 没有勾选门店
- $orderQuery->andWhere(['store_id' => 0]);
- }
- }
- $orderList = $orderQuery->select('pay_money')->asArray()->all();
- if (empty($orderList)) return false; // 订单为空直接返回false
- // 计算订单金额
- $orderMoneySum = array_sum(array_column($orderList, 'pay_money'));
- // 获取设置的订单数量和金额
- $systemCountKey = $params['condition_data'][$params['key']]['setting'][0]['name'];
- $systemCount = $params['arr'][$params['key']]['value'][$systemCountKey];
- $systemMoneyKey = $params['condition_data'][$params['key']]['setting'][1]['name'];
- $systemMoney = $params['arr'][$params['key']]['value'][$systemMoneyKey];
- return count($orderList) >= $systemCount && $orderMoneySum >= $systemMoney;
- }
- /**
- * 链一二号市场总业绩达xx元,且单个市场业绩达xxx元
- * @param $params
- * @return bool
- */
- private static function condition61($params)
- {
- $user_id = $params['user_id'];
- $user = User::findOne(['id' => $user_id]);
- $mall_id = $user->mall_id;
- if (!MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) return false;
- $total_achievement = $params['condition_data'][$params['key']]['setting'][0]['name'];
- $single_market = $params['condition_data'][$params['key']]['setting'][1]['name'];
- $arr = $params['arr'];
- $key = $params['key'];
- $total_achievement = $arr[$key]['value'][$total_achievement];
- $single_market = $arr[$key]['value'][$single_market];
- $is_bool = false;
- $team = ZaoDoubleCopyUser::find()->select('achievement')->where(['pid' => $user_id])->andWhere(['<=', 'pos', 2])->asArray()->all();
- $achievement = 0;
- $is_single = true;
- foreach ($team as $info) {
- // 判断单个市场是否及格
- if ($info['achievement'] < $single_market) {
- $is_single = false;
- break;
- }
- $achievement += $info['achievement'];
- }
- if ($is_single && $achievement >= $total_achievement) {
- $is_bool = true;
- }
- return $is_bool;
- }
- /**
- * 链一二号市场购买链动商品订单数达xx件,且单个市场订单数达xx件
- * @param $params
- * @return bool
- */
- private static function condition62($params)
- {
- $user_id = $params['user_id'];
- $user = User::findOne(['id' => $user_id]);
- $mall_id = $user->mall_id;
- if (!MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) return false;
- $total_order_num = $params['condition_data'][$params['key']]['setting'][0]['name'];
- $single_market_num = $params['condition_data'][$params['key']]['setting'][1]['name'];
- $arr = $params['arr'];
- $key = $params['key'];
- $total_order_num = $arr[$key]['value'][$total_order_num];
- $single_market_num = $arr[$key]['value'][$single_market_num];
- $is_bool = false;
- $team = ZaoDoubleCopyUser::find()->select('user_id')->where(['pid' => $user_id])->andWhere(['<=', 'pos', 2])->asArray()->all();
- $total_num = 0;
- $is_single = true;
- foreach ($team as $info) {
- //获取用户下级购买订单数量
- $copy_user_id = $info['user_id'];
- $relation_arr = UserPartitionRelationship::getChildIdArrOrderBy($copy_user_id);
- array_push($relation_arr, $copy_user_id);
- $order_num = ZaoDoubleCopyAchievement::find()->where(['buy_user_id' => $relation_arr,'status' => StatusEnum::ENABLED])->groupBy('order_id')->count();
- if($order_num < $single_market_num){
- $is_single = false;
- break;
- }
- $total_num += $order_num;
- }
- if ($is_single && $total_num >= $total_order_num) {
- $is_bool = true;
- }
- return $is_bool;
- }
- /**
- * 链动团队除最大市场外(即业绩最高市场)的团队小市场业绩总和达(不含复购链动商品)元
- * @param $params
- * @return bool
- */
- private static function condition63($params)
- {
- $user_id = $params['user_id'];
- $user = User::findOne(['id' => $user_id]);
- $mall_id = $user->mall_id;
- if (!MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) return false;
- $total_achievement = $params['condition_data'][$params['key']]['setting'][0]['name'];
- $arr = $params['arr'];
- $key = $params['key'];
- $total_achievement = $arr[$key]['value'][$total_achievement];
- $is_bool = false;
- $team = ZaoDoubleCopyUser::find()->select('achievement')->where(['pid' => $user_id])->asArray()->all();
- $achievement_arr = array_column($team,'achievement');
- if(empty($achievement_arr)) return $is_bool;
- $max = max($achievement_arr);
- $total = array_sum($achievement_arr);
- $diff = bcsub($total,$max,2);
- if ($diff >= $total_achievement) {
- $is_bool = true;
- }
- return $is_bool;
- }
- /**
- * @desc:条件64
- * 团队总业绩____达到____元,业绩最高的前____个部门,每个部门的业绩不能低于____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition64($params)
- {
- return self::upgrade64(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $params['condition_data'][$params['key']]['setting'][2]['name'],
- $params['condition_data'][$params['key']]['setting'][3]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件65
- * 直推___人,当中___人团队订单大于等于___单,团队总订单___单
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- private static function condition65($params)
- {
- $team_achievement_name = $params['condition_data'][$params['key']]['setting'][0]['name'];
- $team_achievement_people_num_name = $params['condition_data'][$params['key']]['setting'][1]['name'];
- $team_achievement_order_num_name = $params['condition_data'][$params['key']]['setting'][2]['name'];
- $team_total_order_num_name = $params['condition_data'][$params['key']]['setting'][3]['name'];
- $team_goods_cats_name = $params['condition_data'][$params['key']]['setting'][4]['name'];
- $arr = $params['arr'];
- $key = $params['key'];
- $team_achievement_value = $arr[$key]['value'][$team_achievement_name] ?? 0;
- $team_achievement_people_num_value = $arr[$key]['value'][$team_achievement_people_num_name] ?? 0;
- $team_achievement_order_num_value = $arr[$key]['value'][$team_achievement_order_num_name] ?? 0;
- $team_total_order_num_value = $arr[$key]['value'][$team_total_order_num_name] ?? 0;
- $team_goods_cats_value = !empty($arr[$key]['value'][$team_goods_cats_name]) ? Json::decode($arr[$key]['value'][$team_goods_cats_name]) : [];
- // 好友人数
- $team_achievement = User::find()->where(['parent_id' => $params['user_id']])
- ->andWhere(['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->select('id')->column();
- if (count($team_achievement) < $team_achievement_value) {
- return false;
- }
- // 取出商品ID
- $cat_ids = [];
- $goods_ids = [];
- $cat_goods_ids = [];
- if (!empty($team_goods_cats_value)) {
- foreach ($team_goods_cats_value as $cat) {
- $cat_ids[] = array_pop($cat);
- }
- foreach ($cat_ids as $cat_id) {
- $goods_ids = GoodsCateRelate::find()->where(['cate_id' => $cat_id])->select('goods_id')->column();
- $cat_goods_ids[$cat_id] = $goods_ids;
- }
- $goods_ids = array_unique($goods_ids);
- }
- // 必须N个团队N笔订单
- // 取出指定类目团队下单笔数
- $o_cnt_arr = [];
- $o_cnt_total = 0;
- $cat_goods_arr = [];
- foreach ($team_achievement as $user_id) {
- $child_user_ids = UserPartitionRelationship::getChildIdArr($user_id);
- $child_user_ids[] = $user_id;
- $o_cnt = 0;
- foreach ($child_user_ids as $item_user_id) {
- $order_list = OrderDetail::lists([
- 'where' => [
- ['user_id' => $item_user_id],
- ['goods_id'=> $goods_ids],
- ['order_status' =>
- [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING,
- OrderStatusEnum::ACCOMPLISH, OrderStatusEnum::TAKE, OrderStatusEnum::TAKE_FINISH]
- ],
- ],
- 'select'=> 'order_id, goods_id',
- // 'index' => 'goods_id'
- ]);
- if (!empty($order_list)) {
- foreach ($order_list as $value) {
- foreach ($cat_goods_ids as $cid => $cat_goods) {
- if (in_array($value['goods_id'], $cat_goods) && empty($cat_goods_arr["{$user_id}_{$item_user_id}_{$cid}"])) {
- $o_cnt_total += 1;
- $o_cnt += 1;
- $cat_goods_arr["{$user_id}_{$item_user_id}_{$cid}"] = 1;
- }
- }
- }
- }
- // $o_cnt_total += count($order_list);
- // $o_cnt += count($order_list);
- // $o_cnt += count(array_column($order_list, 'order_id', 'goods_id'));
- }
- if ($o_cnt >= $team_achievement_order_num_value) { // 只有当当前团队总订单数量符合条件才能放入团队订单栈中
- $o_cnt_arr[] = StatusEnum::ENABLED;
- }
- }
- // 判断团队下单数量
- if (count($o_cnt_arr) < $team_achievement_people_num_value) return false;
- // 取出当前用户的订单
- $order_list = OrderDetail::lists([
- 'where' => [
- ['user_id' => $params['user_id']],
- ['goods_id'=> $goods_ids],
- ['order_status' =>
- [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING,
- OrderStatusEnum::ACCOMPLISH, OrderStatusEnum::TAKE, OrderStatusEnum::TAKE_FINISH]
- ],
- ],
- 'select'=> 'order_id, goods_id',
- // 'index' => 'goods_id'
- ]);
- if (!empty($order_list)) {
- foreach ($order_list as $value) {
- foreach ($cat_goods_ids as $cid => $cat_goods) {
- if (in_array($value['goods_id'], $cat_goods) && empty($cat_goods_arr["{$params['user_id']}_{$cid}"])) {
- $o_cnt_total += 1;
- $cat_goods_arr["{$params['user_id']}_{$cid}"] = 1;
- }
- }
- }
- }
- // 校验当前团队所有订单数量
- return $o_cnt_total >= $team_total_order_num_value;
- }
- /**
- * ____等级,直推____等级数量____个,同时直推业绩____元
- */
- private static function condition73($params)
- {
- $cond = $params['arr'][$params['key']];
- $user_level = $cond['value']['user_level'];
- $child_level = $cond['value']['child_level'];
- $rec_num = $cond['value']['rec_num'];
- $direct_performance = $cond['value']['direct_performance'];
- $user_id = $params['user_id'];
- $current_user_level = AddonsBoss::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
- if($current_user_level < $user_level) {
- return false;
- }
- $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
- $user_child_list = AddonsBoss::find()->where(['and', ['user_id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('user_id')->asArray()->all() ?? [];
- if(count($user_child_list) < $rec_num){
- return false;
- }
- $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'user_id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
- ->sum('pay_money') ?? 0;
- if($order_performance < $direct_performance){
- return false;
- }
- return true;
- }
- public static function upgrade9($name1, $name2, $name3, $name4, $children_id_arr1, $children_id_arr2, $arr, $key)
- {
- $is_bool = false;
- $num1 = self::consumeNum($arr, $key, $name1, $children_id_arr1);//直推会员消费满多少元的累计人数
- if ($num1 >= $arr[$key]['value'][$name2]) {
- $num2 = self::consumeNum($arr, $key, $name3, $children_id_arr2);//间推会员消费满多少元的累计人数
- if ($num2 >= $arr[$key]['value'][$name4]) $is_bool = true;
- }
- return $is_bool;
- }
- public static function upgrade10($name1, $name2, $name3, $children_id_arr1, $arr, $key)
- {
- $is_bool = false;
- $num = count($children_id_arr1);//直推会员人数
- if ($num >= $arr[$key]['value'][$name1]) {
- $goods_id = $arr[$key]['value'][$name2];
- $direct_user_buy_goods_id_num = $arr[$key]['value'][$name3];
- $where = ['user_id' => $children_id_arr1, 'goods_id' => $goods_id,
- 'order_status' => [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING, OrderStatusEnum::ACCOMPLISH]];
- $list = OrderDetail::find()->where($where)
- ->groupBy('user_id')
- ->select('user_id,count("user_id") as counts')
- ->all();
- $count = count($list);
- if ($count >= $direct_user_buy_goods_id_num) $is_bool = true;
- }
- return $is_bool;
- }
- public static function upgrade11($name1, $name2, $user_id, $arr, $key)
- {
- $is_bool = false;
- list($personal_counts, $personal_achievement) = self::getOrderData($user_id);//个人业绩
- if ($personal_achievement >= $arr[$key]['value'][$name1]) {
- $offset = 1;
- $limit = 1000;
- $params['select'] = 'user_id';
- $total_subordinates_achievement = 0;//所有下级业绩
- self::batchFunc($params,$user_id,$offset,$limit,function ($user_id_arr){
- $query = Order::find()->where(['user_id' => $user_id_arr, 'pay_status' => 1]);
- return $query->sum('pay_money');
- },$total_subordinates_achievement);
- if ($total_subordinates_achievement >= $arr[$key]['value'][$name2]) $is_bool = true;
- }
- return $is_bool;
- }
- public static function upgrade12($name1, $name2, $user_id_arr, $arr, $key)
- {
- $is_bool = false;
- $num = count($user_id_arr);//间推会员人数
- if ($num >= $arr[$key]['value'][$name1]) {
- list($indirect_user_order, $indirect_user_order_price) = self::getOrderData($user_id_arr);//间推客户的订单金额
- if ($indirect_user_order_price >= $arr[$key]['value'][$name2]) $is_bool = true;
- }
- return $is_bool;
- }
- public static function upgrade14($name1, $name2, $model_class, $user_id_arr, $arr, $key)
- {
- $is_bool = false;
- $level = $arr[$key]['value'][$name1];
- $counts = $model_class::find()->where(['user_id' => $user_id_arr,'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
- ->andWhere(['>=','level',$level])
- ->count();
- if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
- return $is_bool;
- }
- public static function upgrade15($name1, $name2, $model_class, $user_id, $arr, $key)
- {
- $is_bool = false;
- $level = $arr[$key]['value'][$name1];
- $offset = 1;
- $limit = 1000;
- $total_counts = 0;
- $params['select'] = 'user_id';
- self::batchFunc($params,$user_id,$offset,$limit,function ($user_id_arr)use($model_class,$level){
- return $model_class::find()->where(['user_id' => $user_id_arr,'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
- ->andWhere(['>=','level',$level])
- ->count();
- },$total_counts);
- if ($total_counts >= $arr[$key]['value'][$name2]) $is_bool = true;
- return $is_bool;
- }
- public static function upgrade21($name1, $user_id_arr, $arr, $key)
- {
- $is_bool = false;
- list($order_num, $pay_money) = self::getOrderData($user_id_arr);//消费
- if ($pay_money >= $arr[$key]['value'][$name1]) $is_bool = true;
- return $is_bool;
- }
- public static function upgrade64($name1, $name2,$name3, $name4, $user_id, $arr, $key)
- {
- $is_bool = false;
- //个人业绩
- $personal_achievement = 0;
- if($arr[$key]['value'][$name1] == 0){
- $personal_achievement = Order::find()->where(['user_id' => $user_id, 'pay_status' => 1])->sum('pay_money') ?? 0;
- }
- $achievement_arr = [];
- $children_id_arr1 = UserPartitionRelationship::getChildIdArr($user_id, 1);
- foreach($children_id_arr1 as $children_user_id){
- $offset = 1;
- $limit = 1000;
- $params['select'] = 'user_id';
- $total_subordinates_achievement = 0;//所有下级业绩
- self::batchFunc($params,$children_user_id,$offset,$limit,function ($user_id_arr) use ($children_user_id){
- $user_id_arr[] = $children_user_id;
- $query = Order::find()->where(['user_id' => $user_id_arr, 'pay_status' => 1]);
- return $query->sum('pay_money');
- },$total_subordinates_achievement);
- $children_personal_achievement = Order::find()->where(['user_id' => $children_user_id, 'pay_status' => 1])->sum('pay_money') ?? 0;
- $total_subordinates_achievement += $children_personal_achievement;
- $achievement_arr[] = $total_subordinates_achievement;
- }
- if($arr[$key]['value'][$name2] > $personal_achievement + array_sum($achievement_arr)) return $is_bool;
- if($arr[$key]['value'][$name3] > count($achievement_arr)) return $is_bool;
- rsort($achievement_arr);
- if(!empty($arr[$key]['value'][$name4]) && $arr[$key]['value'][$name4] > $achievement_arr[$arr[$key]['value'][$name3]-1]) return $is_bool;
- $is_bool = true;
- return $is_bool;
- }
- /**
- * @desc:条件120
- * 个人业绩____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 14:16
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition121($params)
- {
- return static::upgrade121(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key'],
- $params['mall_id']
- );
- }
- /**
- * 条件120查询
- *
- * @param string $name1
- * @param string $name2
- * @param int $user_id
- * @param array $arr
- * @param int $key
- * @param int $mall_id
- * @return boolean
- */
- public static function upgrade121($name1, $name2, $user_id, $arr, $key, $mall_id)
- {
- // 结算方式
- $compute_type = \Yii::$app->services->setting->mall->get($mall_id, 'upgrade_condition.compute_type');
- $field = 'id,mall_id,user_id';
- if (empty($compute_type)) $compute_type = 1;
- if ($compute_type == 1) {
- $field .= ',pay_money as personal_achievement';
- } else {
- $field .= ',finish_order_money as personal_achievement';
- }
- $personal_data = UserStatisticsTotal::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select($field)->asArray()->one();
- $personal_achievement = $personal_data['personal_achievement'] ?? 0;
- $personal_data_old = UserStatisticsTotalCopy1::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select($field)->asArray()->one();
- $personal_achievement = bcadd($personal_achievement, $personal_data_old['personal_achievement'], 2);
- $is_bool = false;
- // list($personal_counts, $personal_achievement) = static::getOrderData1($user_id, $where); //个人业绩
- if ($personal_achievement >= $arr[$key]['value'][$name1]) {
- // 团队业绩为0则认为达标
- // if (!isset($arr[$key]['value'][$name2]) || $arr[$key]['value'][$name2] <= 0) {
- // return true;
- // }
- $is_bool = true;
- // $offset = 1;
- // $limit = 1000;
- // $params['select'] = 'user_id';
- // $total_subordinates_achievement = 0; //所有下级业绩
- // static::batchFunc($params, $user_id, $offset, $limit, function ($user_id_arr) use ($where) {
- // $where = array_merge($where, ['user_id' => $user_id_arr]);
- // $query = Order::find()->where($where);
- // return $query->sum('pay_money');
- // }, $total_subordinates_achievement);
- // if ($total_subordinates_achievement >= $arr[$key]['value'][$name2]) {
- // $is_bool = true;
- // }
- }
- return $is_bool;
- }
- /**
- * 个人团队业绩-直推下级最高团队业绩>=N元
- */
- protected static function condition96($params)
- {
- $cond = $params['arr'][$params['key']];
- $money = $cond['value']['money'];
- if ($money <=0 ) {
- return false;
- }
- $self_user_team_order_price_total = 0;
- $user_id = $params['user_id'];
- $user_team_statistics_model = UserTeamStatistics::find()->where(['user_id'=>$user_id])->one();
- $child_ids = UserPartitionRelationship::getChildIdArr($user_id,1);
- if(!empty($user_team_statistics_model)) {
- $self_user_team_order_price_total = $user_team_statistics_model['team_finish_order_price_total'];
- }
- $field = "sum(uts.team_finish_order_price_total+ust.finish_order_money) as total_money";
- $one = \common\models\user\UserTeamStatistics::find()->alias('uts')
- ->leftJoin(UserStatisticsTotal::tableName().' as ust','uts.user_id=ust.user_id')
- ->where(['uts.user_id'=>$child_ids])
- ->select("uts.user_id,{$field}")
- ->orderBy('total_money desc')
- ->groupBy('uts.user_id')
- ->asArray()
- ->one();
- $total_money = $one['total_money']??0;
- $cha = $self_user_team_order_price_total - $total_money;
- return $cha >= $money;
- }
- // 群组(团队包含本人)商品售价业绩(支付完成/订单完成)达到N元
- protected static function condition105($params)
- {
- $user_id = $params['user_id'];
- $cond = $params['arr'][$params['key']];
- $is_when_settlement = $cond['value']['is_when_settlement'] ?? null;
- $money = $cond['value']['money'] ?? null;
- if (!isset($is_when_settlement) || !isset($money)) {
- return false;
- }
- $where = ['user_id' => $user_id];
- // 个人商品售价
- $userTotal = 0;
- $userStatisticsTotalField = [
- 0 => 'finish_selling_price',
- 1 => 'pay_selling_price',
- ];
- if (isset($userStatisticsTotalField[$is_when_settlement])) {
- $userTotal = UserAchievementStatisticsTotal::find()
- ->where($where)
- ->select($userStatisticsTotalField[$is_when_settlement])
- ->scalar() ?: 0;
- }
- // 团队商品售价
- $teamTotal = 0;
- $userTeamStatisticsField = [
- 0 => 'team_finish_selling_price',
- 1 => 'team_pay_selling_price',
- ];
- if (isset($userTeamStatisticsField[$is_when_settlement])) {
- $teamTotal = UserTeamAchievementStatistics::find()
- ->where($where)
- ->select($userTeamStatisticsField[$is_when_settlement])
- ->scalar() ?: 0;
- }
- return ($userTotal + $teamTotal) >= $money;
- }
- /**
- * TODO 后续优化查询
- * @desc:获取订单数据
- * @Author: hua
- * @Date: 2021/10/19
- * @Time: 10:58
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_ids
- * @return array
- */
- private static function getOrderData($user_ids)
- {
- $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
- $counts = $query->count();
- $sum = $query->sum('pay_money');
- return [$counts ?? 0, $sum ?? 0];
- }
- /**
- * TODO 后续优化查询
- * @desc:分组数据
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 11:43
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_ids
- * @return array|\yii\db\ActiveRecord[]
- */
- private static function getOrderDataGroupByUserId($user_ids)
- {
- $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
- $query->select('user_id,sum(pay_money) as pay_money');
- return $query->groupBy('user_id')->all();
- }
- /**
- * @desc:设置升级条件时,处理与之相关的条件
- * @Author: hua
- * @Date: 2021/10/20
- * @Time: 18:17
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $checked_condition_keys
- * @param $handle_class
- * @param $mall_id
- */
- public static function clear($checked_condition_keys, $handle_class, $mall_id)
- {
- $list = $handle_class::findAll(['mall_id' => $mall_id]);
- sort($checked_condition_keys);
- $rows = self::$data;
- foreach ($list as $agent) {
- $checked_condition_values = json_decode($agent['checked_condition_values'], true);//升级条件
- $condition_keys = json_decode($agent['checked_condition_keys'], true);
- $checked_condition_values_arr = [];
- if ($checked_condition_values) {
- $condition_values_arr = [];
- foreach ($checked_condition_values as $v) {
- $condition_values_arr[$v['key']] = $v;
- }
- foreach ($checked_condition_keys as $k) {
- if (!empty($condition_values_arr[$k])) {
- if ($condition_values_arr[$k]['type'] != 'buy_goods') $checked_condition_values_arr[] = $condition_values_arr[$k];
- } else {
- //新添加,顺序有关,所以一条条取
- $row = $rows[$k] ?? [];
- if (!empty($row) && $row['type'] != 'buy_goods') {
- $arr = ['key' => $row['id']];
- foreach ($row['setting'] as $set) {
- $arr['value'][$set['name']] = $set['default_val'];
- }
- $checked_condition_values_arr[] = $arr;
- }
- }
- }
- $agent->checked_condition_values = json_encode($checked_condition_values_arr);
- }
- $condition_keys_arr = [];
- if ($condition_keys) {
- foreach ($condition_keys as $k => $value) {
- if (!in_array($value, $checked_condition_keys)) continue;
- $condition_keys_arr[] = $value;
- }
- $agent->checked_condition_keys = json_encode($condition_keys_arr);
- }
- $agent->save();
- }
- }
- protected static function consumeNum($arr, $key, $name, $user_id_arr)
- {
- $list = self::getOrderDataGroupByUserId($user_id_arr);
- $num = 0;
- foreach ($list as $v) {
- if ($v['pay_money'] >= $arr[$key]['value'][$name]) {
- $num++;
- }
- }
- return $num;
- }
- public static function batchFunc($params,$user_id,$offset,$limit,$callback,&$num){
- list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($user_id);
- while ($list = UserPartitionRelationship::batchGetTeamData($offset,$limit,$tree,$params)){
- $user_id_arr = array_column($list,'user_id');
- $result = call_user_func($callback,$user_id_arr);
- if(empty($result)) $result = 0;
- $num+=$result;
- $offset++;
- }
- }
- //购买指定商品
- public static function buyGoodsUpgrade($mall_id, $order, $user_id, $order_by,$buy_type,$order_status){
- $order_id = $order['id'];
- $user = User::findOne($user_id);
- $params = [];
- $where = [];
- $where[] = ['mall_id' => $mall_id];
- $where[] = ['order_id' => $order_id];
- $where[] = ['user_id' => $user_id];
- $params['where'] = $where;
- $order_detail_list = OrderDetail::lists($params);
- $buy_goods_id_arr = array_column($order_detail_list, 'goods_id');
- $before_level = $user['level'];
- $params = [];
- $where = [];
- $where[] = ['mall_id' => $mall_id];
- $where[] = ['status' => StatusEnum::ENABLED];
- $where[] = ['>', 'level', $user->level];
- $params['where'] = $where;
- $params['order'] = $order_by;
- $params['with'] = ['upgradeCondition'=>function($query){
- $query->where(['status' => StatusEnum::ENABLED]);
- }];
- $user_level_list = UserLevel::lists($params);
- $can_upgrade_level = $upgrade_user_id = 0;
- $flag = false;
- //开启购买升级商品
- if (!empty($user_level_list)) {
- foreach ($user_level_list as $level_arr) {
- $can_upgrade_level = $level_arr['level'];
- //开启购买升级商品
- if ($level_arr['upgradeCondition']['upgrade_type_goods']&&$level_arr['upgradeCondition']['is_auto_upgrade']) {
- $goods_id_arr = json_decode($level_arr['upgradeCondition']['goods_ids'], true);
- $res = UpgradeCondition::buyGoods($level_arr['upgradeCondition']['goods_type'], $buy_goods_id_arr, $goods_id_arr);
- if ($res) {
- //购买升级商品触发升级:0订单完成 1下单完成
- if ($level_arr['upgradeCondition']['buy_goods_type'] == $buy_type&&$order['order_status'] == $order_status) {
- $flag = true;
- break;
- }
- }
- }
- }
- if ($flag) {
- \Yii::$app->services->statistics->global->set($mall_id, ['upgrade_level'=>[$can_upgrade_level=>1]]);
- $user->level = $can_upgrade_level;
- $user->upgrade_level_at = time();
- if (!$user->save()) {
- \Yii::error("{user_id:$user_id}-{order_id:$order_id}" . ',会员升级,失败');
- return false;
- }
- // 触发升级礼包
- if (MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_UPGRADEGIFT)) {
- $gift['mall_id'] = $mall_id;
- $gift['user_ids'] = $user_id;
- $gift['gift_type'] = GiftEnum::GIFT_TYPE_USER;
- // 事件触发会导致重发发送礼包(原因不明),所以改为直接异步队列处理
- \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $gift, UpgradeGiftListener::class, 'async_handle');
- }
- // 升级成功后
- $event = new UserUpgradeAfterEvent($mall_id);
- $data = ['after_level' => $can_upgrade_level, 'before_level' => $before_level,'mall_id'=>$mall_id];
- \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
- }
- }
- }
- /**
- * @desc: 条件1
- * 个人订单数量满____笔,个人订单满____元
- * @Author: hua
- * @Date: 2021/10/19
- * @Time: 11:41
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition110($params)
- {
- if (MallAddons::isInstall($params['mall_id'], AddonsEnum::ADDONS_NAME_FAST_MODE)) {
- $params['data'] = [];
- return FastModeUpgradeCondition::upgrade0($params,
- $params['user_id'],
- $params['arr'],
- $params['key']);
- }
- return false;
- }
- protected static function condition111($params)
- {
- if (MallAddons::isInstall($params['mall_id'], AddonsEnum::ADDONS_NAME_FAST_MODE)) {
- $params['data'] = [];
- return FastModeUpgradeCondition::upgrade1($params,
- $params['user_id'],
- $params['arr'],
- $params['key']);
- }
- return false;
- }
- // 指定商品ID____,并且单笔订单金额满____元
- protected static function condition102($params)
- {
- if (empty($params['order_id'])) return false;
- $user_id = $params['user_id'];
- $cond = $params['arr'][$params['key']];
- $goods_ids = $cond['value']['goods_ids'];
- $finish_order_money = $cond['value']['finish_order_money'];
- $total_money = OrderDetail::find()->select('goods_price')->where(['user_id' => $user_id, 'goods_id' => explode(',', $goods_ids), 'order_status' => OrderStatusEnum::ACCOMPLISH, 'status' => StatusEnum::ENABLED])->sum('goods_price') ?? 0;
- if ($total_money >= $finish_order_money) return true;
- return false;
- }
- protected static function condition500($params)
- {
- $cond = $params['arr'][$params['key']];
- $is_include_yourself = $cond['value']['is_include_yourself'];
- $is_when_settlement = $cond['value']['is_when_settlement'];
- $settle_achievement = $cond['value']['settle_achievement'] ?? 0;
- $total_performance = $cond['value']['total_performance'];
- $target_big_performance = $cond['value']['max_performance'];
- $target_small_performance = $cond['value']['min_performance'];
- $user_id = $params['user_id'];
- $statistics = UserTeamProfitStatistics::getOne([
- ['user_id' => $user_id]
- ], true);
- if (empty($statistics)) return false;
- //判断用户总业绩
- $real_total_performance = 0;
- $orderBy = 'children_order_finish_profit desc';
- $field = 'id,user_id';
- $field_str = '';
- if ($is_when_settlement == 1) {
- if ($is_include_yourself == 1) {
- $field_str = 'team_order_pay';
- } else {
- $field_str = 'children_order_pay';
- }
- } else {
- if ($is_include_yourself == 1) {
- $field_str = 'team_order_finish';
- } else {
- $field_str = 'children_order_finish';
- }
- }
- if ($settle_achievement == 1) {
- $field_str .= '_achievement';
- } else {
- $field_str .= '_profit';
- }
- $real_total_performance = $statistics[$field_str];
- $orderBy = $field_str . ' desc';
- $field .= ','.$field_str.' as real_performance';
- //判断总业绩是否达标
- if ($real_total_performance < $total_performance) return false;
- //获取直推用户id
- $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
- $real_big_performance = 0;
- $real_small_performance = 0;
- if (!empty($direct_child_ids)) {
- //获取大小市场业绩
- $team_profit_statistics = UserTeamProfitStatistics::lists([
- 'where' => [
- ['user_id' => $direct_child_ids],
- ],
- 'select' => $field,
- 'order' => $orderBy,
- ]);
-
- if (!empty($team_profit_statistics)) {
- //获取大市场业绩
- $real_big_performance = $team_profit_statistics[0]['real_performance'];
- unset($team_profit_statistics[0]);
- //统计小市场业绩
- if (!empty($team_profit_statistics)) {
- $real_small_performance = array_sum(array_column($team_profit_statistics, 'real_performance'));
- }
- }
- }
- // $real_big_performance = $is_when_settlement == 0 ? $statistics['accomplish_big_market_performance'] : $statistics['pay_big_market_performance'];
- if ($real_big_performance < $target_big_performance) return false;
- // $real_total_performance = $is_when_settlement == 0 ? $statistics['accomplish_team_performance'] : $statistics['pay_team_performance'];
- // $real_small_performance = 0;
- if ($real_small_performance < $target_small_performance) return false;
-
- return true;
- }
- public static function getWhenSettlement()
- {
- return [
- ['key' => 0, 'value' => '订单完成'],
- ['key' => 1, 'value' => '订单支付'],
- ];
- }
- public static function getSettleAchievement()
- {
- return [
- ['key' => 0, 'value' => '商品利润'],
- ['key' => 1, 'value' => '实付金额'],
- ];
- }
- public static function getIsIncludesSelf()
- {
- return [
- ['key' => 0, 'value' => '不包含自己'],
- ['key' => 1, 'value' => '包含自己'],
- ];
- }
- /**
- * @desc:条件118
- * 团队下____条____个____等级
- * @Author: whq
- * @Date: 2025/6/27
- * @Time: 12:30
- * @param $params
- * @return bool
- */
- protected static function condition118($params)
- {
- return static::upgrade118(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['condition_data'][$params['key']]['setting'][1]['name'],
- $params['condition_data'][$params['key']]['setting'][2]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * 团队下____条____个____等级 条件118
- * @param $team_num
- * @param $level_num
- * @param $agent_level
- * @param $user_id
- * @param array $arr
- * @param string $key
- * @return bool
- */
- public static function upgrade118($team_num, $level_num,$agent_level, $user_id, $arr = [], $key = '')
- {
- $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级
- $teamNum = $arr[$key]['value'][$team_num];//N条
- if (count($direct_child_ids) < $teamNum) return false;
- $levelNum = $arr[$key]['value'][$level_num]; //N个
- $level = $arr[$key]['value'][$agent_level];
- $isNums = 0;
- foreach ($direct_child_ids as $direct_child_id) {
- $count = 0;
- $bossInfo = AddonsBoss::getOne([['user_id' => $direct_child_id]], true); //直推自己
- if($bossInfo['level'] == $level){
- $count++;
- if($count >= $levelNum) {
- $isNums++;
- continue;
- }
- }
- $count += AddonsBoss::getTeamlevelCount($direct_child_id,$level);
- if($count < $levelNum) continue;
- $isNums++;
- if($isNums >= $teamNum) return true;
- }
- if ($isNums >= $teamNum) return true;
- return false;
- }
- /**
- * key 为56 的配置参数
- * @return array[]
- */
- public static function getPersonalCheckbox56() {
- return [
- ['value' => 1, 'label' => '平台'],
- ['value' => 2, 'label' => '多商户'],
- ];
- }
- }
|