laravel实战化项目之三板斧
laravel是我工作10多年来见到的真正能称得上让phper从面条一样杂乱的代码中解脱出来,虽然我不是完全的phper;并真正意义上的一个比较完美优雅的基于面向对象又mvc富有表现力的强大的PHP开发框架。
laravel安装配置这里就略过不表啦。本文希望从一张表(tb_role_info 用户角色表)的CRUD展开laravel的绅士魅力。
开发技术选型:laravel framework5+bootstrap+mysql。
项目目录结构:
喔忘了views视图层,存放表现页面。
(1)业务表 tb_role_info
1 -- ---------------------------- 2 -- Table structure for `tb_role_info` 用户角色表 3 -- ---------------------------- 4 DROP TABLE IF EXISTS `tb_role_info`; 5 CREATE TABLE `tb_role_info` ( 6 `id` int(11) NOT NULL AUTO_INCREMENT, 7 `role_name` varchar(32) NOT NULL DEFAULT '' COMMENT '角色名称', 8 `role_mark` varchar(255) DEFAULT '' COMMENT '角色备注', 9 `creater_id` int(11) NOT NULL DEFAULT '0' COMMENT '记录创建者id', 10 `created_at` timestamp NULL DEFAULT NULL COMMENT '创建日期', 11 `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新日期', 12 `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间戳', 13 PRIMARY KEY (`id`), 14 KEY `tb_role_info_index` (`id`,`role_name`,`creater_id`) USING BTREE 15 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='角色信息表';
(2)业务界面 role.blade.php
<!DOCTYPE html> <html> <head> @include('backend.header') <link rel="stylesheet" type="text/css" href="{{asset('backend/plugs/bootstrap-table/src/bootstrap-table.css')}}?v={{$version}}"/> </head> <body> @include('backend.navbar') <div id="page-container"> <!-- BEGIN SIDEBAR --> @include('backend.menu') <!-- END SIDEBAR --> <!-- BEGIN RIGHTBAR --> <!-- END RIGHTBAR --> <div id="page-content"> <div id="wrap"> <div id="page-heading"> <ol class="breadcrumb"> <li><a href="#" title="icons">系统管理</a></li> <li class="active">角色信息</li> </ol> </div> <!-- container 内容显示区域begin--> <div class="container"> <div class='data-loading'></div> <div class="row"> <div class="col-xs-12"> <div id="search_panel" class="search-panel-body"> <form id="search_form" class="form-horizontal"> <div class="row"> <div class="col-md-10"> <div class="form-group"> <label for="search_txt_roleName" class="col-sm-1 control-label">角色名称</label> <div class="col-sm-11"> <input id="search_txt_roleName" type="text" class="form-control" placeholder="请输入关键字..."> </div> </div> </div> <div class="col-md-2"> <div class="form-group"> <div class="col-sm-8"> <button id="btn_search_save" type="button" class="btn btn-primary"> <i class="fa fa-search"></i> 查询</button> </div> <div class="col-sm-4"> <button id="btn_search_expand" type="button" class="btn btn-default"> <i class="fa fa-angle-double-up"></i></button> </div> </div> </div> </div> <div class="row" id="search_more_panel" style="display:none;"> </div> </form> </div> <div class="panel panel-gray"> <div class="panel-heading"> <h4>角色信息 </h4> <div class="options"> <div class="btn-group"> <div class="btn-group" id="table_tools_bar"> <button type="button" class="btn btn-default dropdown-toggle btn-tools" data-toggle="dropdown" title="定制列显示"><i class="fa fa-th-list"></i> <span class="caret"></span></button> </div> <button id="btn_role_refresh" type="button" class="btn btn-default btn-tools" title="角色刷新"><i class="fa fa-refresh"></i></button> </div> </div> <div class="options options-groups"> <a href="javascript:;" id="btn_role_delete" title="角色删除"><i class="fa fa-times"></i> 删除</a> <a data-toggle="modal" href="#form_modal" id="btn_role_edit" title="角色编辑"><i class="fa fa-edit"></i> 编辑</a> <a data-toggle="modal" href="#form_modal" id="btn_role_add" title="角色添加"><i class="fa fa-pencil"></i> 添加</a> </div> </div> <div class="panel-body"> <div class="table-responsive"> <table id="role_table"></table> </div> <!-- add/edit modal-begin --> <div id="form_modal" class="modal fade md-trigger" data-modal="md-fade-in-scale-up" tabindex="-1" role="dialog" aria-labelledby="form_modal_title" data-keyboard="true" data-backdrop="static" aria-hidden="true"> <div id="form_modal_dialog" class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> ×</button> <h4 class="modal-title" id="form_modal_title"></h4> </div> <div class="modal-body"> <form id="modalForm" class="form-horizontal" role="form" enctype="multipart/form-data"> <!-- 隐藏值存放区域 begin--> <input name="id" id="form_hidden_id" type="hidden"> <input name="createrId" id="form_hidden_createrId" type="hidden"> <!-- 隐藏值存放区域 end--> <div class="form-group"> <label for="form_txt_roleName" class="col-sm-2 control-label">角色名称</label> <div class="col-sm-7"> <input id="form_txt_roleName" name="roleName" maxlength="32" placeholder="角色名称最多32个字符" required="" type="text" class="form-control"> </div> <div class="col-sm-3"> <p class="help-block">角色名称必填!</p> </div> </div> <div class="form-group"> <label for="form_txt_roleName" class="col-sm-2 control-label">角色权限</label> <div class="col-sm-10"> <table id="table_module" class="table table-bordered"> <thead> <tr> <th width="2%" style="padding: 10px"> </th> <th width="28%" style="padding: 10px"> 模块 </th> <th width="30%" style="padding: 10px"> 功能 </th> <th width="30%" style="padding: 10px"> 动作 </th> </tr> </thead> @if(isset($moduleList)) <tbody> @foreach($moduleList as $module) @if($module->id==1 && $user->userRoleId!=1) @else <tr> <td> <input type="checkbox" id="power_{{$module->id}}" name="mod_{{$module->id}}" value="{{$module->id}}" onclick="checkModule({{$module->id}});" /> </td> <td> {{$module->moduleCnName}} </td> <td> <table width="100%"> @if(isset($module->children)) @foreach($module->children as $children) <tr> <td width="6%"><input type="checkbox" id="power_{{$children->id}}" name="fun_{{$module->id}}" value="{{$children->id}}" onclick="checkFun({{$module->id}});" /></td> <td width="94%">{{$children->moduleCnName}}</td> </tr> @endforeach @endif </table> </td> <td> <table width="100%"> @if(isset($module->children)) @foreach($module->children as $oneChild) @if(isset($oneChild->children)) @foreach($oneChild->children as $twoChild) <tr> <td width="6%"><input type="checkbox" id="power_{{$twoChild->id}}" name="act_{{$children->id}}" value="{{$twoChild->id}}" onclick="checkAction({{$children->id}});"/></td> <td width="94%">{{$twoChild->moduleCnName}}</td> </tr> @endforeach @endif @endforeach @endif </table> </td> </tr> @endif @endforeach </tbody> @endif </table> </div> </div> <div class="form-group"> <label for="form_txt_roleMark" class="col-sm-2 control-label"> 角色描述</label> <div class="col-sm-10"> <textarea id="form_txt_roleMark" name="roleMark" maxlength="255" placeholder="角色描述最多255个字符" class="form-control autosize"></textarea> </div> </div> </form> </div> <div class="modal-footer"> <button id="btn_role_save" type="button" class="btn btn-primary"> 确定</button> <button type="button" class="btn btn-default" data-dismiss="modal"> 取消</button> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> </div> <!-- add/edit modal-end --> </div> </div> </div> </div> </div> <!-- container 内容显示区域end--> </div> <!--wrap --> </div> </div> <!-- page-container --> <!-- page-content --> @include('backend.footer') </body> </html> <script type="text/javascript" charset="utf-8" src="{{asset('backend/plugs/bootstrap-table/src/bootstrap-table.js')}}?v={{$version}}"></script> <script type="text/javascript" charset="utf-8" src="{{asset('backend/plugs/bootstrap-table/src/locale/bootstrap-table-zh-CN.js')}}?v={{$version}}"></script> <script type="text/javascript" charset="utf-8" src="{{asset('backend/js/sys_role.js')}}?v={{$version}}"></script>
(3)业务界面逻辑 sys_role.js
谁总是说用了jquery会导致你的脚本代码像意大利面条呀。你看像吗?!像也只能说明你功底不够。软件架构设计规划能力太差。
/** * sys_role * 角色信息 * @author steven9801@163.com * @date 2015-11-19 */ (function ($) { $(document).ready(function () { /** * 初始化 */ init(); /** * 新建模态 */ $('#btn_role_add').click(function () { addModal() }); /** * 编辑模态 */ $('#btn_role_edit').click(function () { var rowList = dataGrid.bootstrapTable('getSelections'); var length = rowList.length; if (length == 0) { warningBox('请选择编辑对象.'); return false; } if (length > 1) { warningBox('只能编辑一项.'); return false; } editModal(rowList[0]); }); /** * 保存动作 */ $('#btn_role_save').click(function () { switch (dialogType) { case 'add': onAdd(); break; case 'edit': onEdit(); break; default: break; } }); /** * 删除 */ $('#btn_role_delete').click(function () { onDelete(); }); //-----------------常规事件----------begin-------// /** * 刷新 */ $('#btn_role_refresh').click(function () { dataGrid.bootstrapTable('destroy'); loadGrid(); }); /** * 展开 */ $('#btn_search_expand').click(function () { $(this).html(''); searchStatus = searchStatus ? false : true; if (searchStatus) { $('#search_more_panel').hide('slow'); $(this).html('<i class="fa fa-angle-double-up"></i>'); } else { $('#search_more_panel').show('slow'); $(this).html('<i class="fa fa-angle-double-down"></i>'); } return false; }); /** * 提交查询 */ $('#btn_search_save').click(function () { dataGrid.bootstrapTable('destroy'); bindGrid(function (params) { var roleName = $('#search_txt_roleName').val(); role.pageSize = params.pageSize; role.pageStart = params.pageSize * (params.pageNumber - 1); role.sortName = params.sortName; role.sortOrder = params.sortOrder; if (roleName.length > 0) { role.roleName = roleName; } return JSON.stringify(role); }); }); //-----------------常规事件----------end-------// }); })(jQuery); /** * 全局变量 */ //--------------------------全局变量区---------------------------// var dataGrid = null; //列表对象 var dialogType = 'add'; var role = {}; var lock = false; //防止重复提交 var searchStatus = false; //查询面板状态 //--------------------------全局变量区---------------------------// /** * 初始化 */ function init() { loadGrid(); $("#form_modal .modal-body").css({ height: "650px", overflowX: "hidden", overflowY: "auto" }); $('textarea.autosize').autosize({ append: "\n" }); }; /** * * 加载列表 * */ function loadGrid() { bindGrid(function (params) { return JSON.stringify({ pageSize: params.pageSize, pageStart: params.pageSize * (params.pageNumber - 1), sortName: params.sortName, sortOrder: params.sortOrder }); }); return false; }; /** * 绑定列表 */ function bindGrid(callBack) { dataGrid = $('#role_table').bootstrapTable({ method: 'POST', contentType: 'application/json;charset=utf-8', url: '../admin/role', height: 500, striped: true, pagination: true, sidePagination: 'server', pageSize: 25, pageList: [25, 50, 100, 200], showExport: true, sortName: 'createdAt', sortOrder: 'desc', minimunCountColumns: 2, formatLoadingMessage: function () { return '<img src="../../backend/images/loading.gif"/>'; }, queryParams: callBack, columns: [ { field: 'state', checkbox: true }, { field: 'roleName', title: '角色名称', align: 'left', valign: 'middle', sortable: true }, { field: 'createdAt', title: '创建时间', align: 'center', valign: 'middle', sortable: true }, { field: 'operate', title: '操作', align: 'left', valign: 'middle', sortable: false, formatter: formatOperate, events: operateEvents } ] }); }; /** * 格式化操作列 * */ function formatOperate(value, row, index) { var content = []; content.push(' <a class="view" data-toggle="modal" href="#form_modal" title="角色查看"><i class="fa fa-eye"></i></a>'); content.push(' <a class="edit" data-toggle="modal" href="#form_modal" title="角色编辑"><i class="fa fa-edit"></i></a>'); content.push(' <a class="delete" href="javascript:void(0)" title="角色删除"><i class="fa fa-times"></i></a>'); return content.join(''); }; /** * 操作列事件 */ window.operateEvents = { 'click .view': function (e, value, row, index) { viewModal(row); return false; }, 'click .edit': function (e, value, row, index) { editModal(row); return false; }, 'click .delete': function (e, value, row, index) { if (lock) return false; lock = true; if (userToken.id != row.createrId) { lock = false; warningBox('对不起,您无权删除该角色.'); return false; } var ids = []; ids.push(row.id); var params = {}; params.ids = ids; deleteModal(params); } }; /** * 显示模态 */ function showModal(action, title, width) { dialogType = action; $('.modal-footer').show(); $('#form_modal #form_modal_title').html(title); $('#form_modal_dialog').css({ width: width }); $('select,textarea,input').prop('disabled', false); $('#back-to-top').trigger('click'); return false; }; /** * 绑定模态 */ function bindModal(row) { $('#form_hidden_id').val(row.id); $('#form_hidden_createrId').val(row.createrId); $('#form_txt_roleName').val(row.roleName); $('#form_txt_roleMark').val(row.roleMark); $("input[id^='power_']").removeAttr("checked"); var roleModuleList = row.roleModuleList; for (var i in roleModuleList) { var id = roleModuleList[i]; $("input[id='power_" + id + "']").prop("checked", true); } }; /** * 查看模态 */ function viewModal(row) { showModal('view', '角色查看', '60%'); bindModal(row); $('select,textarea,input:not(.fixed-table-container input)').prop('disabled', true); $('#search_panel select,#search_panel input').prop('disabled', false); $('#table_tools_bar').find('input').prop('disabled', false); $('.modal-footer').hide(); return false; }; /** * 编辑模态 */ function editModal(row) { role = row; if (userToken.id != row.createrId) { pauseModal('#form_modal'); warningBox('对不起,您无权编辑该角色.'); return false; } showModal('edit', '角色编辑', '60%'); bindModal(row); return false; }; /** * 新建模态 */ function addModal() { showModal('add', '角色新建', '60%'); $('input[type=text],input[type=hidden],input[type=number],textarea').val(''); $('select option').eq(0).prop('selected', true); $("input[id^='power_']").prop('checked', false); return false; }; /** * 验证表单 */ function checkForm() { if (lock) return false; lock = true; var roleName = $("#form_txt_roleName").val(); if (roleName.length == 0) { warningBox("角色名称不能为空."); lock = false; return false; } if (roleName.length > 32) { warningBox("角色名称最多32个字符."); lock = false; return false; } if ($("input[id^='power_']:checkbox:checked").length == 0) { warningBox("请选择权限."); lock = false; return false; } var roleMark = $("#form_txt_roleMark").val(); if (roleMark.length > 255) { warningBox("角色描述最多255个字符."); lock = false; return false; } var roleModuleList = []; $("input[id^='power_']:checkbox:checked").each(function () { var id = parseInt($(this).val()); roleModuleList.push(id); }); role.roleName = roleName; role.roleMark = roleMark; role.roleModuleList = roleModuleList; return true; }; /** * 角色添加 */ function onAdd() { if (!checkForm()) { return false; } $('.data-loading').show(); var task = new DelayedTask(function () { $.ajax({ cache: false, type: "POST", dataType: "json", contentType: "application/json;charset=utf-8", url: "../admin/role/add", data: JSON.stringify(role), timeout: 30000, success: function (data) { if (data) { $(".data-loading").hide(); var code = data.code; if (code != 0) { dangerBox(data.message); lock = false; return false; } lock = false; $('#form_modal').modal('hide') successBox('角色新建成功.'); $('#btn_role_refresh').trigger('click'); } return false; }, error: function (e) { if (e.status == 404) { window.location = "../../404.html"; } else if (e.status == 500) { window.location = "../../500.html"; } } }); }); task.delay(500); return false; }; /** * 角色编辑 */ function onEdit() { if (!checkForm()) { return false; } $('.data-loading').show(); var task = new DelayedTask(function () { $.ajax({ cache: false, type: "POST", dataType: "json", contentType: "application/json;charset=utf-8", url: "../admin/role/edit", data: JSON.stringify(role), timeout: 30000, success: function (data) { if (data) { $(".data-loading").hide(); var code = data.code; if (code != 0) { dangerBox(data.message); lock = false; return false; } lock = false; $('#form_modal').modal('hide') successBox('角色编辑成功.'); $('#btn_role_refresh').trigger('click'); } return false; }, error: function (e) { if (e.status == 404) { window.location = "../../404.html"; } else if (e.status == 500) { window.location = "../../500.html"; } } }); }); task.delay(500); return false; }; /** * 角色删除 */ function onDelete() { if (lock) return false; lock = true; var ids = []; var rowList = dataGrid.bootstrapTable('getSelections'); var length = rowList.length; if (length == 0) { warningBox('请选择删除对象.'); lock = false; return false; } var flag = false; for (var i in rowList) { var row = rowList[i]; var createrId = row.createrId; if (userToken.id != createrId) { flag = true; } var id = row.id; ids.push(id); } if (flag) { warningBox('对不起,您无权删除该角色.'); lock = false; return false; } var params = {}; params.ids = ids; deleteModal(ids); return false; }; /** * 删除模态 */ function deleteModal(ids) { confirmBox('您确定要删除吗?!', function (result) { if (result) { $('.data-loading').show(); $.ajax({ cache: false, type: 'POST', dataType: 'json', contentType: 'application/json;charset=utf-8', url: '../admin/role/delete', data: JSON.stringify(ids), timeout: 30000, success: function (data) { if (data) { $('.data-loading').hide(); var code = data.code; if (code != 0) { dangerBox(data.message); lock = false; return false; } lock = false; successBox('角色删除成功.'); $('#btn_role_refresh').trigger('click'); } return false; }, error: function (e) { if (e.status == 404) { window.location = '../../404.html'; } else if (e.status == 500) { window.location = '../../500.html'; } } }); } else { lock = false; } }); return false; }; /** * 选择模块 */ function checkModule(moduleId) { $("input[name='fun_" + moduleId + "']").each(function () { if ($(this).is(":checked") == true) { $(this).prop("checked", false) } else { $(this).prop("checked", true); } }); }; /** * 选择功能 */ function checkFun(moduleId) { var funLength = $("input[name='fun_" + moduleId + "']:checkbox:checked").length; if (funLength != 0) { $("input[name='mod_" + moduleId + "']").prop("checked", true); } else { $("input[name='mod_" + moduleId + "']").prop("checked", false); } }; /** * 选择动作 */ function checkAction(funId) { var actLength = $("input[name='act_" + funId + "']:checkbox:checked").length; if (actLength != 0) { $("input[id='power_" + funId + "']").prop("checked", true); } else { $("input[id='power_" + funId + "']").prop("checked", false); } };
(4)业务控制器 RoleController.php
<?php /** * This is class RoleController * 角色控制器 * @author steven9801@163.com * @date 2015-11-19 * */ class RoleController extends BaseController { private $roleInfoService = null; private $userInfoService = null; private $moduleInfoService = null; private $roleModuleService = null; private $transactionalService = null; public function __construct() { if(is_null($this->userInfoService)) { $this->userInfoService = new UserInfoService; } if(is_null($this->roleInfoService)) { $this->roleInfoService = new RoleInfoService; } if(is_null($this->moduleInfoService)) { $this->moduleInfoService = new ModuleInfoService; } if(is_null($this->roleModuleService)) { $this->roleModuleService = new RoleModuleService; } if(is_null($this->transactionalService)) { $this->transactionalService = new TransactionalService; } } /** * 角色界面 */ public function index() { if (!Auth::check()) { return Redirect::to('admin/login'); } $moduleList = $this->moduleInfoService->selectModuleInfo(); if(!is_null($moduleList)) { $moduleList = $this->objectToTree($moduleList); } return View::make('backend.role',array('sys' => $this->getConfigInfo())) ->with('version',Str::random(6)) ->with('roleModuleList',$this->getRoleModuleInfo()) ->with('user',Auth::user()) ->with('moduleList',$moduleList); } /** * 角色列表 */ public function grid() { if (!Auth::check()) { return Redirect::to('admin/login'); } try { $roleInfo = (object)Input::all(); $userInfo = Auth::user(); $sortName = $roleInfo->sortName; $sortOrder = $roleInfo->sortOrder; $pageStart = $roleInfo->pageStart; $pageSize = $roleInfo->pageSize; $where = function($query) use($roleInfo,$userInfo) { if(isset($roleInfo->roleName)) { $query->where('role_name','like','%'.$roleInfo->roleName.'%'); } }; $total = $this->roleInfoService->getRoleInfoCount($where); $roleInfoList = $this->roleInfoService->searchRoleInfo($where,$sortName,$sortOrder,$pageStart,$pageSize); $entityGrid = null; if(!is_null($roleInfoList)&&$roleInfoList->count()>0) { foreach($roleInfoList as $roleModel) { $roleId = $roleModel->id; $where = function($query) use($roleId) { $query->where('role_id',$roleId); }; $roleModuleListModel = $this->roleModuleService->selectRoleModule($where); if(!is_null($roleModuleListModel)) { $roleModuleList = array(); foreach($roleModuleListModel as $roleModule) { $roleModuleList[] = $roleModule->moduleId; } $roleModel->roleModuleList = $roleModuleList; } } $entityGrid = $this->getEntityGrid($roleInfoList,$total); } else { $entityGrid = $this->getEntityGrid($roleInfoList); } $this->handlerResponseMessage($entityGrid); return $this->handlerResponseMessage($entityGrid); } catch(Exception $e) { Log::error($e->getMessage()); return $this->handlerFailMessage($e->getMessage()); } } /** * 角色新建 */ public function add() { if (!Auth::check()) { return Redirect::to('admin/login'); } try { $roleInfo = (object)Input::all(); $userInfo = Auth::user(); $roleName = $roleInfo->roleName; $where = function($query) use($roleName) { $query->where('role_name',$roleName); }; $roleInfoModel = $this->roleInfoService->getRoleInfo($where); if(!is_null($roleInfoModel)) { throw new Exception('角色名称已存在.'); } $roleInfo->createrId = $userInfo->id; $result = $this->transactionalService->insertRoleInfo($roleInfo); if($result==0) { throw new Exception('角色新建失败.'); } $this->logSuccess(); return $this->handlerSuccessMessage('../admin/role'); } catch(Exception $e) { $this->logFailed(); Log::error($e->getMessage()); return $this->handlerFailMessage($e->getMessage()); } } /** * 角色编辑 */ public function edit() { if (!Auth::check()) { return Redirect::to('admin/login'); } try { $roleInfo = (object)Input::all(); $userInfo = Auth::user(); $result = $this->transactionalService->updateRoleInfo($roleInfo); if($result==0) { throw new Exception('角色编辑失败.'); } $this->logSuccess(); return $this->handlerSuccessMessage('../admin/role'); } catch(Exception $e) { $this->logFailed(); Log::error($e->getMessage()); return $this->handlerFailMessage($e->getMessage()); } } /** * 角色删除 */ public function delete() { if (!Auth::check()) { return Redirect::to('admin/login'); } try { $ids = (array)Input::all(); $roleInfoList = $this->roleInfoService->selectRoleInfoByList($ids); if(is_null($roleInfoList)&&$roleInfoList->count()==0) { throw new Exception('角色删除失败.'); } $result = $this->transactionalService->deleteRoleInfo($roleInfoList); if($result==0) { throw new Exception('角色删除失败.'); } $this->logSuccess(); return $this->handlerSuccessMessage('../admin/role'); } catch(Exception $e) { $this->logFailed(); Log::error($e->getMessage()); return $this->handlerFailMessage($e->getMessage()); } } }
(5)业务实体层 RoleInfo.php
<?php /** * This is class RoleInfo * 角色实体类 * @author steven9801@163.com * @date 2015-11-19 */ class RoleInfo extends BaseModel { protected $table = 'tb_role_info'; protected $primaryKey = 'id'; protected $softDelete = false; protected $roleModuleList = null; }
(6)业务数据层 RoleInfoDataProvider.php
<?php /** * This is class RoleInfoDataProvider * 角色数据驱动类 * @author steven9801@163.com * @date 2015-11-19 */ class RoleInfoDataProvider extends BaseDataProvider { public function __construct() { parent::__construct(new RoleInfo); } public function insertRoleInfo($model) { $roleInfo = new RoleInfo; $roleInfo->roleName = isset($model->roleName)?$model->roleName:''; $roleInfo->roleMark = isset($model->roleMark)?$model->roleMark:''; $roleInfo->createrId = isset($model->createrId)?$model->createrId:0; return $roleInfo->save() ? $roleInfo -> id:0; } public function updateRoleInfo($model) { if(!($model->id)) { throw new Exception('参数id不能为空.'); } $roleInfo = RoleInfo::find($model->id); if(is_null($roleInfo)) { throw new Exception('[ID='.$model->id. ']不存在或者已被删除.'); } if(isset($model->roleName)) { $roleInfo->roleName = $model->roleName; } if(isset($model->roleMark)) { $roleInfo->roleMark = $model->roleMark; } if(isset($model->createrId)) { $roleInfo->createrId = $model->createrId; } return $roleInfo->save(); } public function clearRoleInfo() { $roleInfoList = RoleInfo::all(); if(is_null($roleInfoList)) { throw new Exception('记录不存在或者已被删除.'); } foreach($roleInfoList as $roleInfo) { $result = $roleInfo->delete(); if(!$result) { break; } } return $result; } public function deleteRoleInfo($roleInfo) { return $roleInfo->delete(); } public function deleteRoleInfoByList($ids) { return RoleInfo::whereIn('id', $ids)->delete(); } public function getRoleInfo($where) { if(is_null($where)) { return RoleInfo::first(); } return RoleInfo::where($where)->first(); } public function getRoleInfoCount($where) { if(is_null($where)) { return RoleInfo::count(); } return RoleInfo::where($where)->count(); } public function selectRoleInfo($where,$sortName,$sortOrder) { if(is_null($where)) { return RoleInfo::orderBy(snake_case($sortName),$sortOrder)->get(); } return RoleInfo::where($where)->orderBy(snake_case($sortName),$sortOrder)->get(); } public function selectRoleInfoByList($ids) { return RoleInfo::whereIn('id', $ids)->get(); } public function searchRoleInfo($where, $sortName, $sortOrder, $pageStart, $pageSize) { if(is_null($where)) { return RoleInfo::orderBy(snake_case($sortName),$sortOrder)->skip($pageStart)->take($pageSize)->get(); } return RoleInfo::where($where)->orderBy(snake_case($sortName),$sortOrder)->skip($pageStart)->take($pageSize)->get(); } }
(7)业务服务层 RoleInfoService.php
<?php /** * This is class RoleInfoService * 角色服务类 * @author steven9801@163.com * @date 2015-11-19 */ class RoleInfoService extends BaseService { private $roleInfoDataProvider = null; public function __construct() { if(is_null($this->roleInfoDataProvider)) { $this->roleInfoDataProvider = new RoleInfoDataProvider; } parent::__construct($this->roleInfoDataProvider); } public function insertRoleInfo($roleInfo) { $result = DB::transaction(function() use ($roleInfo) { return $this->roleInfoDataProvider->insertRoleInfo($roleInfo); }); return $result; } public function insertRoleInfoBatch($roleInfoList) { $result = DB::transaction(function() use ($roleInfoList) { $insertedCount = 0; $changed = 0; foreach($roleInfoList as $roleInfo) { $changed = $this->roleInfoDataProvider->insertRoleInfo($roleInfo); if ($changed < 1) { return 0; } $insertedCount++; } return $insertedCount; }); return $result; } public function updateRoleInfo($roleInfo) { $result = DB::transaction(function() use ($roleInfo) { return $this->roleInfoDataProvider->updateRoleInfo($roleInfo); }); return $result; } public function updateRoleInfoBatch($roleInfoList) { $result = DB::transaction(function() use ($roleInfoList) { $updatedCount = 0; $changed = 0; foreach($roleInfoList as $roleInfo) { $changed = $this->roleInfoDataProvider->updateRoleInfo($roleInfo); if ($changed < 1) { return 0; } $updatedCount++; } return $updatedCount; }); return $result; } public function clearRoleInfo() { $result = DB::transaction(function() use ($roleInfo) { return $this->roleInfoDataProvider->clearRoleInfo(); }); return $result; } public function deleteRoleInfo($roleInfo) { $result = DB::transaction(function() use ($roleInfo) { return $this->roleInfoDataProvider->deleteRoleInfo($roleInfo); }); return $result; } public function deleteRoleInfoByList($ids) { $result = DB::transaction(function() use ($ids) { return $this->roleInfoDataProvider->deleteRoleInfoByList($ids); }); return $result; } public function deleteRoleInfoBatch($roleInfoList) { $result = DB::transaction(function() use ($roleInfoList) { $deletedCount = 0; $changed = 0; foreach($roleInfoList as $roleInfo) { $changed = $this->roleInfoDataProvider->deleteRoleInfo($roleInfo); if ($changed < 1) { return 0; } $deletedCount++; } return $deletedCount; }); return $result; } public function getRoleInfo($where=null) { return $this->roleInfoDataProvider->getRoleInfo($where); } public function getRoleInfoCount($where=null) { return $this->roleInfoDataProvider->getRoleInfoCount($where); } public function selectRoleInfo($where=null,$sortName='id',$sortOrder='desc') { return $this->roleInfoDataProvider->selectRoleInfo($where,$sortName,$sortOrder); } public function selectRoleInfoByList($Ids) { return $this->roleInfoDataProvider->selectRoleInfoByList($Ids); } public function searchRoleInfo($where=null, $sortName='id', $sortOrder='desc', $pageStart=0, $pageSize=25) { return $this->roleInfoDataProvider->searchRoleInfo($where, $sortName, $sortOrder, $pageStart, $pageSize); } }
就这样简单整个业务表的CRUD结构清晰的完整的呈现在你面前啦。管中窥豹,真正拥有者会如获至宝。
敬请期待下期:
spring mvc 实战化项目之三板斧
asp.net mvc 实战化项目之三板斧
感兴趣的朋友扫下面的二维码给点打赏吧!
虽功未成,亦未敢藏私,众侠诸神通尽录于此,竟成一笈,名葵花宝典,以飨后世。
邮箱:steven9801@163.com
QQ: 48039387
邮箱:steven9801@163.com
QQ: 48039387