/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ActivityLog::find()->orderBy('update_at desc'); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'invite_id' => $this->invite_id, 'experience_money' => $this->experience_money, 'red_packet' => $this->red_packet, 'inviter_draw' => $this->inviter_draw, 'invitee_draw' => $this->invitee_draw, 'status' => $this->status, 'create_at' => $this->create_at, 'update_at' => $this->update_at, 'end_at' => $this->end_at]); $query->andFilterWhere(['like', 'phone', $this->phone])->andFilterWhere(['like', 'invite_phone', $this->invite_phone])->andFilterWhere(['like', 'actibity_source', $this->actibity_source]); return $dataProvider; }
/** * 判定用户是否符合推广规则--进行奖励机制--为用户发放红包--在形成红包之后操作 * 用户满足条件后就进行红包的发放 * @param $uid */ public static function send_red_packet($uid) { //判定当前用户是否是符合推广新手的规则 $money = 3000; $days = 30; $count = self::get_continue_money($uid, $money, $days); if ($count['count'] >= $days) { //获取用户手机号 $info = UcenterMember::find()->where(['id' => $uid])->asArray()->one(); $invite_phone = $info['phone']; //符合规则--可以发放红包了 //产生的红包--一级推荐关系---》》活动红包列表 $red_list = UserRecommend::find()->where(['owner_uid' => $uid, 'level' => 1, 'is_grant' => UserRecommend::GRANT_FALSE])->asArray()->all(); if ($red_list !== null) { foreach ($red_list as $key => $value) { $sender_uid = $value['sender_uid']; $phone = $value['sender_phone']; $actibity_source = $value['red_packet_name']; $red_packet = $value['red_packet']; //判定红包表数据库里面是否有数据 $flag = ActivityLog::find()->where(['uid' => $sender_uid, 'phone' => $phone, 'invite_id' => $uid, 'actibity_source' => $actibity_source, 'red_packet' => $red_packet])->one(); if ($flag == null) { //增加红包记录 $log = new ActivityLog(); $log->uid = $sender_uid; $log->phone = $phone; $log->red_packet = $red_packet; $log->actibity_source = $actibity_source; $log->invite_id = $uid; $log->invite_phone = $invite_phone; $log->inviter_draw = ActivityLog::STATUS_INVITER_DRAW_SUCC; $log->invitee_draw = ActivityLog::STATUS_INVITEE_DRAW_SUCC; $log->status = ActivityLog::STATUS_SUCCESS; $log->type = ActivityLog::RED_BOTHWAY_TO_INVITER; $log->end_at = time() + 100 * 86400; if ($log->save()) { //更新推荐注册表里的数据 UserRecommend::updateAll(['is_grant' => UserRecommend::GRANT_TRUE], ['owner_uid' => $uid, 'level' => 1, 'is_grant' => UserRecommend::GRANT_FALSE, 'red_packet' => $red_packet, 'sender_uid' => $sender_uid]); } } } } } //判定用户是否符合’推广大师‘的资格 60天连续投资6000元 $money = 6000; $days = 60; $count = self::get_continue_money($uid, $money, $days); if ($count['count'] >= $days) { //获取用户手机号 $info = UcenterMember::find()->where(['id' => $uid])->asArray()->one(); $invite_phone = $info['phone']; //符合规则--可以发放红包了 //产生的红包--二级推荐关系---》》活动红包列表 $red_list = UserRecommend::find()->where(['owner_uid' => $uid, 'level' => 2, 'is_grant' => UserRecommend::GRANT_FALSE])->asArray()->all(); if ($red_list !== null) { foreach ($red_list as $key => $value) { $sender_uid = $value['sender_uid']; $phone = $value['sender_phone']; $actibity_source = $value['red_packet_name']; $red_packet = $value['red_packet']; //判定红包表中是否已经有数据 $flag = ActivityLog::find()->where(['uid' => $sender_uid, 'phone' => $phone, 'invite_id' => $uid, 'actibity_source' => $actibity_source, 'red_packet' => $red_packet])->one(); if ($flag == null) { //增加红包记录 $log = new ActivityLog(); $log->uid = $sender_uid; $log->phone = $phone; $log->red_packet = $red_packet; $log->actibity_source = $actibity_source; $log->invite_id = $uid; $log->invite_phone = $invite_phone; $log->inviter_draw = ActivityLog::STATUS_INVITER_DRAW_SUCC; $log->invitee_draw = ActivityLog::STATUS_INVITEE_DRAW_SUCC; $log->status = ActivityLog::STATUS_SUCCESS; $log->type = ActivityLog::RED_BOTHWAY_TO_INVITER; $log->end_at = time() + 100 * 86400; if ($log->save()) { //更新推荐注册表里的数据 UserRecommend::updateAll(['is_grant' => UserRecommend::GRANT_TRUE], ['owner_uid' => $uid, 'level' => 2, 'is_grant' => UserRecommend::GRANT_FALSE, 'red_packet' => $red_packet, 'sender_uid' => $sender_uid]); } } } } } }
/** * 获取用户活动红包列表---双向红包列表记录 * @param $uid * @param int $page_no * @param int $page_size * @return array|\common\models\base\activity\ActivityLog[] */ public static function get_rad_list($uid, $page_no = 1, $page_size = 20) { //获取用户注册手机号 $info = UcenterMember::find()->where(['id' => $uid])->asArray()->one(); $phone = ''; if ($info !== null) { $phone = $info['phone']; } $num = ($page_no - 1) * $page_size; //获取是分享得到的红包 $list = ActivityLog::find()->select(['phone', 'invite_phone', 'red_packet', 'actibity_source', 'update_at', 'inviter_draw', 'invitee_draw'])->where(['invite_id' => $uid, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_TO_INVITER])->orWhere(['phone' => $phone, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->orWhere(['invite_phone' => $phone, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->orderBy('update_at desc')->limit($page_size)->offset($num)->asArray()->all(); $red_packet_count = ActivityLog::find()->where(['invite_id' => $uid, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_TO_INVITER])->orWhere(['phone' => $phone, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->orWhere(['invite_phone' => $phone, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->count(); if ($list) { $red_packet_sum = ActivityLog::find()->where(['invite_id' => $uid, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_TO_INVITER])->orWhere(['phone' => $phone, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->orWhere(['invite_phone' => $phone, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->sum('red_packet'); $red_packet_sum = $red_packet_sum ? $red_packet_sum : 0; foreach ($list as $key => $value) { if ($value['invite_phone'] == $phone) { //邀请其他用户获得的奖励 $list[$key]['type'] = 1; $list[$key]['phone'] = $value['phone']; unset($list[$key]['invite_phone']); } else { //被邀请获得的奖励 $list[$key]['type'] = 2; $list[$key]['phone'] = $value['invite_phone']; unset($list[$key]['invite_phone']); } } $data = array('sum' => $red_packet_sum, 'count' => $red_packet_count, 'list' => $list); $return = array('errorNum' => 0, 'errorMsg' => 'success', 'data' => $data); return $return; } elseif (!$list && $red_packet_count) { $return = array('errorNum' => 1, 'errorMsg' => '没有更多的记录', 'data' => null); return $return; } else { $return = array('errorNum' => 1, 'errorMsg' => '暂无记录', 'data' => null); return $return; } }