上传图片工具类
链接: https://pan.baidu.com/s/1dILoaGE2wtgI-gGsRf7jLA
提取码: uky5
package com.ruoyi.web.controller.app;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSONArray;
import com.github.pagehelper.PageHelper;
import com.ruoyi.app.domain.*;
import com.ruoyi.app.service.*;
import com.ruoyi.app.vo.TreeNode;
import com.ruoyi.common.config.Global;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.sql.SqlUtil;
import com.ruoyi.common.utils.FetchFrame;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.framework.util.ShiroUtils;
import com.ruoyi.system.domain.SysTenant;
import com.ruoyi.system.service.ISysTenantService;
import com.ruoyi.web.controller.tool.Cupload;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 商品Controller
*
* @author ruoyi
* @date 2020-09-01
*/
@Controller("product")
@RequestMapping("/app/product")
public class AppProductController extends BaseController {
private String prefix = "app/product";
@Autowired
private IAppProductService appProductService;
@Autowired
private IAppTypeService appTypeService;
@Autowired
private IAppShopService appShopService;
@Autowired
private IAppTagService appTagService;
@Autowired
private ISysTenantService sysTenantService;
@Value("${imageUrl}")
private String imageUrl;
@RequiresPermissions("app:product:view")
@GetMapping()
public String product() {
return prefix + "/product";
}
/**
* 查询商品列表
*/
@RequiresPermissions("app:product:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(AppProduct appProduct) {
startPage();
//是否属于组合商品
appProduct.setCombination(0);
//是否属于加购商品
appProduct.setPurchased(0);
appProduct.setTenantId(ShiroUtils.getTenantId());
List<AppProduct> list = appProductService.selAppProductList(appProduct);
return getDataTable(list);
}
/**
* 导出商品列表
*/
@RequiresPermissions("app:product:export")
@Log(title = "商品", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(AppProduct appProduct) {
List<AppProduct> list = appProductService.selAppProductList(appProduct);
ExcelUtil<AppProduct> util = new ExcelUtil<>(AppProduct.class);
return util.exportExcel(list, "product");
}
/**
* 新增商品
*/
@GetMapping("/add")
public String add(ModelMap mmp) {
List<TreeNode> nodes = sysTenantService.getNodes(ShiroUtils.getTenantId());
mmp.put("nodes",nodes);
if(nodes.size()==1){
//所有门店列表
List<AppShop> appShops = appShopService.selNameAll(ShiroUtils.getTenantId());
mmp.put("appShops", appShops);
}
AppTag appTag = new AppTag();
appTag.setProductId(Long.valueOf(0));
List<AppTag> appTags = appTagService.selectAppTagList(appTag);
mmp.put("app_tag", appTags);
mmp.put("imageUrl", imageUrl);
return prefix + "/add";
}
/**
* 新增保存商品
*/
@RequiresPermissions("app:product:add")
@Log(title = "商品", businessType = BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
@Transactional(rollbackFor = Exception.class)
public AjaxResult addSave(AppProduct appProduct,
AppSku appSku,
AppProductType appProductType,
@RequestParam(value = "logo",required = false)String[] logo,
@RequestParam(value = "pics",required = false)String[] pics,
@RequestParam(value = "sharePics1",required = false)String[] sharePics1,
@RequestParam(value = "sharePics2",required = false)String sharePics2,
@RequestParam(value = "advertPic",required = false)String[] advertPic) throws Exception {
appSku.setTenantId(appProduct.getTenantId());
//是否属于组合商品
appProduct.setCombination(0);
//是否属于加购商品
appProduct.setPurchased(0);
//是否参与秒杀
appProduct.setSkill(0);
if (null==logo || logo.length<=0){
return error("请上传商品缩略图");
}
if (null==pics || pics.length<=0){
return error("请上传商品图");
}
if (null==advertPic || advertPic.length<=0){
return error("请上传首页广告图");
}
String logos = Cupload.uploadImages(Global.getProductPath(),logo);
appProduct.setLogo(logos);
String picsArray = Cupload.uploadImages(Global.getProductPath(),pics);
appProduct.setPics(picsArray);
String sharePicsArray = "";
if (appProduct.getShareType()==1){
if (null==sharePics1 || sharePics1.length<=0){
return error("请上传分享图片");
}
sharePicsArray = Cupload.uploadImages(Global.getProductPath(),sharePics1);
}else if (appProduct.getShareType()==2){
if (null==sharePics2){
return error("请上传分享视频");
}
String pic = "/product/fetchFrame/" + System.currentTimeMillis() + ".jpg";
FetchFrame.fetchFrame(Global.getProfile() + sharePics2, Global.getProfile() + pic);
sharePicsArray = sharePics2.concat(";" + pic);
}
appProduct.setSharePics(sharePicsArray);
String advertPicArray = Cupload.uploadImages(Global.getProductPath(),advertPic);
appProduct.setAdvertPic(advertPicArray);
return toAjax(appProductService.insertAppProductCombination(appProduct, appSku, appProductType, 0));
}
/**
* 修改商品
*/
@GetMapping("/edit/{productId}")
public String edit(@PathVariable("productId") Long productId, ModelMap mmap) {
AppProduct appProduct = appProductService.selectAppProductById(productId);
SysTenant sysTenant = sysTenantService.selectSysTenantInfoByTenantId(appProduct.getTenantId());
if (null!=sysTenant){
appProduct.setTenantName(sysTenant.getTenantName());
}
List<AppShop> appShops = appShopService.selNameAll(appProduct.getTenantId());
List<AppType> appTypes = appTypeService.selIdAndName(appProduct.getTenantId());
AppTag appTag = new AppTag();
appTag.setProductId(productId);
List<AppTag> appTags = appTagService.selectAppTagList(appTag);
mmap.put("appProduct", appProduct);
mmap.put("appTags", appTags);
mmap.put("appShops", appShops);
mmap.put("appTypes", appTypes);
String[] picsArray = Cupload.viewImages(imageUrl,appProduct.getPics());
String[] logoArray = Cupload.viewImages(imageUrl,appProduct.getLogo());
String[] sharePicsArray = Cupload.viewImages(imageUrl,appProduct.getSharePics());
String[] advertPicArray = Cupload.viewImages(imageUrl,appProduct.getAdvertPic());
String sharePicsArray2 = appProduct.getSharePics();
mmap.put("picsArray",picsArray);
mmap.put("logoArray",logoArray);
if (appProduct.getShareType()==1){
mmap.put("sharePicsArray1",sharePicsArray);
}else{
mmap.put("sharePicsArray2",sharePicsArray2);
}
mmap.put("advertPicArray",advertPicArray);
AppTag tag = new AppTag();
tag.setProductId(0L);
List<AppTag> tagList = appTagService.selectAppTagList(tag);
mmap.put("app_tag", tagList);
mmap.put("imageUrl", imageUrl);
List<ParameterParam> parameterList = new ArrayList<>();
if (StringUtils.NotNullOrEmpty(appProduct.getParameter())) {
JSONArray jsonArray = JSONArray.parseArray(appProduct.getParameter());
if(jsonArray!=null){
parameterList = jsonArray.toJavaList(ParameterParam.class);
}
mmap.put("parameterList", parameterList);
}else {
mmap.put("parameterList", parameterList);
}
return prefix + "/edit";
}
/**
* 修改保存商品
*/
@RequiresPermissions("app:product:edit")
@Log(title = "商品", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
@Transactional(rollbackFor = Exception.class)
public AjaxResult editSave(AppProduct appProduct,
AppProductType appProductType,
@RequestParam(value = "logo",required = false)String[] logo,
@RequestParam(value = "pics",required = false)String[] pics,
@RequestParam(value = "sharePics1",required = false)String[] sharePics1,
@RequestParam(value = "sharePics2",required = false)String sharePics2,
@RequestParam(value = "advertPic",required = false)String[] advertPic) throws IOException, IOException {
if (null==logo || logo.length<=0){
return error("请上传商品缩略图");
}
if (null==pics || pics.length<=0){
return error("请上传商品图");
}
if (null==advertPic || advertPic.length<=0){
return error("请上传首页广告图");
}
AppProduct product = appProductService.selectAppProductById(appProduct.getProductId());
if (product == null){
return error("抱歉,您操作的数据不存在");
}
String logoArray = Cupload.editImages(Global.getProductPath(),imageUrl,logo);
String picsArray = Cupload.editImages(Global.getProductPath(),imageUrl,pics);
String advertPicArray = Cupload.editImages(Global.getProductPath(),imageUrl,advertPic);
String sharePicsArray = "";
if (appProduct.getShareType()==1){
if (null==sharePics1 || sharePics1.length<=0){
return error("请上传分享图片");
}
sharePicsArray = Cupload.editImages(Global.getProductPath(),imageUrl,sharePics1);
}else if (appProduct.getShareType()==2){
if (null==sharePics2){
return error("请上传分享视频");
}
if (product.getShareType()==2 && !product.getSharePics().equals(sharePics2)) {
String pic = "/product/fetchFrame/" + System.currentTimeMillis() + ".jpg";
FetchFrame.fetchFrame(Global.getProfile() + sharePics2, Global.getProfile() + pic);
sharePicsArray = sharePics2.concat(";" + pic);
}else {
sharePicsArray = sharePics2;
}
}
appProduct.setLogo(logoArray);
appProduct.setPics(picsArray);
appProduct.setSharePics(sharePicsArray);
appProduct.setAdvertPic(advertPicArray);
if (product.getHome()==0 && appProduct.getHome()==1) appProduct.setHometime(DateUtils.getTime());
if (product.getRecommend()==0 && (StringUtils.isNull(appProduct.getRecommend())?0:1)==1) appProduct.setRecomtime(DateUtils.getTime());
if (product.getJxRecommend()==0 && (StringUtils.isNull(appProduct.getJxRecommend())?0:1)==1) appProduct.setJxRecomtime(DateUtils.getTime());
if (product.getPayRecommend()==0 && (StringUtils.isNull(appProduct.getPayRecommend())?0:1)==1) appProduct.setPayRecomtime(DateUtils.getTime());
return toAjax(appProductService.updateAppProduct(appProduct, appProductType, null));
}
/**
* 删除商品
*/
@RequiresPermissions("app:product:remove")
@Log(title = "商品", businessType = BusinessType.DELETE)
@PostMapping("/remove")
@ResponseBody
@Transactional(rollbackFor = Exception.class)
public AjaxResult remove(String ids) {
return toAjax(appProductService.deleteAppProductByIds(ids));
}
/**
* 复制商品
*/
@RequiresPermissions("app:product:copy")
@Log(title = "商品", businessType = BusinessType.DELETE)
@PostMapping("/copy")
@ResponseBody
@Transactional(rollbackFor = Exception.class)
public AjaxResult copy(String ids) {
return toAjax(appProductService.copyAppProduct(ids));
}
//++++++++++++++++++++++++++二级联动++++++++++++++++++++++++++++++++++++++++++++++++++++
@GetMapping("/getNodes/{tenantId}")
@ResponseBody
public List<AppShop> getNodes(@PathVariable String tenantId){
List<AppShop> appShopById = appShopService.selNameAll(tenantId);
return appShopById;
}
@GetMapping("/getTypes/{tenantId}")
@ResponseBody
public List<AppType> getTypes(@PathVariable String tenantId){
List<AppType> appTypes = appTypeService.selIdAndName(tenantId);
return appTypes;
}
@PostMapping("/getProductByTypeId")
@ResponseBody
public List<AppProduct> getProductByTypeId(String tenantId, String typeId){
if (typeId==null||"".equals(typeId)){
return new ArrayList<>();
}
return appProductService.getProductIdAndNameByTypeId(tenantId,typeId);
}
}
pom依赖
<?xml version="1.0" encoding="UTF-8"?>
ruoyi
com.ruoyi
4.1.0
4.0.0
<artifactId>ruoyi-common</artifactId>
<description>
common通用工具
</description>
<dependencies>
<!-- Spring框架基本的核心工具 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- SpringWeb模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!--Shiro核心框架 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
</dependency>
<!-- pagehelper 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
<!-- 自定义验证注解 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<!--常用工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- JSON工具类 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- 阿里JSON解析器 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!-- io常用工具类 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<!-- 文件上传工具类 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
<!-- yml解析器 -->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<!-- servlet包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.allinpay.yunst</groupId>
<artifactId>yunst-sdk</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.45</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.7</version>
</dependency>
<!--截取视频第一帧-->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>4.0.2-1.4.3</version>
</dependency>
</dependencies>