From 4e88d81927a660254005ff247ea79a42616388b4 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 04 Aug 2022 17:32:01 +0800 Subject: [PATCH] 20220804 配送限制 --- src/main/resources/mapper/modules/MallTeamLeaderMapper.xml | 1 src/main/resources/templates/febs/views/modules/order/orderDetail.html | 78 ++-- src/main/resources/templates/febs/views/modules/goods/deliveryHomeList.html | 108 +++++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 23 src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliveryVo.java | 19 + src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java | 6 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 5 src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java | 9 src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java | 3 src/main/java/cc/mrbird/febs/mall/dto/ApiXcxOpenDto.java | 19 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 5 src/main/java/cc/mrbird/febs/mall/vo/AdminHomeDeliverySettingVo.java | 19 + src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 7 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java | 7 src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java | 3 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java | 29 + src/main/resources/templates/febs/views/modules/goods/deliverySetting.html | 81 +++++ src/main/java/cc/mrbird/febs/mall/vo/AdminRangeSettingVo.java | 17 + src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java | 48 +++ src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java | 12 src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java | 6 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java | 7 src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java | 3 src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 11 src/main/java/cc/mrbird/febs/common/enumerates/OrderDeliveryStateEnum.java | 25 + src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 29 + src/main/resources/mapper/modules/MallGoodsMapper.xml | 11 src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliverySettingVo.java | 17 + src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java | 64 ++++ src/main/resources/templates/febs/views/modules/goods/deliveryHomeUpdate.html | 85 +++++ src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java | 10 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java | 33 ++ src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java | 8 src/main/resources/templates/febs/views/modules/order/orderList.html | 43 ++ src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java | 4 38 files changed, 786 insertions(+), 75 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index ae23dd7..8532909 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -5,6 +5,13 @@ @Getter public enum DataDictionaryEnum { + //配送设置 + HOME_DELIVERY_AMOUNT("DELIVERY_SETTING", "HOME_DELIVERY_AMOUNT"), + FRIST_COST_LEVEL("HOME_DELIVERY_SETTING", "FRIST_COST_LEVEL"), + SECOND_COST_LEVEL("HOME_DELIVERY_SETTING", "SECOND_COST_LEVEL"), + //范围参数 + RANGE_SWITCH("RANGE_SETTING", "RANGE_SWITCH"), + RANGE_SIZE("RANGE_SETTING", "RANGE_SIZE"), SCORE_SIGN_SETTING("SCORE_SETTING", "SCORE_SIGN_SETTING"), STATIC_BONUS("BONUS_TYPE", "STATIC_BONUS"), diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/OrderDeliveryStateEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/OrderDeliveryStateEnum.java new file mode 100644 index 0000000..2d639ce --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/OrderDeliveryStateEnum.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +@Getter +public enum OrderDeliveryStateEnum { + /** + * 待配送 + */ + DELIVERY_WAIT(1), + /** + * 配送中 + */ + DELIVERY_ING(2), + /** + * 已送达 + */ + DELIVERY_FINISH(3); + + private final int value; + + OrderDeliveryStateEnum(int value) { + this.value = value; + } +} 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 9dd068a..567ff86 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java @@ -5,15 +5,21 @@ 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.OssUtils; import cc.mrbird.febs.mall.dto.AddMallGoodsDto; import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; +import cc.mrbird.febs.mall.dto.RankAwardUpdateDto; import cc.mrbird.febs.mall.dto.UpMallGoodsDto; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallGoodsCategory; +import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.service.IAdminMallGoodsService; +import cc.mrbird.febs.mall.vo.AdminHomeDeliverySettingVo; import cc.mrbird.febs.mall.vo.AdminMallGoodsCategoryTreeVo; import cc.mrbird.febs.mall.vo.AdminMallGoodsTreeVo; +import cc.mrbird.febs.mall.vo.AdminRangeSettingVo; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; @@ -38,6 +44,7 @@ public class AdminMallGoodsController extends BaseController { private final IAdminMallGoodsService adminMallGoodsService; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; /** * 图片上传 @@ -162,5 +169,46 @@ 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); + } + } 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 b5aa7ad..cfd5b69 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java @@ -5,6 +5,8 @@ import cc.mrbird.febs.common.entity.DeptTree; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; +import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; import cc.mrbird.febs.common.utils.excl.ExcelUtil; @@ -12,6 +14,7 @@ import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper; import cc.mrbird.febs.mall.service.IAdminMallGoodsService; import cc.mrbird.febs.mall.service.IAdminMallOrderService; @@ -280,7 +283,7 @@ ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); return null; } - + private final MallOrderInfoMapper mallOrderInfoMapper; @GetMapping("exportOrderListOne") @ControllerEndpoint(operation = "订单列表", exceptionMessage = "导出失败") public FebsResponse exportOrderListOne(MallOrderInfo mallOrderInfo, HttpServletResponse response) throws IOException { @@ -326,6 +329,8 @@ temp.add(item.getAddressArea()); temp.add(item.getProvince()+item.getCity()+item.getTownship()+item.getDetailAddress()); list.add(temp); + + adminMallOrderService.updateOrderStateAndDeliveryState(item.getId(), OrderStatusEnum.WAIT_FINISH.getValue(), OrderDeliveryStateEnum.DELIVERY_ING.getValue()); } } orderSheet.setDataList(list); diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java index 145379b..c8416aa 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java @@ -83,4 +83,16 @@ return memberService.xcxSaveInfo(apiXcxSaveInfoDto); } + /** + * 小程序是否允许打开 + * 先获取系统设置的范围访问开关 + * 1:开启,获取范围大小,如果范围内没有团长,不允许打开 + * 2:关闭,允许打开 + */ + @ApiOperation(value = "小程序是否允许打开", notes = "小程序是否允许打开") + @PostMapping(value = "/xcxOpen") + public FebsResponse xcxOpen(@RequestBody ApiXcxOpenDto apiXcxOpenDto){ + return memberService.xcxOpen(apiXcxOpenDto); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java index 01d12fc..39afe3f 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java @@ -4,6 +4,7 @@ import cc.mrbird.febs.mall.dto.ApiMallGoodsCommentDto; import cc.mrbird.febs.mall.dto.MallGoodsQueryDto; import cc.mrbird.febs.mall.service.IApiMallGoodsService; +import cc.mrbird.febs.mall.vo.ApiMallGoodsDeliveryVo; import cc.mrbird.febs.mall.vo.MallGoodsCommentVo; import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo; import cc.mrbird.febs.mall.vo.MallGoodsListVo; @@ -56,4 +57,13 @@ return new FebsResponse().success().data(mallGoodsService.findMallGoodsCommentByGoodsId(queryDto)); } + @ApiOperation(value = "配送设置", notes = "配送设置") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMallGoodsDeliveryVo.class) + }) + @GetMapping(value = "/deliverySetting") + public FebsResponse deliverySetting() { + return new FebsResponse().success().data(mallGoodsService.findDeliverySetting()); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java index 3119c67..28f8fc8 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java @@ -2,20 +2,30 @@ 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.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.mall.dto.ScoreSettingDto; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallGoods; +import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.service.IAdminMallGoodsService; import cc.mrbird.febs.mall.service.IAdminMallMemberService; -import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; -import cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo; -import cc.mrbird.febs.mall.vo.MallMemberVo; +import cc.mrbird.febs.mall.vo.*; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; @Controller("goodsView") @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/goods") @@ -23,6 +33,7 @@ public class ViewMallGoodsController extends BaseController { private final IAdminMallGoodsService mallGoodsService; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; /** * 商品列表 @@ -81,4 +92,51 @@ model.addAttribute("goodsInfo", data); return FebsUtil.view("modules/goods/goodsUpdateNew"); } + + /** + * 商品配送设置 + * @param model + * @return + */ + @GetMapping("/deliverySetting") + public String deliverySetting(Model model) { + AdminRangeSettingVo adminRangeSettingVo = new AdminRangeSettingVo(); + DataDictionaryCustom deliverySetting = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getType(), DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getCode()); + if (ObjectUtil.isNotNull(deliverySetting)) { + adminRangeSettingVo.setHomeDeliveryAmount(Double.parseDouble(deliverySetting.getValue())); + } + DataDictionaryCustom rangeSwitch = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode()); + if (ObjectUtil.isNotNull(rangeSwitch)) { + adminRangeSettingVo.setRangeSwitch(Integer.parseInt(rangeSwitch.getValue())); + } + DataDictionaryCustom rangeSize = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode()); + if (ObjectUtil.isNotNull(rangeSize)) { + adminRangeSettingVo.setRangeSize(Integer.parseInt(rangeSize.getValue())); + } + model.addAttribute("deliverySetting", adminRangeSettingVo); + return FebsUtil.view("modules/goods/deliverySetting"); + } + + /** + * 配送费设置 + * @return + */ + @GetMapping("deliveryHomeList") + @RequiresPermissions("deliveryHomeList:view") + public String deliveryHomeList() { + return FebsUtil.view("modules/goods/deliveryHomeList"); + } + + /** + * 配送费设置 --- 编辑 + */ + @GetMapping("deliveryHomeUpdate/{id}") + @RequiresPermissions("deliveryHomeUpdate:update") + public String deliveryHomeUpdate(@PathVariable long id, Model model) { + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(id); + AdminHomeDeliverySettingVo adminHomeDeliverySettingVo = JSONUtil.toBean(dataDictionaryCustom.getValue(), AdminHomeDeliverySettingVo.class); + adminHomeDeliverySettingVo.setId(id); + model.addAttribute("homeDeliverySetting", adminHomeDeliverySettingVo); + return FebsUtil.view("modules/goods/deliveryHomeUpdate"); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java index 0b7e21c..71fe23b 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java @@ -28,6 +28,9 @@ @ApiModelProperty(value = "订单提交类型", example = "1从购物车提交, 2从商品直接提交") private Integer type; + @ApiModelProperty(value = "是否送货上门 1:是 2:否", example = "1") + private Integer isHome; + @ApiModelProperty(value = "备注") private String remark; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxOpenDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxOpenDto.java new file mode 100644 index 0000000..2e52b18 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxOpenDto.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiXcxOpenDto", description = "小程序登录") +public class ApiXcxOpenDto { + + @ApiModelProperty(value = "经度") + private Double longitude; + + @ApiModelProperty(value = "纬度") + private Double latitude; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java index 72b0f24..1aff7ac 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java @@ -121,4 +121,12 @@ * 微信订单编号 */ private String wxOrderNo; + /** + * 配送状态 1:待配送 2:配送中 3:已送达 + */ + private Integer deliveryState; + /** + * 是否送货上门 1:是 2:否 + */ + private Integer isHome; } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java index 59206a4..21696f8 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.dto.MallGoodsQueryDto; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallGoodsComment; import cc.mrbird.febs.mall.vo.*; @@ -43,4 +44,6 @@ List<MallGoods> selectOrderGoodsList(@Param("memberId") Long memberId, @Param("date") Date date); IPage<MallGoodsCommentVo> selectMallGoodsCommentListQueryInPage(Page<MallGoodsCommentVo> page, @Param("record")MallGoodsComment mallGoodsComment); + + IPage<DataDictionaryCustom> getDeliveryHomeListInPage(Page<DataDictionaryCustom> page, @Param("record")AdminHomeDeliverySettingVo adminHomeDeliverySettingVo); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java index f511408..fc4e284 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java @@ -61,4 +61,6 @@ List<MallOrderInfo> selectOrderInfoWithNormalGoods(@Param("date") Date date); BigDecimal selectSumAmountByPayMethodAndStatue(@Param("payMethod")String name, @Param("statue")int value); + + void updateOrderStateAndDeliveryState(@Param("orderId")Long orderId, @Param("orderState")int orderState, @Param("deliveryState")int deliveryState); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java index 4b910ee..8f50189 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java @@ -7,10 +7,7 @@ import cc.mrbird.febs.mall.dto.UpMallGoodsDto; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallGoodsCategory; -import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; -import cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo; -import cc.mrbird.febs.mall.vo.AdminMallGoodsTreeVo; -import cc.mrbird.febs.mall.vo.AdminMallGoodsVo; +import cc.mrbird.febs.mall.vo.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -41,4 +38,8 @@ FebsResponse goodsHot(Long id); FebsResponse goodsNotHot(Long id); + + IPage<AdminHomeDeliverySettingVo> getDeliveryHomeListInPage(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo, QueryRequest request); + + FebsResponse deliveryHomeUpdate(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo); } 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 cc13c93..b612bbd 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java @@ -66,4 +66,6 @@ FebsResponse showStateSwitchOn(Long id); FebsResponse showStateSwitchOff(Long id); + + void updateOrderStateAndDeliveryState(Long id, int value, int value1); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java index f5c6b2d..1bd9963 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.mall.dto.ApiMallGoodsCommentDto; import cc.mrbird.febs.mall.dto.MallGoodsQueryDto; import cc.mrbird.febs.mall.entity.MallGoods; +import cc.mrbird.febs.mall.vo.ApiMallGoodsDeliveryVo; import cc.mrbird.febs.mall.vo.MallGoodsCommentVo; import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo; import cc.mrbird.febs.mall.vo.MallGoodsListVo; @@ -17,4 +18,6 @@ MallGoodsDetailsVo findMallGoodsDetailsById(@Param("id") Long id); IPage<MallGoodsCommentVo> findMallGoodsCommentByGoodsId(ApiMallGoodsCommentDto queryDto); + + ApiMallGoodsDeliveryVo findDeliverySetting(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java index fd5b87a..02f6bb7 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java @@ -71,4 +71,6 @@ FebsResponse xcxSaveInfo(ApiXcxSaveInfoDto apiXcxSaveInfoDto); FebsResponse xcxPhoneLogin(ApiXcxPhoneLoginDto apiXcxPhoneLoginDto); + + FebsResponse xcxOpen(ApiXcxOpenDto apiXcxOpenDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java index 14dcdcf..a65ff45 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java @@ -12,6 +12,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -495,5 +496,33 @@ return new FebsResponse().success(); } + @Override + public IPage<AdminHomeDeliverySettingVo> getDeliveryHomeListInPage(AdminHomeDeliverySettingVo adminHomeDeliverySetting, QueryRequest request) { + Page<DataDictionaryCustom> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<DataDictionaryCustom> dataDictionaryCustomIPage = this.baseMapper.getDeliveryHomeListInPage(page, adminHomeDeliverySetting); + List<DataDictionaryCustom> records = dataDictionaryCustomIPage.getRecords(); + List<AdminHomeDeliverySettingVo> adminHomeDeliverySettingVos = new ArrayList<>(); + if(CollUtil.isNotEmpty(records)){ + for(DataDictionaryCustom dataDictionaryCustom : records){ + AdminHomeDeliverySettingVo adminHomeDeliverySettingVo = JSONUtil.toBean(dataDictionaryCustom.getValue(), AdminHomeDeliverySettingVo.class); + adminHomeDeliverySettingVo.setId(dataDictionaryCustom.getId()); + adminHomeDeliverySettingVos.add(adminHomeDeliverySettingVo); + } + } + IPage<AdminHomeDeliverySettingVo> adminHomeDeliverySettingVoIPage = new Page<>(); + adminHomeDeliverySettingVoIPage.setRecords(adminHomeDeliverySettingVos); + adminHomeDeliverySettingVoIPage.setTotal(dataDictionaryCustomIPage.getTotal()); + return adminHomeDeliverySettingVoIPage; + } + + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; + @Override + public FebsResponse deliveryHomeUpdate(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo) { + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(adminHomeDeliverySettingVo.getId()); + adminHomeDeliverySettingVo.setId(null); + dataDictionaryCustom.setValue(JSONUtil.toJsonStr(adminHomeDeliverySettingVo)); + dataDictionaryCustomMapper.updateById(dataDictionaryCustom); + return new FebsResponse().success(); + } } 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 4cd454e..bf4b6f1 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 @@ -4,6 +4,7 @@ import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; @@ -103,6 +104,7 @@ mallExpressInfoMapper.insert(mallExpressInfo); mallOrderInfo.setStatus(3); + mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_ING.getValue()); mallOrderInfoMapper.updateById(mallOrderInfo); return new FebsResponse().success(); } @@ -398,6 +400,11 @@ } @Override + public void updateOrderStateAndDeliveryState(Long id, int value, int value1) { + mallOrderInfoMapper.updateOrderStateAndDeliveryState(id,value,value1); + } + + @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/service/impl/ApiMallGoodsServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java index 6135e77..bab3a30 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java @@ -1,29 +1,35 @@ package cc.mrbird.febs.mall.service.impl; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.mall.conversion.MallGoodsConversion; import cc.mrbird.febs.mall.conversion.MallMemberConversion; import cc.mrbird.febs.mall.dto.ApiMallGoodsCommentDto; import cc.mrbird.febs.mall.dto.MallGoodsQueryDto; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallGoodsComment; +import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallGoodsCommentMapper; import cc.mrbird.febs.mall.mapper.MallGoodsImagesMapper; import cc.mrbird.febs.mall.mapper.MallGoodsMapper; import cc.mrbird.febs.mall.service.IApiMallGoodsService; -import cc.mrbird.febs.mall.vo.MallGoodsCommentVo; -import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo; -import cc.mrbird.febs.mall.vo.MallGoodsListVo; +import cc.mrbird.febs.mall.vo.*; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.checkerframework.checker.units.qual.A; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -38,6 +44,7 @@ private final MallGoodsImagesMapper goodsImagesMapper; private final MallGoodsCommentMapper mallGoodsCommentMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override @@ -76,4 +83,24 @@ mallGoodsComment.setGoodsId(queryDto.getGoodsId()); return this.baseMapper.selectMallGoodsCommentListQueryInPage(page,mallGoodsComment); } + + @Override + public ApiMallGoodsDeliveryVo findDeliverySetting() { + ApiMallGoodsDeliveryVo apiMallGoodsDeliveryVo = new ApiMallGoodsDeliveryVo(); + DataDictionaryCustom deliverySetting = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getType(), DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getCode()); + if(ObjectUtil.isNotNull(deliverySetting)){ + apiMallGoodsDeliveryVo.setHomeDeliveryServiceAmount(Double.parseDouble(deliverySetting.getValue())); + } + List<DataDictionaryCustom> homeDeliverySettings = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.FRIST_COST_LEVEL.getType()); + if(CollUtil.isNotEmpty(homeDeliverySettings)){ + List<ApiMallGoodsDeliverySettingVo> apiMallGoodsDeliverySettingVos = new ArrayList<>(); + for(DataDictionaryCustom dic : homeDeliverySettings){ + String apiMallGoodsDeliverySettingVoJson = dic.getValue(); + ApiMallGoodsDeliverySettingVo apiMallGoodsDeliverySettingVo = JSONUtil.toBean(apiMallGoodsDeliverySettingVoJson, ApiMallGoodsDeliverySettingVo.class); + apiMallGoodsDeliverySettingVos.add(apiMallGoodsDeliverySettingVo); + } + apiMallGoodsDeliveryVo.setApiMallGoodsDeliverySettingVos(apiMallGoodsDeliverySettingVos); + } + return apiMallGoodsDeliveryVo; + } } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 2c4de86..5e28dc2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -701,6 +701,35 @@ return new FebsResponse().fail().message("验证码错误"); } + @Override + public FebsResponse xcxOpen(ApiXcxOpenDto apiXcxOpenDto) { + DataDictionaryCustom rangeSwitch = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode()); + if(StrUtil.isNotBlank(rangeSwitch.getValue()) && "1".equals(rangeSwitch.getValue())){ + if(ObjectUtil.isNull(apiXcxOpenDto.getLongitude()) || ObjectUtil.isNull(apiXcxOpenDto.getLatitude())){ + return new FebsResponse().fail().message("请授权位置信息"); + } + Double longitude = apiXcxOpenDto.getLongitude(); + Double latitude = apiXcxOpenDto.getLatitude(); + + DataDictionaryCustom rangeSize = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode()); + if(ObjectUtil.isEmpty(rangeSize)){ + return new FebsResponse().fail().message("系统繁忙"); + } + if(StrUtil.isBlank(rangeSize.getValue())){ + return new FebsResponse().fail().message("系统繁忙"); + } + //方位大小,换成单位:米 + Integer value = Integer.parseInt(rangeSize.getValue()) * 1000; + //根据经纬度获取周围团长的距离 + MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByLonAndLat(longitude, latitude); + Double distance = mallTeamLeader.getDistance(); + if(value <= distance){ + return new FebsResponse().fail().message("系统繁忙"); + } + } + return new FebsResponse().success(); + } + private String getXcxLoginUrl(String code) { String wechatLoginUrl =xcxProperties.getWecharLoginUrl(); return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 1761ef5..9ac608f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -71,10 +71,6 @@ if(StrUtil.isEmpty(takeUniqueCode)){ throw new FebsException("请选择自提点"); } - MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); - if (address == null) { - throw new FebsException("地址不存在"); - } String orderNo = MallUtils.getOrderNum(); MallOrderInfo orderInfo = new MallOrderInfo(); @@ -82,11 +78,6 @@ orderInfo.setOrderTime(new Date()); orderInfo.setMemberId(member.getId()); orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue()); - orderInfo.setName(address.getName()); - orderInfo.setAddress(address.getArea() + address.getAddress()); - orderInfo.setPhone(address.getPhone()); - orderInfo.setLatitude(address.getLatitude()); - orderInfo.setLongitude(address.getLongitude()); orderInfo.setRemark(addOrderDto.getRemark()); orderInfo.setOrderType(addOrderDto.getOrderType()); @@ -180,6 +171,20 @@ orderInfo.setAmount(total); orderInfo.setCarriage(carriage); + + MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); + orderInfo.setName(address.getName()); + orderInfo.setPhone(address.getPhone()); + orderInfo.setIsHome(addOrderDto.getIsHome()); + //订单金额大于50,且选择送货上门,订单需要选择地址信息 + if(total.compareTo(new BigDecimal(50)) > 0 && 1 == addOrderDto.getIsHome()){ + if (StrUtil.isBlank(address.getLatitude())||StrUtil.isBlank(address.getLongitude())) { + throw new FebsException("请添加地址"); + } + orderInfo.setAddress(address.getArea() + address.getAddress()); + orderInfo.setLatitude(address.getLatitude()); + orderInfo.setLongitude(address.getLongitude()); + } this.baseMapper.updateById(orderInfo); agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java index 6043076..842a9c0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.ShareCodeUtil; @@ -121,14 +122,14 @@ return new FebsResponse().fail().message("订单不存在"); } Integer status = mallOrderInfo.getStatus(); - if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){ + if(OrderStatusEnum.WAIT_FINISH.getValue() != status){ return new FebsResponse().fail().message("订单不是待确认到货状态"); } Integer deliveryType = mallOrderInfo.getDeliveryType(); if(1 != deliveryType){ return new FebsResponse().fail().message("订单的配送方式不是自提"); } - mallOrderInfo.setStatus(OrderStatusEnum.WAIT_FINISH.getValue()); + mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()); mallOrderInfoMapper.updateById(mallOrderInfo); return new FebsResponse().success().message("确认成功"); } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminHomeDeliverySettingVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminHomeDeliverySettingVo.java new file mode 100644 index 0000000..e400a32 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminHomeDeliverySettingVo.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "AdminHomeDeliverySettingVo", description = "信息返回类") +public class AdminHomeDeliverySettingVo { + + private Long id; + + @ApiModelProperty(value = "订单金额超过:amount") + private Double amount; + + @ApiModelProperty(value = "配送费:cost") + private Double cost; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java index f5caa96..d45bf3b 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java @@ -73,4 +73,10 @@ private Integer carriage; //配送方式 1:自提 2:快递 private Integer deliveryType; + + private String wxOrderNo; + //配送状态 1:待配送 2:配送中 3:已送达 + private Integer deliveryState; + //是否送货上门 1:是 2:否 + private Integer isHome; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminRangeSettingVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminRangeSettingVo.java new file mode 100644 index 0000000..c76817f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminRangeSettingVo.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "AdminRangeSettingVo", description = "信息返回类") +public class AdminRangeSettingVo { + + //范围访问开关1:开启2:关闭 + private Integer rangeSwitch; + //范围大小(单位:千米) + private Integer rangeSize; + //超过金额可以提供送货上门服务 + private Double homeDeliveryAmount; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliverySettingVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliverySettingVo.java new file mode 100644 index 0000000..f29a5ef --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliverySettingVo.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiMallGoodsDeliverySettingVo", description = "配送设置") +public class ApiMallGoodsDeliverySettingVo { + + @ApiModelProperty(value = "订单金额超过:amount") + private Double amount; + + @ApiModelProperty(value = "配送费:cost") + private Double cost; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliveryVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliveryVo.java new file mode 100644 index 0000000..e2ac246 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallGoodsDeliveryVo.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "MallGoodsDeliveryVo", description = "配送设置") +public class ApiMallGoodsDeliveryVo { + + @ApiModelProperty(value = "超过金额可以提供送货上门服务") + private Double homeDeliveryServiceAmount; + + @ApiModelProperty(value = "订单金额超过:amount,配送费:cost") + private List<ApiMallGoodsDeliverySettingVo> apiMallGoodsDeliverySettingVos; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java index 2ce0603..2b167ec 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java @@ -107,5 +107,9 @@ private String addressArea; @ApiModelProperty(value = "自提点详细地址") private String detailAddress; + @ApiModelProperty(value = "配送状态 1:待配送 2:配送中 3:已送达") + private Integer deliveryState; + @ApiModelProperty(value = "是否送货上门 1:是 2:否") + private Integer isHome; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java index 436fe31..181b33c 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java @@ -45,4 +45,10 @@ @ApiModelProperty(value = "提货码") private String takeCode; + + @ApiModelProperty(value = "配送状态 1:待配送 2:配送中 3:已送达") + private Integer deliveryState; + + @ApiModelProperty(value = "是否送货上门 1:是 2:否") + private Integer isHome; } diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java index 4175218..518328c 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.pay.controller; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; @@ -22,6 +23,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Date; @Slf4j @RestController @@ -88,6 +90,9 @@ if (order != null && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()) { log.debug("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount()); order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); + order.setPayResult("1"); + order.setPayTime(new Date()); + order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); mallOrderInfoMapper.updateById(order); threadResult.success().message("支付成功"); } else { diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml index 0d125cd..b7498ce 100644 --- a/src/main/resources/mapper/modules/MallGoodsMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml @@ -234,4 +234,15 @@ order by a.created_time desc </select> + <select id="getDeliveryHomeListInPage" resultType="cc.mrbird.febs.mall.entity.DataDictionaryCustom"> + SELECT + a.* + FROM + data_dictionary_custom a + where a.type = 'HOME_DELIVERY_SETTING' + GROUP BY a.id + ORDER BY + a.CREATED_TIME asc + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index 247081a..b1ebead 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml @@ -59,7 +59,7 @@ </select> <select id="selectOrderListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo"> - select *, + select a.*, b.name memberName, b.bind_phone memberBindPhone, b.phone memberPhone @@ -123,6 +123,8 @@ <result column="remark" property="remark" /> <result column="take_code" property="takeCode" /> <result column="take_unique_code" property="takeUniqueCode" /> + <result column="delivery_state" property="deliveryState" /> + <result column="is_home" property="isHome" /> <result column="del_flag" property="delFlag" /> <result column="leader_name" property="leaderName" /> <result column="leader_phone" property="leaderPhone" /> @@ -333,4 +335,11 @@ select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info where pay_method = #{payMethod} and status = #{statue} </select> + + <update id="updateOrderStateAndDeliveryState"> + update mall_order_info + set status = #{orderState}, + delivery_state = #{deliveryState} + where id = #{orderId} + </update> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml index d15f0f8..963961c 100644 --- a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml +++ b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml @@ -70,6 +70,7 @@ <result column="latitude" property="latitude" /> <result column="order_type" property="orderType" /> <result column="comment_state" property="commentState" /> + <result column="delivery_state" property="deliveryState" /> <result column="carriage" property="carriage" /> <result column="remark" property="remark" /> <result column="del_flag" property="delFlag" /> diff --git a/src/main/resources/templates/febs/views/modules/goods/deliveryHomeList.html b/src/main/resources/templates/febs/views/modules/goods/deliveryHomeList.html new file mode 100644 index 0000000..e26ddca --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/goods/deliveryHomeList.html @@ -0,0 +1,108 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-delivery-home-level" lay-title="配送费列表"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="deliveryHomeLevelTable" lay-data="{id: 'deliveryHomeLevelTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<!-- 表格操作栏 start --> +<script type="text/html" id="user-option"> + <span shiro:lacksPermission="user:view,user:update,user:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="edit" shiro:hasPermission="user:update"><i + class="layui-icon febs-edit-area febs-blue"></i></a> +</script> +<!-- 表格操作栏 end --> +<script data-th-inline="none" type="text/javascript"> + // 引入组件并初始化 + layui.use([ 'jquery', 'form', 'table', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + table = layui.table, + $view = $('#febs-delivery-home-level'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: '', type: null}, + tableIns; + + form.render(); + + // 表格初始化 + initTable(); + + // 初始化表格操作栏各个按钮功能 + table.on('tool(deliveryHomeLevelTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'deliveryHomeUpdate') { + febs.modal.open('编辑', 'modules/goods/deliveryHomeUpdate/' + data.id, { + btn: ['确认', '取消'], + yes: function (index, layero) { + $('#delivery-home-edit').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } + }); + } + }); + + // 查询按钮 + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + // 刷新按钮 + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'deliveryHomeLevelTable', + url: ctx + 'admin/goods/deliveryHomeList', + cols: [[ + {field: 'amount', title: '订单金额超过(元),收取配送费', minWidth: 100,align:'left'}, + {field: 'cost', title: '配送费', minWidth: 100,align:'left'}, + {title: '操作', + templet: function (d) { + return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliveryHomeUpdate" shiro:hasPermission="user:update">编辑</button>' + },minWidth: 300,align:'center'} + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + return {}; + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/goods/deliveryHomeUpdate.html b/src/main/resources/templates/febs/views/modules/goods/deliveryHomeUpdate.html new file mode 100644 index 0000000..d124068 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/goods/deliveryHomeUpdate.html @@ -0,0 +1,85 @@ +<style> + #delivery-home-edit { + padding: 20px 25px 25px 0; + } + + #delivery-home-edit .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #delivery-home-edit #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #delivery-home-edit .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } + #delivery-home-edit img{ + max-width:200px + } + +</style> +<div class="layui-fluid" id="delivery-home-edit"> + <form class="layui-form" action="" lay-filter="delivery-home-edit-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label">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="number" name="amount" class="layui-input"> + <div class="layui-form-mid layui-word-aux">填入整数</div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">配送费:</label> + <div class="layui-input-block"> + <input type="number" name="cost" class="layui-input"> + <div class="layui-form-mid layui-word-aux">填入整数</div> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="delivery-home-edit-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, + homeDeliverySetting = [[${homeDeliverySetting}]], + $view = $('#delivery-home-edit'), + validate = layui.validate, + _deptTree; + form.render(); + + initUserValue(); + + function initUserValue() { + form.val("delivery-home-edit-form", { + "id": homeDeliverySetting.id, + "amount": homeDeliverySetting.amount, + "cost": homeDeliverySetting.cost + }); + } + + form.on('submit(delivery-home-edit-submit)', function (data) { + febs.post(ctx + 'admin/goods/deliveryHomeUpdate', data.field, function () { + layer.closeAll(); + febs.alert.success('操作成功'); + $('#febs-delivery-home-level').find('#reset').click(); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/goods/deliverySetting.html b/src/main/resources/templates/febs/views/modules/goods/deliverySetting.html new file mode 100644 index 0000000..4000b75 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/goods/deliverySetting.html @@ -0,0 +1,81 @@ +<div class="layui-fluid layui-anim febs-anim" id="delivery-setting" lay-title="商品配送设置"> + <div class="layui-row layui-col-space8 febs-container"> + <form class="layui-form" action="" lay-filter="delivery-setting-form"> + <div class="layui-card"> + <div class="layui-card-body"> + <div class="layui-form-item"> + <label class="layui-form-label">范围访问开关:</label> + <div class="layui-input-block"> + <input type="radio" name="rangeSwitch" value="1" title="开启"> + <input type="radio" name="rangeSwitch" value="2" title="关闭"> + </div> + <div class="layui-form-mid layui-word-aux">范围访问开关,开启之后,如果范围大小内没有自提点,则无法打开程序</div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">范围大小:</label> + <div class="layui-input-block" style="width: 50%"> + <input type="text" name="rangeSize" data-th-id="${deliverySetting.rangeSize}" + lay-verify="number" autocomplete="off" class="layui-input" > + <div class="layui-form-mid layui-word-aux">(填入整数)当前位置的范围,单位:千米,</div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">订单金额超过:</label> + <div class="layui-input-inline" style="width: 120px"> + <input type="text" name="homeDeliveryAmount" data-th-id="${deliverySetting.homeDeliveryAmount}" + lay-verify="number" autocomplete="off" class="layui-input" > + <div class="layui-form-mid layui-word-aux">(填入整数)</div> + </div> + <div class="layui-form-mid">元,可以提供送货上门服务</div> + </div> + </div> + <div class="layui-card-footer"> + <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="delivery-setting-form-submit" id="submit">保存</button> + </div> + </div> + </form> + </div> +</div> +<style> + .layui-form-label { + width: 120px; + } + + .layui-form-item .layui-input-block { + margin-left: 150px; + } + + .layui-table-form .layui-form-item { + margin-bottom: 20px !important; + } +</style> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + validate = layui.validate, + deliverySetting = [[${deliverySetting}]], + $view = $('#delivery-setting'); + + form.verify(validate); + form.render(); + initUserValue(); + + function initUserValue() { + form.val("delivery-setting-form", { + "rangeSwitch": deliverySetting.rangeSwitch, + "rangeSize": deliverySetting.rangeSize, + "homeDeliveryAmount": deliverySetting.homeDeliveryAmount + }); + } + + form.on('submit(delivery-setting-form-submit)', function (data) { + console.log(data); + febs.post(ctx + 'admin/goods/deliverySetUpdate', data.field, function (res) { + febs.alert.success('设置成功'); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/order/orderDetail.html b/src/main/resources/templates/febs/views/modules/order/orderDetail.html index ed013d2..0348849 100644 --- a/src/main/resources/templates/febs/views/modules/order/orderDetail.html +++ b/src/main/resources/templates/febs/views/modules/order/orderDetail.html @@ -39,26 +39,26 @@ </div> </div> </div> - <div class="layui-form-item"> - <label class="layui-form-label">地址:</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">支付订单号:</label> - <div class="layui-input-block"> - <input type="text" name="payOrderNo" - autocomplete="off" class="layui-input" readonly> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">支付凭证:</label> - <div class="layui-input-block"> - <img alt="支付凭证" data-th-src="${orderDetail.payImage}" style="width: 200px"> - </div> - </div> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">地址:</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">支付订单号:</label>--> +<!-- <div class="layui-input-block">--> +<!-- <input type="text" name="payOrderNo"--> +<!-- autocomplete="off" class="layui-input" readonly>--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">支付凭证:</label>--> +<!-- <div class="layui-input-block">--> +<!-- <img alt="支付凭证" data-th-src="${orderDetail.payImage}" style="width: 200px">--> +<!-- </div>--> +<!-- </div>--> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> @@ -74,20 +74,20 @@ <textarea id="lay_edit" lay-verify="orderItems" name = "orderItems" class="layui-textarea" readonly></textarea> </div> </div> - <div class="layui-form-item"> - <label class="layui-form-label">物流单号:</label> - <div class="layui-input-block"> - <input type="text" name="expressNo" - autocomplete="off" class="layui-input" readonly> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">物流公司:</label> - <div class="layui-input-block"> - <input type="text" name="expressCom" - autocomplete="off" class="layui-input" readonly > - </div> - </div> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">物流单号:</label>--> +<!-- <div class="layui-input-block">--> +<!-- <input type="text" name="expressNo"--> +<!-- autocomplete="off" class="layui-input" readonly>--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">物流公司:</label>--> +<!-- <div class="layui-input-block">--> +<!-- <input type="text" name="expressCom"--> +<!-- autocomplete="off" class="layui-input" readonly >--> +<!-- </div>--> +<!-- </div>--> </form> </div> @@ -116,11 +116,11 @@ "phone": orderDetail.phone, "amount": orderDetail.amount, "orderItems": orderDetail.orderItems, - "expressNo": orderDetail.expressNo, - "expressCom": orderDetail.expressCom, - "payImage": orderDetail.payImage, - "payOrderNo": orderDetail.payOrderNo, - "address": orderDetail.address + // "expressNo": orderDetail.expressNo, + // "expressCom": orderDetail.expressCom, + // "payImage": orderDetail.payImage, + // "payOrderNo": orderDetail.payOrderNo, + // "address": orderDetail.address }); } 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 b7ad4c9..565bdba 100644 --- a/src/main/resources/templates/febs/views/modules/order/orderList.html +++ b/src/main/resources/templates/febs/views/modules/order/orderList.html @@ -99,9 +99,9 @@ </script> <script type="text/html" id="tableToolBar"> <div class="layui-btn-container"> - <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverOne">导出未发货订单(自提)</button> - <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出未发货订单(快递)</button> - <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button> + <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverOne">导出待发货订单,系统自动发货</button> +<!-- <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出未发货订单(快递)</button>--> +<!-- <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button>--> </div> </script> <!-- 表格操作栏 end --> @@ -169,6 +169,17 @@ table.on('tool(orderTable)', function (obj) { var data = obj.data, layEvent = obj.event; + // if (layEvent === 'deliverGoods') { + // febs.modal.open('发货', 'modules/order/deliverGoods/' + data.id, { + // btn: ['确认', '取消'], + // yes: function (index, layero) { + // $('#deliver-update').find('#submit').trigger('click'); + // }, + // btn2: function () { + // layer.closeAll(); + // } + // }); + // } if (layEvent === 'deliverGoods') { febs.modal.open('发货', 'modules/order/deliverGoods/' + data.id, { btn: ['确认', '取消'], @@ -241,10 +252,10 @@ cols: [[ {field: 'orderNo', title: '订单编号', minWidth: 200,align:'left'}, {field: 'memberName', title: '购买人', minWidth: 120,align:'left'}, - {field: 'memberPhone', title: '账号', minWidth: 120,align:'left'}, - {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'}, + {field: 'memberPhone', title: '联系方式', minWidth: 120,align:'left'}, + // {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'}, {field: 'amount', title: '订单金额', minWidth: 120,align:'left'}, - {field: 'carriage', title: '运费', minWidth: 120,align:'left'}, + // {field: 'carriage', title: '运费', minWidth: 120,align:'left'}, {field: 'orderTime', title: '下单时间', minWidth: 200,align:'left'}, {field: 'deliveryType', title: '配送方式', templet: function (d) { @@ -276,18 +287,24 @@ return '' } }, minWidth: 80,align:'center'}, + {field: 'deliveryState', title: '配送状态', + templet: function (d) { + if (d.deliveryState === 1) { + return '<span style="color:dodgerblue;">待配送</span>' + } else if (d.deliveryState === 2) { + return '<span style="color:forestgreen;">配送中</span>' + } else if (d.deliveryState === 3) { + return '<span style="color:forestgreen;">已送达</span>' + }else{ + return '' + } + }, minWidth: 120,align:'center'}, {field: 'payMethod', title: '支付方式', minWidth: 120,align:'left'}, {field: 'payTime', title: '支付时间', minWidth: 200,align:'left'}, - {field: 'payOrderNo', title: '支付订单号', minWidth: 200,align:'left'}, + {field: 'wxOrderNo', title: '支付订单号', minWidth: 200,align:'left'}, {title: '操作', templet: function (d) { - if (d.status === 2 && d.deliveryType === 2) { - return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' - +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" 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>' - } - // } },minWidth: 200,align:'center', fixed:'right'} ]] }); -- Gitblit v1.9.1