DeviceRepairController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace app\api\controller\store;
  3. use app\admin\model\store\DeviceRepair as DeviceRepairModel;
  4. //use think\Controller;
  5. use app\Request;
  6. use crmeb\services\UtilService;
  7. use think\facade\Validate;
  8. /**
  9. * 用户端设备报修表单控制器
  10. * 处理表单展示、提交验证
  11. */
  12. class DeviceRepairController
  13. {
  14. // /**
  15. // * 展示报修表单页面
  16. // * @return \think\response\View
  17. // */
  18. // public function index()
  19. // {
  20. // return $this->fetch();
  21. // }
  22. /**
  23. * 提交报修表单(AJAX接口)
  24. * @return \think\response\Json
  25. */
  26. public function submit(Request $request)
  27. {
  28. // 1. 获取表单数据
  29. // $data = Request::post([
  30. // 'device_name', // 设备名称
  31. // 'device_number', // 数量
  32. // 'order_id',
  33. // 'product_id',
  34. // 'repair_problem', // 报修问题
  35. // 'return_address', // 寄回地址
  36. // 'contact_name', // 联系人
  37. // 'contact_phone' // 联系电话
  38. // ]);
  39. list($device_name, $device_number, $order_id, $product_id, $repair_problem, $return_address, $contact_name, $contact_phone)= UtilService::postMore([
  40. 'device_name', // 设备名称
  41. 'device_number', // 数量
  42. 'order_id',
  43. 'product_id',
  44. 'repair_problem', // 报修问题
  45. 'return_address', // 寄回地址
  46. 'contact_name', // 联系人
  47. 'contact_phone' // 联系电话
  48. ], $request, true);
  49. // 2. 表单验证
  50. // $validate = Validate::make([
  51. // 'device_name' => 'require|max:100', // 设备名称必填,最多100字
  52. // 'device_number' => 'require|integer|min:1', // 数量必填,正整数
  53. // 'repair_problem' => 'require', // 问题描述必填
  54. // 'return_address' => 'require|max:255', // 地址必填,最多255字
  55. // 'contact_name' => 'require|max:50', // 联系人必填,最多50字
  56. // 'contact_phone' => 'require|mobile', // 电话必填,手机号格式
  57. // ], [
  58. // 'device_name.require' => '请填写设备名称',
  59. // 'device_number.require' => '请填写设备数量',
  60. // 'device_number.min' => '设备数量至少1台',
  61. // 'repair_problem.require' => '请描述报修问题',
  62. // 'return_address.require' => '请填写寄回地址',
  63. // 'contact_name.require' => '请填写联系人姓名',
  64. // 'contact_phone.require' => '请填写联系电话',
  65. // 'contact_phone.mobile' => '请填写正确的手机号'
  66. // ]);
  67. //
  68. // if (!$validate->check($data)) {
  69. // return json(['code' => 0, 'msg' => $validate->getError()]);
  70. // }
  71. if ($repair_problem == ''){
  72. return app('json')->fail('请描述报修问题');
  73. }
  74. if ($return_address == ''){
  75. return app('json')->fail('请填写寄回地址');
  76. }
  77. if ($contact_name == ''){
  78. return app('json')->fail('请填写联系人姓名');
  79. }
  80. if ($contact_phone == ''){
  81. return app('json')->fail('请填写联系电话');
  82. }
  83. if (!Validate::is($contact_phone,'mobile')){
  84. return app('json')->fail('请填写正确的手机号');
  85. }
  86. $data = [
  87. 'device_name' => $device_name,
  88. 'device_number' => $device_number,
  89. 'order_id' => $order_id,
  90. 'product_id' => $product_id,
  91. 'repair_problem' => $repair_problem,
  92. 'return_address' => $return_address,
  93. 'contact_name' => $contact_name,
  94. 'contact_phone' => $contact_phone
  95. ];
  96. $rs=DeviceRepairModel::where('order_id', $data['order_id'])->where('product_id', $data['product_id'])->find();
  97. if ($rs){
  98. // return json(['code' => 0, 'msg' => '您已提交过报修单,请勿重复提交']);
  99. return app('json')->fail('您已提交过报修单,请勿重复提交');
  100. }
  101. // 3. 提交表单到数据库
  102. $result = DeviceRepairModel::addRepairForm($data);
  103. if (!$result) {
  104. // return json(['code' => 0, 'msg' => '报修表单提交失败,请重试']);
  105. return app('json')->fail('报修表单提交失败,请重试');
  106. }
  107. // 4. 返回成功(带报修单号)
  108. return app('json')->successful($result);
  109. // return json([
  110. // 'code' => 200,
  111. // 'msg' => '报修表单提交成功',
  112. // 'data' => [
  113. // 'repair_sn' => $result['repair_sn'], // 自动生成的单号
  114. // ]
  115. // ]);
  116. }
  117. }