CoreShop商城框架开启多租户(3)
本次任务添加租户用户,
上一次整理发现可以选择多个店铺,每个用户的
一、实体类 SysUser 的storeIds 字段改成这个
/// <summary>/// 租户Id/// </summary>[Display(Name = "店铺Id")][SugarColumn(ColumnDescription = "店铺ID列表", IsNullable = true)]public System.String storeIds { get; set; }
数据SysUser 结构 修改如下
这个列的存储方式类似主 1,3,4 的字串存储。运行程序测试看怎么样
保存之后看列表,并检测数据库是否已存盘。
2。修改 edit.html
基本上参考 create.html,代码如下:
<script type="text/html" template lay-done="layui.data.sendParams(d);"><div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-SysUser-editForm" id="LAY-app-SysUser-editForm"><input type="hidden" name="id" id="id" value="{{d.params.data.model.id || '' }}" /><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" placeholder="请输入账号" lay-reqText="请输入账号" value="{{d.params.data.model.userName || '' }}" /></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" lay-verType="tips" class="layui-input" placeholder="请输入昵称" lay-reqText="请输入昵称" value="{{d.params.data.model.nickName || '' }}" /></div></div><div class="layui-form-item"><label for="passWord" class="layui-form-label">密码</label><div class="layui-input-inline" style="width: 100px;"><input name="passWord" id="passWord" lay-verType="tips" class="layui-input" placeholder="请输入密码" lay-reqText="请输入密码" value="" /></div><div class="layui-form-mid layui-word-aux">不修改请留空</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 }}" {{ d.params.data.model.sex==item.value ? 'selected="selected"' : '' }}>{{ 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" placeholder="请输入手机号" lay-reqText="请输入手机号" value="{{d.params.data.model.phone || '' }}" /></div></div><div class="layui-form-item"><label for="phone" class="layui-form-label">店铺</label><div class="layui-input-inline"><div id="selectBox2" class="xm-select-demo"></div></div></div><div class="layui-form-item text-right core-hidden"><input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-SysUser-editForm-submit" id="LAY-app-SysUser-editForm-submit" value="确认编辑"></div></div>
</script>
<script>var debug = layui.setter.debug;layui.data.sendParams = function (d) {//开启调试情况下获取接口赋值数据if (debug) { console.log(d.params.data); }layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg','xmSelect'],function () {var $ = layui.$, form = layui.form, admin = layui.admin, laydate = layui.laydate, upload = layui.upload, cropperImg = layui.cropperImg, xmSelect = layui.xmSelect, coreHelper = layui.coreHelper;var selectBox = xmSelect.render({el: '#selectBox',tips: '请选择角色?',filterable: true,clickClose: true,toolbar: { show: false },name: 'roleIds',//radio: true,prop: {name: 'roleName',value: 'id',},data: d.params.data.roles,initValue: d.params.data.roleIds,})//以下为新增的 选择店铺下框列表框var selectBox2 = xmSelect.render({el: '#selectBox2',tips: '选店铺?',filterable: true,clickClose: true,toolbar: { show: false },name: 'storeIds',//radio: true,prop: {name: 'storeName',value: 'id',},data: d.params.data.stores})//下框列表框 结束form.verify({verifyuserName: [/^[\S]{0,50}$/, '账号最大只允许输入50位字符,且不能出现空格'],verifypassWord: [/^[\S]{0,100}$/, '密码最大只允许输入100位字符,且不能出现空格'],verifynickName: [/^[\S]{0,50}$/, '昵称最大只允许输入50位字符,且不能出现空格'],verifyavatar: [/^[\S]{0,255}$/, '头像最大只允许输入255位字符,且不能出现空格'],verifyphone: [/^[\S]{0,50}$/, '手机号最大只允许输入50位字符,且不能出现空格'],verifyemail: [/^[\S]{0,50}$/, '邮箱最大只允许输入50位字符,且不能出现空格'],verifytrueName: [/^[\S]{0,50}$/, '真实姓名最大只允许输入50位字符,且不能出现空格'],verifyidCard: [/^[\S]{0,50}$/, '身份证号最大只允许输入50位字符,且不能出现空格'],verifyintroduction: [/^[\S]{0,500}$/, '个人简介最大只允许输入500位字符,且不能出现空格'],});//重载formform.render(null, 'LAY-app-SysUser-editForm');})};
</script>
3。修改 Api/SysUser/GetEdit 指向函数返回值 添加上店铺数据。
基本还是参照GetCreate修改,修改之后代码如下:
// POST: Api/SysUser/GetEdit/// <summary>/// 编辑数据/// </summary>/// <param name="entity"></param>/// <returns></returns>[HttpPost][Description("编辑数据")]public async Task<AdminUiCallBack> GetEdit([FromBody] FMIntId entity){var jm = new AdminUiCallBack();var model = await _sysUserServices.QueryByIdAsync(entity.id);if (model == null){jm.msg = "不存在此信息";return jm;}var userSexTypes = EnumHelper.EnumToList<GlobalEnumVars.UserSexTypes>();var userRoles = await _sysUserRoleServices.QueryListByClauseAsync(p => p.userId == model.id);var roleIds = userRoles.Select(p => p.roleId).ToList();var roles = await _sysRoleServices.QueryListByClauseAsync(p => p.deleted == false);//获取所有的店铺信息var stores = await _coreCmsStoreServices.QueryListByClauseAsync(p => true); //这一句是添加的jm.code = 0;jm.data = new{model,userSexTypes,roles,roleIds,stores //添加店铺返回值};return jm;}
4。修改edit.Html,显示返回的店铺值
原来的代码有bug。修改之后的代码为:
<script type="text/html" template lay-done="layui.data.sendParams(d);"><div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-SysUser-editForm" id="LAY-app-SysUser-editForm"><input type="hidden" name="id" id="id" value="{{d.params.data.model.id || '' }}" /><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" placeholder="请输入账号" lay-reqText="请输入账号" value="{{d.params.data.model.userName || '' }}" /></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" lay-verType="tips" class="layui-input" placeholder="请输入昵称" lay-reqText="请输入昵称" value="{{d.params.data.model.nickName || '' }}" /></div></div><div class="layui-form-item"><label for="passWord" class="layui-form-label">密码</label><div class="layui-input-inline" style="width: 100px;"><input name="passWord" id="passWord" lay-verType="tips" class="layui-input" placeholder="请输入密码" lay-reqText="请输入密码" value="" /></div><div class="layui-form-mid layui-word-aux">不修改请留空</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 }}" {{ d.params.data.model.sex==item.value ? 'selected="selected"' : '' }}>{{ 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" placeholder="请输入手机号" lay-reqText="请输入手机号" value="{{d.params.data.model.phone || '' }}" /></div></div><div class="layui-form-item"><label for="phone" class="layui-form-label">店铺</label><div class="layui-input-inline"><div id="selectBox2" class="xm-select-demo"></div></div></div><div class="layui-form-item text-right core-hidden"><input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-SysUser-editForm-submit" id="LAY-app-SysUser-editForm-submit" value="确认编辑"></div></div>
</script>
<script>var debug = layui.setter.debug;layui.data.sendParams = function (d) {//开启调试情况下获取接口赋值数据if (debug) { console.log(d.params.data); }if (debug) { console.log(d.params.data.model.storeIds) }layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg','xmSelect'],function () {var $ = layui.$, form = layui.form, admin = layui.admin, laydate = layui.laydate, upload = layui.upload, cropperImg = layui.cropperImg, xmSelect = layui.xmSelect, coreHelper = layui.coreHelper;var selectBox = xmSelect.render({el: '#selectBox',tips: '请选择角色?',filterable: true,clickClose: true,toolbar: { show: false },name: 'roleIds',//radio: true,prop: {name: 'roleName',value: 'id',},data: d.params.data.roles,initValue: d.params.data.roleIds,})//以下为新增的 选择店铺下框列表框var selectBox2 = xmSelect.render({el: '#selectBox2',name: 'storeIds',prop: { name: 'storeName', value: 'id' },data: d.params.data.stores || [],initValue: Array.isArray(d.params.data.model.storeIds)? d.params.data.model.storeIds: (d.params.data.model.storeIds || "").split(',').map(Number).filter(Boolean)});//下框列表框 结束form.verify({verifyuserName: [/^[\S]{0,50}$/, '账号最大只允许输入50位字符,且不能出现空格'],verifypassWord: [/^[\S]{0,100}$/, '密码最大只允许输入100位字符,且不能出现空格'],verifynickName: [/^[\S]{0,50}$/, '昵称最大只允许输入50位字符,且不能出现空格'],verifyavatar: [/^[\S]{0,255}$/, '头像最大只允许输入255位字符,且不能出现空格'],verifyphone: [/^[\S]{0,50}$/, '手机号最大只允许输入50位字符,且不能出现空格'],verifyemail: [/^[\S]{0,50}$/, '邮箱最大只允许输入50位字符,且不能出现空格'],verifytrueName: [/^[\S]{0,50}$/, '真实姓名最大只允许输入50位字符,且不能出现空格'],verifyidCard: [/^[\S]{0,50}$/, '身份证号最大只允许输入50位字符,且不能出现空格'],verifyintroduction: [/^[\S]{0,500}$/, '个人简介最大只允许输入500位字符,且不能出现空格'],});//重载formform.render(null, 'LAY-app-SysUser-editForm');})};
</script>
修改完成。下一步继续店铺上传产品。