From cacf9bc8c94295ec3296a8cb49bda2b95087afb7 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 16 Aug 2023 17:04:55 +0800
Subject: [PATCH] 后台修改

---
 src/main/java/cc/mrbird/febs/dapp/service/IAdminMallGoodsService.java          |   10 +
 src/main/java/cc/mrbird/febs/dapp/mapper/MallGoodsMapper.java                  |    3 
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java      |   19 +++
 src/main/resources/templates/febs/views/goods/orderList.html                   |   12 ++
 src/main/java/cc/mrbird/febs/dapp/service/impl/AdminMallGoodsService.java      |   40 +++++++
 src/main/java/cc/mrbird/febs/dapp/dto/DeliverGoodsDto.java                     |   20 ++++
 src/main/resources/mapper/dapp/MallGoodsMapper.xml                             |    5 +
 src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java               |    2 
 src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java                    |    2 
 src/main/java/cc/mrbird/febs/dapp/controller/ViewAdminMallGoodsController.java |   16 +++
 src/main/resources/templates/febs/views/goods/orderdeliverGoods.html           |  105 +++++++++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/controller/AdminMallGoodsController.java     |    9 +
 src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java       |    7 +
 src/main/java/cc/mrbird/febs/dapp/vo/AdminMallOrderVo.java                     |   17 +++
 14 files changed, 258 insertions(+), 9 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/AdminMallGoodsController.java b/src/main/java/cc/mrbird/febs/dapp/controller/AdminMallGoodsController.java
index 158ae20..00cc077 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/AdminMallGoodsController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/AdminMallGoodsController.java
@@ -222,6 +222,15 @@
         return new FebsResponse().success().data(dataTable);
     }
 
+    /**
+     * 订单列表-发货
+     */
+    @PostMapping("deliverGoods")
+    @ControllerEndpoint(operation = "订单列表-发货", exceptionMessage = "操作失败")
+    public FebsResponse deliverGoods(@Valid DeliverGoodsDto deliverGoodsDto) {
+        return adminMallGoodsService.deliverGoods(deliverGoodsDto);
+    }
+
     @GetMapping(value = "/findDicByType/{type}")
     public FebsResponse findDicByType(@PathVariable("type") String type) {
         return new FebsResponse().success().data(adminMallGoodsService.findDataDicByType(type));
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
index f53ead4..a88dd03 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
@@ -113,6 +113,13 @@
         return new FebsResponse().success().message("操作成功");
     }
 
+    @ApiOperation(value = "确认收货", notes = "确认收货")
+    @PostMapping(value = "/confirm/{id}")
+    public FebsResponse confirm(@PathVariable("id") Long id) {
+        dappMemberService.confirmOrder(id);
+        return new FebsResponse().success().message("确认成功");
+    }
+
     @ApiOperation(value = "资产包详情", notes = "资产包详情")
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = PackageInfoVo.class)
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ViewAdminMallGoodsController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ViewAdminMallGoodsController.java
index 2191422..918cdf7 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ViewAdminMallGoodsController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ViewAdminMallGoodsController.java
@@ -10,6 +10,7 @@
 import cc.mrbird.febs.dapp.service.IAdminMallGoodsService;
 import cc.mrbird.febs.dapp.service.IMallNewsInfoService;
 import cc.mrbird.febs.dapp.vo.AdminMallGoodsCategoryVo;
+import cc.mrbird.febs.dapp.vo.AdminMallOrderVo;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -117,6 +118,21 @@
         return FebsUtil.view("goods/orderMoneyFlow");
     }
 
