修改书籍

main
tamguo 7 years ago
parent cdde2c0154
commit 3ec984badd

@ -11,4 +11,6 @@ public interface IBookService extends IService<BookEntity>{
void save(BookEntity book);
void update(BookEntity book);
}

@ -39,4 +39,21 @@ public class BookServiceImpl extends ServiceImpl<BookMapper, BookEntity> impleme
bookMapper.insert(book);
}
@Transactional(readOnly=false)
@Override
public void update(BookEntity book) {
CourseEntity course = courseMapper.selectById(book.getCourseId());
BookEntity entity = bookMapper.selectById(book.getId());
entity.setName(book.getName());
entity.setPointNum(book.getPointNum());
entity.setQuestionNum(book.getQuestionNum());
entity.setRemarks(book.getRemarks());
entity.setPublishingHouse(book.getPublishingHouse());
entity.setSort(book.getSort());
entity.setCourseId(course.getId());
bookMapper.updateById(entity);
}
}

@ -8,15 +8,14 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.plugins.Page;
import com.tamguo.common.utils.ExceptionSupport;
import com.tamguo.common.utils.Result;
import com.tamguo.modules.tiku.model.BookEntity;
import com.tamguo.modules.tiku.model.CourseEntity;
import com.tamguo.modules.tiku.model.condition.BookCondition;
import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum;
import com.tamguo.modules.tiku.service.IBookService;
import com.tamguo.modules.tiku.service.ISubjectService;
import com.tamguo.modules.tiku.service.ICourseService;
@Controller
@RequestMapping(path="tiku/book")
@ -24,17 +23,27 @@ public class BookController {
/** 书籍*/
private final String BOOK_LIST_PAGE = "modules/tiku/book/list";
private final String BOOK_UPDATE_PAGE = "modules/tiku/book/update";
@Autowired
private IBookService iBookService;
@Autowired
private ISubjectService iSubjectService;
private ICourseService iCourseService;
@SuppressWarnings("unchecked")
@RequestMapping(path="list")
public ModelAndView index(ModelAndView model) {
model.setViewName(BOOK_LIST_PAGE);
model.addObject("subjectList", iSubjectService.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())));
return model;
}
@RequestMapping(path="update")
public ModelAndView update(String id, ModelAndView model) {
model.setViewName(BOOK_UPDATE_PAGE);
BookEntity book = iBookService.selectById(id);
CourseEntity course = iCourseService.selectById(book.getCourseId());
model.addObject("book", book);
model.addObject("course", course);
return model;
}
@ -55,4 +64,15 @@ public class BookController {
return ExceptionSupport.resolverResult("保存书籍", this.getClass(), e);
}
}
@RequestMapping(path="update",method=RequestMethod.POST)
@ResponseBody
public Result update(BookEntity book) {
try {
iBookService.update(book);
return Result.result(0, null, "修改书籍【"+book.getName()+"】成功");
} catch (Exception e) {
return ExceptionSupport.resolverResult("修改书籍", this.getClass(), e);
}
}
}

@ -14,7 +14,7 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'static/common/common.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">
@ -143,6 +143,15 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
</script> </div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 排序号:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="sort" name="sort" value="" maxlength="10" class="form-control digits"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">

