更新服务器信息为新的 IP 地址,调整相关文档和代码中的默认配置,确保部署和连接的一致性。同时,优化订单管理界面,增强商品信息的格式化逻辑,提升用户体验。
This commit is contained in:
145
scripts/test-referral-config.js
Normal file
145
scripts/test-referral-config.js
Normal file
@@ -0,0 +1,145 @@
|
||||
/**
|
||||
* 测试推广配置读取和佣金计算
|
||||
* 用于验证配置值是否正确
|
||||
*/
|
||||
|
||||
const mysql = require('mysql2/promise')
|
||||
|
||||
const DB_CONFIG = {
|
||||
host: 'gz-cynosdbmysql-grp-kfcvxbby.sql.tencentcdb.com',
|
||||
port: 27815,
|
||||
user: 'root',
|
||||
password: 'Aa112211',
|
||||
database: 'soul_miniprogram',
|
||||
charset: 'utf8mb4'
|
||||
}
|
||||
|
||||
async function testConfig() {
|
||||
let connection
|
||||
|
||||
try {
|
||||
console.log('=' .repeat(60))
|
||||
console.log('推广配置测试')
|
||||
console.log('=' .repeat(60))
|
||||
console.log()
|
||||
|
||||
// 1. 连接数据库
|
||||
console.log('步骤 1: 连接数据库...')
|
||||
connection = await mysql.createConnection(DB_CONFIG)
|
||||
console.log('✅ 已连接到数据库:', DB_CONFIG.database)
|
||||
console.log()
|
||||
|
||||
// 2. 读取配置
|
||||
console.log('步骤 2: 读取推广配置...')
|
||||
console.log('-' .repeat(60))
|
||||
|
||||
const [configRows] = await connection.execute(
|
||||
`SELECT config_key, config_value FROM system_config WHERE config_key = 'referral_config'`
|
||||
)
|
||||
|
||||
if (configRows.length === 0) {
|
||||
console.log('⚠️ 数据库中没有 referral_config,使用默认值')
|
||||
console.log()
|
||||
console.log('默认配置:')
|
||||
console.log(' distributorShare: 90 (90%)')
|
||||
console.log(' minWithdrawAmount: 10')
|
||||
console.log(' bindingDays: 30')
|
||||
console.log(' userDiscount: 5')
|
||||
console.log()
|
||||
} else {
|
||||
const configValue = configRows[0].config_value
|
||||
let config
|
||||
|
||||
try {
|
||||
config = typeof configValue === 'string' ? JSON.parse(configValue) : configValue
|
||||
} catch (e) {
|
||||
console.error('❌ 配置解析失败:', e.message)
|
||||
return
|
||||
}
|
||||
|
||||
console.log('✅ 读取到的配置:')
|
||||
console.log(' distributorShare:', config.distributorShare, `(${config.distributorShare}%)`)
|
||||
console.log(' minWithdrawAmount:', config.minWithdrawAmount, '元')
|
||||
console.log(' bindingDays:', config.bindingDays, '天')
|
||||
console.log(' userDiscount:', config.userDiscount, `(${config.userDiscount}%)`)
|
||||
console.log(' enableAutoWithdraw:', config.enableAutoWithdraw)
|
||||
console.log()
|
||||
|
||||
// 3. 测试佣金计算
|
||||
console.log('步骤 3: 测试佣金计算...')
|
||||
console.log('-' .repeat(60))
|
||||
|
||||
const distributorShareRate = config.distributorShare / 100
|
||||
console.log('分成比例(计算用):', distributorShareRate)
|
||||
console.log()
|
||||
|
||||
// 测试用例
|
||||
const testCases = [
|
||||
{ amount: 1.00, desc: '购买1元商品' },
|
||||
{ amount: 0.95, desc: '购买1元商品(5%折扣后)' },
|
||||
{ amount: 9.90, desc: '购买全书9.9元' }
|
||||
]
|
||||
|
||||
console.log('佣金计算结果:')
|
||||
testCases.forEach(test => {
|
||||
const commission = Math.round(test.amount * distributorShareRate * 100) / 100
|
||||
console.log(` ${test.desc}:`)
|
||||
console.log(` 支付金额: ¥${test.amount.toFixed(2)}`)
|
||||
console.log(` 推荐人佣金: ¥${commission.toFixed(2)} (${(distributorShareRate * 100).toFixed(0)}%)`)
|
||||
console.log()
|
||||
})
|
||||
|
||||
// 4. 验证返回给小程序的值
|
||||
console.log('步骤 4: 验证返回给小程序的值...')
|
||||
console.log('-' .repeat(60))
|
||||
|
||||
const shareRate = Math.round(distributorShareRate * 100)
|
||||
console.log('返回给小程序的 shareRate:', shareRate, '%')
|
||||
console.log('小程序显示:', `"你获得 ${shareRate}% 收益"`)
|
||||
console.log()
|
||||
|
||||
// 5. 检查是否有异常
|
||||
console.log('步骤 5: 检查配置合理性...')
|
||||
console.log('-' .repeat(60))
|
||||
|
||||
const issues = []
|
||||
|
||||
if (config.distributorShare < 0 || config.distributorShare > 100) {
|
||||
issues.push(`❌ distributorShare 不在有效范围: ${config.distributorShare}`)
|
||||
}
|
||||
if (config.distributorShare < 50) {
|
||||
issues.push(`⚠️ distributorShare 偏低: ${config.distributorShare}% (通常应该 >= 50%)`)
|
||||
}
|
||||
if (config.distributorShare === 10) {
|
||||
issues.push(`❌ distributorShare = 10% 可能是配置错误!应该是 90%`)
|
||||
}
|
||||
if (config.minWithdrawAmount < 0) {
|
||||
issues.push(`❌ minWithdrawAmount 不能为负数: ${config.minWithdrawAmount}`)
|
||||
}
|
||||
if (config.bindingDays < 1) {
|
||||
issues.push(`❌ bindingDays 至少为1天: ${config.bindingDays}`)
|
||||
}
|
||||
|
||||
if (issues.length > 0) {
|
||||
console.log('发现问题:')
|
||||
issues.forEach(issue => console.log(' ' + issue))
|
||||
} else {
|
||||
console.log('✅ 所有配置值都在合理范围内')
|
||||
}
|
||||
console.log()
|
||||
}
|
||||
|
||||
console.log('=' .repeat(60))
|
||||
console.log('测试完成')
|
||||
console.log('=' .repeat(60))
|
||||
|
||||
} catch (error) {
|
||||
console.error('测试失败:', error)
|
||||
} finally {
|
||||
if (connection) {
|
||||
await connection.end()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
testConfig()
|
||||
Reference in New Issue
Block a user