* @day: 2017/11/11 */ namespace app\models\many; use app\models\user\User; use app\models\user\UserBill; use crmeb\traits\ModelTrait; use crmeb\basic\BaseModel; use think\model\concern\SoftDelete; /** * Class StoreCategory * @package app\admin\model\store */ class Many extends BaseModel { /** * 数据表主键 * @var string */ protected $pk = 'id'; /** * 模型名称 * @var string */ protected $name = 'many'; use ModelTrait; use SoftDelete; protected $autoWriteTimestamp = true; public static function list($where) { $model = self::field('*')->order('sort DESC,id DESC'); if ($where['name'])$model->where('name' , 'like', '%'.$where['name'],'%'); $data['count'] = $model->count(); if ($where['page'] && $where['limit']){ $model->page($where['page'], $where['limit']); }else{ $model->page(20, 1); } $list = $model->select()->toArray(); foreach ($list as &$item){ $item['add_time'] = date('Y-m-d H:i:s',$item['add_time']); $item['end_time'] = date('Y-m-d H:i:s',$item['end_time']); } $data['data'] = $list; return $data; } /** * 众筹失败 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function fail() { $many = self::where('end_time', '<', time())->where('status', '=', 1)->select();//找到结束为完成的场次 if ($many) { foreach ($many as $item) { $stage = [$item['stage'],$item['stage'] - 3];//指定期数 $stages = [$item['stage'] - 2, $item['stage'] - 1];//指定期数 $many_order = ManyOrder::where('many_id', $item['id'])->where('status', '=', 0)->where('stage', 'in', $stage)->select();// 找到这期和三期前订单 $order = ManyOrder::where('many_id', '=', $item['id'])->where('status', '=', 0)->where('stage', 'in', $stages)->select()->toArray();// 找到这期和三期前中间两期订单 if ($many_order) { foreach ($many_order as $value) { if ($value['frozen'] > 0){ $user = User::where('uid', $value['uid'])->find(); $user['white_integral'] += $value['frozen'];// 返还 $user->save(); UserBill::income('种树失败返还肥料', $value['uid'], 'white_integral', 'sbfh_white_integral', $value['frozen'], 0, $user['white_integral'], '种树失败返还' . $item['name'] . '-第' . $value['stage'] . '期肥料'); }else{ $user = User::where('uid', $value['uid'])->find(); $user['white_integral'] += $value['price'] * 1.01;// 返还 $user->save(); UserBill::income('种树失败返还肥料', $value['uid'], 'white_integral', 'sbfh_white_integral', $value['price'] * 1.01, 0, $user['white_integral'], '种树失败返还' . $item['name'] . '-第' . $value['stage'] . '期肥料'); } } if ($order) { foreach ($order as $value) { $user = User::where('uid', $value['uid'])->find(); $user['integral'] += $value['frozen'];// 返还百分之三十的阳光 $user->save(); UserBill::income('种树失败返还阳光', $value['uid'], 'integral', 'sbfh_integral', $value['price'] * 0.3, 0, $user['integral'], '种树失败返还' . $item['name'] . '-第' . $value['stage'] . '期阳光'); } } ManyOrder::where('many_id', '=', $item['id'])->where('stage', 'in', [$item['stage'] - 3, $item['stage'], $item['stage'] - 2, $item['stage'] - 1])->update(['status' => 2]); ManyDiscipline::create(['many_id' => $item['id'], 'stage' => $item['stage'], 'status' => 2]); Many::where('id', $item['id'])->update(['status' => 0, 'suc' => 2]); } } } } /** * 自动增加额度 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function second() { $many = self::where('second', '>', 0)->where('increase', '>', 0)->where('status', 1)->lock(true)->select(); if ($many){ foreach ($many as &$item) { if ($item['add_time']-600 < time()){ if ($item['increase_time']+$item['second'] < time()){ $number = $item['number']; $item['number'] += $item['increase']; if ($item['number'] >= $item['money']){ $item['number'] = $item['money']; self::where('id', $item['id'])->update(['number' => $item['number'], 'increase_time' => time(), 'suc' => 1, 'status' => 0]); ManyOrder::order_return($item); ManyDiscipline::create(['many_id' => $item['id'], 'stage' => $item['stage'], 'status' => 1]);// 成功记录 if ($item['stage'] >= 4){ // 期数如果大于等于4 $stage = $item['stage'] - 3; ManyOrder::where('many_id', $item['id'])->where('stage', $stage)->update(['is_return' => 1]);// 成功后添加返还状态 } }else{ self::where('id', $item['id'])->update(['number' => $item['number'], 'increase_time' => time()]); } } } } } } /** * 自动下一期 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function next_period() { $many = self::where([['status','=', 0], ['suc', '=', 1]])->select(); if ($many) { foreach ($many as $item) { $item['add_time'] += 86400*2; $item['end_time'] += 86400*2; $item['money'] = intval($item['money'] * 1.3); $item['number'] = 0; $item['stage'] += 1; $item['status'] = 1; $item['suc'] = 0; self::where('id', $item['id'])->update([ 'add_time' => $item['add_time'], 'end_time' => $item['end_time'], 'money' => $item['money'], 'number' => $item['number'], 'stage' => $item['stage'], 'status' => $item['status'], 'suc' => $item['suc'], ]); } } } }