Log.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. namespace App\Module\Fund\Service;
  3. use App\Module\Fund\Models\FundLogModel;
  4. class Log
  5. {
  6. public function statistical($where)
  7. {
  8. $Builder = $this->ModelsManager->createBuilder()
  9. ->from(\Fund\Model\fundLog::class)
  10. ->andWhere('amount > 0')->columns([
  11. 'SUM(amount) AS sumamount',
  12. 'COUNT(*) as count'
  13. ]);
  14. $Builder = $this->deal_where($Builder, $where);
  15. $info = $Builder->getQuery()->execute();
  16. $add = $info->toArray();
  17. $Builder = $this->ModelsManager->createBuilder()
  18. ->from(\Fund\Model\fundLog::class)
  19. ->andWhere('amount < 0')->columns([
  20. 'SUM(amount) AS sumamount',
  21. 'COUNT(*) as count'
  22. ]);
  23. $Builder = $this->deal_where($Builder, $where);
  24. $info = $Builder->getQuery()->execute();
  25. $reduce = $info->toArray();
  26. return [ 'add' => $add[0], 'reduce' => $reduce[0] ];
  27. }
  28. /**
  29. * 列表
  30. *
  31. * @param $where
  32. * @param $page
  33. * @param $rows
  34. * @return \Dcore\ModelCore[]|FundLog[]|\Illuminate\Pagination\LengthAwarePaginator|\LaravelIdea\Helper\Dcore\_IH_ModelCore_C|\LaravelIdea\Helper\Fund\ModelLaravel\_IH_FundLog_C
  35. */
  36. public function lists($where = [], $page = 1, $rows = 10)
  37. {
  38. $q = FundLog::query()->orderBy('id', 'desc');
  39. $wAr = new Arr($where, $q);
  40. $wAr->queryNumber('user_id')
  41. ->queryExist('fund_id')
  42. ->queryExist('operate_type');
  43. if ($where['type']) {
  44. if ($where['type'] == 3) {
  45. $q = $q->whereIn('remark', [ '游戏消耗', '游戏奖励' ]);
  46. } else {
  47. if ($where['type'] == '1') {
  48. $q = $q->where('amount', '<', 0);
  49. } else {
  50. $q = $q->where('amount', '>', 0);
  51. }
  52. }
  53. }
  54. return $q->paginate($rows, [ '*' ], '', $page);
  55. }
  56. /**
  57. * @param \Phalcon\Mvc\Model\Query\Builder $Builder
  58. * @param $where
  59. * @return \Phalcon\Mvc\Model\Query\Builder
  60. */
  61. private function deal_where(\Phalcon\Mvc\Model\Query\Builder $Builder, $where): \Phalcon\Mvc\Model\Query\Builder
  62. {
  63. if (isset($where['user_id'])) {
  64. $Builder->andwhere('user_id =:user_id:', [ 'user_id' => $where['user_id'] ]);
  65. }
  66. if (isset($where['fund_id'])) {
  67. $Builder->andwhere('fund_id =:fund_id:', [ 'fund_id' => $where['fund_id'] ]);
  68. }
  69. if (isset($where['type'])) {
  70. $Builder->andwhere('operate_type =:operate_type:', [ 'operate_type' => $where['type'] ]);
  71. }
  72. return $Builder;
  73. }
  74. /**
  75. * 用户资金日志的回调 用户处理订单日志
  76. *
  77. * @param $data
  78. */
  79. private function call_log(\Fund\Model\fundLog &$value)
  80. {
  81. $ob_list = [
  82. 'recharge' => Recharge::class,
  83. 'admin' => Admin::class,
  84. 'transfer' => Transfer::class,
  85. 'order' => Order::class,
  86. 'measure' => \logic\measure\Order::class,
  87. 'circulatio' => Circulation::class
  88. ];
  89. $name_list = [
  90. 'recharge' => '资金转账',
  91. 'admin' => '管理员操作',
  92. 'transfer' => 'transfer',
  93. 'order' => 'Order系统',
  94. 'measure' => '需求相关',
  95. 'circulatio' => '账户资金流转'
  96. ];
  97. $fund_name_list = [
  98. '1' => '余额账户',
  99. '2' => '需求资金托管',
  100. '3' => '待结算佣金',
  101. '4' => '系统佣金抽成',
  102. '5' => '提现冻结资金',
  103. '6' => '未设置'
  104. ];
  105. $cName = $ob_list[$value->operate_type];
  106. $value->fund_id_name = $fund_name_list[$value->fund_id];
  107. $value->operate_info = $cName::logInfo($value->operate_id);
  108. $value->operate_type_name = $name_list[$value->operate_type];
  109. return $value;
  110. }
  111. /**
  112. * 记录日志
  113. */
  114. /**
  115. * 创建日志
  116. * @param int $user_id
  117. * @param $fund_id
  118. * @param int $amount
  119. * @param string $remark
  120. * @param $later_balance
  121. * @param $before_balance
  122. * @param $operate_id
  123. * @param $operate_type
  124. * @param FundLogModel $pre_log
  125. * @return bool
  126. */
  127. public static function create_log(int $user_id, $fund_id, int $amount, string $remark, $later_balance, $before_balance, $operate_id, $operate_type, $pre_log): bool
  128. {
  129. $log = new FundLogModel();
  130. $log->user_id = $user_id;
  131. $log->fund_id = $fund_id;
  132. $log->amount = $amount;
  133. $log->operate_id = $operate_id;
  134. $log->operate_type = $operate_type;
  135. $log->remark = $remark;
  136. $log->create_time = time();
  137. $log->create_ip = request()->ip();
  138. $log->later_balance = $later_balance;
  139. $log->before_balance = $before_balance;
  140. $log->date_key = date('Ym');
  141. $log->hash = $log->generateHash();
  142. if($pre_log){
  143. $log->prev_hash = $pre_log->hash;
  144. }else{
  145. $log->prev_hash = '-';
  146. }
  147. return $log->save();
  148. }
  149. }