Trace.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Support\Facades\Log;
  5. class Trace extends Model
  6. {
  7. protected $table='se_code';
  8. protected $fillable=['level','pid','sort','track_status','is_true','com_binding','user_id','security_code','code','child_num','select_num','is_lowest','model','act_id'];
  9. const MODEL_ONE = '1:6:36';
  10. const MODEL_TWO = '1:6:24';
  11. const MODEL_THREE = '1:10';
  12. public static $model = [
  13. self::MODEL_ONE => ['grade'=>3,'num'=>['num2'=>6,'num3'=>6]],
  14. self::MODEL_TWO => ['grade'=>3,'num'=>['num2'=>6,'num3'=>4]],
  15. self::MODEL_THREE => ['grade'=>2,'num'=>['num2'=>10]],
  16. ];
  17. public function get_child(){
  18. return $this->hasMany(Trace::class,'pid');
  19. }
  20. public function get_childs(){
  21. return $this->hasMany(Trace::class,'pid','sort');
  22. }
  23. public function user(){
  24. return $this->belongsTo(User::class,'user_id');
  25. }
  26. public function get_goods(){
  27. return $this->belongsTo(TraceGoods::class,'good_select_id');
  28. }
  29. public function get_express(){
  30. return $this->hasMany(TraceExpress::class,'select_id');
  31. }
  32. public static function add_code($pid,$grade,$num)
  33. {
  34. if($pid==0){
  35. $level=1;
  36. }else{
  37. $ll=Trace::where('id',$pid)->value('level');
  38. $level=$ll+1;
  39. }
  40. if($level==$grade){
  41. $is_lowest=1;
  42. $child_num=0;
  43. }else{
  44. $n='num'.($level+1);
  45. $child_num=$num[$n];
  46. $is_lowest=0;
  47. }
  48. $code=self::code();
  49. $result=Trace::create([
  50. 'level'=>$level,
  51. 'pid'=>$pid,
  52. 'track_status'=>0,
  53. 'is_true'=>0,
  54. 'com_binding'=>1,
  55. 'user_id'=>null,
  56. 'security_code'=>$code['sec_code'],
  57. 'code'=>$code['code'],
  58. 'child_num'=>$child_num,
  59. 'select_num'=>0,
  60. 'is_lowest'=>$is_lowest,
  61. ]);
  62. return $result->id;
  63. }
  64. public static function code(){
  65. $str='QWER34TYUIO_2PASDFG+1HJK567LZXC890VBNM';
  66. $code='';
  67. for ($i=0;$i<8;$i++){
  68. $num=rand(0,37);
  69. $code.=mb_substr($str,$num,1);
  70. }
  71. $code1=Str_random(10);
  72. $code=date('y',time()).$code1.mb_substr(hash('sha256',$code),1,8).$code.date('md',time());
  73. return ['code'=>$code,'sec_code'=>mt_rand(1000,9999).mt_rand(1000,9999)];
  74. }
  75. }