+    /**
+     * 订单-发货
+     * @param id
+     * @param model
+     * @return
+     */
+    @GetMapping("deliverGoods/{id}")
+    @RequiresPermissions("orderMoneyFlow:update")
+//    @RequiresPermissions("deliverGoods:update")
+    public String deliverGoods(@PathVariable long id, Model model) {
+        AdminMallOrderVo data = mallGoodsService.getMallOrderInfoById(id);
+        model.addAttribute("deliverInfo", data);
+        return FebsUtil.view("modules/order/deliverGoods");
+    }
+
     @GetMapping("profitSetting")
     @RequiresPermissions("profitSetting:view")
     public String profitSetting() {
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/DeliverGoodsDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/DeliverGoodsDto.java
new file mode 100644
index 0000000..7a78a77
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/DeliverGoodsDto.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.dapp.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "DeliverGoodsDto", description = "接收参数类")
+public class DeliverGoodsDto {
+
+    private Long id;
+
+    private String expressNo;
+
+    private String expressCom;
+
+    private String expressCode;
+
+    private String orderNo;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
index e0702cb..04f1829 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -108,5 +108,5 @@
 
     IPage<MallAddressInfo> selectShopAddressListInPage(@Param("record")MallGoodsQueryDto queryDto, Page<MallAddressInfo> page);
 
-    void updateIsDefault(Integer isYourN, Long memberId, Object o);
+    int updateIsDefault(@Param("isDefault") Integer isDefault, @Param("memberId") Long memberId, @Param("id") Long id);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/MallGoodsMapper.java b/src/main/java/cc/mrbird/febs/dapp/mapper/MallGoodsMapper.java
index ae5b3ff..742241a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/MallGoodsMapper.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/MallGoodsMapper.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.dapp.dto.MallOrderInfoDto;
 import cc.mrbird.febs.dapp.entity.MallGoods;
 import cc.mrbird.febs.dapp.entity.MallOrderInfo;
+import cc.mrbird.febs.dapp.vo.AdminMallOrderVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -29,4 +30,6 @@
     IPage<MallOrderInfo> selectOrderListInPage(Page<MallOrderInfo> page, @Param("record") MallOrderInfoDto mallOrderInfo);
 
     List<MallGoods> selectMallGoodsByCategaryId(@Param("categaryId")Long childCategaryId);
+
+    AdminMallOrderVo getMallOrderInfoById(@Param("id")long id);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
index f6787ba..94510af 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -106,4 +106,6 @@
     FebsResponse findAllBanner();
 
     void setDefaultAddress(Long id);
+
+    void confirmOrder(Long id);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/IAdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/dapp/service/IAdminMallGoodsService.java
index bd6663e..a45d576 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/IAdminMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/IAdminMallGoodsService.java
@@ -2,14 +2,12 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.dapp.dto.AddMallGoodsDto;
-import cc.mrbird.febs.dapp.dto.HlmBasicPerkDto;
-import cc.mrbird.febs.dapp.dto.MallGoodsUpdateDto;
-import cc.mrbird.febs.dapp.dto.MallOrderInfoDto;
+import cc.mrbird.febs.dapp.dto.*;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.vo.AdminMallGoodsCategoryTreeVo;
 import cc.mrbird.febs.dapp.vo.AdminMallGoodsCategoryVo;
 import cc.mrbird.febs.dapp.vo.AdminMallMoneyFlowVo;
+import cc.mrbird.febs.dapp.vo.AdminMallOrderVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -65,4 +63,8 @@
     FebsResponse platformBannerDelete(@NotNull(message = "{required}") Long id);
 
     void platformBannerAdd(@Valid PlatformBanner platformBannerEntity);
+
+    AdminMallOrderVo getMallOrderInfoById(long id);
+
+    FebsResponse deliverGoods(DeliverGoodsDto deliverGoodsDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminMallGoodsService.java
index 6e8a935..50152aa 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminMallGoodsService.java
@@ -2,10 +2,7 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.dapp.dto.AddMallGoodsDto;
-import cc.mrbird.febs.dapp.dto.HlmBasicPerkDto;
-import cc.mrbird.febs.dapp.dto.MallGoodsUpdateDto;
-import cc.mrbird.febs.dapp.dto.MallOrderInfoDto;
+import cc.mrbird.febs.dapp.dto.*;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
 import cc.mrbird.febs.dapp.mapper.*;
@@ -13,6 +10,7 @@
 import cc.mrbird.febs.dapp.vo.AdminMallGoodsCategoryTreeVo;
 import cc.mrbird.febs.dapp.vo.AdminMallGoodsCategoryVo;
 import cc.mrbird.febs.dapp.vo.AdminMallMoneyFlowVo;
+import cc.mrbird.febs.dapp.vo.AdminMallOrderVo;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -418,6 +416,11 @@
 
     }
 
+    @Override
+    public AdminMallOrderVo getMallOrderInfoById(long id) {
+        return this.baseMapper.getMallOrderInfoById(id);
+    }
+
     public void updateDataDic(String type, String code, String value) {
         DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(type, code);
         if (dic != null) {
@@ -426,4 +429,33 @@
         }
     }
 
+    @Override
+    public FebsResponse deliverGoods(DeliverGoodsDto deliverGoodsDto) {
+        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId());
+        if(ObjectUtil.isEmpty(mallOrderInfo)){
+            return new FebsResponse().fail().message("订单不存在,刷新后重试");
+        }
+        Integer status = mallOrderInfo.getStatus();
+        if(2 != status){
+            return new FebsResponse().fail().message("订单不是已完成状态");
+        }
+        Integer deliverState = mallOrderInfo.getDeliverState();
+        if(1 != deliverState){
+            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("请输入物流公司");
+        }
+        mallOrderInfo.setDeliverState(2);
+        mallOrderInfo.setDeliverName(expressCom);
+        mallOrderInfo.setDeliverCode(expressNo);
+        mallOrderInfoMapper.updateById(mallOrderInfo);
+        return new FebsResponse().success();
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 1629870..9408903 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -1259,6 +1259,25 @@
         this.baseMapper.updateIsDefault(MallAddressInfo.IS_YOUR_Y, memberId, id);
     }
 
