Files
SMANAGE/gvsds/urls.py
T

288 lines
24 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from django.conf import settings
from django.urls import path, include, re_path
from django.contrib import admin
from django.views.static import serve as static_serve
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView,
)
from gvsds.apps.core.views import SubdomainView
from gvsds.apps.ugm import views as ugm_views
from gvsds.apps.gerp import views as gerp_views
from gvsds.apps.gerp import oidc as gerp_oidc
from gvsds.apps.gerp.views.settings_api import SettingsAPIView
from gvsds.apps.crb import views as crb_views
from gvsds.apps.sve import views as sve_views
from gvsds.apps.invite import views as invite_views
from gvsds.apps.mc import views as mc_views
from gvsds.apps.api import views as api_views
urlpatterns = [
path('admin/', admin.site.urls),
path('api/auth/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/auth/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('api/gerp/', include('gvsds.apps.gerp.urls')),
path('api/ugm/', include('gvsds.apps.ugm.urls')),
path('api/crb/', include('gvsds.apps.crb.urls')),
path('api/invite/', include('gvsds.apps.invite.urls')),
path('api/ccgo/', include('gvsds.apps.ccgo.urls')),
path('api/sve/', include('gvsds.apps.sve.urls')),
path('api/t4/', include('gvsds.apps.t4.urls')),
path('api/doc/', include('gvsds.apps.doc.urls')),
path('api/', include('gvsds.apps.api.urls')),
path('api/msync/', include('gvsdsdk.msync.urls')),
path('api/payment/', include('gvsds.apps.payment.urls')),
path('api/commission/', include('gvsds.apps.commission.urls')),
path('api/stats/', include('gvsds.apps.stats.urls')),
path('Auth/Login', ugm_views.LoginView.as_view(), name='auth_login'),
path('Auth/Register', ugm_views.RegisterView.as_view(), name='auth_register'),
path('Auth/Verify2FA', ugm_views.Verify2FAView.as_view(), name='auth_verify2fa'),
path('Auth/DeleteAllCookies', ugm_views.LogoutView.as_view(), name='auth_logout'),
path('Auth/RefreshToken', ugm_views.CookieTokenRefreshView.as_view(), name='auth_refresh'),
path('Auth/GetUserRoles', ugm_views.GetUserRolesView.as_view(), name='auth_user_roles'),
path('Auth/SwitchRole', ugm_views.SwitchRoleView.as_view(), name='auth_switch_role'),
path('Query/GetELTUserAvatar', ugm_views.GetUserAvatarView.as_view(), name='query_avatar'),
path('Query/GetArgsUserAvatar', ugm_views.GetArgsUserAvatarView.as_view(), name='query_avatar_by_uuid'),
path('Query/GetELTUserInfo', ugm_views.GetUserInfoView.as_view(), name='query_user_info'),
path('Query/GetELTUserName', ugm_views.GetUserNameView.as_view(), name='query_user_name'),
path('Modify/ModifyELTUserPassWord', ugm_views.ModifyPasswordView.as_view(), name='modify_password'),
path('Modify/ModifyELTUserAvatar', ugm_views.ModifyAvatarView.as_view(), name='modify_avatar'),
path('API/User/ModifyPersonalConfig', gerp_views.ModifyPersonalConfigView.as_view(), name='gerp_modify_config'),
path('API/User/UserCenterCard', gerp_views.UserCenterCardView.as_view(), name='gerp_center_card'),
path('API/User/RequestPersonalConfig', gerp_views.UserConfigView.as_view(), name='gerp_config'),
path('API/User/UserTIdCard', gerp_views.UserIdCardView.as_view(), name='gerp_idcard'),
path('API/User/ModifyPassword', gerp_views.ModifyPasswordView.as_view(), name='gerp_modify_password'),
path('API/User/UserInformation', gerp_views.UserInformationView.as_view(), name='gerp_information'),
path('API/MenuList', gerp_views.MenuListCompatView.as_view(), name='menu_list'),
path('API/Menu/AdminList', gerp_views.MenuAdminListView.as_view(), name='menu_admin_list'),
path('API/Menu/Save', gerp_views.MenuSaveView.as_view(), name='menu_save'),
path('API/Menu/Delete', gerp_views.MenuDeleteView.as_view(), name='menu_delete'),
path('API/Settings', SettingsAPIView.as_view(), name='user_settings'),
path('API/Message', gerp_views.MessageCompatView.as_view(), name='message'),
path('API/Finance/Show', gerp_views.CashReceiptsPaymentsLedgerViewSet.as_view({'get': 'show', 'post': 'show'}), name='finance_show'),
path('API/UserManager/MemberCard', gerp_views.MemberCardView.as_view(), name='member_card'),
path('API/Asset/List', gerp_views.FileAssetViewSet.as_view({'get': 'list'}), name='asset_list'),
path('API/Asset/Upload', gerp_views.AssetUploadInitView.as_view(), name='asset_upload'),
path('API/Asset/UploadChunk', gerp_views.AssetUploadChunkView.as_view(), name='asset_upload_chunk'),
path('API/Asset/UploadComplete', gerp_views.AssetUploadCompleteView.as_view(), name='asset_upload_complete'),
path('API/Asset/UploadInit', gerp_views.AssetUploadInitView.as_view(), name='asset_upload_init'),
path('API/Asset/Delete/<sha1>', gerp_views.FileAssetViewSet.as_view({'delete': 'destroy'}), name='asset_delete'),
path('API/Asset/Download/<sha1>', api_views.AssetDownloadView.as_view(), name='asset_download'),
path('API/Asset/RefLink/<sha1>', gerp_views.AssetRefLinkView.as_view(), name='asset_reflink'),
path('API/TwoFactorAuthentication/Setup', gerp_views.TwoFASetupView.as_view(), name='2fa_setup'),
path('API/TwoFactorAuthentication/QR', gerp_views.TwoFAQrView.as_view(), name='2fa_qr'),
path('API/TwoFactorAuthentication/Status', gerp_views.TwoFAStatusView.as_view(), name='2fa_status'),
path('API/TwoFactorAuthentication/Disable', gerp_views.TwoFADisableView.as_view(), name='2fa_disable'),
path('API/AccountActivation/ActivateAccount', gerp_views.AccountActivationVerifyView.as_view(), name='account_activate'),
path('API/AccountActivation/SendAccountActivationCode', gerp_views.AccountActivationSendView.as_view(), name='account_send_code'),
path('API/AccountActivation/MyEmail', gerp_views.MyEmailView.as_view(), name='account_my_email'),
path('API/AccountActivation/ChangeEmail', gerp_views.ChangeEmailView.as_view(), name='account_change_email'),
path('API/WorkOrder/List', gerp_views.WorkOrderViewSet.as_view({'get': 'list'}), name='workorder_list'),
path('API/WorkOrder/MyOrders', gerp_views.WorkOrderViewSet.as_view({'get': 'my_orders'}), name='workorder_my'),
path('API/WorkOrder/Create', gerp_views.WorkOrderViewSet.as_view({'post': 'create_order'}), name='workorder_create'),
path('API/WorkOrder/Get/<order_uuid>', gerp_views.WorkOrderViewSet.as_view({'get': 'retrieve'}), name='workorder_get'),
path('API/WorkOrder/Update/<order_uuid>', gerp_views.WorkOrderViewSet.as_view({'put': 'update_order', 'patch': 'update_order'}), name='workorder_update'),
path('API/WorkOrder/Delete/<order_uuid>', gerp_views.WorkOrderViewSet.as_view({'delete': 'destroy'}), name='workorder_delete'),
path('API/Backpack/GetBackpackItems', gerp_views.BackpackViewSet.as_view({'get': 'my_items'}), name='backpack_get'),
path('API/Backpack/DiscardItem', gerp_views.BackpackViewSet.as_view({'post': 'discard_item'}), name='backpack_discard'),
path('API/Department/GetDepartments', gerp_views.DepartmentViewSet.as_view({'get': 'list'}), name='dept_list'),
path('API/Department/SetPersonInCharge', gerp_views.DepartmentViewSet.as_view({'post': 'set_person_in_charge'}), name='dept_set_charge'),
path('API/SiteUserManagement/GetSiteUsers', gerp_views.SiteUserManagementView.as_view(), name='site_users'),
path('API/SiteUserManagement/ResetPassword', gerp_views.SiteUserResetPasswordView.as_view(), name='site_user_reset_pwd'),
path('API/SiteUserManagement/VerifyPassword', gerp_views.SiteUserVerifyPasswordView.as_view(), name='site_user_verify_pwd'),
path('API/SiteUserManagement/EnableAccount', gerp_views.SiteUserEnableView.as_view(), name='site_user_enable'),
path('API/SiteUserManagement/DisableAccount', gerp_views.SiteUserDisableView.as_view(), name='site_user_disable'),
path('API/SiteUserManagement/EnableAccountEmailVerify', gerp_views.SiteUserEmailVerifyView.as_view(), name='site_user_enable_email'),
path('API/SiteUserManagement/DisableAccountEmailVerify', gerp_views.SiteUserEmailVerifyView.as_view(), name='site_user_disable_email'),
path('API/SiteUserManagement/GetUser2FAInfo', gerp_views.SiteUser2FAInfoView.as_view(), name='site_user_2fa_info'),
path('API/SiteUserManagement/Backpack/GetUserBackpackItems', gerp_views.SiteUserBackpackView.as_view(), name='site_user_backpack_get'),
path('API/SiteUserManagement/Backpack/AddUserBackpackItem', gerp_views.SiteUserBackpackView.as_view(), name='site_user_backpack_add'),
path('API/SiteUserManagement/Backpack/ModifyUserBackpackItem', gerp_views.SiteUserBackpackView.as_view(), name='site_user_backpack_modify'),
path('API/SiteUserManagement/Backpack/DeleteUserBackpackItem', gerp_views.SiteUserBackpackView.as_view(), name='site_user_backpack_delete'),
path('API/Item/GetItems', gerp_views.ItemReferenceViewSet.as_view({'get': 'list'}), name='item_list'),
path('API/Item/AddItem', gerp_views.ItemReferenceViewSet.as_view({'post': 'add_item'}), name='item_add'),
path('API/Item/ModifyItemSettings', gerp_views.ItemReferenceViewSet.as_view({'post': 'modify_item'}), name='item_modify'),
path('API/Item/DeleteItem', gerp_views.ItemReferenceViewSet.as_view({'post': 'delete_item'}), name='item_delete'),
path('API/FormAPI/Tables', gerp_views.FormAPICompatView.as_view(), name='form_tables'),
path('API/FormAPI/Columns/<TableName>', gerp_views.FormAPICompatView.as_view(), name='form_columns'),
path('API/FormAPI/Get/<TableName>', gerp_views.FormAPICompatView.as_view(), name='form_get'),
path('API/FormAPI/Add/<TableName>', gerp_views.FormAPICompatView.as_view(), name='form_add'),
path('API/FormAPI/Modify/<TableName>/<id>', gerp_views.FormAPICompatView.as_view(), name='form_modify'),
path('API/FormAPI/ModifyItem/<TableName>/<id>', gerp_views.FormAPICompatView.as_view(), name='form_modify_item'),
path('API/FormAPI/Delete/<TableName>/<id>', gerp_views.FormAPICompatView.as_view(), name='form_delete'),
path('API/FormAPI/CodeDisplay', gerp_views.FormAPICompatView.as_view(), name='form_code_display'),
path('API/FormAPI/WorkOrderStats', gerp_views.WorkOrderStatsView.as_view(), name='form_workorder_stats'),
path('API/FormAPI/MenuSearch', gerp_views.MenuViewSet.as_view({'get': 'search'}), name='form_menu_search'),
path('API/FormAPI/RoleSearch', gerp_views.RoleViewSet.as_view({'get': 'search'}), name='form_role_search'),
path('API/FormAPI/UserRoleSearch', gerp_views.UserRoleViewSet.as_view({'get': 'search'}), name='form_user_role_search'),
path('API/FormAPI/CompanySearch', gerp_views.CompanyViewSet.as_view({'get': 'search'}), name='form_company_search'),
path('API/FormAPI/TenantSearch', gerp_views.TenantViewSet.as_view({'get': 'search'}), name='form_tenant_search'),
path('API/FormAPI/UserSearch', gerp_views.SiteUserManagementView.as_view(), name='form_user_search'),
path('API/FormAPI/DepartmentSearch', gerp_views.DepartmentViewSet.as_view({'get': 'search'}), name='form_department_search'),
path('API/FormAPI/PermissionSearch', gerp_views.PermissionViewSet.as_view({'get': 'search'}), name='form_permission_search'),
path('API/FormAPI/PositionTemplateSearch', gerp_views.PositionTemplateViewSet.as_view({'get': 'search'}), name='form_position_template_search'),
path('API/FormAPI/PositionSearch', gerp_views.PositionViewSet.as_view({'get': 'search'}), name='form_position_search'),
path('API/FormAPI/ShopSearch', gerp_views.ShopViewSet.as_view({'get': 'search'}), name='form_shop_search'),
path('API/FormAPI/WorkgroupSearch', gerp_views.WorkgroupViewSet.as_view({'get': 'search'}), name='form_workgroup_search'),
path('API/FormAPI/CheckAdmin', gerp_views.CheckAdminView.as_view(), name='form_check_admin'),
path('API/Company/UploadIcon', gerp_views.CompanyIconUploadView.as_view(), name='company_upload_icon'),
# 租户入驻与审核工作流
path('API/Tenant/Apply', gerp_views.TenantApplyView.as_view(), name='tenant_apply'),
path('API/Tenant/Pending', gerp_views.TenantPendingListView.as_view(), name='tenant_pending'),
path('API/Tenant/Approve/<uuid:tenant_uuid>', gerp_views.TenantApproveView.as_view(), name='tenant_approve'),
path('API/Tenant/Reject/<uuid:tenant_uuid>', gerp_views.TenantRejectView.as_view(), name='tenant_reject'),
# 应用/功能市场与安装授权
path('API/App/Market', gerp_views.AppMarketView.as_view(), name='app_market'),
path('API/App/MyApps', gerp_views.AppMyAppsView.as_view(), name='app_my_apps'),
path('API/App/ManageCompanies', gerp_views.AppManageCompaniesView.as_view(), name='app_manage_companies'),
path('API/App/Install', gerp_views.AppInstallView.as_view(), name='app_install'),
path('API/App/Uninstall', gerp_views.AppUninstallView.as_view(), name='app_uninstall'),
path('API/App/Enable', gerp_views.AppUserEnableView.as_view(), name='app_enable'),
path('API/App/Disable', gerp_views.AppUserDisableView.as_view(), name='app_disable'),
path('API/App/Apply', gerp_views.AppApplyView.as_view(), name='app_apply'),
path('API/App/Approve', gerp_views.AppApproveView.as_view(), name='app_approve'),
path('API/App/Pending', gerp_views.AppPendingView.as_view(), name='app_pending'),
path('API/App/Config', gerp_views.AppConfigView.as_view(), name='app_config'),
path('API/App/Config/Copy', gerp_views.AppConfigCopyView.as_view(), name='app_config_copy'),
# 官网社区(discuss.gvsds.com 前端调用)
path('API/Community/', include('gvsds.apps.community.urls')),
# 角色权限分配(权限树勾选)
path('API/Role/PermissionsTree', gerp_views.RolePermissionsTreeView.as_view(), name='role_permissions_tree'),
path('API/Role/SavePermissions', gerp_views.RoleSavePermissionsView.as_view(), name='role_save_permissions'),
# 订单状态流转(完整状态机)
path('API/Order/<str:action>/<uuid:order_uuid>', gerp_views.OrderFlowView.as_view(), name='order_flow'),
# 支付网关配置(脱敏显示)
path('API/Payment/Configs', gerp_views.PaymentConfigListView.as_view(), name='payment_config_list'),
path('API/Payment/ConfigDetail/<uuid:config_uuid>', gerp_views.PaymentConfigDetailView.as_view(), name='payment_config_detail'),
path('API/Payment/SaveConfig', gerp_views.PaymentConfigSaveView.as_view(), name='payment_config_save'),
path('API/Payment/DeleteConfig/<uuid:config_uuid>', gerp_views.PaymentConfigDeleteView.as_view(), name='payment_config_delete'),
# 仪表盘统计(按角色差异化)
path('API/Dashboard/Stats', gerp_views.DashboardStatsView.as_view(), name='dashboard_stats'),
# 员工邮箱(Stalwart 邮件服务器)
path('API/Mail/Session', gerp_views.MailSessionView.as_view(), name='mail_session'),
path('API/Mail/Apply', gerp_views.MailApplyView.as_view(), name='mail_apply'),
path('API/Mail/ChangePassword', gerp_views.MailChangePasswordView.as_view(), name='mail_change_password'),
path('API/Mail/MyMailbox', gerp_views.MailMyMailboxView.as_view(), name='mail_my_mailbox'),
path('API/Mail/Login', gerp_views.MailLoginView.as_view(), name='mail_login'),
path('API/Mail/Logout', gerp_views.MailLogoutView.as_view(), name='mail_logout'),
path('API/Mail/Jmap', gerp_views.MailJmapView.as_view(), name='mail_jmap'),
path('API/Mail/Contacts', gerp_views.MailContactsView.as_view(), name='mail_contacts'),
path('API/Mail/AdminList', gerp_views.MailAdminListView.as_view(), name='mail_admin_list'),
path('API/Mail/Disable', gerp_views.MailDisableView.as_view(), name='mail_disable'),
# Gitea 代码托管对接(员工申请 + 管理员管理)
path('API/Gitea/Session', gerp_views.GiteaSessionView.as_view(), name='gitea_session'),
path('API/Gitea/Apply', gerp_views.GiteaApplyView.as_view(), name='gitea_apply'),
path('API/Gitea/MyAccount', gerp_views.GiteaMyAccountView.as_view(), name='gitea_my_account'),
path('API/Gitea/ChangePassword', gerp_views.GiteaChangePasswordView.as_view(), name='gitea_change_password'),
path('API/Gitea/Avatar', gerp_views.GiteaAvatarView.as_view(), name='gitea_avatar'),
path('API/Gitea/AdminList', gerp_views.GiteaAdminListView.as_view(), name='gitea_admin_list'),
path('API/Gitea/Disable', gerp_views.GiteaDisableView.as_view(), name='gitea_disable'),
# GERP系统 运维管理(仅系统管理员 admin:super)
path('API/GERPSystem/Status', gerp_views.GERPSystemStatusView.as_view(), name='gerp_system_status'),
path('API/GERPSystem/Schedules', gerp_views.GERPSystemSchedulesView.as_view(), name='gerp_system_schedules'),
path('API/GERPSystem/Schedules/Trigger', gerp_views.GERPSystemScheduleTriggerView.as_view(), name='gerp_system_trigger'),
path('API/GERPSystem/Secrets', gerp_views.GERPSystemSecretsView.as_view(), name='gerp_system_secrets'),
path('API/GERPSystem/Runtime', gerp_views.GERPSystemRuntimeView.as_view(), name='gerp_system_runtime'),
# Gitea 免密登录(OIDC Provider)
path('.well-known/openid-configuration', gerp_oidc.OIDCDiscoveryView.as_view(), name='oidc_discovery'),
path('oidc/authorize', gerp_oidc.OIDCAuthorizeView.as_view(), name='oidc_authorize'),
path('oidc/token', gerp_oidc.OIDCTokenView.as_view(), name='oidc_token'),
path('oidc/jwks', gerp_oidc.OIDCJwksView.as_view(), name='oidc_jwks'),
path('oidc/userinfo', gerp_oidc.OIDCUserInfoView.as_view(), name='oidc_userinfo'),
path('API/doc/doc/GetDocs', gerp_views.DocView.as_view(), name='doc_list'),
path('API/doc/doc/GetDoc', gerp_views.DocView.as_view(), name='doc_get'),
path('API/doc/doc/AddDoc', gerp_views.DocView.as_view(), name='doc_add'),
path('API/doc/doc/ModifyDocSettings', gerp_views.DocView.as_view(), name='doc_modify'),
path('API/doc/doc/DeleteDoc', gerp_views.DocView.as_view(), name='doc_delete'),
path('API/doc/doc/ExportDocx', gerp_views.DocView.as_view(), name='doc_export_docx'),
path('API/doc/serie/GetSeries', gerp_views.SerieView.as_view(), name='serie_list'),
path('API/doc/serie/AddSerie', gerp_views.SerieView.as_view(), name='serie_add'),
path('API/doc/serie/ModifySerieSettings', gerp_views.SerieView.as_view(), name='serie_modify'),
path('API/doc/serie/DeleteSerie', gerp_views.SerieView.as_view(), name='serie_delete'),
path('API/Enterprise/GetEnterprise', crb_views.EnterpriseViewSet.as_view({'get': 'get_enterprise'}), name='enterprise_get'),
path('API/Enterprise/NewEnterprise', crb_views.EnterpriseViewSet.as_view({'post': 'new_enterprise'}), name='enterprise_new'),
path('API/Enterprise/GetEnterpriseCard', crb_views.EnterpriseViewSet.as_view({'get': 'get_enterprise_card'}), name='enterprise_card'),
path('API/Enterprise/Deregistration', crb_views.EnterpriseViewSet.as_view({'post': 'deregistration'}), name='enterprise_deregistration'),
path('API/Enterprise/GetEnterpriseMember', crb_views.EnterpriseUserViewSet.as_view({'get': 'get_members'}), name='enterprise_member_get'),
path('API/Enterprise/NewEnterpriseMember', crb_views.EnterpriseUserViewSet.as_view({'post': 'new_member'}), name='enterprise_member_new'),
path('API/Enterprise/DeleteEnterpriseMember', crb_views.EnterpriseUserViewSet.as_view({'post': 'delete_member', 'delete': 'delete_member'}), name='enterprise_member_delete'),
path('API/StoredValue/Cash', crb_views.CmeStoreValueViewSet.as_view({'post': 'cash'}), name='stored_value_cash'),
path('API/StoredValue/GetStoreValue', crb_views.CmeStoreValueViewSet.as_view({'get': 'get_store_value'}), name='stored_value_get'),
path('API/StoredValue/StoreValue', crb_views.CmeStoreValueViewSet.as_view({'post': 'store_value'}), name='stored_value_store'),
path('API/StoredValue/GetRules', crb_views.CmeStoreValueViewSet.as_view({'get': 'get_store_value_rules'}), name='stored_value_rules'),
path('API/wallet', crb_views.CmeBalancesViewSet.as_view({'get': 'wallet', 'post': 'wallet'}), name='wallet'),
path('API/Wallet/Exchange', crb_views.CmeBalancesViewSet.as_view({'post': 'exchange'}), name='wallet_exchange'),
path('API/Wallet/GenerateShareToken', crb_views.CmeBalancesViewSet.as_view({'post': 'generate_share_token'}, permission_classes=[crb_views.IsAuthenticated]), name='wallet_generate_share_token'),
path('API/Wallet/SharedBalance', crb_views.CmeBalancesViewSet.as_view({'get': 'shared_balance'}, permission_classes=[crb_views.AllowAny]), name='wallet_shared_balance'),
path('API/Wallet/ShareQRCode', crb_views.CmeBalancesViewSet.as_view({'get': 'share_qrcode'}, permission_classes=[crb_views.AllowAny]), name='wallet_share_qrcode'),
# 商店系统(淘宝/拼多多风格游戏内商店)
# 商品
path('API/Shop/ProductList', crb_views.ShopProductViewSet.as_view({'get': 'list_public'}, permission_classes=[crb_views.AllowAny]), name='shop_product_list'),
path('API/Shop/ProductDetail', crb_views.ShopProductViewSet.as_view({'get': 'detail'}, permission_classes=[crb_views.AllowAny]), name='shop_product_detail'),
path('API/Shop/MyProducts', crb_views.ShopProductViewSet.as_view({'get': 'my_products'}), name='shop_my_products'),
path('API/Shop/CreateProduct', crb_views.ShopProductViewSet.as_view({'post': 'create_product'}), name='shop_product_create'),
path('API/Shop/ModifyProduct', crb_views.ShopProductViewSet.as_view({'post': 'modify_product'}), name='shop_product_modify'),
path('API/Shop/DeleteProduct', crb_views.ShopProductViewSet.as_view({'post': 'delete_product'}), name='shop_product_delete'),
path('API/Shop/SetProductStatus', crb_views.ShopProductViewSet.as_view({'post': 'set_status'}), name='shop_product_status'),
# 购物车
path('API/Shop/CartList', crb_views.ShopCartViewSet.as_view({'get': 'list'}), name='shop_cart_list'),
path('API/Shop/CartAdd', crb_views.ShopCartViewSet.as_view({'post': 'add'}), name='shop_cart_add'),
path('API/Shop/CartUpdate', crb_views.ShopCartViewSet.as_view({'post': 'update_quantity'}), name='shop_cart_update'),
path('API/Shop/CartRemove', crb_views.ShopCartViewSet.as_view({'post': 'remove'}), name='shop_cart_remove'),
path('API/Shop/CartClear', crb_views.ShopCartViewSet.as_view({'post': 'clear'}), name='shop_cart_clear'),
# 订单
path('API/Shop/OrderList', crb_views.ShopOrderViewSet.as_view({'get': 'list_orders'}), name='shop_order_list'),
path('API/Shop/OrderDetail', crb_views.ShopOrderViewSet.as_view({'get': 'detail'}), name='shop_order_detail'),
path('API/Shop/CreateOrder', crb_views.ShopOrderViewSet.as_view({'post': 'create_order'}), name='shop_order_create'),
path('API/Shop/PayOrder', crb_views.ShopOrderViewSet.as_view({'post': 'pay'}), name='shop_order_pay'),
path('API/Shop/CancelOrder', crb_views.ShopOrderViewSet.as_view({'post': 'cancel'}), name='shop_order_cancel'),
path('API/Shop/ShipOrder', crb_views.ShopOrderViewSet.as_view({'post': 'ship'}), name='shop_order_ship'),
path('API/Shop/ConfirmOrder', crb_views.ShopOrderViewSet.as_view({'post': 'confirm'}), name='shop_order_confirm'),
path('API/Shop/RefundOrder', crb_views.ShopOrderViewSet.as_view({'post': 'refund'}), name='shop_order_refund'),
path('API/Shop/RefundApprove', crb_views.ShopOrderViewSet.as_view({'post': 'refund_approve'}), name='shop_order_refund_approve'),
path('API/SVEList', sve_views.SVEViewSet.as_view({'get': 'list_sve', 'post': 'list_sve'}), name='sve_list'),
path('API/GetInformation', sve_views.SVEViewSet.as_view({'get': 'get_information', 'post': 'get_information'}), name='sve_info'),
path('API/Write', sve_views.SVEViewSet.as_view({'post': 'write'}), name='sve_write'),
path('API/InitConversation', invite_views.InviteConversationViewSet.as_view({'post': 'init'}), name='invite_init'),
path('API/SendConversation', invite_views.InviteConversationViewSet.as_view({'post': 'send'}), name='invite_send'),
path('API/ConversationHistory', invite_views.InviteConversationViewSet.as_view({'get': 'history', 'post': 'history'}), name='invite_history'),
path('API/UserBind.api', mc_views.UserBindView.as_view(), name='mc_user_bind'),
]
urlpatterns += [
re_path(r'^static/(?P<path>.*)$', static_serve, {'document_root': settings.STATIC_ROOT}),
re_path(r'^media/(?P<path>.*)$', static_serve, {'document_root': settings.MEDIA_ROOT}),
path('', SubdomainView.as_view(), name='index'),
re_path(r'^(?P<file_path>.+)$', SubdomainView.as_view(), name='subdomain_file'),
]