HouseContractPay.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. namespace app\common\model;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. use think\Model;
  6. class HouseContractPay extends Model
  7. {
  8. public function add(){
  9. $data = [
  10. 'id' => input('id/d',0),
  11. 'intro' => input('intro','','trim'),
  12. 'contract_id' => input('contractId/d',0),
  13. 'pay_date' => input('payDate','','trim'),
  14. 'remind_date' => input('remindDate','','trim'),
  15. 'remark' => input('remark','','trim'),
  16. 'files' => input('files','','trim'),
  17. 'sn' => input('sn','','trim'),
  18. 'org_id' => input('orgId/d',0),
  19. 'remind' => input('remind/d',0),
  20. 'status' => input('status/d',0),
  21. 'company' => input('company','','trim'),
  22. 'skcompany' => input('skcompany','','trim'),
  23. 'money' => input('money/f',0),
  24. 'pay_type' => input('payType','','trim'),
  25. 'user_id' => input('userId/d',0)
  26. ];
  27. $result = validate('HouseContractPay')->check($data,[],'');
  28. if(true !== $result){
  29. HelpHander::error(validate('HouseContractPay')->getError());
  30. }
  31. if(!$data['remind_date']){
  32. unset($data['remind_date']);
  33. }
  34. if(!$data['pay_date']){
  35. unset($data['pay_date']);
  36. }
  37. $id = $data['id'];
  38. unset($data['id']);
  39. if($id > 0){
  40. $ret = $this->allowField(true)->save($data,['id'=>$id]);
  41. }else{
  42. $ret = $this->allowField(true)->save($data);
  43. }
  44. if(!$ret){
  45. HelpHander::error('操作失败');
  46. }
  47. return true;
  48. }
  49. // 缴费通知单信息
  50. public function jfee($id){
  51. $info = Db::name('house_contract_pay')
  52. ->alias('hcp')
  53. ->join('house_contract hc','hc.id = hcp.contract_id')
  54. ->where('hcp.id',$id)
  55. ->where('hcp.del',0)
  56. ->field('hcp.*,hc.amount,hc.sn as contract_sn,hc.lessee_id')
  57. ->find();
  58. if($info){
  59. $info['lessee_name'] = Db::name('house_lessee')->where('id',$info['lessee_id'])->value('title');
  60. $houses = Db::name('house_contract_relation')
  61. ->alias('hcr')
  62. ->join('house h','h.id = hcr.house_id')
  63. ->join('house_floor hf','hf.id = h.floor_id')
  64. ->join('house_building hb','hb.id = hf.building_id')
  65. ->join('house_community hc','hc.id = hb.community_id')
  66. ->join('house_district hd','hd.id = hc.district_id')
  67. ->where('hcr.contract_id',$info['contract_id'])
  68. ->field('h.tenant_area,h.number,h.floor_id,hf.title as floorName,hb.title as buildingName,hc.title as communityName,hd.title as districtName')
  69. ->select();
  70. $totalarea = 0;
  71. $housenames = [];
  72. foreach ($houses as $k=>$v){
  73. $ta = $v['tenant_area']?$v['tenant_area']:0;
  74. $totalarea += $ta;
  75. $housenames[] = $v['districtName'].$v['communityName'].$v['buildingName'].$v['floorName'].$v['number'];
  76. }
  77. $info['totalarea'] = $totalarea;
  78. $info['housenames'] = implode(',',$housenames);
  79. }
  80. return $info;
  81. }
  82. public function jfees($ids){
  83. $lists = Db::name('house_contract_pay')
  84. ->alias('hcp')
  85. ->join('house_contract hc','hc.id = hcp.contract_id')
  86. ->where('hcp.id','in',explode(',',$ids))
  87. ->where('hcp.del',0)
  88. ->field('hcp.*,hc.amount,hc.sn as contract_sn,hc.lessee_id')
  89. ->select();
  90. $lists = $lists?$lists:[];
  91. foreach ($lists as $k=>$info){
  92. $lists[$k]['lessee_name'] = Db::name('house_lessee')->where('id',$info['lessee_id'])->value('title');
  93. $houses = Db::name('house_contract_relation')
  94. ->alias('hcr')
  95. ->join('house h','h.id = hcr.house_id')
  96. ->join('house_floor hf','hf.id = h.floor_id')
  97. ->join('house_building hb','hb.id = hf.building_id')
  98. ->join('house_community hc','hc.id = hb.community_id')
  99. ->join('house_district hd','hd.id = hc.district_id')
  100. ->where('hcr.contract_id',$info['contract_id'])
  101. ->field('h.tenant_area,h.number,h.floor_id,hf.title as floorName,hb.title as buildingName,hc.title as communityName,hd.title as districtName')
  102. ->select();
  103. $totalarea = 0;
  104. $housenames = [];
  105. foreach ($houses as $k=>$v){
  106. $ta = $v['tenant_area']?$v['tenant_area']:0;
  107. $totalarea += $ta;
  108. $housenames[] = $v['districtName'].$v['communityName'].$v['buildingName'].$v['floorName'].$v['number'];
  109. }
  110. $lists[$k]['totalarea'] = $totalarea;
  111. $lists[$k]['housenames'] = implode(',',$housenames);
  112. }
  113. return $lists;
  114. }
  115. public function del($id){
  116. $ret = $this->where('id',$id)->setField('del',1);
  117. if(!$ret){
  118. HelpHander::error('删除失败');
  119. }
  120. return true;
  121. }
  122. public function changeInvoice($id,$invoice=1,$userId){
  123. $ret = $this->where('id',$id)->update([
  124. 'invoice'=>$invoice,
  125. 'invoice_user_id'=>$userId,
  126. 'invoice_time'=>date('Y-m-d H:i:s')
  127. ]);
  128. if(!$ret){
  129. HelpHander::error('删除失败');
  130. }
  131. return true;
  132. }
  133. public function lists($page,$size,$intro,$contractId,$sn,$orgId){
  134. $map[] = ['del','=',0];
  135. $map[] = ['org_id','=',$orgId];
  136. if($intro != ''){
  137. $map[] = ['intro','like','%'.$intro.'%'];
  138. }
  139. if($sn != ''){
  140. $map[] = ['sn','like','%'.$sn.'%'];
  141. }
  142. if($contractId > 0){
  143. $map[] = ['contract_id','=',$contractId];
  144. }
  145. $lists = $this
  146. ->where($map)
  147. ->page($page,$size)
  148. ->order('id desc')
  149. ->select();
  150. $lists = $lists?$lists->toArray():[];
  151. foreach ($lists as $k=>$v){
  152. $files = $v['files']?json_decode($v['files'],true):[];
  153. $lists[$k]['filesUrl'] = empty($files)?'':$files[0]['url'];
  154. $lists[$k]['filesName'] = empty($files)?'':$files[0]['name'];
  155. $lists[$k]['userName'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name');
  156. $lists[$k]['invoiceUserName'] = Db::name('user_info')->where('user_id',$v['invoice_user_id'])->value('name');
  157. }
  158. $total = $this->where($map)->count();
  159. $data = [
  160. 'total' => $total,
  161. 'list' => $lists?$lists:[]
  162. ];
  163. return $data;
  164. }
  165. /**
  166. * 根据月份获取缴费金额
  167. * @param $month
  168. * @return mixed
  169. */
  170. public function getPayMoneyByMonth($month){
  171. $map[] = ['status','=',1];
  172. $map[] = ['del','=',0];
  173. $nextmonth = date('Y-m',strtotime(" +1 month",strtotime($month.'-01'))).'-01';
  174. $map[] = ['pay_date','>=',$month.'-01'];
  175. $map[] = ['pay_date','<',$nextmonth];
  176. $money = Db::name('house_contract_pay')
  177. ->where($map)
  178. ->sum('money');
  179. return $money;
  180. }
  181. }