数据库字段:
tb_goodsdetial:
Controller:
//商家增加商品--》待审核状态、待上架
@PostMapping("/goodsAdd")
@ResponseBody
public JsonResult insertGood(TbGoodsdetail goodsDetail, MultipartFile gPicture1,String goodsTypeName,HttpSession session) throws FileNotFoundException {
JsonResult result = goodsDetailService.insertGood(goodsDetail, gPicture1,goodsTypeName,session);
return result;
}
Mapper:
//商家新增货物
Integer insertGood(TbGoodsdetail tbGoodsdetail);
<!--商家新增货物-->
<insert id="insertGood" parameterType="TbGoodsdetail">
insert into tb_goodsdetail(goodsId,gName,gNowPrice,gOldPrice,gSizeMsg
,gPicture,number,uid,goodsTypeId,gscore,isPass,isHot,state)
values(null,#{gName},#{gNowPrice},0,#{gSizeMsg},#{gPicture},
#{number},#{uid},#{goodsTypeId},0,2,0,2)
</insert>
Service:
//商家新增商品
JsonResult insertGood(TbGoodsdetail tbGoodsdetail,MultipartFile gPicture, String goodsTypeName,HttpSession session) throws FileNotFoundException;
ServiceImpl:
//商家新增商品
@Override
public JsonResult insertGood(TbGoodsdetail goodsDetail, MultipartFile gPicture,String goodsTypeName,HttpSession session) throws FileNotFoundException {
if(gPicture==null){
return new JsonResult(201,"请上传图片!");
}
//获取文件的大小
if(gPicture.getSize()>1024*1024*50){
return new JsonResult(202,"请上传小于50MB的图片");
}
//获取上传的文件名
String filename = gPicture.getOriginalFilename();
//获取文件后缀
int index = filename.lastIndexOf(".");
String sub = filename.substring(index + 1, filename.length());
if(!sub.equals("jpg")&&!sub.equals("png")&&!sub.equals("bmp")){
return new JsonResult(203,"请上传jpg或png或bmp类型文件!");
}
String suffix = filename.substring(index);
//文件名不能重复,故用当前系统时间毫秒值+文件名来区分
long time = System.currentTimeMillis();
String newFileName = time +suffix;//long类型+字符串类型自动变为字符串类型
//要上传的位置
String staticPath = ResourceUtils.getURL("classpath:static").getPath().replace('/', '\\');
System.out.println(staticPath);
String path=staticPath+"\\"+"upload";
System.out.println(path);
File file1=new File(path);
if (!file1.exists()){
file1.mkdirs();
}
String filePath = path+File.separator+newFileName;
System.out.println("filePath------"+filePath);
//判断目录下的文件是否存在,使用file对象来描述文件路径
File file2 = new File(filePath);
//上传文件
try {
gPicture.transferTo(file2);
Integer uid = 2;//(Integer) session.getAttribute("uid");
if(uid==null){
return new JsonResult(206,"会话失效,请重新登录!");
}
goodsDetail.setUid(uid);
} catch (IOException e) {
e.printStackTrace();
return new JsonResult(204,"头像上传失败!");
}
goodsDetail.setGPicture(newFileName);
Integer goodsTypeId = goodsDetailMapper.findTypeIdByName(goodsTypeName);
goodsDetail.setGoodsTypeId(goodsTypeId);
Integer integer = goodsDetailMapper.insertGood(goodsDetail);
if(integer!=1){
return new JsonResult(205,"新增失败!");
}
return new JsonResult(200,"新增成功,等待审核!");
}
Html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="@{/}">
<meta charset="utf-8">
<title>
修改商品信息
</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/index.css">
<script src="./lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/index.js"></script>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script>
</head>
<body>
<div class="layui-card">
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<div class="layui-tab-content" >
<div class="layui-tab-item layui-show" >
<form class="layui-form layui-form-pane"> <!--th:action="@{/goodUpdate}-->
<div class="layui-form-item">
<label class="layui-form-label">
<span class='x-red'>*</span>商品名称
</label>
<div class="layui-input-block">
<!--readonly="readonly"只读,不可修改-->
<input type="text" th:value="${good.getGName()}" th:name="gName" th:id="gName" autocomplete="off" placeholder="请输入商品规格"
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">
<span class='x-red'>*</span>商品类型
</label>
<div class="layui-input-block">
<select th:name="goodsTypeName" th:id="goodsTypeName">
<option th:selected="selected" th:text="${good.goodstype.goodsTypeName}"
th:value="${good.goodstype.goodsTypeName}" th:title="原商品类型">
</option>
<option th:each="goodsTypeList:${allGoodsType}"
th:value="${goodsTypeList.getGoodsTypeName()}"
th:text="${goodsTypeList.getGoodsTypeName()}">
</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">
<span class='x-red'>*</span>价格
</label>
<div class="layui-input-block">
<input type="text" th:name="gNowPrice" th:id="gNowPrice" th:value="${good.getGNowPrice()}" autocomplete="off" placeholder="请输入商品现价"
class="layui-input" lay-verify="number">
</div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">
<span class='x-red'>*</span>原价
</label>
<div class="layui-input-block">
<input type="text" th:name="gOldPrice" th:id="gOldPrice" th:value="${good.getGOldPrice()}" autocomplete="off" placeholder="请输入商品原价"
class="layui-input" lay-verify="number">
</div>
</div>-->
<div class="layui-form-item">
<label class="layui-form-label">
<span class='x-red'>*</span>商品规格
</label>
<div class="layui-input-block">
<input type="text" th:name="gSizeMsg" th:id="gSizeMsg" th:value="${good.getGSizeMsg()}" autocomplete="off" placeholder="请输入商品规格"
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">
<span class='x-red'>*</span>库存
</label>
<div class="layui-input-block">
<input type="text" th:name="number" th:id="number" th:value="${good.getNumber()}" autocomplete="off" placeholder="请输入商品库存"
class="layui-input" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">
<span class="x-red">*</span>商品缩略图
</label>
<div class="layui-input-inline">
<div class="site-demo-upbar">
<input type="file" name="gPicture" id="gPicture"/>
</div>
</div>
</div>
<div class="layui-form-item imgs" id="imgshow">
<label class="layui-form-label">商品缩略图展示
</label>
<img th:src="@{/upload/{id}(id=${good.getGPicture()})}" id="pimages" name="pimages" style="width: 400px;height: 200px;"/>
</div>
<br>
<div class="layui-form-item" style="text-align: center;">
<button th:type="button" class="layui-btn" lay-filter="*" id="btn">保存
</button>
</div>
</form>
<div style="height:100px;"></div>
</div>
</div>
</div>
</div>
<script>
//页面加载完成后
$(function () {
var file=document.getElementById("gPicture");
file.onchange=function () {
var img=document.createElement("img");
img.src=window.URL.createObjectURL(file.files[0])
img.onload=function(){
window.URL.revokeObjectURL(this.src)
}
var newSrc=img.src;
$("#pimages").attr("src",newSrc);
}
});
layui.use(['element','layer','form'], function(){
$ = layui.jquery;//jquery
lement = layui.element();//面包导航
layer = layui.layer;//弹出层
form = layui.form()
okLoading.close($);
})
$("#gName").blur(function () {
var gName = $("#gName").val();
if(gName==null||gName==""){
layer.msg("商品名称不能为空!",{icon:2,time:1000});
return;
}
});
$("#goodsTypeName").blur(function () {
var goodsTypeName = $("#goodsTypeName").val();
if(goodsTypeName==null||goodsTypeName==""){
layer.msg("请选择商品类型!",{icon:2,time:1000});
return;
}
});
$("#gNowPrice").blur(function () {
var gNowPrice = $("#gNowPrice").val();
if(gNowPrice==null||gNowPrice==""){
layer.msg("请输入价格!",{icon:2,time:1000});
return;
}
});
/*$("#gOldPrice").blur(function () {
var gOldPrice = $("#gOldPrice").val();
if(gOldPrice==null||gOldPrice==""){
layer.msg("请输入原价!",{icon:2,time:1000});
return;
}
});*/
$("#gSizeMsg").blur(function () {
var gSizeMsg = $("#gSizeMsg").val();
if(gSizeMsg==null||gSizeMsg==""){
layer.msg("请商品规格!",{icon:2,time:1000});
return;
}
});
$("#number").blur(function () {
var number = $("#number").val();
if(number==null||number==""){
layer.msg("请商品库存!",{icon:2,time:1000});
return;
}
});
$("#btn").click(function () {
//数据来源于表单,表单数据封装到data中
var gName = $("#gName").val();
var goodsTypeName = $("#goodsTypeName").val();
var gSizeMsg = $("#gSizeMsg").val();
var number = $("#number").val();
var gNowPrice = $("#gNowPrice").val();
var formData=new FormData();
var file = document.getElementById('gPicture').files[0];
formData.append("gName",gName);
formData.append("goodsTypeName",goodsTypeName);
formData.append("gSizeMsg",gSizeMsg);
formData.append("number",number);
formData.append("gNowPrice",gNowPrice);
formData.append("gPicture1",file);
if(data(gNowPrice)==false){
return;
}
if(data(number)==false){
return;
}
if(dataInt(number)==false){
return;
}
// var param={"gName":gName,"gNowPrice":gNowPrice,"number":number,"gSizeMsg":gSizeMsg,"gPicture1":gPicture,"goodsTypeName":goodsTypeName};
$.ajax({
//前部分的双引号可要可不要
"url":"/goodUpdate",
"data":formData,//传给服务端的数据
"type":"POST",//请求类型
"contentType":false, //提交给服务端的数据类型是否当成字符串处理,false不当成字符串
"processData":false,//是否处理提交数据,false不处理
"dataType":"json",//服务端返回的数据类型
success:function (data) {//回调函数
if(data.state==200){
layer.msg(data.msg,{icon:1,time:1000});
location.href = "/findAllGoodsByUid";
//将图片路径显示到<img>的src属性
/* $("#imgNew").attr("src","${pageContext.request.contextPath}/"+"upload/"+data.path);
$("#imgOld").attr("src","${pageContext.request.contextPath}/"+"upload/"+data.pa);*/
//将修改后文件名保存在cookie中
/*$.cookie("image",data.path,7);*/
}else{
layer.msg(data.msg,{icon:2,time:1000});
}
}
})
});
function data(val) {
//浮点型
var regPos = /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
if(regPos.test(val)==false){
layer.msg("请输入数字!",{icon:2,time:1000});
return false;
}
}
function dataInt(val) {
//浮点型
var regPos = /^\d+$/;
if(regPos.test(val)==false){
layer.msg("库存请输入整数!",{icon:2,time:1000});
return false;
}
}
</script>
</body>
</html>