ShipEngineMaintenance.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. <?php
  2. namespace app\data\controller\api\auth;
  3. use app\data\controller\api\Auth;
  4. use app\data\model\DataUserAcceptance;
  5. use app\data\model\DataUserRepair;
  6. use app\data\model\DataUserRepairOffer;
  7. use think\admin\Storage;
  8. use think\db\Where;
  9. use think\exception\HttpResponseException;
  10. use think\admin\Controller;
  11. use hg\apidoc\annotation\Title;
  12. use hg\apidoc\annotation\Method;
  13. use hg\apidoc\annotation\Param;
  14. use hg\apidoc\annotation\Header;
  15. use hg\apidoc\annotation\Returned;
  16. use think\facade\Validate;
  17. /**
  18. * @Title("船机维修")
  19. */
  20. class ShipEngineMaintenance extends Auth
  21. {
  22. protected $noNeedLogin=[];
  23. /**
  24. * @Title("发布维修订单,修改维修订单")
  25. * @Method("post")
  26. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  27. * @Header("api-token",type="string",require=1,default="",desc="token")
  28. * @Param("imgs",type="string",require=0,default="",desc="图片,多个以英文逗号隔开")
  29. * @Param("start_time",type="string",require=1,default="",desc="维修开始时间")
  30. * @Param("end_time",type="string",require=1,default="",desc="维修结束时间")
  31. * @Param("province",type="string",require=1,default="",desc="省")
  32. * @Param("city",type="string",require=1,default="",desc="市")
  33. * @Param("area",type="string",require=1,default="",desc="区")
  34. * @Param("address",type="string",require=1,default="",desc="详细地址")
  35. * @Param("describe",type="string",require=1,default="",desc="故障描述")
  36. * @Param("quick",type="string",require=1,default="",desc="是否快修 1:否 2:是")
  37. * @Param("id",type="string",require=0,default="",desc="修改,则必传之前提交的ID")
  38. */
  39. public function subrepair()
  40. {
  41. $data = $this->_vali([
  42. 'uuid.default'=>$this->uuid,
  43. 'imgs.require'=>'产品图片必须',
  44. 'start_time.require'=>'维修开始时间必须',
  45. 'end_time.require'=>'维修结束时间必须',
  46. 'province.require'=>'省必须',
  47. 'city.require'=>'市必须',
  48. 'area.require'=>'区、镇必须',
  49. 'address.require'=>'详细地址必须',
  50. 'describe.require'=>'故障描述必须',
  51. 'quick.require|in:1,2'=>'是否快修必须'
  52. ]);
  53. $id = input('id');
  54. empty($id) ? $data['order_no'] = setorderno($this->uuid) : $data['update_at']=date('Y-m-d H:i:s');
  55. if (empty($id) ? DataUserRepair::mk()->insert($data) : DataUserRepair::mk()->where('id',$id)->update($data)){
  56. $this->success('成功');
  57. }
  58. $this->error('失败');
  59. }
  60. /**
  61. * @Title("快修单循环列表")
  62. * @Method("post")
  63. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  64. * @Header("api-token",type="string",require=1,default="",desc="token")
  65. */
  66. public function quicklist(){
  67. $list = DataUserRepair::mk()
  68. ->where('is_del',1)
  69. ->whereIn('status','1,2')
  70. ->where('quick',2)
  71. ->field('id,describe,uuid')
  72. ->with(['user'=>function($query){
  73. $query->field('id,headimg');
  74. }])
  75. ->select();
  76. $this->success('成功',$list);
  77. }
  78. /**
  79. * @Title("船机修理列表")
  80. * @Method("post")
  81. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  82. * @Header("api-token",type="string",require=1,default="",desc="token")
  83. * @Param("type",type="string",require=1,default="",desc="1:全部2:快修3:普修")
  84. */
  85. public function repairlist(){
  86. $data = $this->_vali([
  87. 'type.require|in:1,2,3'=>'type有误'
  88. ]);
  89. $type = $data['type'];
  90. $list = DataUserRepair::mk()
  91. ->where('is_del',1)
  92. ->whereIn('status','1,2')
  93. ->where(function ($query) use ($type){
  94. switch ($type){
  95. case 1:
  96. break;
  97. case 2:
  98. $query->where('quick',2);
  99. break;
  100. case 3:
  101. $query->where('quick',1);
  102. break;
  103. }
  104. })
  105. ->with(['user'=>function($query){
  106. $query->field('id,nickname,headimg');
  107. },'offer'=>function($query){
  108. $query->where('offer_id',$this->uuid);
  109. }])
  110. ->order('id desc')
  111. ->paginate();
  112. $this->success('成功',$list);
  113. }
  114. /**
  115. * @Title("船机修理详情")
  116. * @Method("post")
  117. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  118. * @Header("api-token",type="string",require=1,default="",desc="token")
  119. * @Param("id",type="string",require=1,default="",desc="主键ID")
  120. */
  121. public function repairdetail(){
  122. $data = $this->_vali([
  123. 'id.require'=>'id有误'
  124. ]);
  125. $info = DataUserRepair::mk()
  126. ->where('is_del',1)
  127. ->whereIn('status','1,2')
  128. ->where('id',$data['id'])
  129. ->with(['user'=>function($query){
  130. $query->field('id,phone,headimg,username,nickname');
  131. },'offer'=>function($query){
  132. $query->where('offer_id',$this->uuid);
  133. }])
  134. ->findOrEmpty();
  135. $this->success('成功',$info);
  136. }
  137. /**
  138. * @Title("立即报价")
  139. * @Method("post")
  140. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  141. * @Header("api-token",type="string",require=1,default="",desc="token")
  142. * @Param("id",type="string",require=1,default="",desc="主键ID")
  143. * @Param("price",type="string",require=0,default="",desc="报价金额")
  144. * @Param("imgs",type="string",require=1,default="",desc="图片及资质证明")
  145. */
  146. public function repairoffer(){
  147. $user = $this->getUser();
  148. if (!$user['is_maintenance']) $this->error('不是维修工,无法报价');
  149. $data = $this->_vali([
  150. 'id.require'=>'id必须',
  151. 'price.default'=>'0'
  152. // 'imgs.require'=>'图片及资质证明必须'
  153. ]);
  154. if(input('price')){
  155. $array['price'] = input('price');
  156. }else{
  157. DataUserRepairOffer::mk()->where(['repair_id'=>$data['id'],'offer_id'=>$this->uuid])->find()?$this->error('报价必须填写'):'';
  158. }
  159. DataUserRepair::mk()
  160. ->where('is_del',1)
  161. ->whereIn('status','1,2')
  162. ->where('id',$data['id'])
  163. ->count() ? : $this->error('订单不存在');
  164. $userdata = DataUserRepair::mk()->where('id',$data['id'])->value('uuid');
  165. if($user['id']==$userdata)$this->error('无法报价自己发的订单');
  166. $array = [
  167. 'repair_id'=>$data['id'],
  168. 'offer_id'=>$this->uuid,
  169. 'price'=>$data['price']
  170. // 'imgs'=>$data['imgs'],
  171. ];
  172. if (DataUserRepairOffer::mk()->insert($array) && DataUserRepair::mk()->where('id',$data['id'])->update(['status'=>2,'update_at'=>date('Y-m-d H:i:s')])){
  173. $this->success('成功');
  174. }
  175. $this->error('失败');
  176. }
  177. /**
  178. * @Title("报价信息")
  179. * @Method("post")
  180. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  181. * @Header("api-token",type="string",require=1,default="",desc="token")
  182. * @Param("id",type="string",require=1,default="",desc="主键ID")
  183. */
  184. public function offerinfo(){
  185. $data = $this->_vali([
  186. 'id.require'=>'id必须'
  187. ]);
  188. $list = DataUserRepairOffer::mk()
  189. ->where('repair_id',118)
  190. ->where('offer_id',114)
  191. ->field('id,price')
  192. ->select();
  193. foreach ($list as $k=>$v){
  194. if($v['price'] == 0.00){
  195. unset($list[$k]);
  196. }
  197. }
  198. $list = array_values($list->toArray());
  199. $imgs = array_filter(explode(',',DataUserRepairOffer::mk()->where('repair_id',118)
  200. ->where('offer_id',114)
  201. //->where('price','>',0)
  202. ->order('id desc')
  203. ->limit(1)
  204. ->value('imgs')));
  205. $this->success('成功',compact('list','imgs'));
  206. }
  207. /**
  208. * @Title("发布接单需求,修改接单需求")
  209. * @Method("post")
  210. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  211. * @Header("api-token",type="string",require=1,default="",desc="token")
  212. * @Param("name",type="string",require=0,default="",desc="姓名")
  213. * @Param("company_name",type="string",require=1,default="",desc="所在单位")
  214. * @Param("business_img",type="string",require=1,default="",desc="营业执照")
  215. * @Param("id_card_zheng",type="string",require=1,default="",desc="身份证正面")
  216. * @Param("id_card_fan",type="string",require=1,default="",desc="身份证反面")
  217. * @Param("phone",type="string",require=1,default="",desc="手机号")
  218. * @Param("email",type="string",require=1,default="",desc="邮箱")
  219. * @Param("address",type="string",require=1,default="",desc="地址")
  220. * @Param("job_resume",type="string",require=1,default="",desc="工作简历")
  221. * @Param("specialty",type="string",require=1,default="",desc="特长")
  222. * @Param("province",type="string",require=1,default="",desc="定位-省")
  223. * @Param("city",type="string",require=1,default="",desc="定位-市")
  224. * @Param("area",type="string",require=1,default="",desc="定位-区")
  225. * @Param("hidden",type="string",require=0,default="1",desc="1:不隐藏 2:隐藏")
  226. * @Param("id",type="string",require=0,default="",desc="修改,则必传之前提交的ID")
  227. */
  228. public function subacceptance()
  229. {
  230. $user = $this->getUser();
  231. if (!$user['is_maintenance']) $this->error('不是维修工,发布接单需求');
  232. $data = $this->_vali([
  233. 'uuid.default'=>$this->uuid,
  234. 'name.require'=>'姓名必须',
  235. 'company_name.require'=>'所在单位必须',
  236. 'business_img.require'=>'营业执照必须',
  237. 'id_card_zheng.require'=>'身份证正面必须',
  238. 'id_card_fan.require'=>'身份证反面必须',
  239. 'phone.require'=>'手机号必须',
  240. 'email.require'=>'邮箱必须',
  241. 'address.require'=>'地址必须',
  242. 'job_resume.require'=>'工作简历必须',
  243. 'specialty.require'=>'特长必须',
  244. 'province.require'=>'定位省必须',
  245. 'city.require'=>'定位市必须',
  246. 'area.require'=>'定位区必须',
  247. 'hidden.default'=>'1'
  248. ]);
  249. $id = input('id');
  250. empty($id) ? : $data['update_at']=date('Y-m-d H:i:s');
  251. empty($id) ? DataUserAcceptance::mk()->where('uuid',$this->uuid)->value('id') : '';
  252. if (empty($id) ? DataUserAcceptance::mk()->insert($data) : DataUserAcceptance::mk()->where('id',$id)->where('uuid',$this->uuid)->update($data)){
  253. $this->success('成功');
  254. }
  255. $this->error('失败');
  256. }
  257. /**
  258. * @Title("维修工列表")
  259. * @Method("post")
  260. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  261. * @Header("api-token",type="string",require=1,default="",desc="token")
  262. * @Param("keyword",type="string",require=0,default="",desc="关键词")
  263. */
  264. public function acceptancelist(){
  265. $data = $this->_vali([
  266. 'keyword.default'=>''
  267. ]);
  268. $keyword = $data['keyword'];
  269. $list = DataUserAcceptance::mk()
  270. ->where('hidden',1)
  271. ->when($keyword,function ($query) use ($keyword){
  272. $query->whereLike('name|company_name|phone|email|address','%'.$keyword.'%');
  273. })
  274. ->with(['user'=>function($query){
  275. $query->field('id,headimg');
  276. }])
  277. ->field('id,uuid,name,company_name,phone,province,city,area')
  278. ->order('id desc')
  279. ->paginate();
  280. $this->success('成功',$list);
  281. }
  282. /**
  283. * @Title("维修工详情")
  284. * @Method("post")
  285. * @Header("api-name",type="string",require=1,default="",desc="访问类型")
  286. * @Header("api-token",type="string",require=1,default="",desc="token")
  287. * @Param("id",type="string",require=1,default="",desc="主键ID")
  288. */
  289. public function acceptancedetail(){
  290. $data = $this->_vali([
  291. 'id.require'=>'id有误'
  292. ]);
  293. $info = DataUserAcceptance::mk()
  294. ->where('id',$data['id'])
  295. ->with(['user'=>function($query){
  296. $query->field('id,headimg');
  297. }])
  298. ->findOrEmpty();
  299. $this->success('成功',$info);
  300. }
  301. }