mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
实现我的站点信息的增删改查
This commit is contained in:
@@ -26,13 +26,15 @@ urlpatterns = [
|
||||
path(r'site_data_api', views.site_data_api, name='site_data_api'),
|
||||
path(r'sign_in_api', views.sign_in_api, name='sign_in_api'),
|
||||
path(r'update_site_api', views.update_site_api, name='update_site_api'),
|
||||
path(r'edit_site_api', views.edit_site_api, name='edit_site_api'),
|
||||
path(r'remove_my_site', views.remove_my_site, name='remove_my_site'),
|
||||
path(r'show_sign_api', views.show_sign_api, name='show_sign_api'),
|
||||
path(r'site_sort_api', views.site_sort_api, name='site_sort_api'),
|
||||
path(r'get_log_list', views.get_log_list, name='get_log_list'),
|
||||
path(r'show_log_list', views.show_log_list, name='show_log_list'),
|
||||
path(r'get_log_content', views.get_log_content, name='get_log_content'),
|
||||
path(r'remove_log_api', views.remove_log_api, name='remove_log_api'),
|
||||
path(r'get_site_list', views.get_site_list, name='get_site_list'),
|
||||
path(r'edit_my_site', views.edit_my_site, name='edit_my_site'),
|
||||
path(r'get_helper_license', views.get_helper_license, name='get_helper_license'),
|
||||
path(r'downloading_status', views.downloading_status, name='downloading_status'),
|
||||
path(r'do_sql', views.do_sql, name='do_sql'),
|
||||
|
||||
@@ -532,7 +532,7 @@ def site_status_api(request):
|
||||
logger.info(f'P龄:{round(p_years, 4)}年')
|
||||
for my_site in my_site_list:
|
||||
site_info_list = my_site.sitestatus_set.order_by('-pk').all()
|
||||
logger.info(f'{my_site.site.name}: {len(site_info_list)}')
|
||||
# logger.info(f'{my_site.site.name}: {len(site_info_list)}')
|
||||
sign_in_support = my_site.site.sign_in_support and my_site.sign_in
|
||||
if len(site_info_list) <= 0:
|
||||
logger.info(f'{my_site.site.name}: 获取站点信息列表错误!')
|
||||
@@ -893,12 +893,6 @@ def update_site_api(request):
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def edit_site_api(request):
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
msg='ok'
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def show_sign_api(request):
|
||||
try:
|
||||
my_site_id = request.GET.get('id')
|
||||
@@ -1014,3 +1008,83 @@ def get_helper_license(request):
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='License更新失败!'
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def get_site_list(request):
|
||||
site_id = request.GET.get('id')
|
||||
logger.info(site_id)
|
||||
if int(site_id) == 0:
|
||||
site_list = [site for site in Site.objects.all().order_by('id').values('id', 'name') if
|
||||
MySite.objects.filter(site=site.get('id')).count() < 1]
|
||||
return JsonResponse(CommonResponse.success(data={
|
||||
'site_list': site_list
|
||||
}).to_dict(), safe=False)
|
||||
else:
|
||||
site_list = Site.objects.filter(id=site_id).order_by('id').values('id', 'name')
|
||||
logger.info(site_list)
|
||||
return JsonResponse(CommonResponse.success(data={
|
||||
'site_list': list(site_list)
|
||||
}).to_dict(), safe=False)
|
||||
|
||||
|
||||
def edit_my_site(request):
|
||||
if request.method == 'POST':
|
||||
my_site_params = json.loads(request.body)
|
||||
my_site_id = my_site_params.get('id')
|
||||
site_id = my_site_params.get('site')
|
||||
site = Site.objects.get(id=site_id)
|
||||
my_site_params['site'] = site
|
||||
logger.info(my_site_params)
|
||||
if my_site_id == 0:
|
||||
del my_site_params['id']
|
||||
my_site = MySite.objects.create(**my_site_params)
|
||||
return JsonResponse(CommonResponse.success(msg=f'{my_site.site.name} 信息添加成功!').to_dict(), safe=False)
|
||||
else:
|
||||
|
||||
my_site_list = MySite.objects.filter(site_id=site_id)
|
||||
if len(my_site_list) <= 0:
|
||||
my_site_res = MySite.objects.update_or_create(id=my_site_id, defaults=my_site_params)
|
||||
logger.info(my_site_res)
|
||||
return JsonResponse(CommonResponse.success(
|
||||
msg=f'{my_site_res[0].site.name} 信息更新成功!'
|
||||
).to_dict(), safe=False)
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg=f'{my_site_list.first().site.name} 站点信息已存在,请勿重复添加!'
|
||||
).to_dict(), safe=False)
|
||||
else:
|
||||
my_site_id = request.GET.get('id')
|
||||
my_site_list = MySite.objects.filter(id=my_site_id)
|
||||
if len(my_site_list) == 1:
|
||||
my_site = my_site_list.values(
|
||||
'id', 'site', 'sign_in', 'hr', 'search', 'user_id', 'passkey', 'user_agent', 'cookie', 'time_join'
|
||||
).first()
|
||||
return JsonResponse(CommonResponse.success(data={
|
||||
'my_site': my_site
|
||||
}).to_dict(), safe=False)
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='参数有误,请确认后重试!!'
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def remove_my_site(request):
|
||||
my_site_id = request.GET.get('id')
|
||||
my_site_list = MySite.objects.filter(id=my_site_id)
|
||||
if len(my_site_list) == 1:
|
||||
try:
|
||||
my_site = my_site_list.first().delete()
|
||||
logger.info(my_site)
|
||||
if my_site[0] == 1:
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
msg='站点信息删除成功!'
|
||||
).to_dict(), safe=False)
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='参数有误,请确认后重试!!'
|
||||
).to_dict(), safe=False)
|
||||
except:
|
||||
logger.info(traceback.format_exc(3))
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='参数有误,请确认后重试!!'
|
||||
).to_dict(), safe=False)
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='参数有误,请确认后重试!!'
|
||||
).to_dict(), safe=False)
|
||||
|
||||
@@ -7,7 +7,7 @@ function renderSize(value) {
|
||||
var srcsize = parseFloat(value);
|
||||
index = Math.floor(Math.log(srcsize) / Math.log(1024));
|
||||
var size = srcsize / Math.pow(1024, index);
|
||||
size = size.toFixed(3);//保留的小数位数
|
||||
size = size.toFixed(2);//保留的小数位数
|
||||
return size + ' ' + unitArr[index];
|
||||
}
|
||||
|
||||
@@ -16,10 +16,17 @@ function shuffle() {
|
||||
}
|
||||
|
||||
function numberFormat(value) {
|
||||
if (('' + value).toLowerCase() == 'infinity') {
|
||||
return value
|
||||
}
|
||||
// if (!isNaN(parseFloat(value))) {
|
||||
// return value
|
||||
// }
|
||||
let param = {}
|
||||
let k = 10000
|
||||
let sizes = ['', 'W', 'E']
|
||||
let i
|
||||
|
||||
if (value < k) {
|
||||
param.value = value
|
||||
param.unit = ''
|
||||
|
||||
@@ -17,7 +17,11 @@
|
||||
.site-logo:hover {
|
||||
cursor: pointer;
|
||||
transform: scale(1.5);
|
||||
transition: all 0.6s;
|
||||
transition: all 0.2s;
|
||||
text-underline: #000b16;
|
||||
color: orange;
|
||||
margin-top: -25px;
|
||||
|
||||
}
|
||||
|
||||
.info-card {
|
||||
@@ -82,7 +86,7 @@
|
||||
<el-row :gutter="20">
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4"
|
||||
style="margin-bottom: 10px;float: right;text-align: right;">
|
||||
<el-button size="mini" type="success" @click="addSite">添加
|
||||
<el-button size="mini" type="success" @click="showAddMySite = true">添加
|
||||
</el-button>
|
||||
<el-input autofocus
|
||||
prefix-icon="el-icon-search"
|
||||
@@ -105,7 +109,12 @@
|
||||
{# style="width: 16px;border-radius: 50%;margin-bottom: -5px;">#}
|
||||
{# <br>#}
|
||||
{# <a :href="site.url" target="blank" style="margin-top: -5px;">#}
|
||||
<h3>数据汇总</h3>
|
||||
<h3 style="text-align: left;">
|
||||
数据汇总
|
||||
<span v-text="'P龄:'+ptData.total_data.p_years"
|
||||
style="font-size: 14px;float: right;color: orange"></span>
|
||||
</h3>
|
||||
|
||||
{# </a>#}
|
||||
{# </div>#}
|
||||
|
||||
@@ -207,17 +216,26 @@
|
||||
<el-card class="box-card info-card">
|
||||
<div slot="header" class="clearfix">
|
||||
|
||||
<div style="float: left;text-align: center;margin-top: -5px;font-size: 14px;height: 32px;">
|
||||
<img :src="site.icon" @click="updateSite(site.id)" class="site-logo"
|
||||
style="width: 16px;border-radius: 50%;margin-bottom: -5px;"
|
||||
title="点击更新站点信息">
|
||||
<div style="float: left;text-align: center;margin-top: -5px;font-size: 12px;height: 28px;">
|
||||
<el-tooltip content="点击打开站点" placement="top" effect="light">
|
||||
<a :href="site.url" target="blank" style="margin-top: -5px;">
|
||||
<img :src="site.icon"
|
||||
{# @click="updateSite(site.id)" #}
|
||||
class="site-logo"
|
||||
style="width: 16px;border-radius: 50%;margin-bottom: -5px;"
|
||||
title="点击打开站点">
|
||||
</a>
|
||||
</el-tooltip>
|
||||
<br>
|
||||
<a :href="site.url" target="blank" style="margin-top: -5px;">
|
||||
<span v-text="site.name">{}</span>
|
||||
</a>
|
||||
<el-tooltip content="点击修改站点信息" placement="bottom" effect="light">
|
||||
<el-link class="site-logo" title="点击修改站点信息" v-text="site.name"
|
||||
type="success"
|
||||
@click="editSite(site.id)" icon="el-icon-edit">
|
||||
</el-link>
|
||||
</el-tooltip>
|
||||
|
||||
</div>
|
||||
<span style="font-size: 12px;float: right;">
|
||||
<span style="font-size: 10px;float: right;">
|
||||
<i class="el-icon-user-solid" v-text="' ' + site.class" style="color: indianred"
|
||||
title="用户等级"></i>
|
||||
<br v-if="site.hr == 0 && site.mail <= 0">
|
||||
@@ -282,10 +300,11 @@
|
||||
<div>
|
||||
<span style="float: left;font-weight: bold;color: #3b5769;">保种分享:</span>
|
||||
<i class="el-icon-upload" title="做种量"
|
||||
v-text="' ' + renderSize(site.seeding_size)"></i>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
v-text="renderSize(site.seeding_size)"></i>
|
||||
<span style="color: grey">|</span>
|
||||
{# <el-divider direction="vertical"></el-divider>#}
|
||||
<i class="el-icon-share" style="color: saddlebrown" title="分享率"
|
||||
v-text="' ' + (site.uploaded / site.downloaded).toFixed(2)"></i>
|
||||
v-text="numberFormat((site.uploaded / site.downloaded).toFixed(2))"></i>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
@@ -313,7 +332,7 @@
|
||||
style="color: darkorange" title="魔力/积分"></i>
|
||||
<br>
|
||||
<i class="el-icon-lollipop"
|
||||
v-text="' ' + site.sp_hour.toFixed(3) + ' / ' + site.sp_hour_full"
|
||||
v-text="site.sp_hour.toFixed(2) + ' / ' + site.sp_hour_full"
|
||||
style="color: coral" title="时魔"></i>
|
||||
</div>
|
||||
<hr>
|
||||
@@ -419,6 +438,77 @@
|
||||
</div>
|
||||
|
||||
</el-drawer>
|
||||
<el-dialog :title="addMySiteForm.id==0 ? '添加站点' : '编辑站点'" :visible.sync="showAddMySite" fullscreen center>
|
||||
<el-form :model="addMySiteForm" size="small" ref="addMySiteForm"
|
||||
status-icon
|
||||
inline-message
|
||||
:rules="addMySiteFormRules">
|
||||
<el-input v-model="addMySiteForm.id" v-show="false"
|
||||
placeholder="请输入数字UID,AZ,CZ,EZ,Reel,莫妮卡、普斯特等请填写用户名">
|
||||
</el-input>
|
||||
<el-form-item label="选择站点" label-position="left" prop="site">
|
||||
<el-select :disabled="addMySiteForm.id!=0"
|
||||
v-model="addMySiteForm.site"
|
||||
filterable="true"
|
||||
@visible-change="getSiteList(addMySiteForm.site)"
|
||||
placeholder="请选择要添加的站点">
|
||||
<el-option
|
||||
v-for="site in site_list"
|
||||
:label="site.name"
|
||||
:value="site.id"
|
||||
:key="site.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="注册时间" label-position="right" prop="time_join">
|
||||
<el-date-picker
|
||||
text="注册时间"
|
||||
:disabled="addMySiteForm.id!=0"
|
||||
v-model="addMySiteForm.time_join"
|
||||
type="datetime"
|
||||
placeholder="选择注册日期时间"
|
||||
default-time="2023-01-01 12:00:00">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="功能开关" label-position="right">
|
||||
<el-form-item label-position="top" inline="true">
|
||||
<el-checkbox v-model="addMySiteForm.sign_in" label="签到" border></el-checkbox>
|
||||
<el-checkbox v-model="addMySiteForm.hr" label="HR下载" border></el-checkbox>
|
||||
<el-checkbox v-model="addMySiteForm.search" label="搜索" border></el-checkbox>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户UID" label-position="left" prop="user_id">
|
||||
<el-input v-model="addMySiteForm.user_id"
|
||||
placeholder="请输入数字UID,AZ,CZ,EZ,Reel,莫妮卡、普斯特等请填写用户名">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Passkey" label-position="left" prop="passkey">
|
||||
<el-input v-model="addMySiteForm.passkey" show-password></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Cookies" label-position="top" prop="cookie">
|
||||
<el-input type="textarea"
|
||||
placeholder="请输入站点Cookies,与UA搭配使用效果更佳"
|
||||
v-model="addMySiteForm.cookie"
|
||||
autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="UserAgent" label-position="top" prop="user_agent">
|
||||
<el-input type="textarea" v-model="addMySiteForm.user_agent" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-popconfirm title="确定删除此站点信息吗?"
|
||||
v-if="addMySiteForm.id!=0"
|
||||
@confirm="removeMySite(addMySiteForm.id)">
|
||||
<el-button slot="reference" type="danger">删 除
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
<el-button @click="showAddMySite = false">取 消</el-button>
|
||||
<el-button type="primary" @click="editMySite('addMySiteForm')">
|
||||
<span v-text="addMySiteForm.id==0 ? '添加站点' : '编辑站点'"></span>
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
{% include 'admin/includes/js-part.html' %}
|
||||
@@ -450,6 +540,35 @@
|
||||
dataLength: -7,
|
||||
showSignList: false,
|
||||
signInList: [],
|
||||
showAddMySite: false,
|
||||
site_list: [],
|
||||
addMySiteForm: {
|
||||
id: 0,
|
||||
site: 0,
|
||||
sign_in: true,
|
||||
hr: false,
|
||||
search: true,
|
||||
user_id: '',
|
||||
passkey: '',
|
||||
time_join: '2023-01-01 12:00:00',
|
||||
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.52',
|
||||
cookie: ''
|
||||
},
|
||||
addMySiteFormRules: {
|
||||
site: [
|
||||
{required: true, message: '请选择要添加的站点', trigger: 'change'},
|
||||
],
|
||||
user_id: [
|
||||
{required: true, message: '请输入数字UID,指定站点请输入用户名', trigger: 'blur'},
|
||||
],
|
||||
passkey: [
|
||||
{required: true, message: '请输入Passkey', trigger: 'blur'},
|
||||
{min: 16, max: 32, message: '长度为32位', trigger: 'blur'}
|
||||
],
|
||||
cookie: [
|
||||
{required: true, message: '请输入站点Cookies,与UA搭配使用效果更佳', trigger: 'change'}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
@@ -595,17 +714,15 @@
|
||||
},
|
||||
editSite(id) {
|
||||
axios.get(
|
||||
"{% url 'edit_site_api' %}" + '?id=' + id
|
||||
"{% url 'edit_my_site' %}" + '?id=' + id
|
||||
).then(res => {
|
||||
console.log('获取数据列表成功', res.data.data)
|
||||
{#let data = res.data#}
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
this.getData()
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.data.msg
|
||||
});
|
||||
this.addMySiteForm = res.data.data.my_site
|
||||
this.getSiteList(this.addMySiteForm.site)
|
||||
this.showAddMySite = true
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
@@ -620,6 +737,35 @@
|
||||
});
|
||||
})
|
||||
},
|
||||
removeMySite(id) {
|
||||
axios.get(
|
||||
"{% url 'remove_my_site' %}" + '?id=' + id
|
||||
).then(res => {
|
||||
console.log('获取数据列表成功', res.data.data)
|
||||
{#let data = res.data#}
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
this.addMySiteForm = {}
|
||||
this.getData()
|
||||
this.showAddMySite = false
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.msg
|
||||
});
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: res.data.msg
|
||||
});
|
||||
}
|
||||
}).catch(res => {
|
||||
console.log('删除失败', res)
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '删除失败!' + res
|
||||
});
|
||||
})
|
||||
},
|
||||
showHistoryList(id) {
|
||||
if (!id) {
|
||||
id = 0
|
||||
@@ -651,11 +797,75 @@
|
||||
});
|
||||
})
|
||||
},
|
||||
addSite() {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '开发中,敬请期待!'
|
||||
getSiteList(id) {
|
||||
axios.get(
|
||||
"{% url 'get_site_list' %}" + '?id=' + id
|
||||
).then(res => {
|
||||
console.log('获取数据列表成功', res.data)
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
{#this.ptData = res.data.data#}
|
||||
this.site_list = res.data.data.site_list
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: res.data.msg
|
||||
});
|
||||
}
|
||||
}).catch(res => {
|
||||
console.log('获取数据列表失败', res)
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '获取数据列表失败!' + res
|
||||
});
|
||||
})
|
||||
},
|
||||
editMySite(formName) {
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
const options = {
|
||||
method: 'POST',
|
||||
headers: {'content-type': 'application/json;charset=utf-8'},
|
||||
data: this.addMySiteForm,
|
||||
url: "{% url 'edit_my_site' %}"
|
||||
}
|
||||
|
||||
axios(options).then(res => {
|
||||
console.log('获取数据列表成功', res.data)
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
{#this.ptData = res.data.data#}
|
||||
{#this.site_list = res.data.data.site_list#}
|
||||
this.addMySiteForm = {}
|
||||
this.showAddMySite = false
|
||||
this.getData()
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.msg
|
||||
});
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: res.data.msg
|
||||
});
|
||||
}
|
||||
}).catch(res => {
|
||||
console.log('获取数据列表失败', res)
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '获取数据列表失败!' + res
|
||||
});
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '数据验证失败!请认真填写'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
showAllIncrementHistory($event) {
|
||||
console.log($event)
|
||||
|
||||
Reference in New Issue
Block a user