123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- /**
- * @author: xaboy<365615158@qq.com>
- * @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'],
- ]);
- }
- }
- }
- }
|