HouseBuilding.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. <?php
  2. namespace app\common\model;
  3. use app\hander\HelpHander;
  4. use app\Request;
  5. use think\Db;
  6. use think\Model;
  7. class HouseBuilding extends Model
  8. {
  9. public function add(){
  10. $data = [
  11. 'id' => input('id/d',0),
  12. 'title' => input('title','','trim'),
  13. 'lat' => input('lat',0),
  14. 'lng' => input('lng',0),
  15. 'community_id' => input('communityId/d',0),
  16. 'type' => input('type'),
  17. 'org_id' => input('orgId/d',0),
  18. ];
  19. $result = validate('HouseBuilding')->check($data,[],'');
  20. if(true !== $result){
  21. HelpHander::error(validate('HouseBuilding')->getError());
  22. }
  23. $id = $data['id'];
  24. unset($data['id']);
  25. if($id > 0){
  26. $ret = $this->allowField(true)->save($data,['id'=>$id]);
  27. }else{
  28. $ret = $this->allowField(true)->save($data);
  29. }
  30. if(!$ret){
  31. HelpHander::error('操作失败');
  32. }
  33. return true;
  34. }
  35. public function del($id){
  36. $res = Db::name('HouseFloor')->where('building_id',$id)->find();
  37. if($res){
  38. HelpHander::error('已被使用无法删除');
  39. }
  40. $res = Db::name('HouseTurn')->where('building_id',$id)->where('del',0)->find();
  41. if($res){
  42. HelpHander::error('已被使用无法删除');
  43. }
  44. $ret = $this->where('id',$id)->delete();
  45. if(!$ret){
  46. HelpHander::error('删除失败');
  47. }
  48. return true;
  49. }
  50. public function lists($page,$size,$title,$type,$orgId){
  51. $map[] = ['type','=',$type];
  52. $map[] = ['org_id','=',$orgId];
  53. if($title != ''){
  54. $map[] = ['title','like','%'.$title.'%'];
  55. }
  56. $lists = $this
  57. ->where($map)
  58. ->page($page,$size)
  59. ->order('id asc')
  60. ->select();
  61. $lists = $lists?$lists->toArray():[];
  62. foreach ($lists as $k=>$v){
  63. $community = Db::name('house_community')->where('id',$v['community_id'])->find();
  64. $district = Db::name('house_district')->where('id',$community['district_id'])->find();
  65. $lists[$k]['district_id'] = $community['district_id'];
  66. $lists[$k]['communityName'] = $community['title'];
  67. $lists[$k]['districtName'] = $district['title'];
  68. }
  69. $total = $this->where($map)->count();
  70. $data = [
  71. 'total' => $total,
  72. 'list' => $lists
  73. ];
  74. return $data;
  75. }
  76. public function blist($type,$title,$userId,$orgId,$cate=1){
  77. $map[] = ['type','=',$type];
  78. $map[] = ['org_id','=',$orgId];
  79. $lists = Db::name('house_building')
  80. ->where($map)
  81. ->field('id,title,lat,lng,community_id')
  82. ->select();
  83. $data = [
  84. 'count1' => 0,
  85. 'count2' => 0,
  86. 'count3' => 0,
  87. 'count4' => 0,
  88. 'count5' => 0,
  89. 'list' => []
  90. ];
  91. $newlist = [];
  92. $auths = Db::name('house_auth')->where('user_id',$userId)->where('type',$type)->value('ids');
  93. if(!$auths){
  94. return $data;
  95. }
  96. foreach ($lists as $k=>$v){
  97. $cinfo = Db::name('house_community')->where('id',$v['community_id'])->find();
  98. $dinfo = Db::name('house_district')->where('id',$cinfo['district_id'])->find();
  99. $v['title'] = $dinfo['title'].$cinfo['title'].$v['title'];
  100. $m = [];
  101. if($type == 2){
  102. // if($cate == 2){
  103. // $m[] = ['ht.status','=',0];
  104. // } else if($cate == 3){
  105. // $m[] = ['ht.cur_lessee_id','=',0];
  106. // } else if($cate == 4){
  107. // $m[] = ['ht.status','=',1];
  108. // } else if($cate == 5){
  109. // $m[] = ['ht.important','=',1];
  110. // }
  111. if($title){
  112. $m[] = ['ht.building_id','=',$v['id']];
  113. $m[] = ['ht.level_id','in',$auths];
  114. $m[] = ['ht.del','=',0];
  115. $m[] = ['ht.enable','=',1];
  116. $m1 = $m2 = $m3 = $m4 = $m5 = $m;
  117. $m1[] = ['ht.number','like','%'.$title.'%'];
  118. $m2[] = ['hb.title','like','%'.$title.'%'];
  119. $m3[] = ['hc.title','like','%'.$title.'%'];
  120. $m4[] = ['hd.title','like','%'.$title.'%'];
  121. $m5[] = ['hl.title','like','%'.$title.'%'];
  122. $count = Db::name('house_turn')
  123. ->alias('ht')
  124. ->join('house_building hb','ht.building_id = hb.id')
  125. ->join('house_community hc','hb.community_id = hc.id')
  126. ->join('house_district hd','hc.district_id = hd.id')
  127. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  128. ->whereOr([$m1,$m2,$m3,$m4,$m5])
  129. ->count();
  130. $data['count1'] += $count;
  131. // 入住的数量
  132. $m22 = $m;
  133. $m22[] = ['ht.cur_lessee_id','>',0];
  134. $m22[] = ['ht.status','=',0];
  135. $m1 = $m2 = $m3 = $m4 = $m5 = $m22;
  136. $m1[] = ['ht.number','like','%'.$title.'%'];
  137. $m2[] = ['hb.title','like','%'.$title.'%'];
  138. $m3[] = ['hc.title','like','%'.$title.'%'];
  139. $m4[] = ['hd.title','like','%'.$title.'%'];
  140. $m5[] = ['hl.title','like','%'.$title.'%'];
  141. $count1 = Db::name('house_turn')
  142. ->alias('ht')
  143. ->join('house_building hb','ht.building_id = hb.id')
  144. ->join('house_community hc','hb.community_id = hc.id')
  145. ->join('house_district hd','hc.district_id = hd.id')
  146. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  147. ->whereOr([$m1,$m2,$m3,$m4,$m5])
  148. ->count();
  149. $data['count2'] += $count1;
  150. // 重点人物使用
  151. $m33 = $m;
  152. $m33[] = ['ht.status','=',0];
  153. $m33[] = ['ht.important','=',1];
  154. $m1 = $m2 = $m3 = $m4 = $m5 = $m33;
  155. $m1[] = ['ht.number','like','%'.$title.'%'];
  156. $m2[] = ['hb.title','like','%'.$title.'%'];
  157. $m3[] = ['hc.title','like','%'.$title.'%'];
  158. $m4[] = ['hd.title','like','%'.$title.'%'];
  159. $m5[] = ['hl.title','like','%'.$title.'%'];
  160. $count2 = Db::name('house_turn')
  161. ->alias('ht')
  162. ->join('house_building hb','ht.building_id = hb.id')
  163. ->join('house_community hc','hb.community_id = hc.id')
  164. ->join('house_district hd','hc.district_id = hd.id')
  165. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  166. ->whereOr([$m1,$m2,$m3,$m4,$m5])
  167. ->count();
  168. $data['count5'] += $count2;
  169. // 交易的数量
  170. $m44 = $m;
  171. $m44[] = ['status','=',1];
  172. $m1 = $m2 = $m3 = $m4 = $m5 = $m44;
  173. $m1[] = ['ht.number','like','%'.$title.'%'];
  174. $m2[] = ['hb.title','like','%'.$title.'%'];
  175. $m3[] = ['hc.title','like','%'.$title.'%'];
  176. $m4[] = ['hd.title','like','%'.$title.'%'];
  177. $m5[] = ['hl.title','like','%'.$title.'%'];
  178. $count3 = Db::name('house_turn')
  179. ->alias('ht')
  180. ->join('house_building hb','ht.building_id = hb.id')
  181. ->join('house_community hc','hb.community_id = hc.id')
  182. ->join('house_district hd','hc.district_id = hd.id')
  183. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  184. ->whereOr([$m1,$m2,$m3,$m4,$m5])
  185. ->count();
  186. $data['count4'] += $count3;
  187. }else{
  188. $m[] = ['building_id','=',$v['id']];
  189. $m[] = ['level_id','in',$auths];
  190. $m[] = ['del','=',0];
  191. $m[] = ['enable','=',1];
  192. $count = Db::name('house_turn')->where($m)->count();
  193. $data['count1'] += $count;
  194. // 入住的数量
  195. $m2 = $m;
  196. $m2[] = ['cur_lessee_id','>',0];
  197. $m2[] = ['status','=',0];
  198. $count1 = Db::name('house_turn')->where($m2)->count();
  199. $data['count2'] += $count1;
  200. // 重点人物使用
  201. $m3 = $m;
  202. $m2[] = ['status','=',0];
  203. $m3[] = ['important','=',1];
  204. $count2 = Db::name('house_turn')->where($m3)->count();
  205. $data['count5'] += $count2;
  206. // 交易的数量
  207. $m4 = $m;
  208. $m4[] = ['status','=',1];
  209. $count3 = Db::name('house_turn')->where($m4)->count();
  210. $data['count4'] += $count3;
  211. }
  212. if($count > 0){
  213. $status = 3; // 蓝
  214. if($count1 == 0){
  215. $status = 2; // 黄
  216. }
  217. if($count2 > 0){
  218. $status = 1; // 红
  219. }
  220. if($count3 == $count){
  221. $status = 0; // 灰
  222. }
  223. $v['status'] = $status;
  224. if ($cate == 2) {
  225. $v['count'] = $count1;
  226. } else if ($cate == 3) {
  227. $v['count'] = $count - $count1 - $count3; // 空置的 = 总的 - 再用的 - 交易的
  228. } else if ($cate == 4) {
  229. $v['count'] = $count3;
  230. } else if ($cate == 5) {
  231. $v['count'] = $count2;
  232. }else{
  233. $v['count'] = $count;
  234. }
  235. if($v['count'] > 0&&$v['lng']){
  236. $newlist[] = $v;
  237. }
  238. }
  239. } else { // 经营性房产
  240. $m[] = ['hf.building_id','=',$v['id']];
  241. $m[] = ['ht.level_id','in',$auths];
  242. $m[] = ['ht.del','=',0];
  243. $m[] = ['ht.enable','=',1];
  244. if($title){
  245. $m1 = $m2 = $m3 = $m4 = $m5 = $m6 = $m7 = $m;
  246. $m1[] = ['ht.number','like','%'.$title.'%'];
  247. $m2[] = ['hb.title','like','%'.$title.'%'];
  248. $m3[] = ['hc.title','like','%'.$title.'%'];
  249. $m4[] = ['hd.title','like','%'.$title.'%'];
  250. $m5[] = ['hl.title','like','%'.$title.'%'];
  251. $m6[] = ['hf.title','like','%'.$title.'%'];
  252. $m7[] = ['hl.title','like','%'.$title.'%'];
  253. $count = Db::name('house')
  254. ->alias('ht')
  255. ->join('house_floor hf','hf.id = ht.floor_id')
  256. ->join('house_building hb','hf.building_id = hb.id')
  257. ->join('house_community hc','hb.community_id = hc.id')
  258. ->join('house_district hd','hc.district_id = hd.id')
  259. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  260. ->whereOr([$m1,$m2,$m3,$m4,$m5,$m6,$m7])
  261. ->count();
  262. $data['count1'] += $count;
  263. // 入住的数量
  264. $m22 = $m;
  265. $m22[] = ['ht.cur_lessee_id','>',0];
  266. $m1 = $m2 = $m3 = $m4 = $m5 = $m6 = $m7 = $m22;
  267. $m1[] = ['ht.number','like','%'.$title.'%'];
  268. $m2[] = ['hb.title','like','%'.$title.'%'];
  269. $m3[] = ['hc.title','like','%'.$title.'%'];
  270. $m4[] = ['hd.title','like','%'.$title.'%'];
  271. $m5[] = ['hl.title','like','%'.$title.'%'];
  272. $m6[] = ['hf.title','like','%'.$title.'%'];
  273. $m7[] = ['hl.title','like','%'.$title.'%'];
  274. $count1 = Db::name('house')
  275. ->alias('ht')
  276. ->join('house_floor hf','hf.id = ht.floor_id')
  277. ->join('house_building hb','hf.building_id = hb.id')
  278. ->join('house_community hc','hb.community_id = hc.id')
  279. ->join('house_district hd','hc.district_id = hd.id')
  280. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  281. ->whereOr([$m1,$m2,$m3,$m4,$m5,$m6,$m7])
  282. ->count();
  283. $data['count2'] += $count1;
  284. }else{
  285. $count = Db::name('house')
  286. ->alias('ht')
  287. ->join('house_floor hf','hf.id = ht.floor_id')
  288. ->where($m)
  289. ->count();
  290. $data['count1'] += $count;
  291. $m[] = ['ht.cur_lessee_id','>',0];
  292. $count2 = Db::name('house')
  293. ->alias('ht')
  294. ->join('house_floor hf','hf.id = ht.floor_id')
  295. ->where($m)
  296. ->count();
  297. $data['count2'] += $count2;
  298. }
  299. if($count > 0&&$v['lng']){
  300. $v['count'] = $count;
  301. $newlist[] = $v;
  302. }
  303. }
  304. }
  305. if($type == 1){
  306. $data['count3'] = $data['count1'] - $data['count2'] - $data['count5'];
  307. }else{
  308. $data['count3'] = $data['count1'] - $data['count2'] - $data['count4'];
  309. }
  310. $data['list'] = $newlist;
  311. return $data;
  312. }
  313. public function houseTurnList($userId,$orgId,$buildingId,$title,$cate){
  314. $auths = Db::name('house_auth')->where('user_id',$userId)->where('type',2)->value('ids');
  315. if(!$auths){
  316. return [
  317. 'total' => 0,
  318. 'list' => []
  319. ];
  320. }
  321. $map[] = ['ht.level_id','in',$auths];
  322. $map[] = ['ht.org_id','=',$orgId];
  323. $map[] = ['ht.del','=',0];
  324. $map[] = ['ht.enable','=',1];
  325. $map[] = ['ht.building_id','=',$buildingId];
  326. if($cate == 2){ //在用
  327. $map[] = ['ht.status','=',0];
  328. $map[] = ['ht.cur_lessee_id','>',0];
  329. }else if($cate == 3){ // 空置
  330. $map[] = ['ht.status','=',0];
  331. $map[] = ['ht.cur_lessee_id','=',0];
  332. }else if($cate == 4){ // 已交易
  333. $map[] = ['ht.status','=',1];
  334. }else if($cate == 5){ // 重点关注
  335. $map[] = ['ht.status','=',0];
  336. $map[] = ['ht.important','=',1];
  337. }
  338. if($title){
  339. $m1 = $m2 = $m3 = $m4 = $m5 = $map;
  340. $m1[] = ['ht.number','like','%'.$title.'%'];
  341. $m2[] = ['hb.title','like','%'.$title.'%'];
  342. $m3[] = ['hc.title','like','%'.$title.'%'];
  343. $m4[] = ['hd.title','like','%'.$title.'%'];
  344. $m5[] = ['hl.title','like','%'.$title.'%'];
  345. $lists = Db::name('house_turn')
  346. ->alias('ht')
  347. ->join('house_building hb','ht.building_id = hb.id')
  348. ->join('house_community hc','hb.community_id = hc.id')
  349. ->join('house_district hd','hc.district_id = hd.id')
  350. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  351. ->field('ht.id,ht.number,ht.tenant_area,ht.spec,ht.cur_lessee_id,hl.type,hl.title')
  352. ->whereOr([$m1,$m2,$m3,$m4,$m5])
  353. ->select();
  354. $count=Db::name('house_turn')
  355. ->alias('ht')
  356. ->join('house_building hb','ht.building_id = hb.id')
  357. ->join('house_community hc','hb.community_id = hc.id')
  358. ->join('house_district hd','hc.district_id = hd.id')
  359. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  360. ->field('ht.id,ht.number,ht.tenant_area,ht.spec,ht.cur_lessee_id,hl.type,hl.title')
  361. ->whereOr([$m1,$m2,$m3,$m4,$m5])
  362. ->count();
  363. }else{
  364. $lists = Db::name('house_turn')
  365. ->alias('ht')
  366. ->join('house_building hb','ht.building_id = hb.id')
  367. ->join('house_community hc','hb.community_id = hc.id')
  368. ->join('house_district hd','hc.district_id = hd.id')
  369. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  370. ->field('ht.id,ht.number,ht.tenant_area,ht.spec,ht.cur_lessee_id,hl.type,hl.title')
  371. ->where($map)
  372. ->select();
  373. $count=Db::name('house_turn')
  374. ->alias('ht')
  375. ->join('house_building hb','ht.building_id = hb.id')
  376. ->join('house_community hc','hb.community_id = hc.id')
  377. ->join('house_district hd','hc.district_id = hd.id')
  378. ->join('house_lessee hl','ht.cur_lessee_id = hl.id','left')
  379. ->field('ht.id,ht.number,ht.tenant_area,ht.spec,ht.cur_lessee_id,hl.type,hl.title')
  380. ->where($map)
  381. ->count();
  382. }
  383. $data = [
  384. 'total' => $count,
  385. 'list' => $lists
  386. ];
  387. return $data;
  388. }
  389. public function houseTurnDetails($id){
  390. $info = Db::name('house_turn')
  391. ->field('id,number,tenant_area,spec,remark,imgs,img2,create_time,update_time,level_id,building_id,cur_lessee_id,status,s_img,s_remark,s_time')
  392. ->where('id',$id)
  393. ->find();
  394. $level=Db::name('house_level')->where('id',$info['level_id'])->value('title');
  395. $building = Db::name('house_building')->where('id',$info['building_id'])->find();
  396. $community=Db::name('house_community')->where('id',$building['community_id'])->find();
  397. $districtTitle = Db::name('house_district')->where('id',$community['district_id'])->value('title');
  398. $lesseeTitle=Db::name('house_lessee')
  399. ->where('id',$info['cur_lessee_id'])
  400. ->value('title');
  401. $info['lesseeTitle']=$lesseeTitle;
  402. $info['addressTitle']=$districtTitle.$community['title'].$building['title'].$info['number'];
  403. $info['level']=$level;
  404. unset($info['building_id'],$info['cur_lessee_id'],$info['number'],$info['level_id']);
  405. if(!$info){
  406. HelpHander::error('数据不存在');
  407. }
  408. return $info;
  409. }
  410. public function houseFloor($userId,$orgId,$buildingId){
  411. $auths = Db::name('house_auth')->where('user_id',$userId)->where('type',1)->value('ids');
  412. if(!$auths){
  413. return [];
  414. }
  415. $m[] = ['hf.building_id','=',$buildingId];
  416. $m[] = ['ht.level_id','in',$auths];
  417. $m[] = ['ht.del','=',0];
  418. $m[] = ['ht.enable','=',1];
  419. $m[] = ['ht.org_id','=',$orgId];
  420. $lists = Db::name('house')
  421. ->alias('ht')
  422. ->join('house_floor hf','hf.id = ht.floor_id')
  423. ->where($m)
  424. ->group('hf.id')
  425. ->distinct(true)
  426. ->field('hf.id,hf.title,hf.img')
  427. ->select();
  428. return $lists?$lists:[];
  429. }
  430. }