Mobile.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace app\common\model;
  3. use app\admin\model\Admin;
  4. use app\common\service\MobileComputer;
  5. use think\Model;
  6. use traits\model\SoftDelete;
  7. /**
  8. * 配置模型
  9. */
  10. class Mobile extends Model
  11. {
  12. use SoftDelete;
  13. public static $status=[
  14. 0=>'正常',
  15. 1=>'已售',
  16. 3=>'已下架',
  17. ];
  18. protected $append=[
  19. 'saled',
  20. ];
  21. protected $autoWriteTimestamp='int';
  22. protected $hidden=[
  23. 'filter_exists_0','filter_num_0','filter_num_1','filter_num_2','filter_num_3','filter_num_4','filter_num_5','filter_num_6','filter_num_7',
  24. 'filter_num_8','filter_num_9','filter_middle_3a','filter_middle_4a','filter_middle_5a','filter_middle_6a','filter_middle_7a','filter_middle_8a',
  25. 'filter_middle_abc','filter_middle_abcd','filter_middle_abcde','filter_middle_abcdef','filter_middle_3ab','filter_middle_4ab','filter_middle_5ab',
  26. 'filter_no_pos_2','filter_no_pos_3','filter_no_pos_4','filter_no_pos_5','filter_no_pos_6','filter_no_pos_7','filter_no_pos_8','filter_no_pos_9',
  27. 'filter_no_pos_10','filter_no_pos_11','filter_tail_3a','filter_tail_4a','filter_tail_5a','filter_tail_6a','filter_tail_7a','filter_tail_8a',
  28. 'filter_tail_abc','filter_tail_abcd','filter_tail_abcde','filter_tail_abcdef','filter_tail_3ab','filter_tail_4ab','filter_tail_5ab',
  29. 'filter_exists_2','filter_exists_3','filter_exists_4','filter_exists_5','filter_exists_6','filter_exists_7','filter_exists_8','filter_exists_9',
  30. ];
  31. public function info(){
  32. return $this->hasOne(MobileInfo::class);
  33. }
  34. public function orders(){
  35. return $this->hasMany(MobileOrder::class);
  36. }
  37. public function proxy(){
  38. return $this->belongsTo(Admin::class,'proxy_id');
  39. }
  40. public function getSaledAttr($a,$b){
  41. $s=$b['status']??0;
  42. return $s===1?1:0;
  43. }
  44. public static function init()
  45. {
  46. self::beforeWrite(function (self $mobile){
  47. if(!isset($mobile['amount_base'])){
  48. $mobile['amount_base']=0;
  49. }
  50. if(!isset($mobile['amount_charge'])){
  51. $mobile['amount_charge']=0;
  52. }
  53. if(!isset($mobile['is_activity'])){
  54. $mobile['is_activity']=0;
  55. }
  56. if(!$mobile['is_activity']) {
  57. $mobile['amount'] = $mobile['amount_base'] + $mobile['amount_charge'];
  58. }else{
  59. $mobile['amount'] = $mobile['amount_kill'] + $mobile['amount_charge'];
  60. }
  61. if(isset($mobile['top_time']) && $mobile['top_time']==1){
  62. $mobile['top_time']=time();
  63. }else{
  64. $mobile['top_time']=null;
  65. }
  66. if(isset($mobile['rec_time']) && $mobile['rec_time']==1){
  67. $mobile['rec_time']=time();
  68. }else{
  69. $mobile['rec_time']=null;
  70. }
  71. if(isset($mobile->getChangedData()['is_activity']) && $mobile->getChangedData()['is_activity']==1){
  72. self::where('id','>',0)->update(['activity_time'=>null]);
  73. $mobile['activity_time']=time();
  74. }
  75. $mobile->data(array_merge($mobile->getData(),MobileComputer::setMobile($mobile['no'])->filter()));
  76. });
  77. self::afterInsert(function (self $mobile){
  78. /*if(!$mobile->info()->find()){
  79. $mobile->info()->save([]);
  80. }*/
  81. });
  82. self::beforeInsert(function (self $mobile){
  83. $mobile['sort']=mt_rand(0,99999999);
  84. if(empty($mobile['province_id'])){
  85. $mobile['province_id']=Area::getIdByName($mobile['province']);
  86. }
  87. if(empty($mobile['city_id'])){
  88. $mobile['city_id']=Area::getIdByName($mobile['city']);
  89. }
  90. if(!empty($mobile['province_id'])){
  91. $mobile['province']=Area::where('id',$mobile['province_id'])->value('name');
  92. }
  93. if(!empty($mobile['city_id'])){
  94. $mobile['city']=Area::where('id',$mobile['city_id'])->value('name');
  95. }
  96. });
  97. }
  98. public static function show(){
  99. $model=new self();
  100. $model->with(['info']);
  101. $model->where('status','<>',2);
  102. return $model;
  103. }
  104. }