* @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'] - 3, $item['stage']];//指定期数 $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) { $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['white_integral'] += $value['price'] * 0.7;// 返还紫积分 $user['green_integral'] += $value['price'] * 0.3;// 返还绿积分 $user['paper_ticket'] += $value['price'] * 0.3;// 返还百分之三十的文票 $user['integral'] += $value['price'] * 0.3;// 返还百分之三十的商城积分 $user->save(); UserBill::income('种植失败返还红积分', $value['uid'], 'white_integral', 'sbfh_white_integral', $value['price'] * 0.7, 0, $user['white_integral'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期红积分'); UserBill::income('种植失败返还绿积分', $value['uid'], 'green', 'sbfh_green', $value['price'] * 0.3, 0, $user['green_integral'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期绿积分'); UserBill::income('种植失败返还文票', $value['uid'], 'paper_ticket', 'sbfh_paper_ticket', $value['price'] * 0.3, 0, $user['paper_ticket'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期文票'); 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'] < time()){ if ($item['increase_time']+$item['second'] < time()){ $number = $item['number']; $item['number'] += $item['increase']; if ($item['number'] >= $item['money']){ $increase = $item['money'] - $number; $item['number'] += $item['money'] - $item['number']; self::where('id', $item['id'])->update(['increase_time' => time(), 'suc' => 1, 'status' => 0]); self::where('id', $item['id'])->inc('number', $increase)->update(); 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(['increase_time' => time()]); self::where('id', $item['id'])->inc('number', $item['increase'])->update(); } } } } } } }