Many.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. * @author: xaboy<365615158@qq.com>
  4. * @day: 2017/11/11
  5. */
  6. namespace app\models\many;
  7. use app\models\user\User;
  8. use app\models\user\UserBill;
  9. use crmeb\traits\ModelTrait;
  10. use crmeb\basic\BaseModel;
  11. use think\model\concern\SoftDelete;
  12. /**
  13. * Class StoreCategory
  14. * @package app\admin\model\store
  15. */
  16. class Many extends BaseModel
  17. {
  18. /**
  19. * 数据表主键
  20. * @var string
  21. */
  22. protected $pk = 'id';
  23. /**
  24. * 模型名称
  25. * @var string
  26. */
  27. protected $name = 'many';
  28. use ModelTrait;
  29. use SoftDelete;
  30. protected $autoWriteTimestamp = true;
  31. public static function list($where)
  32. {
  33. $model = self::field('*')->order('sort DESC,id DESC');
  34. if ($where['name'])$model->where('name' , 'like', '%'.$where['name'],'%');
  35. $data['count'] = $model->count();
  36. if ($where['page'] && $where['limit']){
  37. $model->page($where['page'], $where['limit']);
  38. }else{
  39. $model->page(20, 1);
  40. }
  41. $list = $model->select()->toArray();
  42. foreach ($list as &$item){
  43. $item['add_time'] = date('Y-m-d H:i:s',$item['add_time']);
  44. $item['end_time'] = date('Y-m-d H:i:s',$item['end_time']);
  45. }
  46. $data['data'] = $list;
  47. return $data;
  48. }
  49. /**
  50. * 众筹失败
  51. * @return void
  52. * @throws \think\db\exception\DataNotFoundException
  53. * @throws \think\db\exception\DbException
  54. * @throws \think\db\exception\ModelNotFoundException
  55. */
  56. public static function fail()
  57. {
  58. $many = self::where('end_time', '<', time())->where('status', '=', 1)->select();//找到结束为完成的场次
  59. if ($many) {
  60. foreach ($many as $item) {
  61. $stage = [$item['stage'] - 3, $item['stage']];//指定期数
  62. $stages = [$item['stage'] - 2, $item['stage'] - 1];//指定期数
  63. $many_order = ManyOrder::where('many_id', $item['id'])->where('status', '=', 0)->where('stage', 'in', $stage)->select();// 找到这期和三期前订单
  64. $order = ManyOrder::where('many_id', '=', $item['id'])->where('status', '=', 0)->where('stage', 'in', $stages)->select()->toArray();// 找到这期和三期前中间两期订单
  65. if ($many_order) {
  66. foreach ($many_order as $value) {
  67. $user = User::where('uid', $value['uid'])->find();
  68. $user['white_integral'] += $value['price'] * 1.01;// 返还
  69. $user->save();
  70. UserBill::income('种植失败返还红积分', $value['uid'], 'white_integral', 'sbfh_white_integral', $value['price'] * 1.01, 0, $user['white_integral'], '打怪失败返还' . $item['name'] . '-第' . $value['stage'] . '期红积分');
  71. }
  72. if ($order) {
  73. foreach ($order as $value) {
  74. $user = User::where('uid', $value['uid'])->find();
  75. $user['white_integral'] += $value['price'] * 0.7;// 返还紫积分
  76. $user['green_integral'] += $value['price'] * 0.3;// 返还绿积分
  77. $user['paper_ticket'] += $value['price'] * 0.3;// 返还百分之三十的文票
  78. $user['integral'] += $value['price'] * 0.3;// 返还百分之三十的商城积分
  79. $user->save();
  80. UserBill::income('种植失败返还红积分', $value['uid'], 'white_integral', 'sbfh_white_integral', $value['price'] * 0.7, 0, $user['white_integral'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期红积分');
  81. UserBill::income('种植失败返还绿积分', $value['uid'], 'green', 'sbfh_green', $value['price'] * 0.3, 0, $user['green_integral'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期绿积分');
  82. UserBill::income('种植失败返还文票', $value['uid'], 'paper_ticket', 'sbfh_paper_ticket', $value['price'] * 0.3, 0, $user['paper_ticket'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期文票');
  83. UserBill::income('种植失败返还商城积分', $value['uid'], 'integral', 'sbfh_integral', $value['price'] * 0.3, 0, $user['integral'], '种植失败返还' . $item['name'] . '-第' . $value['stage'] . '期商城积分');
  84. }
  85. }
  86. ManyOrder::where('many_id', '=', $item['id'])->where('stage', 'in', [$item['stage'] - 3, $item['stage'], $item['stage'] - 2, $item['stage'] - 1])->update(['status' => 2]);
  87. ManyDiscipline::create(['many_id' => $item['id'], 'stage' => $item['stage'], 'status' => 2]);
  88. Many::where('id', $item['id'])->update(['status' => 0, 'suc' => 2]);
  89. }
  90. }
  91. }
  92. }
  93. /**
  94. * 自动增加额度
  95. * @return void
  96. * @throws \think\db\exception\DataNotFoundException
  97. * @throws \think\db\exception\DbException
  98. * @throws \think\db\exception\ModelNotFoundException
  99. */
  100. public static function second()
  101. {
  102. $many = self::where('second', '>', 0)->where('increase', '>', 0)->where('status', 1)->lock(true)->select();
  103. if ($many){
  104. foreach ($many as &$item) {
  105. if ($item['add_time'] < time()){
  106. if ($item['increase_time']+$item['second'] < time()){
  107. $number = $item['number'];
  108. $item['number'] += $item['increase'];
  109. if ($item['number'] >= $item['money']){
  110. $increase = $item['money'] - $number;
  111. $item['number'] += $item['money'] - $item['number'];
  112. self::where('id', $item['id'])->update(['increase_time' => time(), 'suc' => 1, 'status' => 0]);
  113. self::where('id', $item['id'])->inc('number', $increase)->update();
  114. if ($item['stage'] >= 4){
  115. // 期数如果大于等于4
  116. $stage = $item['stage'] - 3;
  117. ManyOrder::where('many_id', $item['id'])->where('stage', $stage)->update(['is_return' => 1]);// 成功后添加返还状态
  118. }
  119. }else{
  120. self::where('id', $item['id'])->update(['increase_time' => time()]);
  121. self::where('id', $item['id'])->inc('number', $item['increase'])->update();
  122. }
  123. }
  124. }
  125. }
  126. }
  127. }
  128. }