123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Support\Facades\Log;
- class Trace extends Model
- {
- protected $table='se_code';
- 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'];
- const MODEL_ONE = '1:6:36';
- const MODEL_TWO = '1:6:24';
- const MODEL_THREE = '1:10';
- public static $model = [
- self::MODEL_ONE => ['grade'=>3,'num'=>['num2'=>6,'num3'=>6]],
- self::MODEL_TWO => ['grade'=>3,'num'=>['num2'=>6,'num3'=>4]],
- self::MODEL_THREE => ['grade'=>2,'num'=>['num2'=>10]],
- ];
- public function get_child(){
- return $this->hasMany(Trace::class,'pid');
- }
- public function get_childs(){
- return $this->hasMany(Trace::class,'pid','sort');
- }
- public function user(){
- return $this->belongsTo(User::class,'user_id');
- }
- public function get_goods(){
- return $this->belongsTo(TraceGoods::class,'good_select_id');
- }
- public function get_express(){
- return $this->hasMany(TraceExpress::class,'select_id');
- }
- public static function add_code($pid,$grade,$num)
- {
- if($pid==0){
- $level=1;
- }else{
- $ll=Trace::where('id',$pid)->value('level');
- $level=$ll+1;
- }
- if($level==$grade){
- $is_lowest=1;
- $child_num=0;
- }else{
- $n='num'.($level+1);
- $child_num=$num[$n];
- $is_lowest=0;
- }
- $code=self::code();
- $result=Trace::create([
- 'level'=>$level,
- 'pid'=>$pid,
- 'track_status'=>0,
- 'is_true'=>0,
- 'com_binding'=>1,
- 'user_id'=>null,
- 'security_code'=>$code['sec_code'],
- 'code'=>$code['code'],
- 'child_num'=>$child_num,
- 'select_num'=>0,
- 'is_lowest'=>$is_lowest,
- ]);
- return $result->id;
- }
- public static function code(){
- $str='QWER34TYUIO_2PASDFG+1HJK567LZXC890VBNM';
- $code='';
- for ($i=0;$i<8;$i++){
- $num=rand(0,37);
- $code.=mb_substr($str,$num,1);
- }
- $code1=Str_random(10);
- $code=date('y',time()).$code1.mb_substr(hash('sha256',$code),1,8).$code.date('md',time());
- return ['code'=>$code,'sec_code'=>mt_rand(1000,9999).mt_rand(1000,9999)];
- }
- }
|