package cc.mrbird.febs.mall.controller;
|
|
|
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
|
import cc.mrbird.febs.common.controller.BaseController;
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.entity.QueryRequest;
|
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
|
import cc.mrbird.febs.common.utils.FileUtil;
|
import cc.mrbird.febs.common.utils.OssUtils;
|
import cc.mrbird.febs.mall.dto.*;
|
import cc.mrbird.febs.mall.entity.*;
|
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
|
import cc.mrbird.febs.mall.service.IAdminMallGoodsService;
|
import cc.mrbird.febs.mall.vo.*;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.StrUtil;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import net.coobird.thumbnailator.Thumbnails;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import sun.misc.BASE64Encoder;
|
|
import javax.imageio.ImageIO;
|
import javax.validation.Valid;
|
import javax.validation.constraints.NotNull;
|
import java.awt.image.BufferedImage;
|
import java.io.*;
|
import java.net.URLEncoder;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
@Validated
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping(value = "/admin/goods")
|
public class AdminMallGoodsController extends BaseController {
|
|
private final IAdminMallGoodsService adminMallGoodsService;
|
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
|
|
// /**
|
// * 图片上传
|
// * @return
|
// */
|
// @PostMapping(value = "/uploadFileBase64")
|
// @ControllerEndpoint(operation = "图片上传", exceptionMessage = "上传失败")
|
// public Map<String,Object> uploadFileBase64(@RequestBody @Validated MultipartFile file) {
|
// if (file.isEmpty()) {
|
// new FebsResponse().message("上传文件为空");
|
// }
|
//
|
// String base64EncoderImg = "";
|
// try {
|
// //输出到BufferedImage
|
// BufferedImage bufferedImage = Thumbnails.of(file.getInputStream())
|
// // 图片大小(长宽)压缩比例 从0-1,1表示原图
|
// .scale(1f)
|
// // 图片质量压缩比例 从0-1,越接近1质量越好
|
// .outputQuality(0.5f)
|
// .asBufferedImage();
|
// //对内存中的图片文件进行Base64处理
|
// ByteArrayOutputStream newBaos = new ByteArrayOutputStream();//io流
|
// ImageIO.write(bufferedImage, "jpg", newBaos);//写入流中
|
// byte[] bytes = newBaos.toByteArray();//转换成字节
|
// base64EncoderImg = new BASE64Encoder().encode(bytes);
|
//// base64EncoderImg = URLEncoder.encode(new BASE64Encoder().encode(bytes), "UTF-8");
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// }
|
//
|
//
|
// //文件加密
|
//// BASE64Encoder base64Encoder =new BASE64Encoder();
|
//// try {
|
//// base64EncoderImg = base64Encoder.encode(file.getBytes());
|
//// } catch (IOException e) {
|
//// e.printStackTrace();
|
//// }
|
//
|
// String imageFuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
//// String imageFuffix = ".png";
|
// String imageNames = System.currentTimeMillis() + IdUtil.simpleUUID() + imageFuffix;
|
// String imageName = "uploadeFile/" + imageNames;
|
// OssUtils.uploadFileWithBase64(base64EncoderImg, imageName);
|
// String bucket_name ="https://excoin.oss-cn-hangzhou.aliyuncs.com";
|
// String url = bucket_name + "/" + imageName;
|
//
|
// Map<String,Object> map = new HashMap<String,Object>();
|
// Map<String,Object> map2 = new HashMap<String,Object>();
|
// map.put("code",0);//0表示成功,1失败
|
// map.put("msg","上传成功");//提示消息
|
// map.put("data",map2);
|
// map2.put("src",url);//图片url
|
// map2.put("title",imageNames);//图片名称,这个会显示在输入框里
|
// return map;
|
// }
|
|
// 文件保存目录路径
|
@Value("${static.resource.url}")
|
private String resourceUrl;
|
// 文件保存目录URL
|
@Value("${static.resource.path}")
|
private String resourcePath;
|
|
/**
|
* 图片上传
|
* @return
|
*/
|
@PostMapping(value = "/uploadFileBase64")
|
@ControllerEndpoint(operation = "图片上传", exceptionMessage = "上传失败")
|
public Map<String,Object> uploadFileBase64(@RequestBody @Validated MultipartFile file) throws IOException {
|
// if (file.isEmpty()) {
|
// new FebsResponse().message("上传文件为空");
|
// }
|
// return FileUtil.fileUploadEsc(file,resourceUrl,resourcePath);
|
|
if (file == null || file.isEmpty()) {
|
return new FebsResponse().message("上传文件为空").fail();
|
}
|
|
try {
|
byte[] fileBytes = file.getBytes();
|
String base64Str = java.util.Base64.getEncoder().encodeToString(fileBytes);
|
String imageSuffix = "." + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
|
String imageNames = System.currentTimeMillis() + IdUtil.simpleUUID() + imageSuffix;
|
String imageName = "hc/" + imageNames;
|
OssUtils.uploadFileWithBase64(base64Str, imageName);
|
String bucket_name = "https://excoin.oss-cn-hangzhou.aliyuncs.com";
|
String url = bucket_name + "/" + imageName;
|
|
Map<String,Object> map = new HashMap<String,Object>();
|
Map<String,Object> map2 = new HashMap<String,Object>();
|
map2.put("src",url);//图片url
|
map2.put("title",imageNames);//图片名称,这个会显示在输入框里
|
map.put("code",0);//0表示成功,1失败
|
map.put("msg","上传成功");//提示消息
|
map.put("data",map2);
|
return map;
|
} catch (IOException e) {
|
log.error("上传失败: {}", e.getMessage());
|
return new FebsResponse().message("上传失败").fail();
|
}
|
}
|
// /**
|
// * 图片上传
|
// * @return
|
// */
|
// @PostMapping(value = "/uploadFileBase64")
|
// @ControllerEndpoint(operation = "图片上传", exceptionMessage = "上传失败")
|
// public Map<String,Object> uploadFileBase64(@RequestBody @Validated MultipartFile file) throws IOException {
|
// if (file.isEmpty()) {
|
// new FebsResponse().message("上传文件为空");
|
// }
|
// return FileUtil.fileUploadEsc(file,resourceUrl,resourcePath);
|
//
|
//// String base64EncoderImg = "";
|
//// BASE64Encoder base64Encoder =new BASE64Encoder();
|
//// List<String> imageFuffixStr = CollUtil.toList(StrUtil.split(file.getOriginalFilename(), "."));
|
//// String imageFuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
//// if("jpg".equals(imageFuffixStr.get(1))){
|
//// try {
|
//// //输出到BufferedImage
|
//// BufferedImage bufferedImage = Thumbnails.of(file.getInputStream())
|
//// // 图片大小(长宽)压缩比例 从0-1,1表示原图
|
//// .scale(1f)
|
//// // 图片质量压缩比例 从0-1,越接近1质量越好
|
//// .outputQuality(0.9f)
|
//// .asBufferedImage();
|
//// //对内存中的图片文件进行Base64处理
|
//// ByteArrayOutputStream newBaos = new ByteArrayOutputStream();//io流
|
//// ImageIO.write(bufferedImage, "jpg", newBaos);//写入流中
|
//// byte[] bytes = newBaos.toByteArray();//转换成字节
|
//// base64EncoderImg = base64Encoder.encode(bytes);
|
////// base64EncoderImg = URLEncoder.encode(new BASE64Encoder().encode(bytes), "UTF-8");
|
//// } catch (Exception e) {
|
//// e.printStackTrace();
|
//// }
|
//// }else{
|
//// try {
|
//// base64EncoderImg = base64Encoder.encode(file.getBytes());
|
//// } catch (IOException e) {
|
//// e.printStackTrace();
|
//// }
|
//// }
|
//// //文件加密
|
////// String imageFuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
////// String imageFuffix = ".png";
|
//// String imageNames = System.currentTimeMillis() + IdUtil.simpleUUID() + imageFuffix;
|
//// String imageName = "uploadeFile/" + imageNames;
|
//// OssUtils.uploadFileWithBase64(base64EncoderImg, imageName);
|
//// String bucket_name ="https://excoin.oss-cn-hangzhou.aliyuncs.com";
|
//// String url = bucket_name + "/" + imageName;
|
////
|
//// Map<String,Object> map = new HashMap<String,Object>();
|
//// Map<String,Object> map2 = new HashMap<String,Object>();
|
//// map.put("code",0);//0表示成功,1失败
|
//// map.put("msg","上传成功");//提示消息
|
//// map.put("data",map2);
|
//// map2.put("src",url);//图片url
|
//// map2.put("title",imageNames);//图片名称,这个会显示在输入框里
|
//// return map;
|
// }
|
|
public String Base64ImageByMemory(BufferedImage pic) {
|
String imgString = "";
|
ByteArrayOutputStream newBaos = new ByteArrayOutputStream();//io流
|
try {
|
ImageIO.write(pic, "jpg", newBaos);//写入流中
|
byte[] bytes = newBaos.toByteArray();//转换成字节
|
imgString = URLEncoder.encode(new BASE64Encoder().encode(bytes), "UTF-8");
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return imgString;
|
}
|
|
/**
|
* 商品列表
|
* @param mallGoods
|
* @param request
|
* @return
|
*/
|
@GetMapping("goodsList")
|
public FebsResponse getGoodsList(MallGoods mallGoods, QueryRequest request) {
|
Map<String, Object> data = getDataTable(adminMallGoodsService.getCategoryListInPage(mallGoods, request));
|
return new FebsResponse().success().data(data);
|
}
|
|
/**
|
* 商品-新增
|
*/
|
@PostMapping("addMallGoods")
|
@ControllerEndpoint(operation = " 商品-新增", exceptionMessage = "新增失败")
|
public FebsResponse addMallGoods(@RequestBody @Valid AddMallGoodsDto addMallGoodsDto) {
|
return adminMallGoodsService.addMallGoods(addMallGoodsDto);
|
}
|
|
/**
|
* 商品-热卖
|
*/
|
@GetMapping("goodsHot/{id}")
|
@ControllerEndpoint(operation = " 商品-热卖", exceptionMessage = "设置失败")
|
public FebsResponse goodsHot(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.goodsHot(id);
|
}
|
|
/**
|
* 商品-取消热卖
|
*/
|
@GetMapping("goodsNotHot/{id}")
|
@ControllerEndpoint(operation = " 商品-取消热卖", exceptionMessage = "设置失败")
|
public FebsResponse goodsNotHot(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.goodsNotHot(id);
|
}
|
|
/**
|
* 商品-上架
|
*/
|
@GetMapping("upMallGoods/{id}")
|
@ControllerEndpoint(operation = " 商品-上架", exceptionMessage = "上架失败")
|
public FebsResponse upMallGoods(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.upMallGoods(id);
|
}
|
|
/**
|
* 商品-下架
|
*/
|
@GetMapping("downMallGoods/{id}")
|
@ControllerEndpoint(operation = " 商品-下架", exceptionMessage = "下架失败")
|
public FebsResponse downMallGoods(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.downMallGoods(id);
|
}
|
|
/**
|
* 商品-删除
|
*/
|
@GetMapping("delMallGoods/{id}")
|
@ControllerEndpoint(operation = " 商品-删除", exceptionMessage = "删除失败")
|
public FebsResponse delMallGoods(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.delMallGoods(id);
|
}
|
|
|
/**
|
* 商品-编辑
|
*/
|
@PostMapping("updateMallGoods")
|
@ControllerEndpoint(operation = "商品-编辑", exceptionMessage = "操作失败")
|
public FebsResponse updateMallGoods(@RequestBody @Valid MallGoodsUpdateDto mallGoodsUpdateDto) {
|
return adminMallGoodsService.updateMallGoods(mallGoodsUpdateDto);
|
}
|
|
/**
|
* 商品-全部选择
|
*/
|
@GetMapping("goods/allTree")
|
@ControllerEndpoint(exceptionMessage = "获取商品失败")
|
public List<AdminMallGoodsTreeVo> getAllGoodsTree(){
|
return adminMallGoodsService.getAllGoodsTree();
|
}
|
|
/**
|
* 商品配送设置 -- 更新
|
*/
|
@PostMapping(value = "/deliverySetUpdate")
|
public FebsResponse deliverySetUpdate(AdminRangeSettingVo adminRangeSettingVo) {
|
Integer rangeSwitch = adminRangeSettingVo.getRangeSwitch();
|
DataDictionaryCustom rangeSwitchDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode());
|
rangeSwitchDic.setValue(rangeSwitch.toString());
|
dataDictionaryCustomMapper.updateById(rangeSwitchDic);
|
|
Integer rangeSize = adminRangeSettingVo.getRangeSize();
|
DataDictionaryCustom rangeSizeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode());
|
rangeSizeDic.setValue(rangeSize.toString());
|
dataDictionaryCustomMapper.updateById(rangeSizeDic);
|
|
Double homeDeliveryAmount = adminRangeSettingVo.getHomeDeliveryAmount();
|
DataDictionaryCustom homeDeliveryAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getType(), DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getCode());
|
homeDeliveryAmountDic.setValue(homeDeliveryAmount.toString());
|
dataDictionaryCustomMapper.updateById(homeDeliveryAmountDic);
|
|
return new FebsResponse().success();
|
}
|
|
/**
|
* 配送费列表
|
*/
|
@GetMapping("deliveryHomeList")
|
public FebsResponse deliveryHomeList(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo, QueryRequest request) {
|
Map<String, Object> data = getDataTable(adminMallGoodsService.getDeliveryHomeListInPage(adminHomeDeliverySettingVo, request));
|
return new FebsResponse().success().data(data);
|
}
|
|
/**
|
* 配送费列表-更新
|
*/
|
@PostMapping("deliveryHomeUpdate")
|
@ControllerEndpoint(operation = "配送费列表-更新", exceptionMessage = "操作失败")
|
public FebsResponse deliveryHomeUpdate(@Valid AdminHomeDeliverySettingVo adminHomeDeliverySettingVo) {
|
return adminMallGoodsService.deliveryHomeUpdate(adminHomeDeliverySettingVo);
|
}
|
|
/**
|
* 运费模板列表
|
*/
|
@GetMapping("carriageRuleList")
|
public FebsResponse carriageRuleList(MallCarriageRule mallCarriageRule, QueryRequest request) {
|
Map<String, Object> data = getDataTable(adminMallGoodsService.getMallCarriageRuleListInPage(mallCarriageRule, request));
|
return new FebsResponse().success().data(data);
|
}
|
|
/**
|
* 运费模板列表-删除
|
*/
|
@GetMapping("carriageRuleDel/{id}")
|
@ControllerEndpoint(operation = "运费模板列表-删除", exceptionMessage = "操作失败")
|
public FebsResponse carriageRuleDel(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.carriageRuleDelById(id);
|
}
|
|
/**
|
* 运费模板列表-新增
|
*/
|
@PostMapping("carriageRuleAdd")
|
@ControllerEndpoint(operation = " 商品-新增", exceptionMessage = "操作失败")
|
public FebsResponse carriageRuleAdd(@RequestBody @Valid AdminCarriageRuleAddDto adminCarriageRuleAddDto) {
|
return adminMallGoodsService.carriageRuleAdd(adminCarriageRuleAddDto);
|
}
|
|
|
/**
|
* 运费模板列表-更新
|
*/
|
@PostMapping("carriageRuleUpdate")
|
@ControllerEndpoint(operation = "运费模板列表-更新", exceptionMessage = "操作失败")
|
public FebsResponse carriageRuleUpdate(@RequestBody @Valid AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto) {
|
return adminMallGoodsService.carriageRuleUpdate(adminCarriageRuleUpdateDto);
|
}
|
|
@GetMapping(value = "/carriageRuleTree")
|
public FebsResponse carriageRuleTree() {
|
return new FebsResponse().success().data(adminMallGoodsService.findAllCarriageRuleTree());
|
}
|
|
/**
|
* 优惠卷列表
|
*/
|
@GetMapping("couponRuleList")
|
public FebsResponse couponRuleList(MallGoodsCoupon mallGoodsCoupon, QueryRequest request) {
|
Map<String, Object> data = getDataTable(adminMallGoodsService.getMallGoodsCouponListInPage(mallGoodsCoupon, request));
|
return new FebsResponse().success().data(data);
|
}
|
|
/**
|
* 优惠卷列表-新增
|
*/
|
@PostMapping("couponRuleAdd")
|
@ControllerEndpoint(operation = " 优惠卷列表-新增", exceptionMessage = "操作失败")
|
public FebsResponse couponRuleAdd(@RequestBody @Valid CouponRuleAddDto couponRuleAddDto) {
|
return adminMallGoodsService.couponRuleAdd(couponRuleAddDto);
|
}
|
|
/**
|
* 优惠卷列表-删除
|
*/
|
@GetMapping("couponRuleDel/{id}")
|
@ControllerEndpoint(operation = "优惠卷列表-删除", exceptionMessage = "操作失败")
|
public FebsResponse couponRuleDel(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.couponRuleDel(id);
|
}
|
|
/**
|
* 优惠卷列表-上架
|
*/
|
@GetMapping("upCoupon/{id}")
|
@ControllerEndpoint(operation = " 优惠卷列表-上架", exceptionMessage = "上架失败")
|
public FebsResponse upCoupon(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.upCoupon(id);
|
}
|
|
/**
|
* 优惠卷列表-下架
|
*/
|
@GetMapping("downCoupon/{id}")
|
@ControllerEndpoint(operation = " 优惠卷列表-下架", exceptionMessage = "下架失败")
|
public FebsResponse downCoupon(@NotNull(message = "{required}") @PathVariable Long id) {
|
return adminMallGoodsService.downCoupon(id);
|
}
|
|
/**
|
* 优惠卷列表-更新
|
*/
|
@PostMapping("couponUpdate")
|
@ControllerEndpoint(operation = "优惠卷列表-更新", exceptionMessage = "操作失败")
|
public FebsResponse couponUpdate(@RequestBody @Valid AdminMallGoodsCouponVo adminMallGoodsCouponVo) {
|
return adminMallGoodsService.couponUpdate(adminMallGoodsCouponVo);
|
}
|
|
|
@GetMapping("coupon/tree")
|
public List<AdminMallGoodsCouponTreeVo> couponTree() {
|
return adminMallGoodsService.findAdminMallGoodsCouponVoTree();
|
}
|
|
@GetMapping(value = "/couponTreeSet")
|
public FebsResponse couponTreeSet() {
|
return new FebsResponse().success().data(adminMallGoodsService.findAdminMallGoodsCouponVoTreeList());
|
}
|
|
@GetMapping(value = "/goodsTreeSet")
|
public FebsResponse goodsTreeSet() {
|
return new FebsResponse().success().data(adminMallGoodsService.findAdminMallGoodsVoTreeList());
|
}
|
|
|
}
|