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++; } } }