BehaviorRecordRepositories.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: edz
  5. * Date: 2019-06-10
  6. * Time: 17:53
  7. */
  8. namespace App\Repositories;
  9. use App\Models\Behavior;
  10. use App\Models\CommentAccountRecord;
  11. use App\Models\GeneralLedgerRecord;
  12. use App\Models\RegisteredAccountsRecord;
  13. use App\Models\ReleaseRecord;
  14. use Illuminate\Database\QueryException;
  15. use Illuminate\Support\Facades\DB;
  16. use Illuminate\Support\Facades\Log;
  17. class BehaviorRecordRepositories
  18. {
  19. public function __construct(RegisteredAccountsRecord $registeredAccountsRecord,
  20. GeneralLedgerRecord $generalLedgerRecord,
  21. ReleaseRecord $releaseRecord,
  22. CommentAccountRecord $commentAccountRecord,
  23. Behavior $behavior)
  24. {
  25. $this->registeredAccountsRecord = $registeredAccountsRecord;
  26. $this->generalLedgerRecord = $generalLedgerRecord;
  27. $this->releaseRecord = $releaseRecord;
  28. $this->commentAccountRecord = $commentAccountRecord;
  29. $this->behavior = $behavior;
  30. }
  31. /**
  32. * 根据行为标识获取行为记录表
  33. * @param $behavior
  34. */
  35. private function getBehaviorTable($behavior)
  36. {
  37. $tables = [
  38. 'register' => 'registered_accounts_record',
  39. 'publish' => 'release_record',
  40. 'read' => 'general_ledger_record',
  41. 'like' => 'general_ledger_record',
  42. 'unlike' => 'general_ledger_record',
  43. 'forward' => 'general_ledger_record',
  44. 'collect' => 'general_ledger_record',
  45. 'comment' => 'comment_account_record'
  46. ];
  47. return isset($tables[$behavior]) ? $tables[$behavior] : false;
  48. }
  49. /**
  50. * 记录账本
  51. * @param $info
  52. * @return bool
  53. */
  54. public function addRecord($info)
  55. {
  56. Log::debug('记录账本-请求参数:' . json_encode($info));
  57. $behavior = $info['behavior_flag'];
  58. $behaviorTable = $this->getBehaviorTable($behavior);
  59. Log::debug('记录账本-table:' . $behaviorTable);
  60. if ($behaviorTable) {
  61. if ($behaviorTable == 'registered_accounts_record') {
  62. return $this->addRegisterRecord($info);
  63. } elseif ($behaviorTable == 'release_record') {
  64. return $this->addReleaseRecord($info);
  65. } elseif ($behaviorTable == 'general_ledger_record') {
  66. return $this->addGeneralRecord($info);
  67. } elseif ($behaviorTable == 'comment_account_record') {
  68. return $this->addCommentRecord($info);
  69. }
  70. }
  71. return false;
  72. }
  73. /**
  74. * 记录账本-用户注册
  75. * @param $register
  76. * @return bool
  77. */
  78. private function addRegisterRecord($register)
  79. {
  80. DB::beginTransaction();
  81. try {
  82. $data['virus_behavior_id'] = $register['virus_behavior_id'];
  83. $data['uid'] = $register['uid'];
  84. $data['trigger_time'] = $register['trigger_time'];
  85. $data['physical_exertion'] = $register['physical_exertion'];
  86. $data['trigger_type'] = $register['trigger_type'];
  87. $data['generation_type'] = $register['generation_type'];
  88. $data['absolute_progression'] = $register['absolute_progression'];
  89. $data['superior_uid'] = $register['superior_uid'];
  90. $data['release_status'] = $register['release_status'];
  91. $data['generation_quantity'] = $register['generation_quantity'];
  92. $data['quantity_issued'] = $register['quantity_issued'];
  93. $this->registeredAccountsRecord->create($data);
  94. $behavior = Behavior::where('virus_behavior_id',$register['virus_behavior_id'])->first();
  95. $behavior->physical_strength += $register['physical_exertion'];
  96. $behavior->grant_rainbow_beans += $register['quantity_issued'];
  97. $behavior->trigger_times += 1;
  98. $behavior->absolute_progression += $register['absolute_progression'];
  99. if($register['trigger_type']){
  100. $behavior->effective_trigger += 1;
  101. }
  102. $behavior->effective_trigger += 1;
  103. $behavior->save();
  104. DB::commit();
  105. return true;
  106. } catch (QueryException $exception) {
  107. Log::debug('记录账本-exception:'.$exception->getMessage());
  108. DB::rollBack();
  109. return false;
  110. }
  111. }
  112. /**
  113. * 记录账本-内容发布
  114. * @param $release
  115. * @return bool
  116. */
  117. private function addReleaseRecord($release)
  118. {
  119. DB::beginTransaction();
  120. try {
  121. $data['virus_behavior_id'] = $release['virus_behavior_id'];
  122. $data['uid'] = $release['uid'];
  123. $data['trigger_time'] = $release['trigger_time'];
  124. $data['related_content_id'] = $release['related_content_id'];
  125. $data['physical_exertion'] = $release['physical_exertion'];
  126. $data['trigger_type'] = $release['trigger_type'];
  127. $data['generation_type'] = $release['generation_type'];
  128. $data['release_status'] = $release['release_status'];
  129. $data['generation_quantity'] = $release['generation_quantity'];
  130. $data['quantity_issued'] = $release['quantity_issued'];
  131. $this->releaseRecord->create($data);
  132. $behavior = Behavior::where('virus_behavior_id',$release['virus_behavior_id'])->first();
  133. $behavior->physical_strength += $release['physical_exertion'];
  134. $behavior->grant_rainbow_beans += $release['quantity_issued'];
  135. $behavior->trigger_times += 1;
  136. if($release['trigger_type']){
  137. $behavior->effective_trigger += 1;
  138. }
  139. $behavior->effective_trigger += 1;
  140. $behavior->save();
  141. DB::commit();
  142. return true;
  143. } catch (QueryException $exception) {
  144. Log::debug('addReleaseRecord-exception:'.$exception->getMessage());
  145. DB::rollBack();
  146. return false;
  147. }
  148. }
  149. /**
  150. * 记录账本-阅读,转发,点赞,收藏,不喜欢
  151. * @param $general
  152. * @return bool
  153. */
  154. private function addGeneralRecord($general)
  155. {
  156. try {
  157. $data['virus_behavior_id'] = $general['virus_behavior_id'];
  158. $data['uid'] = $general['uid'];
  159. $data['trigger_time'] = $general['trigger_time'];
  160. $data['related_content_id'] = $general['related_content_id'];
  161. $data['content_author_id'] = $general['content_author_id'];
  162. $data['physical_exertion'] = $general['physical_exertion'];
  163. $data['trigger_type'] = $general['trigger_type'];
  164. $data['generation_type'] = $general['generation_type'];
  165. $data['release_status'] = $general['release_status'];
  166. $data['generation_quantity'] = $general['generation_quantity'];
  167. $data['quantity_issued'] = $general['quantity_issued'];
  168. $data['behavior_value'] = $general['behavior_value'];
  169. $this->generalLedgerRecord->create($data);
  170. $behavior = Behavior::where('virus_behavior_id',$general['virus_behavior_id'])->first();
  171. $behavior->physical_strength += $general['physical_exertion'];
  172. $behavior->grant_rainbow_beans += $general['quantity_issued'];
  173. $behavior->trigger_times += 1;
  174. if($general['trigger_type']){
  175. $behavior->effective_trigger += 1;
  176. }
  177. $behavior->effective_trigger += 1;
  178. $behavior->save();
  179. DB::commit();
  180. return true;
  181. } catch (QueryException $exception) {
  182. Log::debug('addGeneralRecord-exception:'.$exception->getMessage());
  183. DB::rollBack();
  184. return false;
  185. }
  186. }
  187. /**
  188. * 记录账本-评论
  189. * @param $comment
  190. * @return bool
  191. */
  192. private function addCommentRecord($comment)
  193. {
  194. try {
  195. $data['virus_behavior_id'] = $comment['virus_behavior_id'];
  196. $data['uid'] = $comment['uid'];
  197. $data['upper_trigger_time'] = $comment['upper_trigger_time'];
  198. $data['related_content_id'] = $comment['related_content_id'];
  199. $data['content_author_id'] = $comment['content_author_id'];
  200. $data['superior_commentator_id'] = $comment['superior_commentator_id'];
  201. $data['physical_exertion'] = $comment['physical_exertion'];
  202. $data['trigger_type'] = $comment['trigger_type'];
  203. $data['generation_type'] = $comment['generation_type'];
  204. $data['release_status'] = $comment['release_status'];
  205. $data['generation_quantity'] = $comment['generation_quantity'];
  206. $data['quantity_issued'] = $comment['quantity_issued'];
  207. $data['current_comment_id'] = $comment['comment_id'];
  208. $data['superior_comment_id'] = $comment['parent_comment_id'];
  209. $this->generalLedgerRecord->create($data);
  210. $behavior = Behavior::where('virus_behavior_id',$comment['virus_behavior_id'])->first();
  211. $behavior->physical_strength += $comment['physical_exertion'];
  212. $behavior->grant_rainbow_beans += $comment['quantity_issued'];
  213. $behavior->trigger_times += 1;
  214. if($comment['trigger_type']){
  215. $behavior->effective_trigger += 1;
  216. }
  217. $behavior->effective_trigger += 1;
  218. $behavior->save();
  219. DB::commit();
  220. return true;
  221. } catch (QueryException $exception) {
  222. Log::debug('addCommentRecord-exception:'.$exception->getMessage());
  223. DB::rollBack();
  224. return false;
  225. }
  226. }
  227. }