基础
This commit is contained in:
parent
d4192e3b41
commit
7ba527447f
74
admin-client/src/services/apps/liveforum/T_UsersService.ts
Normal file
74
admin-client/src/services/apps/liveforum/T_UsersService.ts
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import Http from "@/core/utils/Http";
|
||||
|
||||
/**
|
||||
* T_Users服务
|
||||
*/
|
||||
export default class T_UsersService {
|
||||
|
||||
static urlPrefix = "/api/v1/admin/T_Users";
|
||||
|
||||
/**
|
||||
* 获取数据列表
|
||||
* @param current
|
||||
* @param pageSize
|
||||
* @param search
|
||||
* @param searchSort
|
||||
* @returns
|
||||
*/
|
||||
static findList(current: number, pageSize: number, search: any = {}, searchSort: any[] = []) {
|
||||
return Http.post(`${this.urlPrefix}/findList`, {
|
||||
page: current,
|
||||
size: pageSize,
|
||||
search,
|
||||
searchSort
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除集合数据
|
||||
*
|
||||
* @param ids
|
||||
* @returns
|
||||
*/
|
||||
static deleteList(ids: string[]) {
|
||||
return Http.post(`${this.urlPrefix}/deleteList`, ids)
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询表单
|
||||
*
|
||||
* @param id
|
||||
* @returns
|
||||
*/
|
||||
static findForm(id?: string | undefined) {
|
||||
return Http.get(`${this.urlPrefix}/findForm${(id ? '/' + id : '')}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存表单数据
|
||||
*
|
||||
* @param id
|
||||
* @param formData
|
||||
* @returns
|
||||
*/
|
||||
static saveForm(id: string | undefined, formData: any) {
|
||||
return Http.post(`${this.urlPrefix}/${id ? 'update' : 'create'}`, formData)
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出 excel
|
||||
*
|
||||
* @param search
|
||||
* @param searchSort
|
||||
* @returns
|
||||
*/
|
||||
static exportExcel(search: any = {}, searchSort: any[] = []) {
|
||||
return Http.download(`${this.urlPrefix}/exportExcel`, {
|
||||
page: -1,
|
||||
size: -1,
|
||||
search,
|
||||
searchSort
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
247
admin-client/src/views/apps/liveforum/t_users/Index.vue
Normal file
247
admin-client/src/views/apps/liveforum/t_users/Index.vue
Normal file
|
|
@ -0,0 +1,247 @@
|
|||
<script lang="ts" setup>
|
||||
import { reactive, ref, onMounted } from "vue";
|
||||
import { FormInstance } from "ant-design-vue";
|
||||
import { useAuthority } from "@/utils/Authority";
|
||||
import AppIcon from "@/core/components/AppIcon.vue";
|
||||
import Info from "./Info.vue";
|
||||
import Tools from "@/core/utils/Tools";
|
||||
import PageContainer from "@/core/components/PageContainer.vue";
|
||||
import TableCurd from "@/core/components/curd/TableCurd.vue";
|
||||
import T_UsersService from "@/services/apps/liveforum/T_UsersService";
|
||||
|
||||
defineOptions({ name: "T_UsersIndex" });
|
||||
|
||||
const state = reactive({
|
||||
search: {
|
||||
state: false,
|
||||
vm: {
|
||||
name: undefined,
|
||||
},
|
||||
sort: [] as any[],
|
||||
},
|
||||
loading: false,
|
||||
page: 1,
|
||||
size: 50,
|
||||
total: 100,
|
||||
columns: [] as any,
|
||||
data: [] as any,
|
||||
});
|
||||
|
||||
//权限
|
||||
const power = useAuthority();
|
||||
//表格
|
||||
const refTableCurd = ref<InstanceType<typeof TableCurd>>();
|
||||
//表单操作对象
|
||||
const refInfo = ref<InstanceType<typeof Info>>();
|
||||
//检索表单
|
||||
const refSearchForm = ref<FormInstance>();
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
onMounted(() => {
|
||||
findList();
|
||||
});
|
||||
|
||||
/**
|
||||
*获取数据
|
||||
*/
|
||||
async function findList() {
|
||||
try{
|
||||
state.loading = true;
|
||||
let keys = Object.keys(state.search.vm);
|
||||
keys.map(k => {
|
||||
if (state.search.vm[k] == null || state.search.vm[k] == "") {
|
||||
delete state.search.vm[k];
|
||||
}
|
||||
});
|
||||
const result = await T_UsersService.findList(state.page, state.size, state.search.vm, state.search.sort);
|
||||
state.loading = false;
|
||||
if (result.code != 200) return;
|
||||
state.page = result.data.page;
|
||||
state.size = result.data.size;
|
||||
state.total = result.data.total;
|
||||
state.columns = result.data.columns;
|
||||
state.data = result.data.dataSource;
|
||||
// state.visible = false;
|
||||
} catch (error) {
|
||||
state.loading = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
* @param id
|
||||
*/
|
||||
async function deleteList(id?: string) {
|
||||
let ids: string[] = [];
|
||||
if (id) {
|
||||
ids.push(id);
|
||||
} else {
|
||||
ids = refTableCurd.value?.getSelectedRowKeys() ?? [];
|
||||
}
|
||||
|
||||
if (ids.length == 0) return Tools.message.error("请选择要删除的行!");
|
||||
|
||||
try{
|
||||
state.loading = true;
|
||||
const result = await T_UsersService.deleteList(ids);
|
||||
state.loading = false;
|
||||
if (result.code != 200) return;
|
||||
Tools.message.success("删除成功!");
|
||||
findList();
|
||||
} catch (error) {
|
||||
state.loading = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*/
|
||||
function exportExcel() {
|
||||
T_UsersService.exportExcel(state.search.vm, state.search.sort);
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<PageContainer>
|
||||
<TableCurd
|
||||
ref="refTableCurd"
|
||||
:config="state"
|
||||
@change="
|
||||
(changeTable) => {
|
||||
state.page = changeTable.pagination.current ?? 1;
|
||||
state.size = changeTable.pagination.pageSize ?? state.size;
|
||||
state.search.sort = changeTable.sorter instanceof Array ? [...changeTable.sorter] : [changeTable.sorter];
|
||||
findList();
|
||||
}
|
||||
"
|
||||
@show-size-change="
|
||||
({ current, size }) => {
|
||||
state.page = current == 0 ? 1 : current;
|
||||
state.size = size;
|
||||
findList();
|
||||
}
|
||||
"
|
||||
>
|
||||
<!-- search -->
|
||||
<template #search>
|
||||
<a-form ref="refSearchForm" :model="state.search.vm" v-if="power.search">
|
||||
<a-row :gutter="[16, 0]">
|
||||
<!--
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<a-form-item class="mb-0" name="name" label="名称">
|
||||
<a-input v-model:value="state.search.vm.name" placeholder="名称" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
-->
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<a-form-item class="mb-0" name="tenantId" label="项目">
|
||||
<hm-tenant-select v-model:value="state.search.vm.tenantId" :ShowAll="true" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<a-form-item class="mb-0" name="Id" label="用户ID">
|
||||
<a-input v-model:value="state.search.vm.id" placeholder="用户ID" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<a-form-item class="mb-0" name="NickName" label="用户昵称">
|
||||
<a-input v-model:value="state.search.vm.nickName" placeholder="用户昵称" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<a-form-item class="mb-0" name="PhoneNumber" label="手机号">
|
||||
<a-input v-model:value="state.search.vm.phoneNumber" placeholder="手机号" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!--button-->
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="text-right">
|
||||
<a-space :size="8">
|
||||
<a-button
|
||||
@click="
|
||||
state.page = 1;
|
||||
refSearchForm?.resetFields();
|
||||
findList();
|
||||
"
|
||||
>
|
||||
重置
|
||||
</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="
|
||||
state.page = 1;
|
||||
findList();
|
||||
"
|
||||
>
|
||||
查询
|
||||
</a-button>
|
||||
</a-space>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</template>
|
||||
<!-- toolbar-left -->
|
||||
<template #toolbar-left>
|
||||
<a-button @click="state.search.state = !state.search.state" v-if="power.search">
|
||||
<div v-if="state.search.state"><AppIcon name="UpOutlined" /> 收起</div>
|
||||
<div v-else><AppIcon name="DownOutlined" /> 展开</div>
|
||||
</a-button>
|
||||
<a-button type="primary" @click="() => refInfo?.open()" v-if="power.insert">
|
||||
<template #icon>
|
||||
<AppIcon name="PlusOutlined" />
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
批量删除
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
<!-- toolbar-right -->
|
||||
<template #toolbar-right>
|
||||
<a-dropdown>
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item key="1" @click="exportExcel()">导出 Excel</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button> 更多 <AppIcon name="ellipsis-outlined" /> </a-button>
|
||||
</a-dropdown>
|
||||
<!-- 列设置 -->
|
||||
<a-popover>
|
||||
<template #content>
|
||||
<div v-for="item in state.columns.filter((w:any) => w.fieldName.substr(0, 1) != '_')">
|
||||
<a-checkbox v-model:checked="item.show">{{ item.title }}</a-checkbox>
|
||||
</div>
|
||||
</template>
|
||||
<a-button type="text">
|
||||
<template #icon><AppIcon name="setting-outlined" /> </template>
|
||||
</a-button>
|
||||
</a-popover>
|
||||
</template>
|
||||
<!-- table-col -->
|
||||
<template #table-col>
|
||||
<template v-for="item,index in state.columns.filter((w:any) => w.fieldName !== 'id' && w.show)" :key="item.fieldName">
|
||||
<a-table-column :title="item.title" :data-index="item.fieldName" :sorter="item.sort ? { multiple: index + 1 } : false" />
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<a-table-column title="操作" data-index="id" v-if="power.update || power.delete" width="200px" fixed="right">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
</template>
|
||||
</TableCurd>
|
||||
<!-- Info -->
|
||||
<Info ref="refInfo" :onSuccess="() => findList()" />
|
||||
</PageContainer>
|
||||
</template>
|
||||
172
admin-client/src/views/apps/liveforum/t_users/Info.vue
Normal file
172
admin-client/src/views/apps/liveforum/t_users/Info.vue
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
<script lang="ts" setup>
|
||||
import { reactive, ref } from "vue";
|
||||
import { FormInstance } from "ant-design-vue";
|
||||
import Tools from "@/core/utils/Tools";
|
||||
import T_UsersService from "@/services/apps/liveforum/T_UsersService";
|
||||
|
||||
//定义组件事件
|
||||
const props = defineProps<{ onSuccess: () => void }>();
|
||||
|
||||
const state = reactive({
|
||||
vm: {
|
||||
id: "",
|
||||
form: {} as any,
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
});
|
||||
|
||||
//表单实例
|
||||
const refForm = ref<FormInstance>();
|
||||
|
||||
//向父级导出 函数
|
||||
defineExpose({
|
||||
/**
|
||||
* 打开表单初始化
|
||||
* @param key
|
||||
*/
|
||||
open: (key: string = "") => {
|
||||
state.visible = true;
|
||||
if (state.visible) {
|
||||
state.vm.id = key;
|
||||
}
|
||||
refForm.value?.resetFields();
|
||||
//初始化表单数据
|
||||
state.loading = true;
|
||||
T_UsersService.findForm(key).then((res) => {
|
||||
state.loading = false;
|
||||
if (res.code != 200) return;
|
||||
state.vm = res.data;
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
*保存数据
|
||||
*/
|
||||
function save() {
|
||||
refForm.value?.validate().then(async () => {
|
||||
try {
|
||||
state.loading = true;
|
||||
const result = await T_UsersService.saveForm(state.vm.id, state.vm.form);
|
||||
state.loading = false;
|
||||
if (result.code != 200) return;
|
||||
Tools.message.success("操作成功!");
|
||||
props.onSuccess();
|
||||
state.visible = false;
|
||||
} catch (error) {
|
||||
state.loading = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-modal v-model:open="state.visible" :title="state.vm.id ? '编辑' : '新建'" centered @ok="state.visible = false" :width="800">
|
||||
<template #footer>
|
||||
<a-button type="primary" :loading="state.loading" @click="save()"> 提交</a-button>
|
||||
<a-button @click="state.visible = false">关闭</a-button>
|
||||
</template>
|
||||
<a-spin :spinning="state.loading">
|
||||
<a-form ref="refForm" layout="vertical" :model="state.vm.form">
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="项目" name="tenantId">
|
||||
<hm-tenant-select v-model:value="state.vm.form.tenantId" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="用户昵称" name="nickName" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.nickName" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="用户头像" name="avatar" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.avatar" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="性别" name="gender" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.gender" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="手机号" name="phoneNumber" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.phoneNumber" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="用户生日" name="birthday" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.birthday" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="个性签名" name="signature" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.signature" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="等级" name="levelId" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.levelId" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="经验值" name="experience" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.experience" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="VIP" name="isVip" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.isVip" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="VIP过期时间" name="vipExpireTime" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.vipExpireTime" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="认证状态" name="isCertified" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.isCertified" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="认证类型" name="certifiedType" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.certifiedType" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="账户状态" name="status" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.status" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="最后登录时间" name="lastLoginTime" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.lastLoginTime" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="最后登录IP" name="lastLoginIp" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.lastLoginIp" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="注册IP" name="registerIp" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.registerIp" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="创建时间" name="createdAt" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.createdAt" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<a-form-item label="更新时间" name="updatedAt" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
||||
<a-input v-model:value="state.vm.form.updatedAt" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
using MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
|
||||
namespace MiaoYu.Api.Admin.ApplicationServices.Apps;
|
||||
using MiaoYu.Repository.LiveForum.Admin.Entities.Apps;
|
||||
namespace MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum;
|
||||
|
||||
/// <summary>
|
||||
/// 用户表,存储用户基本信息(移除登录相关字段) 服务 T_UsersService
|
||||
|
|
@ -20,47 +20,29 @@ public class T_UsersService : ApplicationService<IRepository<T_Users>>
|
|||
public async Task<PagingView> FindListAsync(PagingSearchInput<T_Users> pagingSearchInput)
|
||||
{
|
||||
var query = this._defaultRepository.Select
|
||||
|
||||
|
||||
//用户ID
|
||||
.WhereIf(pagingSearchInput.Search?.Id > 0,
|
||||
w => pagingSearchInput.Search.Id == w.Id)
|
||||
|
||||
|
||||
//用户昵称
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(pagingSearchInput.Search?.NickName),
|
||||
|
||||
//用户ID
|
||||
.WhereIf(pagingSearchInput.Search?.Id!=null&&pagingSearchInput.Search?.Id>0,
|
||||
w => w.Id== pagingSearchInput.Search.Id)
|
||||
|
||||
|
||||
//用户昵称
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(pagingSearchInput.Search?.NickName),
|
||||
w => w.NickName.Contains(pagingSearchInput.Search.NickName ?? ""))
|
||||
|
||||
|
||||
//手机号
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(pagingSearchInput.Search?.PhoneNumber),
|
||||
|
||||
|
||||
//手机号
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(pagingSearchInput.Search?.PhoneNumber),
|
||||
w => w.PhoneNumber.Contains(pagingSearchInput.Search.PhoneNumber ?? ""))
|
||||
|
||||
|
||||
|
||||
|
||||
.OrderByDescending(w => w.Id)
|
||||
.Select(w => new
|
||||
{
|
||||
w.Id,
|
||||
w.NickName,
|
||||
w.Avatar,
|
||||
w.Gender,
|
||||
w.PhoneNumber,
|
||||
w.Birthday,
|
||||
w.Signature,
|
||||
w.LevelId,
|
||||
w.Experience,
|
||||
w.IsVip,
|
||||
w.VipExpireTime,
|
||||
w.IsCertified,
|
||||
w.CertifiedType,
|
||||
w.Status,
|
||||
w.LastLoginTime,
|
||||
w.LastLoginIp,
|
||||
w.RegisterIp,
|
||||
w.CreatedAt,
|
||||
w.UpdatedAt,
|
||||
// w.LastModificationTime,
|
||||
// w.CreationTime
|
||||
w.NickName,w.Avatar,w.Gender,w.PhoneNumber,w.Birthday,w.Signature,w.LevelId,w.Experience,w.IsVip,w.VipExpireTime,w.IsCertified,w.CertifiedType,w.Status,w.LastLoginTime,w.LastLoginIp,w.RegisterIp,w.CreatedAt,w.UpdatedAt,
|
||||
// w.LastModificationTime,
|
||||
// w.CreationTime
|
||||
})
|
||||
;
|
||||
|
||||
|
|
@ -91,7 +73,7 @@ public class T_UsersService : ApplicationService<IRepository<T_Users>>
|
|||
/// </summary>
|
||||
/// <param name="id">id</param>
|
||||
/// <returns></returns>
|
||||
public async Task<Dictionary<string, object>> FindFormAsync(int id)
|
||||
public async Task<Dictionary<string,object>> FindFormAsync(int id)
|
||||
{
|
||||
var res = new Dictionary<string, object>();
|
||||
var form = await this._defaultRepository.FindByIdAsync(id);
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
using MiaoYu.Api.Admin.ApplicationServices.Apps;
|
||||
using MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
|
||||
namespace MiaoYu.Api.Admin.Controllers.Apps;
|
||||
using MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum;
|
||||
using MiaoYu.Repository.LiveForum.Admin.Entities.Apps;
|
||||
namespace MiaoYu.Api.Admin.Controllers.Apps.LiveForum;
|
||||
|
||||
/// <summary>
|
||||
/// 用户表,存储用户基本信息(移除登录相关字段) 控制器
|
||||
|
|
@ -53,6 +53,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controllers\Apps\LiveForum\" />
|
||||
<Folder Include="wwwroot\docs\" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -129,40 +129,40 @@
|
|||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Apps.T_UsersService">
|
||||
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum.T_UsersService">
|
||||
<summary>
|
||||
用户表,存储用户基本信息(移除登录相关字段) 服务 T_UsersService
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_UsersService.FindListAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users})">
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum.T_UsersService.FindListAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users})">
|
||||
<summary>
|
||||
获取列表数据
|
||||
</summary>
|
||||
<param name="pagingSearchInput"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_UsersService.DeleteListAsync(System.Collections.Generic.List{System.Int32})">
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum.T_UsersService.DeleteListAsync(System.Collections.Generic.List{System.Int32})">
|
||||
<summary>
|
||||
根据id数组删除
|
||||
</summary>
|
||||
<param name="ids">ids</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_UsersService.FindFormAsync(System.Int32)">
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum.T_UsersService.FindFormAsync(System.Int32)">
|
||||
<summary>
|
||||
查询表单数据
|
||||
</summary>
|
||||
<param name="id">id</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_UsersService.SaveFormAsync(MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users)">
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum.T_UsersService.SaveFormAsync(MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users)">
|
||||
<summary>
|
||||
保存数据
|
||||
</summary>
|
||||
<param name="form">form</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_UsersService.ExportExcelAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users})">
|
||||
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.LiveForum.T_UsersService.ExportExcelAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users})">
|
||||
<summary>
|
||||
导出Excel
|
||||
</summary>
|
||||
|
|
@ -2150,47 +2150,47 @@
|
|||
</summary>
|
||||
<param name="defaultService">默认服务</param>
|
||||
</member>
|
||||
<member name="T:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController">
|
||||
<member name="T:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController">
|
||||
<summary>
|
||||
用户表,存储用户基本信息(移除登录相关字段) 控制器
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController.FindListAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users})">
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController.FindListAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users})">
|
||||
<summary>
|
||||
获取列表
|
||||
</summary>
|
||||
<param name="pagingSearchInput"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController.DeleteListAsync(System.Collections.Generic.List{System.Int32})">
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController.DeleteListAsync(System.Collections.Generic.List{System.Int32})">
|
||||
<summary>
|
||||
根据id数组删除
|
||||
</summary>
|
||||
<param name="ids">ids</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController.FindFormAsync(System.Int32)">
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController.FindFormAsync(System.Int32)">
|
||||
<summary>
|
||||
查询表单数据
|
||||
</summary>
|
||||
<param name="id">id</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController.CreateAsync(MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users)">
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController.CreateAsync(MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users)">
|
||||
<summary>
|
||||
添加
|
||||
</summary>
|
||||
<param name="form"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController.UpdateAsync(MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users)">
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController.UpdateAsync(MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users)">
|
||||
<summary>
|
||||
编辑
|
||||
</summary>
|
||||
<param name="form"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_UsersController.ExportExcelAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users})">
|
||||
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.LiveForum.T_UsersController.ExportExcelAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users})">
|
||||
<summary>
|
||||
导出Excel
|
||||
</summary>
|
||||
|
|
|
|||
|
|
@ -74,7 +74,8 @@
|
|||
|
||||
if (lowCodeTableInfo.CsType.ToLower().Contains("string"))
|
||||
return "DefaultEntityStringKey";
|
||||
|
||||
if (lowCodeTableInfo.CsType.ToLower().Contains("int64"))
|
||||
return "EntityIdentity<long>";
|
||||
if (lowCodeTableInfo.CsType.ToLower().Contains("int"))
|
||||
return "EntityIdentity<int>";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
|
||||
namespace MiaoYu.Repository.LiveForum.Admin.Entities.Apps;
|
||||
|
||||
/// <summary>
|
||||
/// 用户表,存储用户基本信息(移除登录相关字段)
|
||||
/// </summary>
|
||||
[EntityDescription(FieldIgnored = true)]
|
||||
[Table("T_Users")]
|
||||
public class T_Users : EntityIdentity<int>
|
||||
public class T_Users : EntityIdentity<long>
|
||||
{
|
||||
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ public class T_Users : EntityIdentity<int>
|
|||
|
||||
|
||||
/// <summary>
|
||||
/// 头像 => 备注: 用户头像URL地址
|
||||
/// 用户头像 => 备注: 用户头像URL地址
|
||||
/// </summary>
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
|
|
@ -34,13 +34,13 @@ public class T_Users : EntityIdentity<int>
|
|||
|
||||
|
||||
/// <summary>
|
||||
/// 生日 => 备注: 用户生日
|
||||
/// 用户生日 => 备注: 用户生日
|
||||
/// </summary>
|
||||
public DateTime? Birthday { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 签名 => 备注: 个性签名
|
||||
/// 个性签名 => 备注: 个性签名
|
||||
/// </summary>
|
||||
public string? Signature { get; set; }
|
||||
|
||||
|
|
@ -58,13 +58,13 @@ public class T_Users : EntityIdentity<int>
|
|||
|
||||
|
||||
/// <summary>
|
||||
/// vip => 备注: 是否为VIP用户
|
||||
/// VIP => 备注: 是否为VIP用户
|
||||
/// </summary>
|
||||
public Boolean IsVip { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 过期时间 => 备注: VIP过期时间
|
||||
/// VIP过期时间 => 备注: VIP过期时间
|
||||
/// </summary>
|
||||
public DateTime? VipExpireTime { get; set; }
|
||||
|
||||
|
|
@ -88,13 +88,13 @@ public class T_Users : EntityIdentity<int>
|
|||
|
||||
|
||||
/// <summary>
|
||||
/// 登录时间 => 备注: 最后登录时间
|
||||
/// 最后登录时间 => 备注: 最后登录时间
|
||||
/// </summary>
|
||||
public DateTime? LastLoginTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 登录IP => 备注: 最后登录IP地址
|
||||
/// 最后登录IP => 备注: 最后登录IP地址
|
||||
/// </summary>
|
||||
public string? LastLoginIp { get; set; }
|
||||
|
||||
|
|
@ -4,97 +4,97 @@
|
|||
<name>MiaoYu.Repository.LiveForum.Admin</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users">
|
||||
<member name="T:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users">
|
||||
<summary>
|
||||
用户表,存储用户基本信息(移除登录相关字段)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.NickName">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.NickName">
|
||||
<summary>
|
||||
用户昵称 => 备注: 用户昵称,用于显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.Avatar">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.Avatar">
|
||||
<summary>
|
||||
头像 => 备注: 用户头像URL地址
|
||||
用户头像 => 备注: 用户头像URL地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.Gender">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.Gender">
|
||||
<summary>
|
||||
性别 => 备注: 性别:0-未知,1-男,2-女
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.PhoneNumber">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.PhoneNumber">
|
||||
<summary>
|
||||
手机号 => 备注: PhoneNumber
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.Birthday">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.Birthday">
|
||||
<summary>
|
||||
生日 => 备注: 用户生日
|
||||
用户生日 => 备注: 用户生日
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.Signature">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.Signature">
|
||||
<summary>
|
||||
签名 => 备注: 个性签名
|
||||
个性签名 => 备注: 个性签名
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.LevelId">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.LevelId">
|
||||
<summary>
|
||||
等级 => 备注: 用户等级ID,外键关联T_UserLevels表
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.Experience">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.Experience">
|
||||
<summary>
|
||||
经验值 => 备注: 当前经验值
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.IsVip">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.IsVip">
|
||||
<summary>
|
||||
vip => 备注: 是否为VIP用户
|
||||
VIP => 备注: 是否为VIP用户
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.VipExpireTime">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.VipExpireTime">
|
||||
<summary>
|
||||
过期时间 => 备注: VIP过期时间
|
||||
VIP过期时间 => 备注: VIP过期时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.IsCertified">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.IsCertified">
|
||||
<summary>
|
||||
认证状态 => 备注: 是否已认证
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.CertifiedType">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.CertifiedType">
|
||||
<summary>
|
||||
认证类型 => 备注: 认证类型:1-SK认证,2-其他认证
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.Status">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.Status">
|
||||
<summary>
|
||||
账户状态 => 备注: 账户状态:0-禁用,1-正常,2-冻结
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.LastLoginTime">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.LastLoginTime">
|
||||
<summary>
|
||||
登录时间 => 备注: 最后登录时间
|
||||
最后登录时间 => 备注: 最后登录时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.LastLoginIp">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.LastLoginIp">
|
||||
<summary>
|
||||
登录IP => 备注: 最后登录IP地址
|
||||
最后登录IP => 备注: 最后登录IP地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.RegisterIp">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.RegisterIp">
|
||||
<summary>
|
||||
注册IP => 备注: 注册时的IP地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.CreatedAt">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.CreatedAt">
|
||||
<summary>
|
||||
创建时间 => 备注: 账户创建时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Users.UpdatedAt">
|
||||
<member name="P:MiaoYu.Repository.LiveForum.Admin.Entities.Apps.T_Users.UpdatedAt">
|
||||
<summary>
|
||||
更新时间 => 备注: 账户信息更新时间
|
||||
</summary>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user