图书前端
<body>
<div class="x-body">
<form class="layui-form" enctype="multipart/form-data" id="addForm">
<div class="layui-form-item">
<label for="name" class="layui-form-label">
<span class="x-red">*</span>商品名
</label>
<div class="layui-input-inline">
<input type="text" id="name" name="name" value="新货夏威夷果 罐装奶油口味坚果炒货干果特产 零食小吃 奶油大罐装500g" required="" lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="category_id" class="layui-form-label">
<span class="x-red">*</span>商品编号
</label>
<div class="layui-input-inline">
<input type="text" id="category_id" value="127" name="category_id" required="" lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="subtitle" class="layui-form-label">
<span class="x-red">*</span>副标题
</label>
<div class="layui-input-inline">
<input type="text" id="subtitle" value="奶油口味坚果炒货干果特产 零食小吃" name="subtitle" required="" lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="subtitle" class="layui-form-label">
<span class="x-red">*</span>主图片路径
</label>
<div class="layui-input-inline">
<input type="file" name="mainImg" id="mainImg" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="subtitle" class="layui-form-label">
<span class="x-red">*</span>子图片路径
</label>
<div class="layui-input-inline">
<input type="file" name="subImg" id="subImg" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="price" class="layui-form-label">
<span class="x-red">*</span>价格
</label>
<div class="layui-input-inline">
<input type="text" id="price" value="56" name="price" required="" lay-verify="required"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="stock" class="layui-form-label">
<span class="x-red">*</span>库存
</label>
<div class="layui-input-inline">
<input type="text" id="stock" value="65" name="stock" required="" lay-verify="required"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="our_rating" class="layui-form-label">
<span class="x-red">*</span>评级
</label>
<div class="layui-input-inline">
<input type="text" id="our_rating" value="10" name="our_rating" required="" lay-verify="required"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="stock" class="layui-form-label">
<span class="x-red">*</span>位置
</label>
<div class="layui-input-inline">
<input type="text" id="postion" value="N" name="postion" required="" lay-verify="required"
autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<label for="status" class="layui-form-label">
<span class="x-red">*</span>状态
</label>
<div class="layui-input-inline">
<select name="status">
<option value="S">在售</option>
<option value="W">下架</option>
<option value="D">删除</option>
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="detail" class="layui-form-label">
商品详情
</label>
<div class="layui-input-inline">
<textarea id="detail" name="detail" placeholder="请输入文本......" autofocus></textarea>
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button class="layui-btn" onclick="goodsadd()">
增加
</button>
</div>
</form>
</div>
<script>
$(function () {
var editor = new Simditor({
textarea: $('#detail')
});
})
</script>
</body>
function goodsadd() {
var formdata = new FormData($("#addForm")[0]);
$.ajax({
type:"POST",
dataType:"json",
url:"addProduct",
data:formdata,
async:false,
cache:false,
contentType:false,
processData:false,
url: "/manage/goods/add",
headers: { token: sessionStorage.getItem("token")},
success: function (result) {
if (result.status == 200) {
layer.msg(result.msg);
} else if (result.status == 404) {
location.href = "404.html";
} else {
layer.msg(result.msg);
}
var index = parent.layer.getFrameIndex(window.name);
console.log(index);
parent.layer.close(index);
xadmin.close();
xadmin.father_reload();
},
})
}
后台
UploadUtils.java
: 图片上传工具类
package com.ysu.shop.util;
import java.io.File;
public class UploadUtils {
public final static String IMG_PATH_PREFIX = "assets/images/goods/";
public static File getImgDirFile(){
String fileDirPath = new String("src/main/resources/static/rlg/" + IMG_PATH_PREFIX);
File fileDir = new File(fileDirPath);
if(!fileDir.exists()){
fileDir.mkdirs();
}
return fileDir;
}
}
@ApiOperation(value="添加一个商品信息",notes="添加一个商品信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "获取用户信息", required = true, paramType = "header"),
@ApiImplicitParam(name="category_id",value="类别id",required = true,paramType = "body"),
@ApiImplicitParam(name="name",value="商品名称",required = true,paramType = "body"),
@ApiImplicitParam(name="subtitle",value="副标题",required = true,paramType = "body"),
@ApiImplicitParam(name="main_image",value="主图地址",required = true,paramType = "body"),
@ApiImplicitParam(name="sub_image",value="子图地址",required = false,paramType = "body"),
@ApiImplicitParam(name="detail",value="商品详情",required = true,paramType = "body"),
@ApiImplicitParam(name="price",value="商品价格",required = true,paramType = "body"),
@ApiImplicitParam(name="stock",value="库存量",required = false,paramType = "body"),
@ApiImplicitParam(name="our_ratings",value="推荐指数",required = false,paramType = "body"),
@ApiImplicitParam(name="postion",value="商品推荐位置",required = false,paramType = "body"),
@ApiImplicitParam(name="status",value="商品状态",required = false,paramType = "body")
})
@ApiResponses({
@ApiResponse(code = 402, message = "用户未登录,无法操作"),
@ApiResponse(code = 412, message = "不是管理员,没有该权限操作"),
@ApiResponse(code = 1, message = "商品已存在/输入参数不正确"),
@ApiResponse(code = 1, message = "请上传商品的主图片"),
@ApiResponse(code = 200, message = "添加成功")
})
@PostMapping("/goods/add")
public Result addGoods(@ApiIgnore Goods goods,@RequestParam("mainImg") MultipartFile mainImg,
@RequestParam("subImg") MultipartFile subImg, @ApiIgnore @TokenToUser User oldUser) throws Exception{
valid(oldUser);
if(!mainImg.isEmpty()){
String fileName = mainImg.getOriginalFilename();
String saveName = System.currentTimeMillis()+fileName.substring(fileName.lastIndexOf("."));
File fileDir = UploadUtils.getImgDirFile();
log.debug("添加商品主图片的文件夹--"+fileDir.getAbsolutePath());
File newFile = new File(fileDir.getAbsolutePath()+ File.separator+saveName);
log.debug("添加商品主图片的url--"+newFile.getAbsolutePath());
mainImg.transferTo(newFile);
goods.setMain_image(UploadUtils.IMG_PATH_PREFIX+saveName);
}else{
return ResultGenerator.getErrorResult(10,"请上传商品的主图片");
}
setGoodsDefultValue(goods);
if(!subImg.isEmpty()){
String fileName = subImg.getOriginalFilename();
String saveName = System.currentTimeMillis()+fileName.substring(fileName.lastIndexOf("."));
File fileDir = UploadUtils.getImgDirFile();
log.debug("添加商品子图片的文件夹--"+fileDir.getAbsolutePath());
File newFile = new File(fileDir.getAbsolutePath()+File.separator+saveName);
log.debug("添加商品子图片的url--"+newFile.getAbsolutePath());
subImg.transferTo(newFile);
goods.setMain_image(UploadUtils.IMG_PATH_PREFIX+saveName);
}
int r = goodsService.insert(goods);
if (r == 0) {
return ResultGenerator.getErrorResult("商品已存在/输入参数不正确");
}
return ResultGenerator.getSuccessResult("添加成功");
}