Maintain.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. <?php
  2. namespace app\api\controller\worker;
  3. use app\common\controller\Api;
  4. use app\common\model\Maintain as Maintainmodel;
  5. use think\Db;
  6. /**
  7. * 保修
  8. */
  9. class Maintain extends Api
  10. {
  11. protected $noNeedLogin = [];
  12. protected $noNeedRight = ['*'];
  13. //订单列表
  14. public function lists(){
  15. $status = input('status',0);
  16. $map = [
  17. 'worker_id' => $this->auth->id,
  18. 'status' => $status,
  19. ];
  20. $list = Db::name('maintain')->field('id,orderno,createtime,info,filedata,status,eva_time')
  21. ->where($map)->order('id desc')
  22. ->autopage()->select();
  23. if(!empty($list)){
  24. $maintain_model = new Maintainmodel();
  25. foreach($list as $key => $val){
  26. $list[$key]['status_text'] = $maintain_model->status_data($val['status']);
  27. }
  28. }
  29. $this->success(1,$list);
  30. }
  31. //材料清单
  32. public function cailiao_list(){
  33. $id = input('order_id',0);
  34. $result = [];
  35. $list = Db::name('maintain_cailiao')->field('id,order_id,name,number,danwei,images')->where('order_id',$id)->order('id desc')->select();
  36. if(!empty($list)){
  37. $result = list_domain_image($list,['images']);
  38. }
  39. $this->success(1, $result);
  40. }
  41. //进度列表
  42. public function jindu_list(){
  43. $id = input('order_id',0);
  44. $map = [
  45. 'worker_id' => $this->auth->id,
  46. 'id' => $id,
  47. ];
  48. $info = Db::name('maintain')
  49. ->where($map)
  50. ->find();
  51. $result = [];
  52. if($info['weixiu_id'] > 0){
  53. $jindu_list = Db::name('maintain_jindu')->field('id,order_id,title,images,createtime')->where('weixiu_id',$info['weixiu_id'])->order('id desc')->select();
  54. if(!empty($jindu_list)){
  55. $result = list_domain_image($jindu_list,['images']);
  56. }
  57. }
  58. $this->success(1, $result);
  59. }
  60. //申请材料
  61. public function shenqingcailiao(){
  62. $order_id = input('order_id',0);
  63. $data = input('data','','htmlspecialchars_decode');
  64. $data = json_decode($data,true);
  65. if(empty($data)){
  66. $this->error();
  67. }
  68. Db::startTrans();
  69. //订单
  70. $map = [
  71. 'worker_id' => $this->auth->id,
  72. 'id' => $order_id,
  73. ];
  74. $info = Db::name('maintain')->where($map)->lock(true)->find();
  75. if(empty($info)){
  76. Db::rollback();
  77. $this->error('不存在的订单');
  78. }
  79. if($info['status'] != 50){
  80. Db::rollback();
  81. $this->error('状态不正确,请刷新重试');
  82. }
  83. $nowtime = time();
  84. //准备数据
  85. foreach($data as $key => $val){
  86. $val['order_id'] = $info['id'];
  87. $val['company_id'] = $info['company_id'];
  88. $val['user_id'] = $info['user_id'];
  89. $val['worker_id'] = $info['worker_id'];
  90. $val['createtime'] = $nowtime;
  91. $data[$key] = $val;
  92. }
  93. $id = Db::name('maintain_cailiao')->insertAll($data);
  94. if(!$id){
  95. Db::rollback();
  96. $this->error('申请失败');
  97. }
  98. $update = [
  99. 'status' => 60,
  100. 'updatetime' => $nowtime,
  101. 'cailiao_time' => $nowtime, //材料申请时间
  102. ];
  103. $rs2 = Db::name('maintain')->where('id',$order_id)->update($update);
  104. if($rs2 === false){
  105. Db::rollback();
  106. $this->error('申请失败');
  107. }
  108. Db::commit();
  109. $this->success('申请成功');
  110. }
  111. //材料计量单位
  112. public function cailiao_danwei(){
  113. $data = [
  114. '个',
  115. '把',
  116. '只',
  117. ];
  118. $this->success(1,$data);
  119. }
  120. //领取材料
  121. public function lingqucailiao(){
  122. $order_id = input('order_id',0);
  123. $images = input('images','','trim');
  124. if(empty($images)){
  125. $this->error();
  126. }
  127. //订单
  128. $map = [
  129. 'worker_id' => $this->auth->id,
  130. 'id' => $order_id,
  131. ];
  132. $info = Db::name('maintain')->where($map)->find();
  133. if(empty($info)){
  134. $this->error('不存在的订单');
  135. }
  136. if($info['status'] != 60){
  137. $this->error('状态不正确,请刷新重试');
  138. }
  139. $nowtime = time();
  140. //
  141. $update = [
  142. 'status' => 70,
  143. 'updatetime' => $nowtime,
  144. 'lingqu_time' => $nowtime, //材料申请时间
  145. 'lingqu_images' => $images,
  146. ];
  147. $rs2 = Db::name('maintain')->where('id',$order_id)->update($update);
  148. if($rs2 === false){
  149. $this->error('领取失败');
  150. }
  151. $this->success('领取成功');
  152. }
  153. //////////////////////////////循环开始///////////////////////
  154. //立即上门
  155. public function shangmen(){
  156. $order_id = input('order_id',0);
  157. Db::startTrans();
  158. //订单
  159. $map = [
  160. 'worker_id' => $this->auth->id,
  161. 'id' => $order_id,
  162. ];
  163. $info = Db::name('maintain')->where($map)->lock(true)->find();
  164. if(empty($info)){
  165. Db::rollback();
  166. $this->error('不存在的订单');
  167. }
  168. if(!in_array($info['status'],[50,70,92])){
  169. Db::rollback();
  170. $this->error('状态不正确,请刷新重试');
  171. }
  172. $nowtime = time();
  173. //开启一个新轮回
  174. $weixiu = [
  175. 'order_id' => $info['id'],
  176. 'company_id' => $info['company_id'],
  177. 'user_id' => $info['user_id'],
  178. 'worker_id' => $info['worker_id'],
  179. 'weixiu_times' => $info['weixiu_times'] + 1, //次数自增1
  180. 'shangmen_time' => $nowtime,
  181. 'status' => 80,
  182. 'updatetime' => $nowtime,
  183. ];
  184. $weixiu_id = Db::name('maintain_weixiu')->insertGetId($weixiu);
  185. if(!$weixiu_id){
  186. Db::rollback();
  187. $this->error('操作失败,重试一下吧');
  188. }
  189. //新轮回第一个进度
  190. $jindu = [
  191. 'order_id' => $info['id'],
  192. 'company_id' => $info['company_id'],
  193. 'user_id' => $info['user_id'],
  194. 'worker_id' => $info['worker_id'],
  195. 'weixiu_times' => $weixiu['weixiu_times'],
  196. 'weixiu_id' => $weixiu_id,
  197. 'title' => '已上门',
  198. 'createtime' => $nowtime,
  199. ];
  200. $jindu_id = Db::name('maintain_jindu')->insertGetId($jindu);
  201. if(!$jindu_id){
  202. Db::rollback();
  203. $this->error('操作失败,重试一下吧');
  204. }
  205. //修改订单
  206. $update = [
  207. 'status' => 80,
  208. 'updatetime' => $nowtime,
  209. 'shangmen_time' => $nowtime, //上门时间
  210. 'weixiu_times' => $weixiu['weixiu_times'],
  211. 'weixiu_id' => $weixiu_id,
  212. ];
  213. $rs2 = Db::name('maintain')->where('id',$order_id)->update($update);
  214. if($rs2 === false){
  215. Db::rollback();
  216. $this->error('操作失败,重试一下吧');
  217. }
  218. Db::commit();
  219. $this->success('已上门');
  220. }
  221. //新增维修进度
  222. public function jindu_add(){
  223. $order_id = input('order_id',0);
  224. $title = input('title','');
  225. $images = input('images','');
  226. if(empty($title)){
  227. $this->error();
  228. }
  229. //订单
  230. $map = [
  231. 'worker_id' => $this->auth->id,
  232. 'id' => $order_id,
  233. ];
  234. $info = Db::name('maintain')->where($map)->find();
  235. if(empty($info)){
  236. $this->error('不存在的订单');
  237. }
  238. if($info['status'] != 80){
  239. $this->error('状态不正确,请刷新重试');
  240. }
  241. $nowtime = time();
  242. //准备数据
  243. $jindu = [
  244. 'order_id' => $info['id'],
  245. 'company_id' => $info['company_id'],
  246. 'user_id' => $info['user_id'],
  247. 'worker_id' => $info['worker_id'],
  248. 'weixiu_times' => $info['weixiu_times'],
  249. 'weixiu_id' => $info['weixiu_id'],
  250. 'title' => $title,
  251. 'images' => $images,
  252. 'createtime' => $nowtime,
  253. ];
  254. $id = Db::name('maintain_jindu')->insertGetId($jindu);
  255. if(!$id){
  256. $this->error('记录失败');
  257. }
  258. $this->success('记录成功');
  259. }
  260. //确认完成
  261. public function wancheng(){
  262. $order_id = input('order_id',0);
  263. Db::startTrans();
  264. //订单
  265. $map = [
  266. 'worker_id' => $this->auth->id,
  267. 'id' => $order_id,
  268. ];
  269. $info = Db::name('maintain')->where($map)->lock(true)->find();
  270. if(empty($info)){
  271. Db::rollback();
  272. $this->error('不存在的订单');
  273. }
  274. if($info['status'] != 80){
  275. Db::rollback();
  276. $this->error('状态不正确,请刷新重试');
  277. }
  278. $nowtime = time();
  279. //结束最后一个轮回
  280. $weixiu = [
  281. 'status' => 90, //待验收
  282. 'wancheng_time' => $nowtime,
  283. 'updatetime' => $nowtime,
  284. ];
  285. $weixiu_rs = Db::name('maintain_weixiu')->where('id',$info['weixiu_id'])->update($weixiu);
  286. if($weixiu_rs === false){
  287. Db::rollback();
  288. $this->error('操作失败,重试一下吧');
  289. }
  290. //最后一个轮回,追加完成进度
  291. $jindu = [
  292. 'order_id' => $info['id'],
  293. 'company_id' => $info['company_id'],
  294. 'user_id' => $info['user_id'],
  295. 'worker_id' => $info['worker_id'],
  296. 'weixiu_times' => $info['weixiu_times'],
  297. 'weixiu_id' => $info['weixiu_id'],
  298. 'title' => '已完成',
  299. 'createtime' => $nowtime,
  300. ];
  301. $jindu_id = Db::name('maintain_jindu')->insertGetId($jindu);
  302. if(!$jindu_id){
  303. Db::rollback();
  304. $this->error('操作失败,重试一下吧');
  305. }
  306. //修改订单
  307. $update = [
  308. 'status' => 90,
  309. 'wancheng_time' => $nowtime,
  310. 'updatetime' => $nowtime,
  311. ];
  312. $rs2 = Db::name('maintain')->where('id',$order_id)->update($update);
  313. if($rs2 === false){
  314. Db::rollback();
  315. $this->error('操作失败,重试一下吧');
  316. }
  317. Db::commit();
  318. $this->success('操作成功');
  319. }
  320. //////////////////////////////循环结束///////////////////////
  321. }