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; } //30秒执行一次 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']); } return true; } public function handSend() { // $time = strtotime(date('Y-m-d 01:00:00')); // if (time() < $time) { // return true; // } $time= time(); $lakes = self::where('send_time', '<', $time)->select(); return $lakes; foreach ($lakes as $lake) { $this->sendAward($lake['id']); } return '发送成功'; } public function sendAward($lake_id) { try{ $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'; $name = '节能油'; $title = '节能油积分分红'; break; case 2: $model = new GiftLevel(); $field = 'gift_level'; $name = '礼包'; $title = '礼包积分分红'; break; default : $model = new OilLevel(); $field = 'oil_level'; $name = '节能油'; $title = '节能油积分分红'; } $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(); if (count($users) <= 0){ return true; } $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(); //分红积分价格 @file_put_contents('quanju.txt',json_encode($price)."-积分价格\r\n",8); foreach ($users as $user) { //todo 添加用户积分 用户分的奖励除以积分价格就是积分数量 $integral = bcmul($every, $price['price'], 2); $award_integral=User::where('uid', $user['uid'])->value('award_integral'); if ($award_integral>0){ $after = bcadd($award_integral, $integral, 2); // 创建用户账单仓库实例 $make = app()->make(UserBillRepository::class); $make->incBill($user['uid'], 'award_integral', 'oil_integral', [ 'number' => $award_integral, 'title' => $title, 'balance' => $after, 'status' => 1, 'link_id' => 0, 'mark' => $user['nickname'] . '获得' .$name.'分红积分'.$award_integral , ]); User::where('uid', $user['uid'])->update(['award_integral' => $after]); } //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()]); }catch (Exception $e){ @file_put_contents('quanju.txt',$e->getMessage()."-错误信息\r\n",8); @file_put_contents('quanju.txt',$e->getLine()."-错误位置\r\n",8); } } }