海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.6 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Models\Order;
  4. use App\Models\OrderProductItem;
  5. use App\Models\Product;
  6. use Illuminate\Support\Facades\DB;
  7. /**
  8. * 仅用于测试
  9. * Class TController
  10. * @package App\Http\Controllers\Api
  11. */
  12. class TestController
  13. {
  14. /*public function index()
  15. {
  16. //test
  17. $ids = Order::orderBy('id')->get(['id AS order_id', 'product_ids', 'agent_id', 'agent_product_id']);
  18. foreach ($ids as $v) {
  19. $item = Product::query()->whereIn('id', explode(',', $v['product_ids']))
  20. ->orderBy('id')->get(['id AS product_id', 'supplier_id'])->toArray();
  21. foreach ($item as $v2) {
  22. if (!OrderProductItem::query()->where(['order_id' => $v['order_id'], 'product_id' => $v2['product_id']])->exists()) {
  23. $v2['order_id'] = $v['order_id'];
  24. $v2['agent_id'] = $v['agent_id'];
  25. $v2['agent_product_id'] = $v['agent_product_id'];
  26. OrderProductItem::query()->create($v2);
  27. }
  28. }
  29. }
  30. return '';
  31. }*/
  32. public function index()
  33. {
  34. $handle = fopen(base_path('area.txt'), 'r');
  35. if ($handle) {
  36. DB::statement('TRUNCATE `areas`;');
  37. while (($line = fgets($handle, 4096)) !== false) {
  38. $line = trim($line);
  39. $last2 = substr($line, 4, 2); //区划码后2位
  40. $front2 = substr($line, 0, 2); //区划码前2位
  41. $front4 = substr($line, 0, 4); //区划码前4位
  42. //判断是否是直辖市,是直辖市则再插入一次上条记录作为二级联动
  43. if (isset($last4, $arr, $parent_arr[$front2]) && $last4 == '0000' && $last2 != '00') {
  44. $insert_id = DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => $parent_arr[$front2], 'name' => $arr[1]]);
  45. $parent_arr[$front4] = $insert_id;
  46. //对直辖市不做省直辖县处理,如:重庆市
  47. $parent_arr[$front2] = $insert_id;
  48. }
  49. $last4 = substr($line, 2, 4); //区划码后4位
  50. $arr = preg_split('/\s+/', $line);
  51. if (count($arr) !== 2) continue;
  52. if ($last4 == '0000') {
  53. $insert_id = DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => 0, 'name' => $arr[1]]);
  54. $parent_arr[$front2] = $insert_id;
  55. } else if ($last2 == '00') {
  56. $insert_id = DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => $parent_arr[$front2], 'name' => $arr[1]]);
  57. $parent_arr[$front4] = $insert_id;
  58. } else {
  59. //考虑到省直辖县级市情况,如:海南琼海市、湖北仙桃市等,但重庆市的省辖县除外(已在上面判断直辖市逻辑中做处理)
  60. $parent_id = $parent_arr[$front4] ?? $parent_arr[$front2];
  61. DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => $parent_id, 'name' => $arr[1]]);
  62. }
  63. }
  64. } else {
  65. return 'open file fail!';
  66. }
  67. return 'success';
  68. }}