main #2

Merged
jingrow merged 250 commits from main into v1 2026-01-13 22:45:50 +08:00
3 changed files with 331 additions and 65 deletions
Showing only changes of commit 98456a3fcf - Show all commits

View File

@ -36,7 +36,7 @@
/>
<button
@click="checkDomain"
:disabled="!domainName || isChecking"
:disabled="isChecking"
class="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 disabled:bg-gray-300 whitespace-nowrap"
>
{{ isChecking ? '查询中...' : '查询域名' }}
@ -102,9 +102,7 @@
HOT
</span>
</div>
<div v-if="suffix.price" class="text-xs mt-1 text-gray-500">
¥{{ suffix.price }}/
</div>
</button>
</div>
</div>
@ -369,46 +367,286 @@ export default {
{ key: 'ntd', label: '新顶级域名' },
{ key: 'country', label: '国家/地区域名' },
{ key: 'cn', label: 'CN域名' },
{ key: 'chinese', label: '中文域名' }
{ key: 'chinese', label: '中文域名' },
{ key: 'business', label: '商业域名' },
{ key: 'tech', label: '科技域名' },
{ key: 'creative', label: '创意域名' },
{ key: 'lifestyle', label: '生活域名' }
],
allSuffixes: [
{ value: '.com', label: '.com', hot: true, price: 50, category: 'com' },
{ value: '.cn', label: '.cn', hot: true, price: 50, category: 'cn' },
{ value: '.net', label: '.net', hot: true, price: 50, category: 'net' },
{ value: '.org', label: '.org', hot: true, price: 50, category: 'org' },
{ value: '.top', label: '.top', hot: true, price: 50, category: 'top' },
{ value: '.xyz', label: '.xyz', hot: true, price: 50, category: 'xyz' },
{ value: '.vip', label: '.vip', hot: true, price: 50, category: 'vip' },
{ value: '.site', label: '.site', hot: true, price: 50, category: 'site' },
{ value: '.shop', label: '.shop', hot: true, price: 50, category: 'shop' },
{ value: '.io', label: '.io', hot: true, price: 50, category: 'io' },
{ value: '.ai', label: '.ai', hot: true, price: 50, category: 'ai' },
{ value: '.me', label: '.me', hot: true, price: 50, category: 'me' },
{ value: '.co', label: '.co', hot: true, price: 50, category: 'co' },
{ value: '.dev', label: '.dev', hot: true, price: 50, category: 'dev' },
{ value: '.app', label: '.app', hot: true, price: 50, category: 'app' },
{ value: '.fun', label: '.fun', hot: false, price: 45, category: 'fun' },
{ value: '.tech', label: '.tech', hot: false, price: 45, category: 'tech' },
{ value: '.art', label: '.art', hot: true, price: 45, category: 'art' },
{ value: '.group', label: '.group', hot: false, price: 45, category: 'group' },
{ value: '.net.cn', label: '.net.cn', hot: false, price: 45, category: 'cn' },
{ value: '.work', label: '.work', hot: false, price: 45, category: 'work' },
{ value: '.asia', label: '.asia', hot: false, price: 45, category: 'asia' },
{ value: '.hk', label: '.hk', hot: true, price: 45, category: 'hk' },
{ value: '.cc', label: '.cc', hot: false, price: 45, category: 'cc' },
{ value: '.icu', label: '.icu', hot: true, price: 45, category: 'icu' },
{ value: '.online', label: '.online', hot: false, price: 45, category: 'online' },
{ value: '.xin', label: '.xin', hot: false, price: 45, category: 'xin' },
{ value: '.club', label: '.club', hot: true, price: 45, category: 'club' },
{ value: '.info', label: '.info', hot: false, price: 45, category: 'info' },
{ value: '.ink', label: '.ink', hot: false, price: 45, category: 'ink' },
{ value: '.love', label: '.love', hot: false, price: 45, category: 'love' },
{ value: '.store', label: '.store', hot: false, price: 45, category: 'store' },
{ value: '.中国', label: '.中国', hot: true, price: 45, category: 'chinese' },
{ value: '.网络', label: '.网络', hot: false, price: 45, category: 'chinese' },
{ value: '.公司', label: '.公司', hot: false, price: 45, category: 'chinese' },
{ value: '.org.cn', label: '.org.cn', hot: false, price: 45, category: 'cn' },
{ value: '.gov.cn', label: '.gov.cn', hot: false, price: 45, category: 'cn' }
// (gtd)
{ value: '.com', label: '.com', hot: true, category: 'gtd' },
{ value: '.net', label: '.net', hot: true, category: 'gtd' },
{ value: '.org', label: '.org', hot: true, category: 'gtd' },
{ value: '.info', label: '.info', hot: false, category: 'gtd' },
{ value: '.biz', label: '.biz', hot: false, category: 'gtd' },
// (ntd)
{ value: '.top', label: '.top', hot: true, category: 'ntd' },
{ value: '.xyz', label: '.xyz', hot: true, category: 'ntd' },
{ value: '.vip', label: '.vip', hot: true, category: 'ntd' },
{ value: '.site', label: '.site', hot: true, category: 'ntd' },
{ value: '.shop', label: '.shop', hot: true, category: 'ntd' },
{ value: '.club', label: '.club', hot: true, category: 'ntd' },
{ value: '.icu', label: '.icu', hot: true, category: 'ntd' },
{ value: '.online', label: '.online', hot: false, category: 'ntd' },
{ value: '.love', label: '.love', hot: false, category: 'ntd' },
{ value: '.store', label: '.store', hot: false, category: 'ntd' },
{ value: '.xin', label: '.xin', hot: false, category: 'ntd' },
{ value: '.ink', label: '.ink', hot: false, category: 'ntd' },
{ value: '.work', label: '.work', hot: false, category: 'ntd' },
{ value: '.fun', label: '.fun', hot: false, category: 'ntd' },
{ value: '.tech', label: '.tech', hot: false, category: 'ntd' },
{ value: '.art', label: '.art', hot: true, category: 'ntd' },
{ value: '.group', label: '.group', hot: false, category: 'ntd' },
{ value: '.app', label: '.app', hot: true, category: 'ntd' },
{ value: '.dev', label: '.dev', hot: true, category: 'ntd' },
{ value: '.io', label: '.io', hot: true, category: 'ntd' },
{ value: '.ai', label: '.ai', hot: true, category: 'ntd' },
{ value: '.me', label: '.me', hot: true, category: 'ntd' },
{ value: '.co', label: '.co', hot: true, category: 'ntd' },
{ value: '.town', label: '.town', hot: false, category: 'ntd' },
{ value: '.toys', label: '.toys', hot: false, category: 'ntd' },
{ value: '.trade', label: '.trade', hot: false, category: 'ntd' },
{ value: '.tips', label: '.tips', hot: false, category: 'ntd' },
{ value: '.tm', label: '.tm', hot: false, category: 'ntd' },
{ value: '.today', label: '.today', hot: false, category: 'ntd' },
{ value: '.tools', label: '.tools', hot: false, category: 'ntd' },
{ value: '.tv', label: '.tv', hot: false, category: 'ntd' },
{ value: '.tw', label: '.tw', hot: false, category: 'ntd' },
{ value: '.uno', label: '.uno', hot: false, category: 'ntd' },
{ value: '.vc', label: '.vc', hot: false, category: 'ntd' },
{ value: '.ventures', label: '.ventures', hot: false, category: 'ntd' },
{ value: '.vet', label: '.vet', hot: false, category: 'ntd' },
{ value: '.video', label: '.video', hot: false, category: 'ntd' },
{ value: '.vin', label: '.vin', hot: false, category: 'ntd' },
{ value: '.wang', label: '.wang', hot: false, category: 'ntd' },
{ value: '.watch', label: '.watch', hot: false, category: 'ntd' },
{ value: '.webcam', label: '.webcam', hot: false, category: 'ntd' },
{ value: '.website', label: '.website', hot: false, category: 'ntd' },
{ value: '.wiki', label: '.wiki', hot: false, category: 'ntd' },
{ value: '.win', label: '.win', hot: false, category: 'ntd' },
{ value: '.wine', label: '.wine', hot: false, category: 'ntd' },
{ value: '.works', label: '.works', hot: false, category: 'ntd' },
{ value: '.world', label: '.world', hot: false, category: 'ntd' },
{ value: '.wtf', label: '.wtf', hot: false, category: 'ntd' },
{ value: '.rent', label: '.rent', hot: false, category: 'ntd' },
{ value: '.review', label: '.review', hot: false, category: 'ntd' },
{ value: '.rip', label: '.rip', hot: false, category: 'ntd' },
{ value: '.run', label: '.run', hot: false, category: 'ntd' },
{ value: '.sale', label: '.sale', hot: false, category: 'ntd' },
{ value: '.school', label: '.school', hot: false, category: 'ntd' },
{ value: '.science', label: '.science', hot: false, category: 'ntd' },
{ value: '.services', label: '.services', hot: false, category: 'ntd' },
{ value: '.sex', label: '.sex', hot: false, category: 'ntd' },
{ value: '.sexy', label: '.sexy', hot: false, category: 'ntd' },
{ value: '.shopping', label: '.shopping', hot: false, category: 'ntd' },
{ value: '.show', label: '.show', hot: false, category: 'ntd' },
{ value: '.skin', label: '.skin', hot: false, category: 'ntd' },
{ value: '.social', label: '.social', hot: false, category: 'ntd' },
{ value: '.software', label: '.software', hot: false, category: 'ntd' },
{ value: '.solutions', label: '.solutions', hot: false, category: 'ntd' },
{ value: '.space', label: '.space', hot: false, category: 'ntd' },
{ value: '.studio', label: '.studio', hot: false, category: 'ntd' },
{ value: '.style', label: '.style', hot: false, category: 'ntd' },
{ value: '.support', label: '.support', hot: false, category: 'ntd' },
{ value: '.tax', label: '.tax', hot: false, category: 'ntd' },
{ value: '.team', label: '.team', hot: false, category: 'ntd' },
{ value: '.technology', label: '.technology', hot: false, category: 'ntd' },
{ value: '.organic', label: '.organic', hot: false, category: 'ntd' },
{ value: '.party', label: '.party', hot: false, category: 'ntd' },
{ value: '.pet', label: '.pet', hot: false, category: 'ntd' },
{ value: '.news', label: '.news', hot: false, category: 'ntd' },
{ value: '.ooo', label: '.ooo', hot: false, category: 'ntd' },
{ value: '.network', label: '.network', hot: false, category: 'ntd' },
{ value: '.mobi', label: '.mobi', hot: false, category: 'ntd' },
{ value: '.mom', label: '.mom', hot: false, category: 'ntd' },
{ value: '.money', label: '.money', hot: false, category: 'ntd' },
{ value: '.monster', label: '.monster', hot: false, category: 'ntd' },
{ value: '.motorcycles', label: '.motorcycles', hot: false, category: 'ntd' },
{ value: '.photo', label: '.photo', hot: false, category: 'ntd' },
{ value: '.photography', label: '.photography', hot: false, category: 'ntd' },
{ value: '.photos', label: '.photos', hot: false, category: 'ntd' },
{ value: '.pics', label: '.pics', hot: false, category: 'ntd' },
{ value: '.pink', label: '.pink', hot: false, category: 'ntd' },
{ value: '.plus', label: '.plus', hot: false, category: 'ntd' },
{ value: '.press', label: '.press', hot: false, category: 'ntd' },
{ value: '.pro', label: '.pro', hot: false, category: 'ntd' },
{ value: '.property', label: '.property', hot: false, category: 'ntd' },
{ value: '.pub', label: '.pub', hot: false, category: 'ntd' },
{ value: '.pw', label: '.pw', hot: false, category: 'ntd' },
{ value: '.qpon', label: '.qpon', hot: false, category: 'ntd' },
{ value: '.quest', label: '.quest', hot: false, category: 'ntd' },
{ value: '.racing', label: '.racing', hot: false, category: 'ntd' },
{ value: '.red', label: '.red', hot: false, category: 'ntd' },
{ value: '.ren', label: '.ren', hot: false, category: 'ntd' },
{ value: '.ing', label: '.ing', hot: false, category: 'ntd' },
{ value: '.kim', label: '.kim', hot: false, category: 'ntd' },
{ value: '.la', label: '.la', hot: false, category: 'ntd' },
{ value: '.land', label: '.land', hot: false, category: 'ntd' },
{ value: '.law', label: '.law', hot: false, category: 'ntd' },
{ value: '.lawyer', label: '.lawyer', hot: false, category: 'ntd' },
{ value: '.lc', label: '.lc', hot: false, category: 'ntd' },
{ value: '.life', label: '.life', hot: false, category: 'ntd' },
{ value: '.link', label: '.link', hot: false, category: 'ntd' },
{ value: '.live', label: '.live', hot: false, category: 'ntd' },
{ value: '.loan', label: '.loan', hot: false, category: 'ntd' },
{ value: '.lol', label: '.lol', hot: false, category: 'ntd' },
{ value: '.ltd', label: '.ltd', hot: false, category: 'ntd' },
{ value: '.luxe', label: '.luxe', hot: false, category: 'ntd' },
{ value: '.makeup', label: '.makeup', hot: false, category: 'ntd' },
{ value: '.market', label: '.market', hot: false, category: 'ntd' },
{ value: '.marketing', label: '.marketing', hot: false, category: 'ntd' },
{ value: '.mba', label: '.mba', hot: false, category: 'ntd' },
{ value: '.media', label: '.media', hot: false, category: 'ntd' },
{ value: '.men', label: '.men', hot: false, category: 'ntd' },
{ value: '.city', label: '.city', hot: false, category: 'ntd' },
{ value: '.click', label: '.click', hot: false, category: 'ntd' },
{ value: '.clothing', label: '.clothing', hot: false, category: 'ntd' },
{ value: '.cloud', label: '.cloud', hot: false, category: 'ntd' },
{ value: '.ceo', label: '.ceo', hot: false, category: 'ntd' },
{ value: '.cfd', label: '.cfd', hot: false, category: 'ntd' },
{ value: '.chat', label: '.chat', hot: false, category: 'ntd' },
{ value: '.center', label: '.center', hot: false, category: 'ntd' },
{ value: '.cards', label: '.cards', hot: false, category: 'ntd' },
{ value: '.cash', label: '.cash', hot: false, category: 'ntd' },
{ value: '.cab', label: '.cab', hot: false, category: 'ntd' },
{ value: '.cafe', label: '.cafe', hot: false, category: 'ntd' },
{ value: '.camera', label: '.camera', hot: false, category: 'ntd' },
{ value: '.car', label: '.car', hot: false, category: 'ntd' },
{ value: '.coffee', label: '.coffee', hot: false, category: 'ntd' },
{ value: '.college', label: '.college', hot: false, category: 'ntd' },
{ value: '.accountant', label: '.accountant', hot: false, category: 'ntd' },
{ value: '.auction', label: '.auction', hot: false, category: 'ntd' },
{ value: '.audio', label: '.audio', hot: false, category: 'ntd' },
{ value: '.autos', label: '.autos', hot: false, category: 'ntd' },
{ value: '.baby', label: '.baby', hot: false, category: 'ntd' },
{ value: '.band', label: '.band', hot: false, category: 'ntd' },
{ value: '.bar', label: '.bar', hot: false, category: 'ntd' },
{ value: '.beauty', label: '.beauty', hot: false, category: 'ntd' },
{ value: '.beer', label: '.beer', hot: false, category: 'ntd' },
{ value: '.best', label: '.best', hot: false, category: 'ntd' },
{ value: '.bet', label: '.bet', hot: false, category: 'ntd' },
{ value: '.bid', label: '.bid', hot: false, category: 'ntd' },
{ value: '.bike', label: '.bike', hot: false, category: 'ntd' },
{ value: '.bio', label: '.bio', hot: false, category: 'ntd' },
{ value: '.black', label: '.black', hot: false, category: 'ntd' },
{ value: '.blog', label: '.blog', hot: false, category: 'ntd' },
{ value: '.blue', label: '.blue', hot: false, category: 'ntd' },
{ value: '.boats', label: '.boats', hot: false, category: 'ntd' },
{ value: '.bond', label: '.bond', hot: false, category: 'ntd' },
{ value: '.business', label: '.business', hot: false, category: 'ntd' },
{ value: '.buzz', label: '.buzz', hot: false, category: 'ntd' },
{ value: '.bz', label: '.bz', hot: false, category: 'ntd' },
{ value: '.construction', label: '.construction', hot: false, category: 'ntd' },
{ value: '.cool', label: '.cool', hot: false, category: 'ntd' },
{ value: '.credit', label: '.credit', hot: false, category: 'ntd' },
{ value: '.cricket', label: '.cricket', hot: false, category: 'ntd' },
{ value: '.cx', label: '.cx', hot: false, category: 'ntd' },
{ value: '.cyou', label: '.cyou', hot: false, category: 'ntd' },
{ value: '.date', label: '.date', hot: false, category: 'ntd' },
{ value: '.design', label: '.design', hot: false, category: 'ntd' },
{ value: '.diet', label: '.diet', hot: false, category: 'ntd' },
{ value: '.dog', label: '.dog', hot: false, category: 'ntd' },
{ value: '.domains', label: '.domains', hot: false, category: 'ntd' },
{ value: '.download', label: '.download', hot: false, category: 'ntd' },
{ value: '.email', label: '.email', hot: false, category: 'ntd' },
{ value: '.engineer', label: '.engineer', hot: false, category: 'ntd' },
{ value: '.gs', label: '.gs', hot: false, category: 'ntd' },
{ value: '.equipment', label: '.equipment', hot: false, category: 'ntd' },
{ value: '.estate', label: '.estate', hot: false, category: 'ntd' },
{ value: '.expert', label: '.expert', hot: false, category: 'ntd' },
{ value: '.faith', label: '.faith', hot: false, category: 'ntd' },
{ value: '.family', label: '.family', hot: false, category: 'ntd' },
{ value: '.fan', label: '.fan', hot: false, category: 'ntd' },
{ value: '.fans', label: '.fans', hot: false, category: 'ntd' },
{ value: '.fashion', label: '.fashion', hot: false, category: 'ntd' },
{ value: '.feedback', label: '.feedback', hot: false, category: 'ntd' },
{ value: '.fish', label: '.fish', hot: false, category: 'ntd' },
{ value: '.fit', label: '.fit', hot: false, category: 'ntd' },
{ value: '.flowers', label: '.flowers', hot: false, category: 'ntd' },
{ value: '.fund', label: '.fund', hot: false, category: 'ntd' },
{ value: '.fyi', label: '.fyi', hot: false, category: 'ntd' },
{ value: '.game', label: '.game', hot: false, category: 'ntd' },
{ value: '.games', label: '.games', hot: false, category: 'ntd' },
{ value: '.gg', label: '.gg', hot: false, category: 'ntd' },
{ value: '.gift', label: '.gift', hot: false, category: 'ntd' },
{ value: '.gives', label: '.gives', hot: false, category: 'ntd' },
{ value: '.global', label: '.global', hot: false, category: 'ntd' },
{ value: '.gold', label: '.gold', hot: false, category: 'ntd' },
{ value: '.green', label: '.green', hot: false, category: 'ntd' },
{ value: '.guru', label: '.guru', hot: false, category: 'ntd' },
{ value: '.hair', label: '.hair', hot: false, category: 'ntd' },
{ value: '.haus', label: '.haus', hot: false, category: 'ntd' },
{ value: '.help', label: '.help', hot: false, category: 'ntd' },
{ value: '.holiday', label: '.holiday', hot: false, category: 'ntd' },
{ value: '.homes', label: '.homes', hot: false, category: 'ntd' },
{ value: '.host', label: '.host', hot: false, category: 'ntd' },
{ value: '.hosting', label: '.hosting', hot: false, category: 'ntd' },
{ value: '.house', label: '.house', hot: false, category: 'ntd' },
{ value: '.xxx', label: '.xxx', hot: false, category: 'ntd' },
{ value: '.yachts', label: '.yachts', hot: false, category: 'ntd' },
{ value: '.yoga', label: '.yoga', hot: false, category: 'ntd' },
{ value: '.zone', label: '.zone', hot: false, category: 'ntd' },
// / (country)
{ value: '.cn', label: '.cn', hot: true, category: 'country' },
{ value: '.hk', label: '.hk', hot: true, category: 'country' },
{ value: '.asia', label: '.asia', hot: false, category: 'country' },
{ value: '.cc', label: '.cc', hot: false, category: 'country' },
{ value: '.sc', label: '.sc', hot: false, category: 'country' },
{ value: '.tw', label: '.tw', hot: false, category: 'country' },
{ value: '.tv', label: '.tv', hot: false, category: 'country' },
// CN (cn)
{ value: '.net.cn', label: '.net.cn', hot: false, category: 'cn' },
{ value: '.org.cn', label: '.org.cn', hot: false, category: 'cn' },
{ value: '.gov.cn', label: '.gov.cn', hot: false, category: 'cn' },
{ value: '.cn.com', label: '.cn.com', hot: false, category: 'cn' },
{ value: '.com.hk', label: '.com.hk', hot: false, category: 'cn' },
{ value: '.com.tw', label: '.com.tw', hot: false, category: 'cn' },
{ value: '.net.co', label: '.net.co', hot: false, category: 'cn' },
{ value: '.com.co', label: '.com.co', hot: false, category: 'cn' },
// (chinese)
{ value: '.中国', label: '.中国', hot: true, category: 'chinese' },
{ value: '.网络', label: '.网络', hot: false, category: 'chinese' },
{ value: '.网址', label: '.网址', hot: false, category: 'chinese' },
{ value: '.商标', label: '.商标', hot: false, category: 'chinese' },
{ value: '.世界', label: '.世界', hot: false, category: 'chinese' },
{ value: '.集团', label: '.集团', hot: false, category: 'chinese' },
{ value: '.我爱你', label: '.我爱你', hot: false, category: 'chinese' },
{ value: '.餐厅', label: '.餐厅', hot: false, category: 'chinese' },
{ value: '.购物', label: '.购物', hot: false, category: 'chinese' },
{ value: '.健康', label: '.健康', hot: false, category: 'chinese' },
{ value: '.企业', label: '.企业', hot: false, category: 'chinese' },
{ value: '.商店', label: '.商店', hot: false, category: 'chinese' },
{ value: '.网店', label: '.网店', hot: false, category: 'chinese' },
{ value: '.娱乐', label: '.娱乐', hot: false, category: 'chinese' },
{ value: '.游戏', label: '.游戏', hot: false, category: 'chinese' },
{ value: '.招聘', label: '.招聘', hot: false, category: 'chinese' },
{ value: '.佛山', label: '.佛山', hot: false, category: 'chinese' },
{ value: '.广东', label: '.广东', hot: false, category: 'chinese' },
{ value: '.公司', label: '.公司', hot: false, category: 'chinese' },
{ value: '.信息', label: '.信息', hot: false, category: 'chinese' },
{ value: '.中文网', label: '.中文网', hot: false, category: 'chinese' },
{ value: '.在线', label: '.在线', hot: false, category: 'chinese' },
{ value: '.网址', label: '.网址', hot: false, category: 'chinese' },
{ value: '.商标', label: '.商标', hot: false, category: 'chinese' },
{ value: '.世界', label: '.世界', hot: false, category: 'chinese' },
{ value: '.集团', label: '.集团', hot: false, category: 'chinese' },
{ value: '.我爱你', label: '.我爱你', hot: false, category: 'chinese' },
{ value: '.餐厅', label: '.餐厅', hot: false, category: 'chinese' },
{ value: '.购物', label: '.购物', hot: false, category: 'chinese' },
{ value: '.健康', label: '.健康', hot: false, category: 'chinese' },
{ value: '.企业', label: '.企业', hot: false, category: 'chinese' },
{ value: '.商店', label: '.商店', hot: false, category: 'chinese' },
{ value: '.网店', label: '.网店', hot: false, category: 'chinese' },
{ value: '.娱乐', label: '.娱乐', hot: false, category: 'chinese' },
{ value: '.游戏', label: '.游戏', hot: false, category: 'chinese' },
{ value: '.招聘', label: '.招聘', hot: false, category: 'chinese' },
{ value: '.佛山', label: '.佛山', hot: false, category: 'chinese' },
{ value: '.广东', label: '.广东', hot: false, category: 'chinese' }
]
};
},
@ -424,15 +662,23 @@ export default {
if (this.selectedCategory === 'popular') {
suffixes = suffixes.filter(s => s.hot);
} else if (this.selectedCategory === 'gtd') {
suffixes = suffixes.filter(s => ['.com', '.net', '.org', '.info'].includes(s.value));
suffixes = suffixes.filter(s => s.category === 'gtd');
} else if (this.selectedCategory === 'ntd') {
suffixes = suffixes.filter(s => ['.xyz', '.top', '.vip', '.site', '.shop', '.club', '.icu', '.online', '.love', '.store'].includes(s.value));
suffixes = suffixes.filter(s => s.category === 'ntd');
} else if (this.selectedCategory === 'country') {
suffixes = suffixes.filter(s => ['.cn', '.hk', '.asia', '.cc'].includes(s.value));
suffixes = suffixes.filter(s => s.category === 'country');
} else if (this.selectedCategory === 'cn') {
suffixes = suffixes.filter(s => s.value.includes('.cn'));
suffixes = suffixes.filter(s => s.category === 'cn');
} else if (this.selectedCategory === 'chinese') {
suffixes = suffixes.filter(s => s.category === 'chinese');
} else if (this.selectedCategory === 'business') {
suffixes = suffixes.filter(s => ['.com', '.biz', '.business', '.shop', '.store', '.market', '.trade', '.sale', '.commerce', '.company', '.enterprise', '.corp', '.inc', '.ltd'].includes(s.value));
} else if (this.selectedCategory === 'tech') {
suffixes = suffixes.filter(s => ['.tech', '.technology', '.ai', '.io', '.dev', '.app', '.software', '.digital', '.cloud', '.data', '.api', '.code', '.hack', '.lab', '.studio'].includes(s.value));
} else if (this.selectedCategory === 'creative') {
suffixes = suffixes.filter(s => ['.art', '.design', '.creative', '.studio', '.gallery', '.photo', '.photography', '.video', '.media', '.film', '.music', '.band', '.show', '.stage'].includes(s.value));
} else if (this.selectedCategory === 'lifestyle') {
suffixes = suffixes.filter(s => ['.life', '.lifestyle', '.health', '.fitness', '.beauty', '.fashion', '.style', '.luxury', '.premium', '.elite', '.vip', '.exclusive', '.boutique', '.spa', '.wellness'].includes(s.value));
}
//

View File

@ -6,8 +6,11 @@ import requests
import time
import hashlib
import json
import random
from datetime import datetime
from urllib.parse import urlencode
from typing import Dict, Any, Optional, List
from jcloud.utils import get_current_team
class WestDomain:
@ -691,16 +694,20 @@ def create_domain_order(domain, period=1, payment_method='balance'):
if not client:
return {"success": False, "message": "API客户端初始化失败"}
price_result = client.get_domain_price(domain, 1)
# 获取域名价格 - 使用统一的 get_west_domain_price 函数
price_result = get_west_domain_price(domain, 1)
if price_result.get("status") == "error":
return {"success": False, "message": "获取域名价格失败"}
# 计算总价格
yearly_price = price_result.get("data", {}).get("price", 50) # 默认50元/年
# 添加调试日志
jingrow.log_error("域名价格调试", f"域名 {domain} 的价格结果: {price_result}")
# 计算总价格 - 使用与前端一致的价格字段
yearly_price = price_result.get("data", {}).get("price", 0) # 使用前端一致的价格字段
total_amount = yearly_price * period
# 生成订单号
order_id = f"DOMAIN_{jingrow.utils.random_string(6)}"
order_id = f"{datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3] + ''.join(random.choices('0123456789', k=6))}"
# 创建订单记录
order = jingrow.get_pg({
@ -772,7 +779,7 @@ def create_domain_renew_order(**kwargs):
total_amount = yearly_price * renewal_years
# 生成唯一订单号
order_id = f"DOMAIN_RENEW_{jingrow.utils.random_string(6)}"
order_id = f"{datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3] + ''.join(random.choices('0123456789', k=6))}"
# 创建订单记录
order = jingrow.get_pg({
@ -818,13 +825,24 @@ def register_domain_from_order(order_name):
period = domain.period or 1
# 调用西部数码API注册域名
result = call_west_domain_api("register", domain=domain_name, regyear=period)
client = get_west_client()
if not client:
raise Exception("API客户端初始化失败")
result = client.register_domain(
domain=domain_name,
regyear=period,
dns_host1="ns1.myhostadmin.net",
dns_host2="ns2.myhostadmin.net",
c_sysid="1681988"
)
# 打印result到后台日志
jingrow.log_error("西部数码域名注册结果", f"订单 {order_name} 的注册结果: {result}")
if not result or not result.get('success'):
raise Exception(f"域名注册失败: {result.get('message', '未知错误')}")
if not result or result.get('result') != 200:
error_msg = result.get('msg', result.get('message', '未知错误'))
raise Exception(f"域名注册失败: {error_msg}")
# 更新域名记录状态
domain.status = "Active"
@ -862,13 +880,18 @@ def renew_domain_from_order(order_name):
raise Exception("找不到对应的域名记录")
# 调用西部数码API续费域名
result = call_west_domain_api("renew", domain=domain_name, regyear=renewal_years)
client = get_west_client()
if not client:
raise Exception("API客户端初始化失败")
result = client.renew_domain(domain_name, renewal_years)
# 打印result到后台日志
jingrow.log_error("西部数码域名续费结果", f"订单 {order_name} 的续费结果: {result}")
if not result or not result.get('success'):
raise Exception(f"域名续费失败: {result.get('message', '未知错误')}")
if not result or result.get('result') != 200:
error_msg = result.get('msg', result.get('message', '未知错误'))
raise Exception(f"域名续费失败: {error_msg}")
# 更新域名到期时间
domain.end_date = jingrow.utils.add_months(domain.end_date or jingrow.utils.nowdate(), renewal_years * 12)

View File

@ -90,15 +90,13 @@
"in_list_view": 1,
"in_standard_filter": 1,
"label": "域名",
"reqd": 1,
"unique": 1
"reqd": 1
},
{
"fieldname": "domain_owner",
"fieldtype": "Data",
"in_list_view": 1,
"label": "域名所有者",
"unique": 1
"label": "域名所有者"
},
{
"fieldname": "registration_date",
@ -122,8 +120,7 @@
"fieldname": "domain_registrar",
"fieldtype": "Data",
"in_list_view": 1,
"label": "域名注册商",
"unique": 1
"label": "域名注册商"
},
{
"fieldname": "section_break_yomj",
@ -199,8 +196,8 @@
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-07-31 20:38:06.284459",
"modified_by": "support@jingrow.com",
"modified": "2025-08-01 04:11:35.696328",
"modified_by": "Administrator",
"module": "Jcloud",
"name": "Jsite Domain",
"owner": "Administrator",