xiaoyong931011
2023-03-06 d977a3c05741085c21adde73235480e2e4a96025
修改物流信息
9 files modified
157 ■■■■■ changed files
pom.xml 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java 48 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java 2 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/deliverGoods.html 12 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/orderList.html 28 ●●●● patch | view | raw | blame | history
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>
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
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
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");
    }
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);
}
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) {
src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderVo.java
@@ -16,4 +16,6 @@
    private String address;
    private String expressCom;
    private String expressNo;
}
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>
src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -331,6 +331,18 @@
                    }
                });
            }
            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 () {
                        layer.closeAll();
                    }
                });
            }
            if (layEvent === 'seeOrder') {
                febs.modal.open( '订单详情', 'modules/order/orderDetail/' + data.id, {
                    maxmin: true,
@@ -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;