@ -170,8 +170,8 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
columnModel: [
{header:'书籍编号', name:'uid', index:'u.login_code', width:200, align:"center", frozen:true, formatter: function(val, obj, row, act){
return '<a href="sys/user/update?userCode='+row.userCode+'&op=edit" class="btnList" data-title="编辑用户">'+(val||row.id)+'</a>';
{header:'书籍编号', name:'id', index:'u.id', width:200, align:"center", frozen:true, formatter: function(val, obj, row, act){
return '<a href="tiku/book/update?id='+row.id+'&op=edit" class="btnList" data-title="编辑书籍">'+(val||row.id)+'</a>';
}},
{header:'分类', name:'subjectName', index:'u.courseName', width:200, align:"center"},
{header:'科目', name:'courseName', index:'u.courseName', width:200, align:"center"},
@ -194,7 +194,7 @@ $('#dataGrid').dataGrid({
}},
{header:'操作', name:'actions', width:260, sortable:false, title:false, formatter: function(val, obj, row, act){
var actions = [];
actions.push('<a href="sys/user/update?userCode='+row.userCode+'&op=edit" class="btnList" title="编辑用户"><i class="fa fa-pencil"></i></a>&nbsp;');
actions.push('<a href="tiku/book/update?id='+row.id+'&op=edit" class="btnList" title="编辑书籍"><i class="fa fa-pencil"></i></a>&nbsp;');
if (row.status == Global.STATUS_NORMAL){
actions.push('<a href="'+ctx+'sys/user/disable?userCode='+row.userCode+'" class="btnList" title="停用用户" data-confirm="确认要停用该用户吗?"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
}

@ -0,0 +1,227 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><meta content="webkit" name="renderer"/><meta http-equiv="X-UA-Compatible"
content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>书籍管理 - JeeSite Demo</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
<!--[if lt IE 9]><script src="/js/static/common/h5fix.min.js"></script><![endif]-->
<link rel="stylesheet" th:href="${setting.domain + 'fonts/font-icons.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'bootstrap/css/bootstrap.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'select2/4.0/select2.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa icon-trophy"></i> 新增书籍
</div>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div>
</div>
<form id="inputForm" th:action="${setting.domain + 'tiku/book/update'}" method="post" class="form-horizontal">
<input type="hidden" id="id" name="id" th:value="${book.id}"/>
<div class="box-body">
<div class="form-unit">基本信息</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 书籍名称:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="name" name="name" th:value="${book.name}" maxlength="100" class="form-control required "/>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 出版社:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="publishingHouse" name="publishingHouse" th:value="${book.publishingHouse}" maxlength="64" class="form-control required"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required">*</span> 归属科目:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group treeselect" id="companyDiv" data-url="tiku/course/treeData?">
<input id="courseId" type="hidden" name="courseId" th:value="${course.id}" class="isReset"/>
<input id="courseName" type="text" name="courseName" th:value="${course.name}"
class="form-control " readonly="readonly"
/><span class="input-group-btn"><a id="companyButton" href="javascript:"
class="btn btn-default "><i class="fa fa-search"></i></a>
</span>
</div>
<script>
$("#companyButton,#courseName").click(function(){
if ($("#companyButton").hasClass("disabled")){
return true;
}
var options = {
type: 2,
maxmin: true,
shadeClose: true,
title: '公司选择',
area: ['300px', '400px'],
content: 'sys/treeselect',
contentFormData: {
url: $('#companyDiv').attr('data-url'),
checkbox: 'false',
expandLevel: '-1',
selectCodes: $("#courseId").val(),
isReturnValue: 'false'
},
success: function(layero, index){
if ($(js.layer.window).width() < 300
|| $(js.layer.window).height() < 400){
js.layer.full(index);
}
},
btn: ['<i class="fa fa-check"></i> 确定'],
btn1: function(index, layero){
var win = js.layer.iframeWindow(index);
win.$('#keyword').val('').change(); var codes = [], names = [], nodes;
if ("false" == "true"){
nodes = win.tree.getCheckedNodes(true);
}else{
nodes = win.tree.getSelectedNodes();
}
for(var i=0; i<nodes.length; i++) {
if (nodes[i].level == 0 && nodes[i].isParent){
js.showMessage("不能选择根节点("+nodes[i].name+")请重新选择。");
return false;
}
if (nodes[i].isParent){
js.showMessage("不能选择父节点("+nodes[i].name+")请重新选择。");
return false;
}
var code = nodes[i]['false'=='true'?'value':'id'], name = nodes[i]['name'];
codes.push(code.replace(/^u_/g,''));
names.push(name.replace(/\([0-9]*\)/g,''));
break;
}
if(typeof treeselectCheck == 'function'){
if (!treeselectCheck('course', nodes)){
return false;
}
}
$("#courseId").val(codes.join(',')).change();
$("#courseName").val(names.join(',')).change();
try { $('#courseId,#courseName').valid(); }catch(e){}
if(typeof treeselectCallback == 'function'){
treeselectCallback('course', 'ok', index, layero, nodes);
}
}
};
options.btn.push('<i class="fa fa-eraser"></i> 清除');
options['btn'+options.btn.length] = function(index, layero){
$("#courseId").val('').change();
$("#courseName").val('').change();
if(typeof treeselectCallback == 'function'){
treeselectCallback('course', 'clear', index, layero);
}
};
options.btn.push('<i class="fa fa-close"></i> 关闭');
options['btn'+options.btn.length] = function(index, layero){
if(typeof treeselectCallback == 'function'){
treeselectCallback('course', 'cancel', index, layero);
}
};
js.layer.open(options);
});
</script> </div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 排序号:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="sort" name="sort" th:value="${book.sort}" maxlength="10" class="form-control digits"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 问题数量:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="questionNum" name="questionNum" th:value="${book.questionNum}" maxlength="64" class="form-control required abc"/>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 知识点数量:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="pointNum" name="pointNum" th:value="${book.pointNum}" maxlength="10" class="form-control digits"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<label class="control-label col-sm-2" title="">
<span class="required hide">*</span> 备注信息:<i class="fa icon-question hide"></i></label>
<div class="col-sm-10">
<textarea id="remarks" name="remarks" rows="4" maxlength="500" class="form-control " th:utext="${book.remarks}"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="box-footer">
<div class="row">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> 保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> 关 闭</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<a id="scroll-up" href="#" class="btn btn-sm"><i class="fa fa-angle-double-up"></i></a>
<script th:src="${setting.domain + 'bootstrap/js/bootstrap.min.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/select2.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/i18n/zh_CN.js'}"></script>
<script th:src="${setting.domain + 'layer/3.1/layer.js'}"></script>
<script th:src="${setting.domain + 'my97/WdatePicker.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/jquery.validate.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/localization/messages_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/jquery.validate.extend.js'}"></script>
<script th:src="${setting.domain + 'common/jeesite.js'}"></script>
<script th:src="${setting.domain + 'common/i18n/jeesite_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'common/common.js'}"></script>
<script>
$("#inputForm").validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);
if(data.code == 0){
js.closeCurrentTabPage(function(contentWindow){
contentWindow.page();
});
}
}, "json");
}
});
</script>

@ -14,7 +14,7 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'static/common/common.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">

@ -14,7 +14,7 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'static/common/common.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">

Loading…
Cancel
Save