| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- <?php
- namespace addons\WechatVideoShop\common\models;
- use addons\WechatVideoShop\common\enums\WechatVideoShopEnums;
- use common\enums\StatusEnum;
- use common\models\common\CapitalLog;
- use common\models\common\UpgradeCondition;
- use common\models\user\UserPartitionRelationship;
- class WechatVideoShopUpgradeCondition extends UpgradeCondition
- {
- public static $wechat_video_shop_condition_ids = [22, 123, 124, 125, 126, 27, 28, 29, 30, 131, 132, 134, 135]; //微信视频小店(团队分红)升级条件可显示的条件id
- public static function getDataAttr()
- {
- $data = [
- [
- 'id' => 123,
- 'content' => '分享佣金金额满____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'wechat_video_shop_commission', 'default_val' => 0],
- ]
- ],
- [
- 'id' => 124,
- 'content' => '分享订单数量满____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'wechat_video_shop_order_num', 'default_val' => 0],
- ]
- ],
- [
- 'id' => 125,
- 'content' => '一级分享佣金金额满____元',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'direct_user_wechat_video_shop_commission', 'default_val' => 0],
- ]
- ],
- [
- 'id' => 126,
- 'content' => '一级分享订单数量满____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'direct_user_wechat_video_shop_order_num', 'default_val' => 0],
- ]
- ],
- [
- 'id' => 131,
- 'content' => '粉丝分销员人数满____人',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'fans_wechat_video_shop_num', 'default_val' => 0],
- ]
- ],
- [
- 'id' => 132,
- 'content' => '一级粉丝分销员人数满____人',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'text', 'name' => 'direct_fans_wechat_video_shop_num', 'default_val' => 0],
- ]
- ],
- [
- 'id' => 134,
- 'content' => '直推分销员等级≥____数量____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'direct_wechat_video_shop_level', 'default_val' => '', 'source' => ['class' => WechatVideoShopLevel::class, 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'text', 'name' => 'direct_wechat_video_shop_level_num', 'default_val' => ''],
- ]
- ],
- [
- 'id' => 135,
- 'content' => '间推分销员等级≥____数量____个',
- 'remark' => '',
- 'type' => 'default',
- 'setting' => [
- ['type' => 'select', 'name' => 'indirect_wechat_video_shop_level', 'default_val' => '', 'source' => ['class' => WechatVideoShopLevel::class, 'method' => 'getListByUpgrade', 'key' => 'source_list']],
- ['type' => 'text', 'name' => 'indirect_wechat_video_shop_level_num', 'default_val' => ''],
- ]
- ],
- ];
- $tmp = parent::$data;
- foreach ($data as $datum) {
- $tmp[$datum['id']] = $datum;
- }
- return $tmp;
- }
- /**
- * @param $user_id
- * @param $agent_level_arr
- * @param $mall_id
- * @param $upgrade_level
- * @param $is_basic
- * @return bool
- */
- public static function check($user_id, $agent_level_arr, $mall_id = 0, $upgrade_level = 0, $is_basic = true)
- {
- 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);
- $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'] = static::getDataAttr();
- $params['user_id'] = $user_id;
- // if ($is_basic && in_array($id, [123, 124, 125, 126, 131, 132, 134, 135])) { // 这里需要的是不一样的用户ID
- // continue;
- // }
- $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['model_class'] = '';
- $params['data'] = [];
- $params['mall_id'] = $mall_id;
- $params['upgrade_level'] = $upgrade_level;
- if (!method_exists(static::class, $function)) continue;
- $is_bool = static::$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;
- }
- // 从101开始
- /**
- * @desc:条件23
- * 分销员佣金金额满____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 15:41
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition123($params)
- {
- return static::upgrade123(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:条件24
- * 分销员订单数量满____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 15:41
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition124($params)
- {
- return static::upgrade124(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:一级分销员佣金金额满____元
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 16:39
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition125($params)
- {
- return static::upgrade125(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:一级分销员订单数量满____个
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 16:43
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition126($params)
- {
- return static::upgrade124(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key'],
- 1
- );
- }
- /**
- * @desc:粉丝分销员人数满____人
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 17:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition131($params)
- {
- return static::upgrade131(
- $params['condition_data'][$params['key']]['setting'][0]['name'],
- $params['user_id'],
- $params['arr'],
- $params['key']
- );
- }
- /**
- * @desc:一级粉丝分销员人数满____人
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 17:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition132($params)
- {
- $child_user_ids = WechatVideoShopOrder::find()->where(['parent_id' => $params['user_id']])
- ->groupBy('user_id')
- ->select('user_id')
- ->column();
- if (!empty($child_user_ids)) {
- $cnt = $params['arr'][$params['key']]['value'][$params['condition_data'][$params['key']]['setting'][0]['name']];
- $count = WechatVideoShopSharer::find()->where(['user_id' => $child_user_ids])
- ->andWhere(['status' => StatusEnum::ENABLED])->count();
- return $count >= $cnt;
- }
- return false;
- }
- /**
- * @desc:直推分销员等级____数量____个
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 17:14
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition134($params)
- {
- $child_user_ids = WechatVideoShopOrder::find()->where(['parent_id' => $params['user_id']])
- ->groupBy('user_id')
- ->select('user_id')
- ->column();
- if (!empty($child_user_ids)) {
- $level = $params['arr'][$params['key']]['value'][$params['condition_data'][$params['key']]['setting'][0]['name']];
- $c_cnt = $params['arr'][$params['key']]['value'][$params['condition_data'][$params['key']]['setting'][1]['name']];
- $cnt = WechatVideoShopSharer::find()->where(['user_id' => $child_user_ids])
- ->andWhere(['level' => $level])
- ->count();
- return $cnt >= $c_cnt;
- }
- return false;
- }
- /**
- * @desc:间推分销员等级____数量____个
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 17:14
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return bool
- */
- protected static function condition135($params)
- {
- $child_user_ids = WechatVideoShopOrder::find()->where(['parent_id' => $params['user_id']])
- ->groupBy('user_id')
- ->select('user_id')
- ->column();
- if (!empty($child_user_ids)) {
- $child_user_ids1 = WechatVideoShopOrder::find()->where(['parent_id' => $child_user_ids])
- ->groupBy('user_id')
- ->select('user_id')
- ->column();
- if (!empty($child_user_ids1)) {
- $level = $params['arr'][$params['key']]['value'][$params['condition_data'][$params['key']]['setting'][0]['name']];
- $c_cnt = $params['arr'][$params['key']]['value'][$params['condition_data'][$params['key']]['setting'][1]['name']];
- $cnt = WechatVideoShopSharer::find()->where(['user_id' => $child_user_ids1])
- ->andWhere(['level' => $level])
- ->count();
- return $cnt >= $c_cnt;
- }
- }
- return false;
- }
- /**
- * @desc:条件23
- * 分销员佣金金额满____元
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 15:41
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $name1
- * @param $user_id
- * @param $arr
- * @param $key
- * @return bool
- */
- public static function upgrade123($name1, $user_id, $arr, $key)
- {
- $is_bool = false;
- $total_commission = static::getWechatVideoShopCommission($user_id);
- if ($total_commission >= $arr[$key]['value'][$name1]) $is_bool = true;
- return $is_bool;
- }
- /**
- * @desc:条件24
- * 分销员订单数量满____个
- * @Author: hua
- * @Date: 2021/10/23
- * @Time: 15:41
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $name1
- * @param $user_id
- * @param $arr
- * @param $key
- * @param int $capital_type 0 自己, 1 下级
- * @return bool
- */
- public static function upgrade124($name1, $user_id, $arr, $key, $capital_type = 0)
- {
- $is_bool = false;
- $counts = static::getWechatVideoShopCommissionOrderNum($user_id, $capital_type);
- if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
- return $is_bool;
- }
- /**
- * @desc:一级分销员佣金金额满____元
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 16:39
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $name1
- * @param $user_id
- * @param $arr
- * @param $key
- * @return bool
- */
- public static function upgrade125($name1, $user_id, $arr, $key)
- {
- $is_bool = false;
- $counts = static::getWechatVideoShopCommissionFirst($user_id);
- if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
- return $is_bool;
- }
- /**
- * @desc:粉丝分销员人数满____人
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 17:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $name1
- * @param $user_id
- * @param $arr
- * @param $key
- * @return bool
- */
- public static function upgrade131($name1, $user_id, $arr, $key)
- {
- $is_bool = false;
- $offset = 1;
- $limit = 1000;
- $total_counts = 0;
- $params['select'] = 'user_id';
- static::batchFunc($params,$user_id,$offset,$limit,function ($user_ids){
- return WechatVideoShopSharer::find()->where(['user_id' => $user_ids, 'status' => StatusEnum::ENABLED])->count();
- },$total_counts);
- if ($total_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
- return $is_bool;
- }
- /**
- * @desc:分销员佣金
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 16:26
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_ids
- * @return bool|int|mixed|string
- */
- protected static function getWechatVideoShopCommission($user_ids)
- {
- $total_commission = WechatVideoShopSharer::find()->where(['user_id' => $user_ids])->sum('total_commission');
- return $total_commission ?? 0;
- }
- /**
- * @desc:分销员订单数量
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 16:31
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_ids
- * @param $capital_type
- * @return bool|int|string 分销员订单
- */
- protected static function getWechatVideoShopCommissionOrderNum($user_ids, $capital_type)
- {
- $counts = 0;
- // 取出当前用户下级
- if ($capital_type == 0) { // 自己下单
- return WechatVideoShopOrder::find()->where(['user_id' => $user_ids])
- ->andWhere(['is_pay' => StatusEnum::ENABLED])
- ->count();
- }
- // 下级下单
- $child_user_ids = WechatVideoShopOrder::find()->where(['parent_id' => $user_ids])
- ->andWhere(['is_pay' => StatusEnum::ENABLED])->groupBy('user_id')->select('user_id')->column();
- if (!empty($child_user_ids)) {
- return WechatVideoShopOrder::find()->where(['user_id' => $child_user_ids])
- ->andWhere(['is_pay' => StatusEnum::ENABLED])
- ->andWhere(['parent_id' => $user_ids])
- ->count();
- }
- return $counts;
- }
- /**
- * @desc:一级分销员佣金
- * @Author: hua
- * @Date: 2021/11/18
- * @Time: 16:31
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $user_ids
- * @return bool|int|string 分销员订单
- */
- protected static function getWechatVideoShopCommissionFirst($user_ids)
- {
- $total = 0;
- // 取出当前用户下级
- $child_user_ids = WechatVideoShopOrder::find()->where(['parent_id' => $user_ids])
- ->andWhere(['is_pay' => StatusEnum::ENABLED])->groupBy('user_id')->select('user_id')->column();
- if (!empty($child_user_ids)) {
- return WechatVideoShopSharer::find()->where(['user_id' => $child_user_ids])
- ->sum('total_commission');
- }
- return $total;
- }
- 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++;
- }
- }
- }
|