Log.php 5.5 KB

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