Exemplo n.º 1
0
 /**
  * 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']);
 }
Exemplo n.º 2
0
 /**
  * 用户进行赎回红包操作
  * @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;
     }
 }