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.
134 lines
5.2 KiB
134 lines
5.2 KiB
|
2 months ago
|
// 查询用户入驻相关数据
|
||
|
|
require('dotenv').config();
|
||
|
|
const { Sequelize } = require('sequelize');
|
||
|
|
|
||
|
|
// 创建数据库连接
|
||
|
|
const sequelize = new Sequelize(
|
||
|
|
process.env.DB_DATABASE || 'wechat_app',
|
||
|
|
process.env.DB_USER || 'root',
|
||
|
|
process.env.DB_PASSWORD === undefined ? null : process.env.DB_PASSWORD,
|
||
|
|
{
|
||
|
|
host: process.env.DB_HOST || 'localhost',
|
||
|
|
port: process.env.DB_PORT || 3306,
|
||
|
|
dialect: 'mysql',
|
||
|
|
timezone: '+08:00'
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
async function checkSettlementData() {
|
||
|
|
try {
|
||
|
|
await sequelize.authenticate();
|
||
|
|
console.log('✅ 数据库连接成功\n');
|
||
|
|
|
||
|
|
// 1. 查询所有用户的基本信息和入驻状态
|
||
|
|
console.log('=== 用户入驻状态检查 ===\n');
|
||
|
|
|
||
|
|
const users = await sequelize.query(`
|
||
|
|
SELECT
|
||
|
|
id, userId, openid, name, phoneNumber, type,
|
||
|
|
collaborationid, cooperation, company,
|
||
|
|
province, city, district, detailedaddress,
|
||
|
|
businesslicenseurl, proofurl, brandurl,
|
||
|
|
partnerstatus, reasonforfailure,
|
||
|
|
created_at, updated_at
|
||
|
|
FROM users
|
||
|
|
ORDER BY updated_at DESC
|
||
|
|
LIMIT 50
|
||
|
|
`, { type: Sequelize.QueryTypes.SELECT });
|
||
|
|
|
||
|
|
console.log(`找到 ${users.length} 个用户记录\n`);
|
||
|
|
|
||
|
|
// 2. 按入驻状态分组统计
|
||
|
|
const statusCount = {};
|
||
|
|
users.forEach(u => {
|
||
|
|
const status = u.partnerstatus || '未申请';
|
||
|
|
statusCount[status] = (statusCount[status] || 0) + 1;
|
||
|
|
});
|
||
|
|
|
||
|
|
console.log('📊 入驻状态统计:');
|
||
|
|
Object.entries(statusCount).forEach(([status, count]) => {
|
||
|
|
console.log(` ${status}: ${count} 人`);
|
||
|
|
});
|
||
|
|
console.log();
|
||
|
|
|
||
|
|
// 3. 显示每个用户的详细信息
|
||
|
|
console.log('👥 用户详细信息:');
|
||
|
|
console.log('='.repeat(100));
|
||
|
|
|
||
|
|
users.forEach((user, index) => {
|
||
|
|
console.log(`\n【用户 ${index + 1}】`);
|
||
|
|
console.log(` ID: ${user.id}`);
|
||
|
|
console.log(` userId: ${user.userId}`);
|
||
|
|
console.log(` openid: ${user.openid ? user.openid.substring(0, 20) + '...' : '空'}`);
|
||
|
|
console.log(` 姓名: ${user.name || '空'}`);
|
||
|
|
console.log(` 手机号: ${user.phoneNumber || '空'}`);
|
||
|
|
console.log(` 用户类型: ${user.type || '空'}`);
|
||
|
|
console.log(` ───── 入驻信息 ─────`);
|
||
|
|
console.log(` 合作商身份(collaborationid): ${user.collaborationid || '空'}`);
|
||
|
|
console.log(` 合作模式(cooperation): ${user.cooperation || '空'}`);
|
||
|
|
console.log(` 公司名称(company): ${user.company || '空'}`);
|
||
|
|
console.log(` 省份: ${user.province || '空'}`);
|
||
|
|
console.log(` 城市: ${user.city || '空'}`);
|
||
|
|
console.log(` 区县: ${user.district || '空'}`);
|
||
|
|
console.log(` 详细地址: ${user.detailedaddress || '空'}`);
|
||
|
|
console.log(` 营业执照: ${user.businesslicenseurl ? '已上传' : '空'}`);
|
||
|
|
console.log(` 证明材料: ${user.proofurl ? '已上传' : '空'}`);
|
||
|
|
console.log(` 品牌授权: ${user.brandurl ? '已上传' : '空'}`);
|
||
|
|
console.log(` ───── 审核状态 ─────`);
|
||
|
|
console.log(` 入驻状态(partnerstatus): ${user.partnerstatus || '空'}`);
|
||
|
|
console.log(` 失败原因: ${user.reasonforfailure || '空'}`);
|
||
|
|
console.log(` 创建时间: ${user.created_at}`);
|
||
|
|
console.log(` 更新时间: ${user.updated_at}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 4. 特别检查有openid但partnerstatus为空的记录
|
||
|
|
console.log('\n\n=== 重点检查:已登录但未提交入驻的用户 ===\n');
|
||
|
|
|
||
|
|
const notApplied = users.filter(u => u.openid && !u.partnerstatus);
|
||
|
|
console.log(`有 ${notApplied.length} 个用户已登录但未提交入驻申请`);
|
||
|
|
|
||
|
|
if (notApplied.length > 0) {
|
||
|
|
console.log('\n这些用户的openid:');
|
||
|
|
notApplied.forEach(u => {
|
||
|
|
console.log(` - userId: ${u.userId}, openid: ${u.openid.substring(0, 30)}...`);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 5. 检查是否有审核中的用户
|
||
|
|
console.log('\n\n=== 审核中的用户 ===\n');
|
||
|
|
const underReview = users.filter(u => u.partnerstatus === 'underreview');
|
||
|
|
console.log(`有 ${underReview.length} 个用户正在审核中`);
|
||
|
|
|
||
|
|
if (underReview.length > 0) {
|
||
|
|
underReview.forEach(u => {
|
||
|
|
console.log(` - userId: ${u.userId}, 公司: ${u.company || '空'}, 身份: ${u.collaborationid || '空'}`);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 6. 检查users表的字段结构
|
||
|
|
console.log('\n\n=== users表字段结构 ===\n');
|
||
|
|
const tableStructure = await sequelize.query('DESCRIBE users', { type: Sequelize.QueryTypes.SELECT });
|
||
|
|
const settlementFields = [
|
||
|
|
'collaborationid', 'cooperation', 'company', 'province', 'city', 'district',
|
||
|
|
'detailedaddress', 'businesslicenseurl', 'proofurl', 'brandurl',
|
||
|
|
'partnerstatus', 'reasonforfailure'
|
||
|
|
];
|
||
|
|
|
||
|
|
console.log('入驻相关字段:');
|
||
|
|
tableStructure.forEach(field => {
|
||
|
|
if (settlementFields.includes(field.Field)) {
|
||
|
|
console.log(` ${field.Field}: ${field.Type} ${field.Null === 'NO' ? 'NOT NULL' : ''} Default: ${field.Default || '无'}`);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error('❌ 查询失败:', error.message);
|
||
|
|
console.error(error.stack);
|
||
|
|
} finally {
|
||
|
|
await sequelize.close();
|
||
|
|
console.log('\n✅ 查询完成');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
checkSettlementData();
|