Organization.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <?php
  2. namespace App\Models;
  3. use App\Models\Jobfair\JobfairPutJob;
  4. use App\Search\Traits\CompanySearchable;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. use Illuminate\Foundation\Auth\User;
  7. /**
  8. * App\Models\Organization
  9. *
  10. * @property int $id
  11. * @property string $tpl 企业模版
  12. * @property string $username 企业登录用户名
  13. * @property int $mobile 手机号
  14. * @property int $mobile_audit 手机认证 1:认证通过 2:认证失败0未认证
  15. * @property string $email 邮箱
  16. * @property int $email_audit "邮箱认证 1:认证通过 2:认证失败0未认证"
  17. * @property int $reg_time 注册时间
  18. * @property int $reg_ip 注册IP
  19. * @property int $last_login_time 上次登录时间
  20. * @property int $last_login_ip 上次登录IP
  21. * @property string $reg_address 注册地址
  22. * @property int $remind_email_time 下次邮件提醒时间
  23. * @property int $remind_email_ex_time 已经邮件提醒次数
  24. * @property int $reg_type 注册方式(1:手机,2:邮箱,3:微信)
  25. * @property int $reg_source 注册来源 1:网页端 2:手机端 3:微信小程序
  26. * @property string|null $reg_source_cn 注册来源 1:网页端 2:手机端 3:微信小程序
  27. * @property string $companyname 企业名称
  28. * @property string $password 密码
  29. * @property int $nature 企业性质编号
  30. * @property int $trade 企业行业编号
  31. * @property int $district 所在地区大类
  32. * @property int $district_cn 所在地区大类
  33. * @property int $street 所在街道ID
  34. * @property int $scale 企业规模ID
  35. * @property int $registered 注册资金
  36. * @property string $currency 资金类型人民币/美元
  37. * @property string $address 企业地址
  38. * @property string $contact 联系人
  39. * @property string $landline_tel 座机
  40. * @property string|null $website 企业网址
  41. * @property int $sms_num 短信数量
  42. * @property string $certificate_img 营业执照
  43. * @property string|null $logo 企业logo
  44. * @property string $organization_code 组织机构代码
  45. * @property string|null $contents 企业介绍
  46. * @property int $setmeal_id 套餐ID
  47. * @property string $setmeal_name 套餐名称
  48. * @property int $audit 审核状态:1审核通过,2待审核,3审核未通过
  49. * @property int $subsite_id 分站ID
  50. * @property int $map_open 电子地图(1:开启 0 :关闭)
  51. * @property float $map_x X坐标
  52. * @property float $map_y Y坐标
  53. * @property int $map_zoom 地图放大级别
  54. * @property int $refresh_time 刷新时间
  55. * @property int $click 点击量
  56. * @property int $user_status 用户身份
  57. * @property int $contact_show 是否显示联系人:1是0否
  58. * @property int $telephone_show 是否显示联系电话:1是0否
  59. * @property int $email_show 是否显示email:1是0否
  60. * @property int $landline_tel_show 是否显示座机:1是0否
  61. * @property int $robot 是否为采集信息:0人工1采集
  62. * @property int $comment 评论数
  63. * @property int $resume_processing 简历处理率
  64. * @property string $tag 标签
  65. * @property int $wzp_tpl 微信招聘模板:0否1是
  66. * @property int $jobs 职位
  67. * @property int $replys 回复
  68. * @property string $qq qq
  69. * @property string $short_name 企业简称
  70. * @property string|null $remember_token
  71. * @property \Illuminate\Support\Carbon|null $created_at
  72. * @property \Illuminate\Support\Carbon|null $updated_at
  73. * @property string|null $deleted_at
  74. * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Jobs[] $job
  75. * @property-read \App\Models\MembersPoint $membersPoints
  76. * @property-read \App\Models\MembersSetmeal $membersSetmeal
  77. * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Order[] $orders
  78. * @property-read \App\Models\Promotion $promotion
  79. * @method static bool|null forceDelete()
  80. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company newModelQuery()
  81. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company newQuery()
  82. * @method static \Illuminate\Database\Query\Builder|\App\Models\Company onlyTrashed()
  83. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company query()
  84. * @method static bool|null restore()
  85. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereAddress($value)
  86. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereAudit($value)
  87. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereCertificateImg($value)
  88. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereClick($value)
  89. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereComment($value)
  90. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereCompanyname($value)
  91. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereContact($value)
  92. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereContactShow($value)
  93. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereContents($value)
  94. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereCreatedAt($value)
  95. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereCurrency($value)
  96. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereDeletedAt($value)
  97. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereDistrict($value)
  98. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereEmail($value)
  99. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereEmailAudit($value)
  100. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereEmailShow($value)
  101. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereId($value)
  102. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereJobs($value)
  103. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereLandlineTel($value)
  104. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereLandlineTelShow($value)
  105. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereLastLoginIp($value)
  106. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereLastLoginTime($value)
  107. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereLogo($value)
  108. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereMapOpen($value)
  109. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereMapX($value)
  110. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereMapY($value)
  111. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereMapZoom($value)
  112. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereMobile($value)
  113. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereMobileAudit($value)
  114. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereNature($value)
  115. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereOrganizationCode($value)
  116. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company wherePassword($value)
  117. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereQq($value)
  118. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRefreshTime($value)
  119. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegAddress($value)
  120. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegIp($value)
  121. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegSource($value)
  122. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegSourceCn($value)
  123. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegTime($value)
  124. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegType($value)
  125. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRegistered($value)
  126. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRememberToken($value)
  127. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRemindEmailExTime($value)
  128. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRemindEmailTime($value)
  129. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereReplys($value)
  130. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereResumeProcessing($value)
  131. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereRobot($value)
  132. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereScale($value)
  133. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereSetmealId($value)
  134. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereSetmealName($value)
  135. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereShortDesc($value)
  136. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereShortName($value)
  137. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereSmsNum($value)
  138. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereStreet($value)
  139. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereSubsiteId($value)
  140. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereTag($value)
  141. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereTelephoneShow($value)
  142. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereTpl($value)
  143. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereTrade($value)
  144. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereUpdatedAt($value)
  145. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereUserStatus($value)
  146. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereUsername($value)
  147. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereWebsite($value)
  148. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Company whereWzpTpl($value)
  149. * @method static \Illuminate\Database\Query\Builder|\App\Models\Company withTrashed()
  150. * @method static \Illuminate\Database\Query\Builder|\App\Models\Company withoutTrashed()
  151. * @mixin \Eloquent
  152. */
  153. class Organization extends User
  154. {
  155. use SoftDeletes, CompanySearchable;
  156. protected $table = 'organization';
  157. protected $guarded=[''];
  158. static function getTableName()
  159. {
  160. $organization = new Organization();
  161. return $organization->getTable();
  162. }
  163. public function orders()
  164. {
  165. return $this->hasMany(Order::class, 'uid', 'id');
  166. }
  167. public function service()
  168. {
  169. return $this->hasMany(Service::class, 'uid', 'id');
  170. }
  171. public function imgs()
  172. {
  173. return $this->hasMany(CompanyImg::class, 'company_id');
  174. }
  175. public function membersSetmeal()
  176. {
  177. return $this->hasOne(MembersSetmeal::class, 'uid');
  178. }
  179. public function membersPoints()
  180. {
  181. return $this->hasOne(MembersPoint::class, 'uid');
  182. }
  183. public static function companyAudit($id, $data)
  184. {
  185. return Company::whereIn('id', $id)->update($data);
  186. }
  187. public function promotion()
  188. {
  189. return $this->belongsTo(Promotion::class, 'id');
  190. }
  191. public function getTagAttribute($value)
  192. {
  193. return explode(',', $value);
  194. }
  195. public function setTagAttribute($value)
  196. {
  197. $this->attributes['tag'] = implode(',', $value);
  198. }
  199. public function resumes()
  200. {
  201. return $this->belongsToMany(Resume::class, 'company_favorites', 'company_id', 'resume_id')->withTimestamps();
  202. }
  203. public function subsites()
  204. {
  205. return $this->belongsTo(Subsite::class, 'subsite_id');
  206. }
  207. public function companyConsultant()
  208. {
  209. return $this->hasOne(CompanyConsultant::class,'company_id','id');
  210. }
  211. public function toSearchableArray()
  212. {
  213. $arr=$this->load(['membersSetmeal'])->toArray();
  214. $arr['district'] = string_to_array('.', $arr['district']);
  215. $arr['district_cn'] = string_to_array('/', $arr['district_cn']);
  216. $arr['trade_cn'] = get_category($arr['trade']);
  217. foreach ($arr['tag'] as $key => $val) {
  218. $arr['tag'][$key] = (int)$val;
  219. }
  220. foreach ($arr['tag'] as $key => $val) {
  221. $arr['tag_cn'][$key] =get_category($val);
  222. }
  223. $arr['scale_cn'] = get_category($arr['scale']);
  224. $arr['nature_cn'] = get_category($arr['nature']);
  225. $arr['location'] = [
  226. 'lat'=>is_numeric($arr['map_y'])?$arr['map_y']:0,
  227. 'lon'=>is_numeric($arr['map_y'])?$arr['map_y']:0
  228. ];
  229. $arr['subsite_ids'] = [$arr['subsite_id']];
  230. $audit_num = $this->job()->where(['valid'=>1,'audit'=>1,'display'=>1])->count();
  231. $wait_audit_num = $this->job()->where(['valid'=>1,'audit'=>2,'display'=>1])->count();
  232. $arr['job_audit_num'] = $audit_num;
  233. $arr['job_wait_num'] = $wait_audit_num;
  234. $arr['job_sum_num'] = (int)$wait_audit_num + (int)($audit_num);
  235. $new_refresh_job = $this->job()->where(['audit'=>1,'valid'=>1,'display'=>1])->orderBy('refresh_time', 'desc')->first();
  236. if ($new_refresh_job) {
  237. $arr['job_new_refresh'] = $new_refresh_job->refresh_time;
  238. } else {
  239. $arr['job_new_refresh'] = null;
  240. }
  241. unset($arr['password']);
  242. unset($arr['remember_token']);
  243. unset($arr['map_x']);
  244. unset($arr['map_y']);
  245. unset($arr['map_zoom']);
  246. unset($arr['map_open']);
  247. return $arr;
  248. }
  249. }