/** * Deletes an existing ActivityLog model. * If deletion is successful, the browser will be redirected to the 'index' page. * @param integer $id * @return mixed */ public function actionDelete($id) { ActivityLog::updateAll(['status' => ActivityLog::STATUS_ERROR], ['id' => $id]); // $this->findModel($id)->delete(); return $this->redirect(['index']); }
/** * 用户进行赎回红包操作 * @param $uid * @param $update_at * @return array|\common\models\base\activity\ActivityLog[] */ public static function draw_red_packet($uid, $update_at) { //获取被推荐的情况下的红包 $info = UcenterMember::find()->where(['id' => $uid])->asArray()->one(); $phone = ''; if (!$info) { $return = array('errorNum' => '1', 'errorMsg' => '用户不存在', 'data' => null); return $return; } //获取手机号 $phone = $info['phone']; //开启事物处理 $transaction = \Yii::$app->db->beginTransaction(); try { //判定此用户是不是被推荐过---被推荐过&&没有领取奖励红包--理论上这个数据最多一条---TODO--加上红包类型 $invitee_draw = ActivityLog::find()->where(['phone' => $phone, 'invitee_draw' => ActivityLog::STATUS_INVITEE_DRAW_SUCC, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->andWhere(['<=', 'update_at', $update_at])->one(); if ($invitee_draw) { //存在被邀请记录--并且没有领取红包 $invitee_draw->invitee_draw = ActivityLog::STATUS_INVITEE_DRAW_ERR; if ($invitee_draw->save() == false) { throw new ErrorException('用户获取红包失败', 900); } } //获取用户邀请的用户记录--邀请者进行红包领取--双向红包列表 $inviter_draw = ActivityLog::find()->select(['id'])->where(['invite_id' => $uid, 'invite_phone' => $phone, 'inviter_draw' => ActivityLog::STATUS_INVITER_DRAW_SUCC, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_YES])->andWhere(['<=', 'update_at', $update_at])->asArray()->all(); if (!empty($inviter_draw)) { //存在邀请记录 foreach ($inviter_draw as $key => $value) { $flag = ActivityLog::updateAll(['inviter_draw' => ActivityLog::STATUS_INVITER_DRAW_ERR, 'type' => ActivityLog::RED_BOTHWAY_YES], ['id' => $value['id']]); //状态没有改变 if ($flag == false) { throw new ErrorException('用户获取红包失败', 900); } } } //单向红包领取---单独奖励推荐者--推荐者进行红包领取 $inviter_draw_one_way = ActivityLog::find()->select(['id'])->where(['invite_id' => $uid, 'inviter_draw' => ActivityLog::STATUS_INVITER_DRAW_SUCC, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_TO_INVITER])->andWhere(['<=', 'update_at', $update_at])->asArray()->all(); if ($inviter_draw_one_way != null) { //存在单向红包奖励 foreach ($inviter_draw_one_way as $value1) { $flag = ActivityLog::updateAll(['inviter_draw' => ActivityLog::STATUS_INVITER_DRAW_ERR], ['id' => $value1['id']]); //状态没有改变 if ($flag == false) { throw new ErrorException('用户获取红包失败', 900); } } } //单向红包领取---单独奖励被推荐者--被推荐者进行红包领取 $invitee_draw_one_way = ActivityLog::find()->select(['id'])->where(['uid' => $uid, 'invitee_draw' => ActivityLog::STATUS_INVITEE_DRAW_SUCC, 'status' => ActivityLog::STATUS_SUCCESS, 'type' => ActivityLog::RED_BOTHWAY_TO_INVITEE])->andWhere(['<=', 'update_at', $update_at])->asArray()->all(); if ($invitee_draw_one_way != null) { //存在单向红包奖励 foreach ($invitee_draw_one_way as $value1) { $flag = ActivityLog::updateAll(['invitee_draw' => ActivityLog::STATUS_INVITEE_DRAW_ERR], ['id' => $value1['id']]); //状态没有改变 if ($flag == false) { throw new ErrorException('用户获取红包失败', 900); } } } $transaction->commit(); //事务成功提交后返回数据 $return = array('errorNum' => '0', 'errorMsg' => 'success', 'data' => null); return $return; } catch (\Exception $e) { //事物回滚 $transaction->rollBack(); //接收错误信息 $remark = $e->getMessage(); $return = array('errorNum' => '1', 'errorMsg' => $remark, 'data' => null); return $return; } }