select(); foreach ($levels as $level) { $lake = self::where('level', $level['id'])->where('type', $lake_type) ->find(); if (!$lake) $lake = self::create([ 'level' => $level['id'], 'type' => $lake_type, 'award_name' => $level['name'] . '分红', 'num' => 0, 'send_time' => time() ]); $award = bcdiv(bcmul((string)$order_price, (string)$level['award_ratio']), '100', 2); AwardLakeLog::income($lake['id'], 'order_add', $award, $order_id, '用户购买商品添加分红池'); } return true; } public function autoSend() { $time = strtotime(date('Y-m-d 01:00:00')); if (time() < $time) { return true; } $lakes = self::where('send_time', '<', $time)->select(); foreach ($lakes as $lake) { $this->sendAward($lake['id']); } } public function sendAward($lake_id) { $lake = self::where('id', $lake_id)->find(); if (!$lake) return true; if ($lake['num'] <= 0) { self::where('id', $lake['id'])->update(['send_time' => time()]); return true; } switch ($lake['type']) { case 1: $model = new OilLevel(); $field = 'oil_level'; break; case 2: $model = new GiftLevel(); $field = 'gift_level'; break; default : $model = new OilLevel(); $field = 'oil_level'; } $level = $model->where('id', $lake['level'])->find(); $levels = $model->where('grade', '>=', $level['grade'])->column('id'); $users = User::where($field, 'in', $levels)->where('status', 1)->select(); $every = bcdiv($lake['num'], count($users), 2); if ($every <= 0) { self::where('id', $lake['id'])->update(['send_time' => time()]); return true; } $real_send = 0; $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice(); foreach ($users as $user) { //todo 添加用户积分 //todo end $real_send = bcadd($real_send, $every, 2); } AwardLakeLog::expend($lake['id'], 'send', $real_send, 0, '奖池分红'); self::where('id', $lake['id'])->update(['send_time' => time()]); } }