uid = $uid; $model->type = self::CREDIT; $model->op = $op; $model->credit2 = !empty($data['credit2']) ? $data['credit2'] : 0; $model->credit6 = !empty($data['credit6']) ? $data['credit6'] : 0; $model->credit7 = !empty($data['credit7']) ? $data['credit7'] : 0; $model->pay_uid = !empty($data['pay_uid']) ? $data['pay_uid'] : ''; $model->msg = $msg; if (!$model->save()) { if (YII_ENV == 'dev') { throw new Exception('用户资产变化记录保存失败:' . current($model->getFirstErrors())); } \Yii::error('用户资产变化记录保存失败: ' . current($model->getFirstErrors())); } else { return $model->save(); } } /** * @inheritdoc */ public function beforeValidate() { if (!parent::beforeValidate()) { return false; } $request = \Yii::$app->request; if ($request->isConsoleRequest) { $this->ip = 'localhost'; } else { $this->ip = \Yii::$app->request->getUserIP(); } return true; } /** * @inheritdoc */ public function rules() { return [ [['uid', 'type', 'ip'], 'required'], [['uid', 'type', 'pay_uid', 'created_at', 'updated_at'], 'integer'], [['credit', 'credit1', 'credit2', 'credit3', ], 'number'], [['op', 'ip', 'order_num'], 'string', 'max' => 255], [['msg'], 'string', 'max' => 2000], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'uid' => '用户编号', 'type' => '日志类型', 'op' => '操作标识', 'credit' => 'C币变化', 'credit1' => 'C贝', 'msg' => '信息', 'ip' => 'IP', 'pay_uid' => '充值人uid', 'created_at' => '创建时间', ]; } /** * @inheritdoc */ public function behaviors() { return [ [ 'class' => TimestampBehavior::className(), 'createdAtAttribute' => 'created_at', 'updatedAtAttribute' => 'updated_at', ], ]; } /** * 关联用户信息 * @return \yii\db\ActiveQuery */ public function getUser() { return $this->hasOne(User::className(), ['uid' => 'uid']); } /** * 日志类型 * @param $type * @return string */ public static function logType($type) { switch ($type) { case 1: return '资金变动'; default: return '未知类型'; } } /** * 根据类型查找数据 * @param $pay_uid * @param $page * @param $limit * @return array|\yii\db\ActiveRecord[] */ public function findByType($pay_uid, $page, $limit = 10) { return $list = self::find()->select(['*', 'sum(credit) as count_price'])->where("pay_uid = $pay_uid ")->groupBy('id')->offset($page * $limit)->limit($limit)->asArray()->orderBy('created_at desc')->all(); } public function findByTypes($pay_uid, $page, $limit = 10) { return $list = self::find()->select(['order_num', 'credit7', 'created_at', 'updated_at'])->where("uid = $pay_uid ")->groupBy('id')->offset($page * $limit)->limit($limit)->asArray()->orderBy('created_at desc')->all(); } }