123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- /**
- * Created by PhpStorm.
- * User: edz
- * Date: 2019-06-10
- * Time: 17:53
- */
- namespace App\Repositories;
- use App\Models\Behavior;
- use App\Models\CommentAccountRecord;
- use App\Models\GeneralLedgerRecord;
- use App\Models\RegisteredAccountsRecord;
- use App\Models\ReleaseRecord;
- use Illuminate\Database\QueryException;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- class BehaviorRecordRepositories
- {
- public function __construct(RegisteredAccountsRecord $registeredAccountsRecord,
- GeneralLedgerRecord $generalLedgerRecord,
- ReleaseRecord $releaseRecord,
- CommentAccountRecord $commentAccountRecord,
- Behavior $behavior)
- {
- $this->registeredAccountsRecord = $registeredAccountsRecord;
- $this->generalLedgerRecord = $generalLedgerRecord;
- $this->releaseRecord = $releaseRecord;
- $this->commentAccountRecord = $commentAccountRecord;
- $this->behavior = $behavior;
- }
- /**
- * 根据行为标识获取行为记录表
- * @param $behavior
- */
- private function getBehaviorTable($behavior)
- {
- $tables = [
- 'register' => 'registered_accounts_record',
- 'publish' => 'release_record',
- 'read' => 'general_ledger_record',
- 'like' => 'general_ledger_record',
- 'unlike' => 'general_ledger_record',
- 'forward' => 'general_ledger_record',
- 'collect' => 'general_ledger_record',
- 'comment' => 'comment_account_record'
- ];
- return isset($tables[$behavior]) ? $tables[$behavior] : false;
- }
- /**
- * 记录账本
- * @param $info
- * @return bool
- */
- public function addRecord($info)
- {
- Log::debug('记录账本-请求参数:' . json_encode($info));
- $behavior = $info['behavior_flag'];
- $behaviorTable = $this->getBehaviorTable($behavior);
- Log::debug('记录账本-table:' . $behaviorTable);
- if ($behaviorTable) {
- if ($behaviorTable == 'registered_accounts_record') {
- return $this->addRegisterRecord($info);
- } elseif ($behaviorTable == 'release_record') {
- return $this->addReleaseRecord($info);
- } elseif ($behaviorTable == 'general_ledger_record') {
- return $this->addGeneralRecord($info);
- } elseif ($behaviorTable == 'comment_account_record') {
- return $this->addCommentRecord($info);
- }
- }
- return false;
- }
- /**
- * 记录账本-用户注册
- * @param $register
- * @return bool
- */
- private function addRegisterRecord($register)
- {
- DB::beginTransaction();
- try {
- $data['virus_behavior_id'] = $register['virus_behavior_id'];
- $data['uid'] = $register['uid'];
- $data['trigger_time'] = $register['trigger_time'];
- $data['physical_exertion'] = $register['physical_exertion'];
- $data['trigger_type'] = $register['trigger_type'];
- $data['generation_type'] = $register['generation_type'];
- $data['absolute_progression'] = $register['absolute_progression'];
- $data['superior_uid'] = $register['superior_uid'];
- $data['release_status'] = $register['release_status'];
- $data['generation_quantity'] = $register['generation_quantity'];
- $data['quantity_issued'] = $register['quantity_issued'];
- $this->registeredAccountsRecord->create($data);
- //修改行为统计数据
- $behavior = Behavior::where('virus_behavior_id',$register['virus_behavior_id'])->first();
- $behavior->physical_strength += intval($register['physical_exertion']);
- $behavior->grant_rainbow_beans += intval($register['quantity_issued']);
- $behavior->trigger_times += 1;
- $behavior->absolute_progression += intval($register['absolute_progression']);
- if($register['trigger_type']){
- $behavior->effective_trigger += 1;
- }
- $behavior->effective_trigger += 1;
- $behavior->save();
- DB::commit();
- return true;
- } catch (QueryException $exception) {
- Log::debug('记录账本-注册-exception:'.$exception->getMessage());
- DB::rollBack();
- return false;
- }
- }
- /**
- * 记录账本-内容发布
- * @param $release
- * @return bool
- */
- private function addReleaseRecord($release)
- {
- DB::beginTransaction();
- try {
- $data['virus_behavior_id'] = $release['virus_behavior_id'];
- $data['uid'] = $release['uid'];
- $data['trigger_time'] = $release['trigger_time'];
- $data['related_content_id'] = $release['related_content_id'];
- $data['physical_exertion'] = $release['physical_exertion'];
- $data['trigger_type'] = $release['trigger_type'];
- $data['generation_type'] = $release['generation_type'];
- $data['release_status'] = $release['release_status'];
- $data['generation_quantity'] = $release['generation_quantity'];
- $data['quantity_issued'] = $release['quantity_issued'];
- $this->releaseRecord->create($data);
- $behavior = Behavior::where('virus_behavior_id',$release['virus_behavior_id'])->first();
- $behavior->physical_strength += intval($release['physical_exertion']);
- $behavior->grant_rainbow_beans += intval($release['quantity_issued']);
- $behavior->trigger_times += 1;
- if($release['trigger_type']){
- $behavior->effective_trigger += 1;
- }
- $behavior->effective_trigger += 1;
- $behavior->save();
- DB::commit();
- return true;
- } catch (QueryException $exception) {
- Log::debug('记录账本-发布-exception:'.$exception->getMessage());
- DB::rollBack();
- return false;
- }
- }
- /**
- * 记录账本-阅读,转发,点赞,收藏,不喜欢
- * @param $general
- * @return bool
- */
- private function addGeneralRecord($general)
- {
- try {
- $data['virus_behavior_id'] = $general['virus_behavior_id'];
- $data['uid'] = $general['uid'];
- $data['trigger_time'] = $general['trigger_time'];
- $data['related_content_id'] = $general['related_content_id'];
- $data['content_author_id'] = $general['content_author_id'];
- $data['physical_exertion'] = $general['physical_exertion'];
- $data['trigger_type'] = $general['trigger_type'];
- $data['generation_type'] = $general['generation_type'];
- $data['release_status'] = $general['release_status'];
- $data['generation_quantity'] = $general['generation_quantity'];
- $data['quantity_issued'] = $general['quantity_issued'];
- $data['behavior_value'] = $general['behavior_value'];
- $this->generalLedgerRecord->create($data);
- $behavior = Behavior::where('virus_behavior_id',$general['virus_behavior_id'])->first();
- $behavior->physical_strength += intval($general['physical_exertion']);
- $behavior->grant_rainbow_beans += intval($general['quantity_issued']);
- $behavior->trigger_times += 1;
- if($general['trigger_type']){
- $behavior->effective_trigger += 1;
- }
- $behavior->effective_trigger += 1;
- $behavior->save();
- DB::commit();
- return true;
- } catch (QueryException $exception) {
- Log::debug('记录账本-普通行为-exception:'.$exception->getMessage());
- DB::rollBack();
- return false;
- }
- }
- /**
- * 记录账本-评论
- * @param $comment
- * @return bool
- */
- private function addCommentRecord($comment)
- {
- try {
- $data['virus_behavior_id'] = $comment['virus_behavior_id'];
- $data['uid'] = $comment['uid'];
- $data['upper_trigger_time'] = $comment['upper_trigger_time'];
- $data['related_content_id'] = $comment['related_content_id'];
- $data['content_author_id'] = $comment['content_author_id'];
- $data['superior_commentator_id'] = $comment['superior_commentator_id'];
- $data['physical_exertion'] = $comment['physical_exertion'];
- $data['trigger_type'] = $comment['trigger_type'];
- $data['generation_type'] = $comment['generation_type'];
- $data['release_status'] = $comment['release_status'];
- $data['generation_quantity'] = $comment['generation_quantity'];
- $data['quantity_issued'] = $comment['quantity_issued'];
- $data['current_comment_id'] = $comment['comment_id'];
- $data['superior_comment_id'] = $comment['parent_comment_id'];
- $this->generalLedgerRecord->create($data);
- $behavior = Behavior::where('virus_behavior_id',$comment['virus_behavior_id'])->first();
- $behavior->physical_strength += intval($comment['physical_exertion']);
- $behavior->grant_rainbow_beans += intval($comment['quantity_issued']);
- $behavior->trigger_times += 1;
- if($comment['trigger_type']){
- $behavior->effective_trigger += 1;
- }
- $behavior->effective_trigger += 1;
- $behavior->save();
- DB::commit();
- return true;
- } catch (QueryException $exception) {
- Log::debug('记录账本-评论-exception:'.$exception->getMessage());
- DB::rollBack();
- return false;
- }
- }
- }
|