当前位置: 首页 > news >正文

网站充值怎么做的c2c平台的产品类型

网站充值怎么做的,c2c平台的产品类型,在线制作logo图标软件,西宁市城乡建设网站先上图#xff1a; 整个角色管理是如何做的吗#xff1f; 首先你要处理后端#xff0c;要先把角色存到用户那。 这是用户管理部分的内容#xff1a; 可以看到一个用户是有多个角色的。 看到没有#xff0c;存的是数组 数组的是一个 role 对象 role 对象是这样#xf…先上图 整个角色管理是如何做的吗 首先你要处理后端要先把角色存到用户那。 这是用户管理部分的内容 可以看到一个用户是有多个角色的。 看到没有存的是数组 数组的是一个 role 对象 role 对象是这样 主要是存一个 name 就好。permissions 是权限列表。 import { Request, Response } from express; import Role from ../models/role; import handleAsync from ../utils/handleAsync;// Build query based on query parameters const buildQuery (queryParams: any): any {const query: any {};if (queryParams.name) {query.name { $regex: queryParams.name, $options: i };}return query; };// 获取所有角色 const getRoles handleAsync(async (req: Request, res: Response) {const { current 1, pageSize 10 } req.query;const query buildQuery(req.query);const roles await Role.find(query).populate(permissions).sort(-createdAt) // Sort by creation time in descending order.skip((current - 1) * pageSize).limit(pageSize).exec();res.json({success: true,data: roles,}); });// 根据 ID 获取角色 const getRoleById handleAsync(async (req: Request, res: Response) {const role await Role.findById(req.params.id).exec();if (!role) {res.status(404);throw new Error(Role not found);}res.json({success: true,data: role,}); });// 添加新角色 const addRole handleAsync(async (req: Request, res: Response) {const newRole new Role({...req.body,});const savedRole await newRole.save();res.json({success: true,data: savedRole,}); });// 更新角色 const updateRole handleAsync(async (req: Request, res: Response) {const { id } req.params;const updatedRole await Role.findByIdAndUpdate(id,{ ...req.body },{ new: true },).exec();if (!updatedRole) {res.status(404);throw new Error(Role not found);}res.json({success: true,data: updatedRole,}); });// 删除角色 const deleteRole handleAsync(async (req: Request, res: Response) {const { id } req.params;const role await Role.findByIdAndDelete(id).exec();if (!role) {res.status(404);throw new Error(Role not found);}res.json({success: true,data: { message: Role deleted successfully },}); });// 批量删除角色 const deleteMultipleRoles handleAsync(async (req: Request, res: Response) {const { ids } req.body;await Role.deleteMany({_id: { $in: ids },}).exec();res.json({success: true,message: ${ids.length} roles deleted successfully,}); });export {getRoles,getRoleById,addRole,updateRole,deleteRole,deleteMultipleRoles, }; 这是后端代码就是增删改查。比较容易理解。 前端 import { useIntl } from umijs/max; import React, { Key, useState } from react; import { ProForm, ProFormText } from ant-design/pro-components; import { Form, Input, Spin, Tree } from antd; import useQueryList from /hooks/useQueryList; import { FormInstance } from antd/es/form; import { Permission } from /apiDataStructures/ApiDataStructure;interface Props {form?: FormInstanceany;newRecord?: boolean;onFinish: (formData: any) Promisevoid;values?: any; }const BasicForm: React.FCProps ({ newRecord, onFinish, values }) {const intl useIntl();const { items: permissionGroups, loading } useQueryList(/permission-groups/list);const [expandedKeys, setExpandedKeys] useStateKey[]([]);const [autoExpandParent, setAutoExpandParent] useStateboolean(true);const [checkedKeys, setCheckedKeys] useStateKey[] | { checked: Key[]; halfChecked: Key[] }(values.permissions?.map((permission: Permission) ${permission._id}) ?? [],);const [selectedKeys, setSelectedKeys] useStateKey[]([]);const onExpand (expandedKeysValue: Key[]) {setExpandedKeys(expandedKeysValue);setAutoExpandParent(false);};const onCheck (checkedKeysValue: Key[] | { checked: Key[]; halfChecked: Key[] }) {setCheckedKeys(checkedKeysValue);console.log(checkedKeysValue, checkedKeysValue);};const onSelect (selectedKeysValue: Key[]) {setSelectedKeys(selectedKeysValue);};return (ProForminitialValues{{...values,permissions: values?.permissions?.map((permission: Permission) permission._id),}}onFinish{async (values) {await onFinish({...values,permissions: checkedKeys,});}}ProForm.GroupProFormTextrules{[{ required: true, message: intl.formatMessage({ id: enter_name }) }]}widthmdlabel{intl.formatMessage({ id: name })}namename/ProForm.Item namepermissions label{intl.formatMessage({ id: permission_choose })}Spin spinning{loading}TreecheckableonExpand{onExpand}expandedKeys{expandedKeys}autoExpandParent{autoExpandParent}onCheck{onCheck}checkedKeys{checkedKeys}onSelect{onSelect}selectedKeys{selectedKeys}treeData{permissionGroups} // Use filtered top-level groupsfieldNames{{ title: name, key: _id, children: children }}//Spin/ProForm.Item/ProForm.Group{!newRecord (Form.Item name_id label{false}Input typehidden //Form.Item)}/ProForm); };export default BasicForm; https://www.qiuzhi99.com/playlists/antdpromakemoney.html
http://www.pierceye.com/news/982554/

相关文章:

  • 阿里去要企业网站建设方案书手机设计房子的软件3d下载
  • 凡科网站登录入轻博客网站开发
  • wordpress微信机器人订阅号性价比高seo网站优化
  • 网站建设全网推广亚马逊seo搜索什么意思
  • 做网站_你的出路在哪里android app for wordpress
  • 代刷网网站建设成都建立网站
  • 建设网站的费用预算商城网站制作
  • 北京网络法庭2018年企业网站优化如何做
  • asp.net做网站的步骤网站维护的作用
  • 网站制作前期所需要准备wordpress邮箱配置文件
  • 网站建设网站排名怎么做赣州专业做网站
  • 吉林电商网站建设价格做网站需要每年都缴费吗
  • 怎样用dede搭建网站域名网址
  • 做网站编辑有前途怎么样才算是一个网站页面
  • 建设鲜花网站前的市场分析网店设计理念
  • 网站建设优化服务公司wordpress非代码方式添加备案号
  • asp网站安装到空间教育网站平面设计
  • 快速设计一个网站网站h标签
  • 怎么做百度联盟网站前端面试题
  • 电子商务网站建设的基本要求wordpress提问
  • 论坛网站制作费用wordpress如何调用html代码
  • 打码兔怎么和网站做接口重庆网站建设找承越
  • 做海报的网站什么编辑器微楼书网站建设
  • 免费建站的网站能做影视网站吗深圳网站建设素材网站
  • 网页中网站设计规划流程wordpress主题
  • 贵阳百度做网站电话培训学校
  • 网站关键词推广哪家好深圳方维网络科技有限公司
  • 美工需要的网站阿里云wordpress托管
  • 医疗行业网站建设怎样在网上建立平台
  • 潍坊网站建设网超之梦做的网站后台修改栏目描述