DeviceRepairController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace app\controller\api;
  3. use app\admin\model\store\DeviceRepair as DeviceRepairModel;
  4. //use think\Controller;
  5. use app\Request;
  6. use think\facade\Validate;
  7. /**
  8. * 用户端设备报修表单控制器
  9. * 处理表单展示、提交验证
  10. */
  11. class DeviceRepair
  12. {
  13. /**
  14. * 展示报修表单页面
  15. * @return \think\response\View
  16. */
  17. // public function index()
  18. // {
  19. // return $this->fetch();
  20. // }
  21. /**
  22. * 提交报修表单(AJAX接口)
  23. * @return \think\response\Json
  24. */
  25. public function submit()
  26. {
  27. // 1. 获取表单数据
  28. $data = Request::post([
  29. 'device_name', // 设备名称
  30. 'device_number', // 数量
  31. 'order_id',
  32. 'product_id',
  33. 'repair_problem', // 报修问题
  34. 'return_address', // 寄回地址
  35. 'contact_name', // 联系人
  36. 'contact_phone' // 联系电话
  37. ]);
  38. // 2. 表单验证
  39. $validate = Validate::make([
  40. 'device_name' => 'require|max:100', // 设备名称必填,最多100字
  41. 'device_number' => 'require|integer|min:1', // 数量必填,正整数
  42. 'repair_problem' => 'require', // 问题描述必填
  43. 'return_address' => 'require|max:255', // 地址必填,最多255字
  44. 'contact_name' => 'require|max:50', // 联系人必填,最多50字
  45. 'contact_phone' => 'require|mobile', // 电话必填,手机号格式
  46. ], [
  47. 'device_name.require' => '请填写设备名称',
  48. 'device_number.require' => '请填写设备数量',
  49. 'device_number.min' => '设备数量至少1台',
  50. 'repair_problem.require' => '请描述报修问题',
  51. 'return_address.require' => '请填写寄回地址',
  52. 'contact_name.require' => '请填写联系人姓名',
  53. 'contact_phone.require' => '请填写联系电话',
  54. 'contact_phone.mobile' => '请填写正确的手机号'
  55. ]);
  56. if (!$validate->check($data)) {
  57. return json(['code' => 0, 'msg' => $validate->getError()]);
  58. }
  59. // 3. 提交表单到数据库
  60. $result = DeviceRepairModel::addRepairForm($data);
  61. if (!$result) {
  62. return json(['code' => 0, 'msg' => '报修表单提交失败,请重试']);
  63. }
  64. // 4. 返回成功(带报修单号)
  65. return json([
  66. 'code' => 200,
  67. 'msg' => '报修表单提交成功',
  68. 'data' => [
  69. 'repair_sn' => $result['repair_sn'], // 自动生成的单号
  70. 'tips' => '请保存单号,以便查询进度'
  71. ]
  72. ]);
  73. }
  74. }