where('id', '>', 0)->delete(); // DB::table('user')->where('id', '>', 0)->delete(); // DB::table('member')->where('id', '>', 0)->delete(); $now = time(); // 定义商家类型模板 $storeTemplates = [ ['name' => '餐厅', 'prefix' => 'restaurant', 'category_id' => 1], ['name' => '服装店', 'prefix' => 'clothing', 'category_id' => 2], ['name' => '咖啡厅', 'prefix' => 'coffee', 'category_id' => 3], ['name' => '健身房', 'prefix' => 'fitness', 'category_id' => 4], ['name' => '书店', 'prefix' => 'bookstore', 'category_id' => 5], ['name' => '超市', 'prefix' => 'supermarket', 'category_id' => 1], ['name' => '美容院', 'prefix' => 'beauty', 'category_id' => 2], ['name' => '药店', 'prefix' => 'pharmacy', 'category_id' => 3], ['name' => '电影院', 'prefix' => 'cinema', 'category_id' => 4], ['name' => '酒店', 'prefix' => 'hotel', 'category_id' => 5], ]; // 城市列表 $cities = [ '北京市朝阳区', '上海市浦东新区', '广州市天河区', '深圳市南山区', '杭州市西湖区', '成都市武侯区', '重庆市渝中区', '武汉市江汉区', '西安市雁塔区', '南京市鼓楼区', '天津市和平区', '苏州市姑苏区', '长沙市岳麓区', '郑州市金水区', '济南市历下区', ]; // 姓氏列表 $surnames = ['张', '李', '王', '刘', '陈', '杨', '赵', '黄', '周', '吴', '徐', '孙', '胡', '朱', '高', '林', '何', '郭', '马', '罗']; $names = ['伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞']; // 状态配置(按比例分配) $statusConfig = [ 1 => 70, // 70% 已审核(营业中) 2 => 20, // 20% 待审核 3 => 10, // 10% 审核失败 ]; // 生成测试数据(循环创建50条) $testData = []; $totalCount = 50; // 可以修改这个数字来生成更多或更少的数据 for ($i = 1; $i <= $totalCount; $i++) { // 随机选择商家类型 $template = $storeTemplates[array_rand($storeTemplates)]; // 随机选择城市 $city = $cities[array_rand($cities)]; // 随机生成姓名 $surname = $surnames[array_rand($surnames)]; $name = $names[array_rand($names)]; $realName = $surname . $name; // 根据比例随机分配状态 $rand = mt_rand(1, 100); if ($rand <= 70) { $status = 1; // 已审核 $confirmRemark = '审核通过'; } elseif ($rand <= 90) { $status = 2; // 待审核 $confirmRemark = ''; } else { $status = 3; // 审核失败 $confirmRemark = '资料不完整,请补充完善'; } // 随机生成订单数据 $orderCount = $status == 1 ? mt_rand(10, 500) : 0; $orderTotal = $status == 1 ? mt_rand(5000, 200000) + (mt_rand(0, 99) / 100) : 0.00; // 随机性别 $gender = mt_rand(1, 3); // 用户状态(10%概率禁用) $userStatus = mt_rand(1, 100) <= 90 ? 1 : 2; $memberStatus = $userStatus; // 生成唯一标识 $uniqueId = str_pad($i, 3, '0', STR_PAD_LEFT); $phone = '138' . str_pad($i, 8, '0', STR_PAD_LEFT); $testData[] = [ 'store' => [ 'name' => $template['name'] . $i . '号店', 'real_name' => $realName, 'phone' => $phone, 'address' => $city . mt_rand(1, 999) . '号', 'category_id' => $template['category_id'], 'sort' => 100 - $i, 'business_license' => '', 'other_photo' => '', 'order_count' => $orderCount, 'order_total' => $orderTotal, 'status' => $status, 'confirm_remark' => $confirmRemark, ], 'user' => [ 'realname' => $realName, 'nickname' => $template['name'] . '老板' . $i, 'gender' => $gender, 'avatar' => '', 'mobile' => $phone, 'email' => $template['prefix'] . $uniqueId . '@example.com', 'username' => $template['prefix'] . $uniqueId, 'password' => md5('123456'), 'salt' => Str::random(10), 'status' => $userStatus, ], 'member' => [ 'openid' => 'test_openid_' . $uniqueId, 'mobile' => $phone, 'user_type' => 2, 'password' => md5('123456'), 'realname' => $realName, 'nickname' => $template['name'] . $i . '号店', 'gender' => $gender, 'status' => $memberStatus, ] ]; } foreach ($testData as $index => $data) { DB::beginTransaction(); try { // 1. 先插入 member 表(会员表,获取 member.id) $memberId = DB::table('member')->insertGetId([ 'openid' => $data['member']['openid'], 'mobile' => $data['member']['mobile'], 'user_type' => $data['member']['user_type'], 'password' => $data['member']['password'], 'realname' => $data['member']['realname'], 'nickname' => $data['member']['nickname'], 'gender' => $data['member']['gender'], 'status' => $data['member']['status'], 'create_time' => $now, 'update_time' => $now, 'mark' => 1, ]); // 2. 插入 user 表(管理员表,user.user_id 关联 member.id) $userId = DB::table('user')->insertGetId([ 'user_id' => $memberId, // 关联会员ID 'realname' => $data['user']['realname'], 'nickname' => $data['user']['nickname'], 'gender' => $data['user']['gender'], 'avatar' => $data['user']['avatar'], 'mobile' => $data['user']['mobile'], 'email' => $data['user']['email'], 'username' => $data['user']['username'], 'password' => $data['user']['password'], 'salt' => $data['user']['salt'], 'status' => $data['user']['status'], 'sort' => 125, 'create_time' => $now, 'update_time' => $now, 'mark' => 1, ]); // 3. 插入 stores 表(商家表,store.user_id 关联 member.id) DB::table('stores')->insert([ 'user_id' => $memberId, // 关联会员ID,确保 user.user_id = member.id = store.user_id 'name' => $data['store']['name'], 'real_name' => $data['store']['real_name'], 'phone' => $data['store']['phone'], 'address' => $data['store']['address'], 'category_id' => $data['store']['category_id'], 'sort' => $data['store']['sort'], 'business_license' => $data['store']['business_license'], 'other_photo' => $data['store']['other_photo'], 'order_count' => $data['store']['order_count'], 'order_total' => $data['store']['order_total'], 'status' => $data['store']['status'], 'confirm_remark' => $data['store']['confirm_remark'], 'create_time' => $now, 'update_time' => $now, 'mark' => 1, ]); DB::commit(); echo "成功创建测试数据 #" . ($index + 1) . ": {$data['store']['name']}\n"; } catch (\Exception $e) { DB::rollBack(); echo "创建测试数据失败 #" . ($index + 1) . ": " . $e->getMessage() . "\n"; } } echo "\n测试数据生成完成!\n"; echo "共生成 " . count($testData) . " 条商家数据\n"; echo "所有账号密码均为: 123456\n"; } }