From d977a3c05741085c21adde73235480e2e4a96025 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 06 Mar 2023 12:10:04 +0800 Subject: [PATCH] 修改物流信息 --- src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java | 2 src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java | 13 ++++ src/main/resources/templates/febs/views/modules/order/deliverGoods.html | 12 ++++ src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java | 48 ++++++++++++++-- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java | 36 +++++++++++ src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java | 9 +++ src/main/resources/templates/febs/views/modules/order/orderList.html | 30 +++++++-- pom.xml | 7 ++ src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java | 2 9 files changed, 144 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index c731e94..d38c03a 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,13 @@ </properties> <dependencies> + <!-- 图片压缩--> + <dependency> + <groupId>net.coobird</groupId> + <artifactId>thumbnailator</artifactId> + <version>0.4.8</version> + </dependency> + <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java index 8769c64..43bb0c9 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java @@ -22,14 +22,18 @@ import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import net.coobird.thumbnailator.Thumbnails; 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.io.IOException; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.URLEncoder; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -55,14 +59,33 @@ new FebsResponse().message("上传文件为空"); } - //文件加密 - BASE64Encoder base64Encoder =new BASE64Encoder(); - String base64EncoderImg = null; + String base64EncoderImg = ""; try { - base64EncoderImg = base64Encoder.encode(file.getBytes()); - } catch (IOException e) { + //输出到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"; @@ -82,6 +105,19 @@ 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 diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java index 429954c..d88caad 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java @@ -113,6 +113,15 @@ } /** + * 订单列表-修改物流编号 + */ + @PostMapping("deliverGoodsUpdate") + @ControllerEndpoint(operation = "订单列表-修改物流编号", exceptionMessage = "操作失败") + public FebsResponse deliverGoodsUpdate(@Valid DeliverGoodsDto deliverGoodsDto) { + return adminMallOrderService.deliverGoodsUpdate(deliverGoodsDto); + } + + /** * 订单列表-取消订单 * * @param id diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java index e8a8763..a06281f 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java @@ -2,11 +2,15 @@ import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.mall.entity.MallExpressInfo; import cc.mrbird.febs.mall.entity.MallOrderRefund; +import cc.mrbird.febs.mall.mapper.MallExpressInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderRefundMapper; import cc.mrbird.febs.mall.service.IAdminMallOrderService; import cc.mrbird.febs.mall.vo.*; +import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; @@ -23,6 +27,8 @@ private final IAdminMallOrderService adminMallOrderService; private final MallOrderRefundMapper mallOrderRefundMapper; + + private final MallExpressInfoMapper mallExpressInfoMapper; public static long idFromMember; @@ -69,6 +75,13 @@ public String deliverGoods(@PathVariable long id, Model model) { AdminMallOrderVo data = adminMallOrderService.getMallOrderInfoById(id); data.setExpressCom("中通快递"); + MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id); + if(ObjectUtil.isNotEmpty(mallExpressInfo)){ + data.setExpressNo(mallExpressInfo.getExpressNo()); + data.setExpressCom(mallExpressInfo.getExpressCom()); + }else{ + data.setExpressCom("中通快递"); + } model.addAttribute("deliverInfo", data); return FebsUtil.view("modules/order/deliverGoods"); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java index 97d8a43..bae0b6e 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java @@ -74,4 +74,6 @@ IPage<MallRefundEntity> getOrderRefundListInPage(MallRefundEntity mallRefundEntity, QueryRequest request); IPage<AdminGoodsStatisticsVo> goodsStatistics(MallOrderItem mallOrderItem, QueryRequest request); + + FebsResponse deliverGoodsUpdate(DeliverGoodsDto deliverGoodsDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java index 62e7c88..4a4ae94 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java @@ -79,7 +79,7 @@ stringBuffer.append(mallOrderItem.getGoodsName()) .append("-") .append(mallOrderItem.getSkuName()) - .append("*").append(mallOrderItem.getCnt()).append(";"); + .append("*").append(mallOrderItem.getCnt()).append(";"); } adminMallOrderInfoVo.setGoodsName(stringBuffer.toString()); } @@ -449,6 +449,40 @@ } @Override + public FebsResponse deliverGoodsUpdate(DeliverGoodsDto deliverGoodsDto) { + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId()); + if(ObjectUtil.isEmpty(mallOrderInfo)){ + return new FebsResponse().fail().message("订单不存在,刷新后重试"); + } + Integer status = mallOrderInfo.getStatus(); + if(3 != status){ + return new FebsResponse().fail().message("订单不是待收货状态"); + } + Integer deliveryType = mallOrderInfo.getDeliveryType(); + if(2 != deliveryType){ + return new FebsResponse().fail().message("订单的配送方式不是快递"); + } + String expressNo = deliverGoodsDto.getExpressNo(); + if(StrUtil.isEmpty(expressNo)){ + return new FebsResponse().fail().message("请输入物流单号"); + } + String expressCom = deliverGoodsDto.getExpressCom(); + if(StrUtil.isEmpty(expressCom)){ + return new FebsResponse().fail().message("请输入物流公司"); + } + MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId()); + + if(ObjectUtil.isEmpty(mallExpressInfo)){ + return new FebsResponse().fail().message("请先发货"); + } + mallExpressInfo.setExpressNo(expressNo); + mallExpressInfo.setExpressCom(expressCom); + mallExpressInfoMapper.updateById(mallExpressInfo); + + return new FebsResponse().success(); + } + + @Override public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) { MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo()); if (mallOrderInfo == null) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java index cd2594b..69c29e7 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java @@ -16,4 +16,6 @@ private String address; private String expressCom; + + private String expressNo; } diff --git a/src/main/resources/templates/febs/views/modules/order/deliverGoods.html b/src/main/resources/templates/febs/views/modules/order/deliverGoods.html index 8767bc4..4c0e1c8 100644 --- a/src/main/resources/templates/febs/views/modules/order/deliverGoods.html +++ b/src/main/resources/templates/febs/views/modules/order/deliverGoods.html @@ -62,6 +62,7 @@ </div> <div class="layui-form-item febs-hide"> <button class="layui-btn" lay-submit="" lay-filter="deliver-update-form-submit" id="submit"></button> + <button class="layui-btn" lay-submit="" lay-filter="deliverInfo-update-form-submit" id="deliverInfoSubmit"></button> </div> </form> </div> @@ -90,6 +91,7 @@ "name": deliverInfo.name, "phone": deliverInfo.phone, "expressCom": deliverInfo.expressCom, + "expressNo": deliverInfo.expressNo, "address": deliverInfo.address }); } @@ -102,5 +104,15 @@ }); return false; }); + + form.on('submit(deliverInfo-update-form-submit)', function (data) { + // febs.alert.success('操作成功'); + febs.post(ctx + 'admin/order/deliverGoodsUpdate', data.field, function () { + layer.closeAll(); + febs.alert.success('操作成功'); + $('#febs-order').find('#query').click(); + }); + return false; + }); }); </script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html index e5cc679..e4791c1 100644 --- a/src/main/resources/templates/febs/views/modules/order/orderList.html +++ b/src/main/resources/templates/febs/views/modules/order/orderList.html @@ -321,9 +321,21 @@ layEvent = obj.event; if (layEvent === 'deliverGoods') { febs.modal.open('发货', 'modules/order/deliverGoods/' + data.id, { - btn: ['确认', '取消'], + btn: ['确认','取消'], yes: function (index, layero) { $('#deliver-update').find('#submit').trigger('click'); + // $query.click(); + }, + btn2: function () { + layer.closeAll(); + } + }); + } + if (layEvent === 'updateDeliver') { + febs.modal.open('修改物流信息', 'modules/order/deliverGoods/' + data.id, { + btn: ['确认','取消'], + yes: function (index, layero) { + $('#deliver-update').find('#deliverInfoSubmit').trigger('click'); // $query.click(); }, btn2: function () { @@ -442,6 +454,9 @@ if(d.status === 2){ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' + }else if(d.status === 3){ + return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' + +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="updateDeliver" shiro:hasPermission="user:update">修改物流信息</button>' }else{ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' } @@ -518,7 +533,7 @@ //用于包含内容 var v = document.createElement("div"); //页面头部,导入css ,media="print"表示打印时使用该样式 - var f = ["<head>", "<style>", "div{font-size:8px;}", ".main{width:100%;height:10%}", + var f = ["<head>", "<style>", "div{font-size:8px;}", ".main{width:100%;}", ".main div{width:100%;display:inline-block;}", "</style>", "</head>" ].join(""); var contentHtml = ""; @@ -527,12 +542,11 @@ var template = "<div class='main'>" + "<div style='text-align: center;font-size: 10px;font-weight: bold;margin-bottom: 10px'>订单编号:" + data.orderNo + "</div>" + - "<div>收货人:" + data.name + ",电话:" + data.phone + ",地址:" + data.address + "</div><br><br>" + - // "<div>电话:" + data.phone + "</div><br><br>" + - // "<div>地址:" + data.address + "</div><br><br>" + - // "<div>编号:" + data.orderNo + "</div><br><br>" + - "<div>商品:" + data.goodsName + "</div><br><br>" + - "<div>备注:" + data.remark + "</div><br><br>" + + "<span style='font-size: 10px;font-weight: bold;'>收货人:</span><span>" + data.name + ",</span>" + + "<span style='font-size: 10px;font-weight: bold;'>电话:</span><span>" + data.phone + ",</span>" + + "<span style='font-size: 10px;font-weight: bold;'>地址:</span><span>" + data.address + "</span><br>" + + "<span style='font-size: 10px;font-weight: bold;'>商品:</span><span>" + data.goodsName + "</span><br>" + + "<span style='font-size: 10px;font-weight: bold;'>备注:</span><span>" + data.remark + "</span><br>" + "</div>" contentHtml += template; -- Gitblit v1.9.1