consumer perm
This commit is contained in:
parent
e3cc947d4e
commit
d2a9034c20
|
@ -83,4 +83,39 @@ export function unbindConsumer(id) {
|
||||||
url: `/crm/consumer/${id}/unbind`,
|
url: `/crm/consumer/${id}/unbind`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getConsumerRoleAll(query) {
|
||||||
|
return request({
|
||||||
|
url: '/crm/consumerrole/',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function createConsumerRole(data) {
|
||||||
|
return request({
|
||||||
|
url: '/crm/consumerrole/',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function updateConsumerRole(id, data) {
|
||||||
|
return request({
|
||||||
|
url: `/crm/consumerrole/${id}/`,
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function deleteConsumerRole(id) {
|
||||||
|
return request({
|
||||||
|
url: `/crm/consumerrole/${id}/`,
|
||||||
|
method: 'delete',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function getConsumerPermAll(query) {
|
||||||
|
return request({
|
||||||
|
url: '/crm/consumerperm/',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
}
|
}
|
|
@ -117,6 +117,12 @@ export const asyncRoutes = [
|
||||||
component: () => import('@/views/crm/consumer.vue'),
|
component: () => import('@/views/crm/consumer.vue'),
|
||||||
meta: { title: '学员列表', icon: '', perms: ['consumer_list'] }
|
meta: { title: '学员列表', icon: '', perms: ['consumer_list'] }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'consumerrule',
|
||||||
|
name: 'ConsumerRule',
|
||||||
|
component: () => import('@/views/crm/consumerrole.vue'),
|
||||||
|
meta: { title: '客户角色', icon: '', perms: ['consumerrole_view'] }
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-button type="primary" @click="handCreate">新增角色</el-button>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
:data="rolesList"
|
||||||
|
style="width: 100%;margin-top:30px;"
|
||||||
|
v-loading="listLoading"
|
||||||
|
border>
|
||||||
|
<el-table-column align="center" label="角色名称" width="220">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.name }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="header-center" label="角色描述">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.description }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="primary" size="small" @click="handleUpdate(scope)" icon="el-icon-edit"></el-button>
|
||||||
|
<el-button type="danger" size="small" @click="handleDelete(scope)" icon="el-icon-delete"></el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-dialog :visible.sync="dialogVisible" :title="dialogType==='update'?'编辑角色':'新增角色'">
|
||||||
|
<el-form :model="role" label-width="80px" label-position="left">
|
||||||
|
<el-form-item label="名称">
|
||||||
|
<el-input v-model="role.name" placeholder="角色名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述">
|
||||||
|
<el-input
|
||||||
|
v-model="role.description"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 4}"
|
||||||
|
type="textarea"
|
||||||
|
placeholder="角色描述"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="权限">
|
||||||
|
<el-tree
|
||||||
|
v-model="role.perms"
|
||||||
|
ref="tree"
|
||||||
|
:check-strictly="checkStrictly"
|
||||||
|
:data="permsData"
|
||||||
|
show-checkbox
|
||||||
|
node-key="id"
|
||||||
|
class="permission-tree"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align:right;">
|
||||||
|
<el-button type="danger" @click="dialogVisible=false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmRole">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import path from 'path'
|
||||||
|
import { genTree,deepClone } from '@/utils'
|
||||||
|
import { getConsumerRoleAll, createConsumerRole, deleteConsumerRole, updateConsumerRole, getConsumerPermAll } from '@/api/crm'
|
||||||
|
|
||||||
|
const defaultRole = {
|
||||||
|
id: '',
|
||||||
|
name: '',
|
||||||
|
description: '',
|
||||||
|
perms: []
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
role: Object.assign({}, defaultRole),
|
||||||
|
permsData: [],
|
||||||
|
rolesList: [],
|
||||||
|
dialogVisible: false,
|
||||||
|
dialogType: 'create',
|
||||||
|
checkStrictly:true,
|
||||||
|
listLoading:true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// Mock: get all routes and roles list from server
|
||||||
|
this.getPerms()
|
||||||
|
this.getRoles()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getPerms() {
|
||||||
|
const res = await getConsumerPermAll()
|
||||||
|
// this.serviceRoutes = res.data
|
||||||
|
this.permsData = genTree(res.data)
|
||||||
|
},
|
||||||
|
async getRoles() {
|
||||||
|
this.listLoading = true
|
||||||
|
const res = await getConsumerRoleAll()
|
||||||
|
this.rolesList = res.data
|
||||||
|
this.listLoading = false
|
||||||
|
},
|
||||||
|
|
||||||
|
handCreate() {
|
||||||
|
this.role = Object.assign({}, defaultRole)
|
||||||
|
if (this.$refs.tree) {
|
||||||
|
this.$refs.tree.setCheckedNodes([])
|
||||||
|
}
|
||||||
|
this.dialogType = 'create'
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
handleUpdate(scope) {
|
||||||
|
this.dialogType = 'update'
|
||||||
|
this.dialogVisible = true
|
||||||
|
this.role = deepClone(scope.row)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.tree.setCheckedKeys(this.role.perms)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleDelete({ $index, row }) {
|
||||||
|
this.$confirm('确认删除该角色吗?该角色成员将丢失权限!', '警告', {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
.then(async() => {
|
||||||
|
await deleteConsumerRole(row.id)
|
||||||
|
this.rolesList.splice($index, 1)
|
||||||
|
this.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: '成功删除!'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(err => { console.error(err) })
|
||||||
|
},
|
||||||
|
|
||||||
|
async confirmRole() {
|
||||||
|
const isEdit = this.dialogType === 'update'
|
||||||
|
const checkedKeys = this.$refs.tree.getCheckedKeys()
|
||||||
|
this.role.perms = checkedKeys
|
||||||
|
|
||||||
|
if (isEdit) {
|
||||||
|
await updateConsumerRole(this.role.id, this.role)
|
||||||
|
for (let index = 0; index < this.rolesList.length; index++) {
|
||||||
|
if (this.rolesList[index].id === this.role.id) {
|
||||||
|
this.rolesList.splice(index, 1, Object.assign({}, this.role))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.role.perms = this.$refs.tree.getCheckedKeys()
|
||||||
|
const { data } = await createConsumerRole(this.role)
|
||||||
|
this.getRoles()
|
||||||
|
}
|
||||||
|
|
||||||
|
const { description, name } = this.role
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$notify({
|
||||||
|
title: '成功',
|
||||||
|
dangerouslyUseHTMLString: true,
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.app-container {
|
||||||
|
.roles-table {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
.permission-tree {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -98,6 +98,9 @@ Page({
|
||||||
},
|
},
|
||||||
downFile:function(e){
|
downFile:function(e){
|
||||||
var that = this
|
var that = this
|
||||||
|
wx.showLoading({
|
||||||
|
title: '正在下载...',
|
||||||
|
})
|
||||||
api.request('/cms/material/'+e.currentTarget.dataset.id+'/down/', 'GET').then(res => {
|
api.request('/cms/material/'+e.currentTarget.dataset.id+'/down/', 'GET').then(res => {
|
||||||
that.data.results[e.currentTarget.dataset.index].down_count = res.data.down_count
|
that.data.results[e.currentTarget.dataset.index].down_count = res.data.down_count
|
||||||
var fileurl = getApp().globalData.host + res.data.path
|
var fileurl = getApp().globalData.host + res.data.path
|
||||||
|
@ -140,7 +143,7 @@ Page({
|
||||||
wx.hideLoading()
|
wx.hideLoading()
|
||||||
console.log('打开文档成功')
|
console.log('打开文档成功')
|
||||||
}, fail: function (e) {
|
}, fail: function (e) {
|
||||||
console.log(e)
|
wx.hideLoading()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,3 +3,5 @@ from crm import models
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(models.Company)
|
admin.site.register(models.Company)
|
||||||
admin.site.register(models.Consumer)
|
admin.site.register(models.Consumer)
|
||||||
|
admin.site.register(models.ConsumerPerm)
|
||||||
|
admin.site.register(models.ConsumerRole)
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Generated by Django 3.0.5 on 2020-06-27 06:13
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('crm', '0014_auto_20200502_1054'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ConsumerPerm',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||||
|
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||||
|
('is_delete', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||||
|
('name', models.CharField(max_length=30, unique=True, verbose_name='名称')),
|
||||||
|
('code', models.CharField(max_length=50, unique=True, verbose_name='方法/代号')),
|
||||||
|
('pid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='crm.ConsumerPerm', verbose_name='父')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '客户权限表',
|
||||||
|
'verbose_name_plural': '客户权限表',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='company',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=60, unique=True, verbose_name='名称'),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ConsumerRole',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||||
|
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||||
|
('is_delete', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||||
|
('name', models.CharField(max_length=30, unique=True, verbose_name='名称')),
|
||||||
|
('description', models.CharField(blank=True, max_length=50, null=True, verbose_name='描述')),
|
||||||
|
('perms', models.ManyToManyField(blank=True, to='crm.ConsumerPerm', verbose_name='功能权限')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '客户角色表',
|
||||||
|
'verbose_name_plural': '客户角色表',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
|
@ -18,7 +18,37 @@ class Company(CommonModel):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
class ConsumerPerm(CommonModel):
|
||||||
|
"""
|
||||||
|
权限表
|
||||||
|
"""
|
||||||
|
name = models.CharField(max_length=30, unique=True, verbose_name="名称")
|
||||||
|
code = models.CharField(max_length=50, verbose_name="方法/代号", unique=True)
|
||||||
|
pid = models.ForeignKey("self", null=True, blank=True, on_delete=models.SET_NULL, verbose_name="父")
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '客户权限表'
|
||||||
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.code
|
||||||
|
|
||||||
|
class ConsumerRole(CommonModel):
|
||||||
|
"""
|
||||||
|
客户角色表
|
||||||
|
"""
|
||||||
|
name = models.CharField(max_length=30, unique=True, verbose_name="名称")
|
||||||
|
perms = models.ManyToManyField(ConsumerPerm, blank=True, verbose_name="功能权限")
|
||||||
|
description = models.CharField(max_length=50, blank=True, null=True, verbose_name="描述")
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '客户角色表'
|
||||||
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
class Consumer(SoftCommonModel):
|
class Consumer(SoftCommonModel):
|
||||||
'''
|
'''
|
||||||
学员
|
学员
|
||||||
|
@ -33,6 +63,7 @@ class Consumer(SoftCommonModel):
|
||||||
workscope = models.ForeignKey(WorkScope, verbose_name='工作类别', on_delete=models.SET_NULL, null=True, blank=True)
|
workscope = models.ForeignKey(WorkScope, verbose_name='工作类别', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
collects = models.ManyToManyField(Question, verbose_name='收藏试题')
|
collects = models.ManyToManyField(Question, verbose_name='收藏试题')
|
||||||
remain_count = models.IntegerField('体验次数', default=3)
|
remain_count = models.IntegerField('体验次数', default=3)
|
||||||
|
role = models.ForeignKey(ConsumerRole, verbose_name='用户角色', default=ConsumerRole.objects.get(name='游客'), on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -42,13 +73,6 @@ class Consumer(SoftCommonModel):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
# class ConsumerPerm(CommonModel):
|
|
||||||
# """
|
|
||||||
# 权限表
|
|
||||||
# """
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PaySubject(CommonModel):
|
class PaySubject(CommonModel):
|
||||||
'''
|
'''
|
||||||
付费学科关联表
|
付费学科关联表
|
||||||
|
|
|
@ -5,22 +5,20 @@ from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
# 学员接口列表
|
# 学员接口列表
|
||||||
ConsumerPerms = [
|
ConsumerPerms = [
|
||||||
'paper_list',
|
'paper_view',
|
||||||
'gen_monitest',
|
'gen_monitest',
|
||||||
'questioncat_list',
|
'questioncat_view',
|
||||||
'my_collects',
|
'my_collects',
|
||||||
'my_subjects',
|
'my_subjects',
|
||||||
'my_examtest',
|
'my_examtest',
|
||||||
'examtest_create',
|
|
||||||
'exercise',
|
'exercise',
|
||||||
'down_material'
|
'down_material'
|
||||||
]
|
]
|
||||||
|
|
||||||
VistorPerms = [
|
VistorPerms = [
|
||||||
'gen_monitest',
|
'gen_monitest',
|
||||||
'questioncat_list',
|
'questioncat_view',
|
||||||
'my_examtest',
|
'my_examtest',
|
||||||
'examtest_create'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
class MyPermission(RbacPermission):
|
class MyPermission(RbacPermission):
|
||||||
|
|
|
@ -1,8 +1,19 @@
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from .models import Company, Consumer, PaySubject
|
from .models import Company, Consumer, PaySubject, ConsumerPerm, ConsumerRole
|
||||||
from question.models import Question, Questioncat
|
from question.models import Question, Questioncat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ConsumerPermSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = ConsumerPerm
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
class ConsumerRoleSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = ConsumerRole
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
class CompanySerializer(serializers.ModelSerializer):
|
class CompanySerializer(serializers.ModelSerializer):
|
||||||
"""
|
"""
|
||||||
公司序列化
|
公司序列化
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
from django.urls import path,include
|
from django.urls import path,include
|
||||||
from .views import CompanyViewSet, ConsumerViewSet, ConsumerMPLoginView, ConsumerRegister, change_remain_count
|
from .views import CompanyViewSet, ConsumerViewSet, ConsumerMPLoginView, ConsumerRegister, change_remain_count, ConsumerPermViewSet, ConsumerRoleViewSet
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register('consumer', ConsumerViewSet, basename="consumer")
|
router.register('consumer', ConsumerViewSet, basename="consumer")
|
||||||
router.register('company', CompanyViewSet, basename="company")
|
router.register('company', CompanyViewSet, basename="company")
|
||||||
|
router.register('consumerrole', ConsumerRoleViewSet, basename="consumerrole")
|
||||||
|
router.register('consumerperm', ConsumerPermViewSet, basename="consumerperm")
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('consumer/mplogin/', ConsumerMPLoginView.as_view()),
|
path('consumer/mplogin/', ConsumerMPLoginView.as_view()),
|
||||||
|
|
|
@ -28,8 +28,8 @@ from server import settings
|
||||||
from utils.custom import CommonPagination
|
from utils.custom import CommonPagination
|
||||||
|
|
||||||
from .exports import export_consumer
|
from .exports import export_consumer
|
||||||
from .models import Company, Consumer, PaySubject, SendCode
|
from .models import Company, Consumer, PaySubject, SendCode, ConsumerPerm, ConsumerRole
|
||||||
from .serializers import CompanySerializer, ConsumerSerializer
|
from .serializers import CompanySerializer, ConsumerSerializer, ConsumerPermSerializer, ConsumerRoleSerializer
|
||||||
|
|
||||||
appid = 'wxf1e9471c93f05ad6'
|
appid = 'wxf1e9471c93f05ad6'
|
||||||
secret = '4bf7f9bd6c52634586bbe792a1f0a834'
|
secret = '4bf7f9bd6c52634586bbe792a1f0a834'
|
||||||
|
@ -56,6 +56,38 @@ def jwt_payload_handler(user):
|
||||||
|
|
||||||
return payload
|
return payload
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ConsumerRoleViewSet(ModelViewSet):
|
||||||
|
"""
|
||||||
|
客户角色:增删改查
|
||||||
|
"""
|
||||||
|
perms_map = [
|
||||||
|
{'get': 'consumerrole_view'}, {'post': 'consumerrole_create'},
|
||||||
|
{'put': 'consumerrole_update'}, {'delete': 'consumerrole_delete'}]
|
||||||
|
queryset = ConsumerRole.objects.filter(is_delete=0)
|
||||||
|
serializer_class = ConsumerRoleSerializer
|
||||||
|
pagination_class = None
|
||||||
|
filter_backends = [DjangoFilterBackend,SearchFilter, OrderingFilter]
|
||||||
|
search_fields = ['name','description']
|
||||||
|
ordering_fields = ['create_time']
|
||||||
|
ordering = ['-create_time']
|
||||||
|
|
||||||
|
class ConsumerPermViewSet(ModelViewSet):
|
||||||
|
"""
|
||||||
|
客户权限:增删改查
|
||||||
|
"""
|
||||||
|
perms_map = [
|
||||||
|
{'get': 'consumerperm_view'}, {'post': 'consumerperm_create'},
|
||||||
|
{'put': 'consumerperm_update'}, {'delete': 'consumerperm_delete'}]
|
||||||
|
queryset = ConsumerPerm.objects.filter(is_delete=0)
|
||||||
|
serializer_class = ConsumerPermSerializer
|
||||||
|
pagination_class = None
|
||||||
|
filter_backends = [DjangoFilterBackend,SearchFilter, OrderingFilter]
|
||||||
|
search_fields = ['name','code']
|
||||||
|
ordering_fields = ['create_time']
|
||||||
|
ordering = ['-create_time']
|
||||||
|
|
||||||
class CompanyViewSet(ModelViewSet):
|
class CompanyViewSet(ModelViewSet):
|
||||||
"""
|
"""
|
||||||
客户企业:增删改查
|
客户企业:增删改查
|
||||||
|
@ -67,7 +99,7 @@ class CompanyViewSet(ModelViewSet):
|
||||||
serializer_class = CompanySerializer
|
serializer_class = CompanySerializer
|
||||||
pagination_class = CommonPagination
|
pagination_class = CommonPagination
|
||||||
filter_backends = [DjangoFilterBackend,SearchFilter, OrderingFilter]
|
filter_backends = [DjangoFilterBackend,SearchFilter, OrderingFilter]
|
||||||
search_fields = ('^name',)
|
search_fields = ('name',)
|
||||||
ordering_fields = ('id',)
|
ordering_fields = ('id',)
|
||||||
ordering = ['-id']
|
ordering = ['-id']
|
||||||
|
|
||||||
|
@ -85,7 +117,7 @@ class ConsumerViewSet(ModelViewSet):
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
||||||
filterset_fields = ('company',)
|
filterset_fields = ('company',)
|
||||||
search_fields = ('^name','^username','^company__name')
|
search_fields = ('name','username','company__name')
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = self.queryset
|
queryset = self.queryset
|
||||||
|
@ -231,6 +263,7 @@ class ConsumerViewSet(ModelViewSet):
|
||||||
PaySubject.objects.get_or_create(subject=workscopeobj.subject, consumer = obj)
|
PaySubject.objects.get_or_create(subject=workscopeobj.subject, consumer = obj)
|
||||||
except:
|
except:
|
||||||
return Response({"error":"工作类别不存在!"})
|
return Response({"error":"工作类别不存在!"})
|
||||||
|
obj.role = ConsumerRole.objects.get(name='付费学员')
|
||||||
obj.save()
|
obj.save()
|
||||||
m = m + 1
|
m = m + 1
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
|
@ -307,6 +340,7 @@ class ConsumerRegister(APIView):
|
||||||
consumer.avatar = avatar
|
consumer.avatar = avatar
|
||||||
consumer.nickname = nickname
|
consumer.nickname = nickname
|
||||||
consumer.is_delete = False
|
consumer.is_delete = False
|
||||||
|
consumer.role = ConsumerRole.objects.get(name='注册用户')
|
||||||
consumer.save()
|
consumer.save()
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
else:
|
else:
|
||||||
|
@ -316,6 +350,7 @@ class ConsumerRegister(APIView):
|
||||||
consumer.avatar = avatar
|
consumer.avatar = avatar
|
||||||
consumer.nickname = nickname
|
consumer.nickname = nickname
|
||||||
consumer.is_delete = False
|
consumer.is_delete = False
|
||||||
|
consumer.role = ConsumerRole.objects.get(name='注册用户')
|
||||||
consumer.save()
|
consumer.save()
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -219,7 +219,7 @@ class ExamTestViewSet(ModelViewSet):
|
||||||
"""
|
"""
|
||||||
考试记录列表和详情
|
考试记录列表和详情
|
||||||
"""
|
"""
|
||||||
perms_map = [{'get': 'examtest_list'},{'post': 'examtest_create'}]
|
perms_map = [{'get': 'examtest_list'},{'post': '*'}]
|
||||||
pagination_class = CommonPagination
|
pagination_class = CommonPagination
|
||||||
queryset = ExamTest.objects.filter(is_delete=0).all()
|
queryset = ExamTest.objects.filter(is_delete=0).all()
|
||||||
serializer_class = ExamTestListSerializer
|
serializer_class = ExamTestListSerializer
|
||||||
|
@ -308,7 +308,7 @@ class PaperViewSet(ModelViewSet):
|
||||||
押题卷增删改查
|
押题卷增删改查
|
||||||
"""
|
"""
|
||||||
perms_map = [
|
perms_map = [
|
||||||
{'get': 'paper_list'}, {'post': 'paper_create'},
|
{'get': 'paper_view'}, {'post': 'paper_create'},
|
||||||
{'put': 'paper_update'}, {'delete': 'paper_delete'}]
|
{'put': 'paper_update'}, {'delete': 'paper_delete'}]
|
||||||
queryset = Paper.objects.filter(is_delete=0).all().order_by("id")
|
queryset = Paper.objects.filter(is_delete=0).all().order_by("id")
|
||||||
pagination_class = CommonPagination
|
pagination_class = CommonPagination
|
||||||
|
|
|
@ -43,7 +43,7 @@ class QuestioncatViewSet(ModelViewSet):
|
||||||
题库分类:增删改查
|
题库分类:增删改查
|
||||||
"""
|
"""
|
||||||
perms_map = (
|
perms_map = (
|
||||||
{'get': 'questioncat_list'}, {'post': 'questioncat_create'},
|
{'get': 'questioncat_view'}, {'post': 'questioncat_create'},
|
||||||
{'put': 'questioncat_update'}, {'delete': 'questioncat_delete'})
|
{'put': 'questioncat_update'}, {'delete': 'questioncat_delete'})
|
||||||
queryset = Questioncat.objects.filter(is_delete=0,is_subject=False).all()
|
queryset = Questioncat.objects.filter(is_delete=0,is_subject=False).all()
|
||||||
serializer_class = QuestioncatSerializerDefault
|
serializer_class = QuestioncatSerializerDefault
|
||||||
|
@ -52,7 +52,7 @@ class QuestioncatViewSet(ModelViewSet):
|
||||||
ordering = ['type','id']
|
ordering = ['type','id']
|
||||||
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
||||||
filterset_fields = ['pid']
|
filterset_fields = ['pid']
|
||||||
search_fields = ['^name']
|
search_fields = ['name']
|
||||||
|
|
||||||
@action(methods=['get'], detail=False,
|
@action(methods=['get'], detail=False,
|
||||||
url_path='all', url_name='all_questioncat')
|
url_path='all', url_name='all_questioncat')
|
||||||
|
|
Loading…
Reference in New Issue