+    @Override
+    public void confirmOrder(Long id) {
+        Long memberId = LoginUserUtil.getAppUser().getId();
+        MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
+        if (ObjectUtil.isEmpty(orderInfo)) {
+            throw new FebsException("订单不存在");
+        }
+
+        if (orderInfo.getStatus() != MallOrderInfo.STATUS_PAY) {
+            throw new FebsException("该状态不能确认收货");
+        }
+        if (orderInfo.getDeliverState() != MallOrderInfo.DELIVER_STATUS_DONE) {
+            throw new FebsException("该状态不能确认收货");
+        }
+
+        orderInfo.setDeliverState(MallOrderInfo.DELIVER_STATUS_OVER);
+        mallOrderInfoMapper.updateById(orderInfo);
+    }
+
     public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
         List<List<String>> partitionedList = new ArrayList<>();
         int size = originalList.size();
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/AdminMallOrderVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMallOrderVo.java
new file mode 100644
index 0000000..43e5cd0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMallOrderVo.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.dapp.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminMallOrderVo", description = "信息返回类")
+public class AdminMallOrderVo {
+
+    private Long id;
+
+    private String name;
+
+    private String phone;
+
+    private String address;
+}
diff --git a/src/main/resources/mapper/dapp/MallGoodsMapper.xml b/src/main/resources/mapper/dapp/MallGoodsMapper.xml
index 6f7b79d..aed5b19 100644
--- a/src/main/resources/mapper/dapp/MallGoodsMapper.xml
+++ b/src/main/resources/mapper/dapp/MallGoodsMapper.xml
@@ -87,4 +87,9 @@
         select * from mall_goods a where a.category_id = #{categaryId}
     </select>
 
+    <select id="getMallOrderInfoById" resultType="cc.mrbird.febs.dapp.vo.AdminMallOrderVo">
+        select b.* from mall_address_info b
+        where b.id = (select a.address_id from mall_order_info a where a.id = #{id})
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/goods/orderList.html b/src/main/resources/templates/febs/views/goods/orderList.html
index a363970..01e09c0 100644
--- a/src/main/resources/templates/febs/views/goods/orderList.html
+++ b/src/main/resources/templates/febs/views/goods/orderList.html
@@ -92,6 +92,7 @@
 <!-- 表格操作栏 start -->
 <script type="text/html" id="mall-order-option">
     {{# if(d.status === 2) { }}
+        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="deliverGoods">发货</button>
         <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="orderMoneyFlow">资金流水</button>
     {{# } else if(d.status === 3) { }}
     <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="delOrder">删除</button>
@@ -155,6 +156,17 @@
                     maxmin: true,
                 });
             }
+            if (layEvent === 'deliverGoods') {
+                febs.modal.open('发货', 'goodsView/deliverGoods/' + data.id, {
+                    btn: ['确认', '取消'],
+                    yes: function (index, layero) {
+                        $('#deliver-update').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+            }
         });
 
         function delOrder(id) {
diff --git a/src/main/resources/templates/febs/views/goods/orderdeliverGoods.html b/src/main/resources/templates/febs/views/goods/orderdeliverGoods.html
new file mode 100644
index 0000000..f854bed
--- /dev/null
+++ b/src/main/resources/templates/febs/views/goods/orderdeliverGoods.html
@@ -0,0 +1,105 @@
+<style>
+    #deliver-update {
+        padding: 20px 25px 25px 0;
+    }
+
+    #deliver-update .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #deliver-update #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #deliver-update .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+
+</style>
+<div class="layui-fluid" id="deliver-update">
+    <form class="layui-form" action="" lay-filter="deliver-update-form">
+       <div class="layui-form-item febs-hide">
+            <label class="layui-form-label febs-form-item-require">id:</label>
+            <div class="layui-input-block">
+                <input type="text" name="id">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">收货人:</label>
+            <div class="layui-input-block">
+                <input type="text" name="name"
+                       autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">联系方式:</label>
+            <div class="layui-input-block">
+                <input type="text" name="phone"
+                       autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">地址:</label>
+            <div class="layui-input-block">
+                <input type="text" name="address"
+                       autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">物流单号:</label>
+            <div class="layui-input-block">
+                <input type="text" name="expressNo"
+                       autocomplete="off" class="layui-input" >
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">物流公司:</label>
+            <div class="layui-input-block">
+                <input type="text" name="expressCom"
+                       autocomplete="off" class="layui-input" >
+            </div>
+        </div>
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="deliver-update-form-submit" id="submit"></button>
+        </div>
+    </form>
+</div>
+
+<script data-th-inline="javascript">
+    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () {
+        var $ = layui.$,
+            febs = layui.febs,
+            layer = layui.layer,
+            formSelects = layui.formSelects,
+            treeSelect = layui.treeSelect,
+            form = layui.form,
+            eleTree = layui.eleTree,
+            deliverInfo = [[${deliverInfo}]],
+            $view = $('#deliver-update'),
+            validate = layui.validate,
+            _deptTree;
+
+        form.render();
+
+        initUserValue();
+
+        function initUserValue() {
+            form.val("deliver-update-form", {
+                "id": deliverInfo.id,
+                "name": deliverInfo.name,
+                "phone": deliverInfo.phone,
+                "address": deliverInfo.address
+            });
+        }
+
+        form.on('submit(deliver-update-form-submit)', function (data) {
+            febs.post(ctx + 'admin/goods/deliverGoods', data.field, function () {
+                layer.closeAll();
+                febs.alert.success('操作成功');
+                $('#febs-order').find('#reset').click();
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.9.1