| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <?php
- namespace App\Module\Fund\Service;
- use App\Module\Fund\Models\FundLogModel;
- class Log
- {
- public function statistical($where)
- {
- $Builder = $this->ModelsManager->createBuilder()
- ->from(\Fund\Model\fundLog::class)
- ->andWhere('amount > 0')->columns([
- 'SUM(amount) AS sumamount',
- 'COUNT(*) as count'
- ]);
- $Builder = $this->deal_where($Builder, $where);
- $info = $Builder->getQuery()->execute();
- $add = $info->toArray();
- $Builder = $this->ModelsManager->createBuilder()
- ->from(\Fund\Model\fundLog::class)
- ->andWhere('amount < 0')->columns([
- 'SUM(amount) AS sumamount',
- 'COUNT(*) as count'
- ]);
- $Builder = $this->deal_where($Builder, $where);
- $info = $Builder->getQuery()->execute();
- $reduce = $info->toArray();
- return [ 'add' => $add[0], 'reduce' => $reduce[0] ];
- }
- /**
- * 列表
- *
- * @param $where
- * @param $page
- * @param $rows
- * @return \Dcore\ModelCore[]|FundLog[]|\Illuminate\Pagination\LengthAwarePaginator|\LaravelIdea\Helper\Dcore\_IH_ModelCore_C|\LaravelIdea\Helper\Fund\ModelLaravel\_IH_FundLog_C
- */
- public function lists($where = [], $page = 1, $rows = 10)
- {
- $q = FundLog::query()->orderBy('id', 'desc');
- $wAr = new Arr($where, $q);
- $wAr->queryNumber('user_id')
- ->queryExist('fund_id')
- ->queryExist('operate_type');
- if ($where['type']) {
- if ($where['type'] == 3) {
- $q = $q->whereIn('remark', [ '游戏消耗', '游戏奖励' ]);
- } else {
- if ($where['type'] == '1') {
- $q = $q->where('amount', '<', 0);
- } else {
- $q = $q->where('amount', '>', 0);
- }
- }
- }
- return $q->paginate($rows, [ '*' ], '', $page);
- }
- /**
- * @param \Phalcon\Mvc\Model\Query\Builder $Builder
- * @param $where
- * @return \Phalcon\Mvc\Model\Query\Builder
- */
- private function deal_where(\Phalcon\Mvc\Model\Query\Builder $Builder, $where): \Phalcon\Mvc\Model\Query\Builder
- {
- if (isset($where['user_id'])) {
- $Builder->andwhere('user_id =:user_id:', [ 'user_id' => $where['user_id'] ]);
- }
- if (isset($where['fund_id'])) {
- $Builder->andwhere('fund_id =:fund_id:', [ 'fund_id' => $where['fund_id'] ]);
- }
- if (isset($where['type'])) {
- $Builder->andwhere('operate_type =:operate_type:', [ 'operate_type' => $where['type'] ]);
- }
- return $Builder;
- }
- /**
- * 用户资金日志的回调 用户处理订单日志
- *
- * @param $data
- */
- private function call_log(\Fund\Model\fundLog &$value)
- {
- $ob_list = [
- 'recharge' => Recharge::class,
- 'admin' => Admin::class,
- 'transfer' => Transfer::class,
- 'order' => Order::class,
- 'measure' => \logic\measure\Order::class,
- 'circulatio' => Circulation::class
- ];
- $name_list = [
- 'recharge' => '资金转账',
- 'admin' => '管理员操作',
- 'transfer' => 'transfer',
- 'order' => 'Order系统',
- 'measure' => '需求相关',
- 'circulatio' => '账户资金流转'
- ];
- $fund_name_list = [
- '1' => '余额账户',
- '2' => '需求资金托管',
- '3' => '待结算佣金',
- '4' => '系统佣金抽成',
- '5' => '提现冻结资金',
- '6' => '未设置'
- ];
- $cName = $ob_list[$value->operate_type];
- $value->fund_id_name = $fund_name_list[$value->fund_id];
- $value->operate_info = $cName::logInfo($value->operate_id);
- $value->operate_type_name = $name_list[$value->operate_type];
- return $value;
- }
- /**
- * 记录日志
- */
- /**
- * 创建日志
- * @param int $user_id
- * @param $fund_id
- * @param int $amount
- * @param string $remark
- * @param $later_balance
- * @param $before_balance
- * @param $operate_id
- * @param $operate_type
- * @param FundLogModel $pre_log
- * @return bool
- */
- 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
- {
- $log = new FundLogModel();
- $log->user_id = $user_id;
- $log->fund_id = $fund_id;
- $log->amount = $amount;
- $log->operate_id = $operate_id;
- $log->operate_type = $operate_type;
- $log->remark = $remark;
- $log->create_time = time();
- $log->create_ip = request()->ip();
- $log->later_balance = $later_balance;
- $log->before_balance = $before_balance;
- $log->date_key = date('Ym');
- $log->hash = $log->generateHash();
- if($pre_log){
- $log->prev_hash = $pre_log->hash;
- }else{
- $log->prev_hash = '-';
- }
- return $log->save();
- }
- }
|