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

CoreShop商城框架开启多租户(2)

上次我们自己添加了一个多租户数据表,结构今天整理数据库发现coreshop已经放置了一个,店铺表格表格结构,SQL代码如下:

CREATE TABLE [dbo].[CoreCmsStore]([id] [int] IDENTITY(1,1) NOT NULL,[storeName] [nvarchar](125) NULL,[mobile] [nvarchar](13) NULL,[linkMan] [nvarchar](32) NULL,[logoImage] [nvarchar](255) NULL,[areaId] [int] NOT NULL,[address] [nvarchar](200) NULL,[coordinate] [nvarchar](50) NULL,[latitude] [nvarchar](40) NULL,[longitude] [nvarchar](40) NULL,[isDefault] [bit] NOT NULL,[createTime] [datetime] NOT NULL,[updateTime] [datetime] NULL,[distance] [decimal](18, 2) NOT NULL,CONSTRAINT [PK__corecms___3213E83F7480ADF3] PRIMARY KEY CLUSTERED 
([id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]GOALTER TABLE [dbo].[CoreCmsStore] ADD  CONSTRAINT [DF_CoreCmsStore_isDefault]  DEFAULT ((0)) FOR [isDefault]
GOALTER TABLE [dbo].[CoreCmsStore] ADD  CONSTRAINT [DF_CoreCmsStore_distance]  DEFAULT ((0)) FOR [distance]
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'id'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'storeName'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店电话/手机号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'mobile'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店联系人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'linkMan'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店logo' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'logoImage'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店地区id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'areaId'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店详细地址' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'address'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'坐标位置' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'coordinate'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'纬度' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'latitude'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'经度' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'longitude'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否默认' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'isDefault'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'createTime'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'updateTime'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'距离' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore', @level2type=N'COLUMN',@level2name=N'distance'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'门店表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsStore'
GO

经分析,原作者应该没做了一部分多门店的功能,可能由于某些原因,没有完成。因此我们现在转换思路,在这表张完善门店信息。传入的商品信息表 [CoreCmsGoods](主要是产品的规格等基本信息) 和 [CoreCmsProducts](主要是商品库存信息)。在这两张表里都添加门店ID

[storeId] [int] NULL,

以方便各个门店之间的结算。

即原来添加的 TenantId 字段改为 storeId,还要在用户信息表SysUser中的 TenantId 字段改为 storeId。
做些这些基础操作,我们还要要对产品信息的添加做一个改进。这里我们参照淘宝助手做了一个上传工具,每个店铺都第上千条产品信息,每个在web 输入实在不方便。

一、给每个店铺,添加一个店铺管理员

工作任务:修改一个添加用户界面,添加用户可以选择店铺,超级管理可以给所有店铺添加产品。
1。修改实体类,登录就现错误。

在这里插入图片描述
查看错误,原来的修改了列的属生,没有在实类体中同步,现在我们手动改动它。修改CoreCms.Net.Model\Entities\System\SysUser.cs文件中下面几行

  /// <summary>/// 修改时间/// </summary>[Display(Name = "修改时间")][SugarColumn(ColumnDescription = "修改时间", IsNullable = true)]public System.DateTime? updateTime { get; set; }/// <summary>/// 租户Id/// </summary>[Display(Name = "店铺Id")]public int ? storeId { get; set; }

修改添后台用户添加原来界面如下:
在这里插入图片描述
现要在这个弹出窗口时添加一处选择店铺的下拉列框表框。
根据窗口地址找到文件CoreCms.Net.Web.Admin\wwwroot\views\system\sysuser\create.html 文件,界面代码如下:

 <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-SysUser-createForm" id="LAY-app-SysUser-createForm"><div class="layui-form-item"><label for="trueName" class="layui-form-label">角色</label><div class="layui-input-block"><div id="selectBox" class="xm-select-demo"></div></div></div><div class="layui-form-item"><label for="userName" class="layui-form-label">账号</label><div class="layui-input-block"><input name="userName" id="userName" lay-verType="tips" lay-verify="required|verifyuserName" class="layui-input" lay-reqText="请输入账号" placeholder="请输入账号" /></div></div><div class="layui-form-item"><label for="passWord" class="layui-form-label">密码</label><div class="layui-input-block"><input name="passWord" id="passWord" lay-verType="tips" lay-verify="required|verifypassWord" class="layui-input" lay-reqText="请输入密码" placeholder="请输入密码" /></div></div><div class="layui-form-item"><label for="nickName" class="layui-form-label">昵称</label><div class="layui-input-block"><input name="nickName" id="nickName" lay-verType="tips" lay-verify="required|verifynickName" class="layui-input" lay-reqText="请输入昵称" placeholder="请输入昵称" /></div></div><div class="layui-form-item"><label for="sex" class="layui-form-label">性别</label><div class="layui-input-block"><select name="sex" id="sex" lay-verType="tips" lay-verify="required" lay-verType="tips" lay-verify="required|number" lay-reqText="请选择性别"><option value="" selected="selected">请选择</option>{{# layui.each(d.params.data.userSexTypes, function(index, item){ }}<option value="{{ item.value }}">{{ item.title }}</option>{{# }); }}</select></div></div><div class="layui-form-item"><label for="phone" class="layui-form-label">手机号</label><div class="layui-input-block"><input name="phone" id="phone" lay-verType="tips" lay-verify="required|phone" class="layui-input" lay-reqText="请输入手机号" placeholder="请输入手机号" /></div></div><div class="layui-form-item text-right core-hidden"><input type="button" class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-SysUser-createForm-submit" id="LAY-app-SysUser-createForm-submit" value="确认添加"></div>

在输入手机号之下添加一个下拉列表框。
代码如下:

<div class="layui-form-item"><label for="phone" class="layui-form-label">店铺</label><div class="layui-input-inline"><select name="store" lay-verify="required" lay-search><option value="">请选择店铺</option></select></div></div>

打开调试器看一下初始函数 Api/SysUser/GetCreate,找到该函数所在的位置:CoreCms.Net.Web.Admin\Controllers\System\SysUserController.cs 修改GetCreate函数添加店铺信息,以便进行初始化。

 // POST: Api/SysUser/GetCreate/// <summary>///     创建数据/// </summary>/// <returns></returns>[HttpPost][Description("创建数据")]public async Task<AdminUiCallBack> GetCreate(){//返回数据var userSexTypes = EnumHelper.EnumToList<GlobalEnumVars.UserSexTypes>();var roles = await _sysRoleServices.QueryListByClauseAsync(p => p.deleted == false);//获取所有的店铺信息var stores = await _coreCmsStoreServices.QueryListByClauseAsync(p => true); //这一句是添加的var jm = new AdminUiCallBack { code = 0 };jm.data = new { userSexTypes, roles, stores };//添加店铺返回值 return jm;}

这样就可以初始化窗口了。
运行之后界面如下
在这里插入图片描述

http://www.dtcms.com/a/332051.html

相关文章:

  • 莫队 + 离散化 Ann and Books
  • 【19-模型训练细节 】
  • 业务敏捷性对SAP驱动型企业意味着什么?如何保持企业敏捷性?
  • 零信任架构(Zero Trust Architecture, ZTA)(通过动态验证和最小权限控制,实现对所有访问请求的严格授权和持续监控)
  • latex 中破折号的输入
  • 介绍java中atomic及相关类
  • PERC初探暨小试牛刀
  • Vue3 vxeTree树形组件完全指南:从入门到精通的完整使用教程
  • QT6(可视化UI设计代码实现)
  • MATLAB实现图像增强(直方图均衡化)
  • 数学分析| 极限论| 1.数列极限常用方法总结
  • App冷启动阶段Open Dexfiles实现原理【ART虚拟机系列2】
  • docker nginx 定时脚本保存30天日志信息
  • MFC的使用——使用ChartCtrl绘制曲线
  • 2025.8.13~14 实习总结
  • 计算机网络技术学习-day1《网络乾坤:从比特洪流到协议星河的奇幻之旅》​
  • MCU中的LTDC(LCD-TFT Display Controller)
  • 网卡聚合teamdctl
  • 大模型技术栈全景
  • Java 图片像素碰撞检测
  • Linux软件编程-进程(1)
  • 【嵌入式C语言】四
  • 【PCB设计经验】3D模型在线预览!效率便捷!
  • pycharm远程连接服务器跑实验详细操作
  • ClickHouse 日常运维命令总结
  • 并发编程原理与实战(二十三)StampedLock应用实战与其他锁性能对比分析
  • CentOS7系统负载异常飙高全链路分析详细指南
  • Kaggle赛题分析1:Elo用户忠诚度评分预测(2)-特征工程与模型训练
  • 解决Python环境混乱问题
  • 【159页PPT】智慧方案企业数字化转型流程体系建设与运营方案(附下载方式)