From 26cd8c7b2bc7a725a3de28d3ed883a6f54da84f1 Mon Sep 17 00:00:00 2001 From: DESKTOP-71BH0QO\L、ming <172680469@qq.com> Date: 星期二, 20 四月 2021 16:59:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java | 492 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 360 insertions(+), 132 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java index 46e5436..cbc7636 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.panzhihua.service_community.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -7,8 +8,10 @@ import com.panzhihua.common.model.dtos.PageDTO; import com.panzhihua.common.model.dtos.shop.*; import com.panzhihua.common.model.vos.R; +import com.panzhihua.common.utlis.WxPayUtils; import com.panzhihua.service_community.dao.ComShopOrderDAO; import com.panzhihua.service_community.model.dos.ComShopOrderDO; +import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.shop.*; import com.panzhihua.common.utlis.OrderNoUtils; import com.panzhihua.common.utlis.StringUtils; @@ -17,11 +20,13 @@ import com.panzhihua.service_community.service.ComShopOrderService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -49,6 +54,20 @@ private ComShopOrderOperateDAO comShopOrderOperateDAO; @Resource private ComShopOrderGoodsDAO comShopOrderGoodsDAO; + @Resource + private ComShopOrderDAO comShopOrderDAO; + @Resource + private ComShopOrderPayDAO comShopOrderPayDAO; + @Value("${min.app.isTest}") + private Boolean isTest; + @Value("${min.app.appid}") + private String appid; + @Value("${min.app.payKey}") + private String payKey; + @Value("${min.app.mchId}") + private String mchId; + @Value("${min.app.notifyUrl}") + private String notifyUrl; /** * 订单预览 @@ -57,7 +76,7 @@ * @return 订单预览数据 */ @Override - public R orderPreview(ComShopOrderPreviewDTO orderPreviewDTO) { + public R orderPreview(ComShopOrderPreviewDTO orderPreviewDTO){ //返回参数 ComShopOrderPreviewVO orderPreviewVO = new ComShopOrderPreviewVO(); @@ -67,11 +86,11 @@ BigDecimal orderTotal = BigDecimal.ZERO; Integer orderGoodsTotal = 0; //判断提交方式 - if (orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.details)) {//详情页提交 + if(orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.details)){//详情页提交 //查询商品信息 - ComShopGoodsDO goodsDO = comShopGoodsDAO.selectOne(new QueryWrapper<ComShopGoodsDO>().eq("id", orderPreviewDTO.getGoodsId()) - .eq("status", ComShopGoodsDO.status.sell).eq("delete_status", ComShopGoodsDO.deleteStatus.no)); - if (goodsDO == null) { + ComShopGoodsDO goodsDO = comShopGoodsDAO.selectOne(new QueryWrapper<ComShopGoodsDO>().eq("id",orderPreviewDTO.getGoodsId()) + .eq("status",ComShopGoodsDO.status.sell).eq("delete_status",ComShopGoodsDO.deleteStatus.no)); + if(goodsDO == null){ return R.fail("商品已下架或已删除"); } //设置店铺id @@ -79,7 +98,7 @@ //查询商品规格信息 ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderPreviewDTO.getGoodsAttrId()); - if (goodsAttrDO == null) { + if(goodsAttrDO == null){ return R.fail("商品规格不存在"); } @@ -94,15 +113,15 @@ orderGoodsVO.setPrice(goodsAttrDO.getPrice()); orderGoodsVO.setNum(orderPreviewDTO.getBuyNum()); orderGoodsList.add(orderGoodsVO); - } else if (orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.cart)) {//购物车提交 + }else if(orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.cart)){//购物车提交 List<ComShopCartDO> cartList = comShopCartDAO.selectBatchIds(orderPreviewDTO.getCartIds()); - if (cartList.isEmpty()) { + if(cartList.isEmpty()){ return R.fail("未找到购物车商品信息"); } //设置店铺id storeId = cartList.get(0).getStoreId(); //循环遍历购物车商品信息 - for (ComShopCartDO cartDO : cartList) { + for (ComShopCartDO cartDO:cartList) { //商品信息赋值 ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO(); orderGoodsVO.setGoodsId(cartDO.getGoodsId()); @@ -112,9 +131,9 @@ orderGoodsVO.setGoodsName(cartDO.getGoodsName()); //查询商品规格 ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(cartDO.getGoodsAttrId()); - if (goodsAttrDO != null) { + if(goodsAttrDO != null){ orderGoodsVO.setPrice(goodsAttrDO.getPrice()); - } else { + }else{ orderGoodsVO.setPrice(BigDecimal.ZERO); } orderTotal = orderTotal.add(orderGoodsVO.getPrice().multiply(BigDecimal.valueOf(cartDO.getAmount()))); @@ -128,58 +147,57 @@ //查询店铺信息 ComShopStoreDO storeDO = comShopStoreDAO.selectById(storeId); - if (storeDO != null) { + if(storeDO != null){ PageShopStoreVO shopStoreVO = new PageShopStoreVO(); - BeanUtils.copyProperties(storeDO, shopStoreVO); + BeanUtils.copyProperties(storeDO,shopStoreVO); orderPreviewVO.setShopStoreVO(shopStoreVO); } //查询默认收货地址 //查询上次购买记录的收货地址 List<ComShopOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>() - .eq("user_id", orderPreviewDTO.getUserId()).orderByDesc("create_at")); - if (shopOrders.isEmpty()) {//未查询到用户上一笔订单 + .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at")); + if(shopOrders.isEmpty()){//未查询到用户上一笔订单 //查询用户收货地址中的默认地址 ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectOne(new QueryWrapper<ComShopUserAddressDO>() - .eq("user_id", orderPreviewDTO.getUserId()).eq("is_default", ComShopUserAddressDO.isDefault.yes)); - if (userAddressDO != null) { + .eq("user_id",orderPreviewDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes)); + if(userAddressDO != null){ ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); - BeanUtils.copyProperties(userAddressDO, userAddressVO); + BeanUtils.copyProperties(userAddressDO,userAddressVO); orderPreviewVO.setUserAddressVO(userAddressVO); - } else { + }else{ List<ComShopUserAddressDO> userAddressDOList = comShopUserAddressDAO.selectList(new QueryWrapper<ComShopUserAddressDO>() - .eq("user_id", orderPreviewDTO.getUserId()).orderByDesc("create_at")); - if (!userAddressDOList.isEmpty()) { + .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at")); + if(!userAddressDOList.isEmpty()){ ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); - BeanUtils.copyProperties(userAddressDOList.get(0), userAddressVO); + BeanUtils.copyProperties(userAddressDOList.get(0),userAddressVO); orderPreviewVO.setUserAddressVO(userAddressVO); } } - } else {//查询到用户上一笔订单 + }else{//查询到用户上一笔订单 ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); - ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); - BeanUtils.copyProperties(userAddressDO, userAddressVO); - orderPreviewVO.setUserAddressVO(userAddressVO); + if(userAddressDO != null){ + ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); + BeanUtils.copyProperties(userAddressDO,userAddressVO); + orderPreviewVO.setUserAddressVO(userAddressVO); + } } - return R.ok(orderPreviewVO); } /** * 创建订单 - * - * @param orderCreateDTO 创建订单请求参数 - * @return 创建结果 + * @param orderCreateDTO 创建订单请求参数 + * @return 创建结果 */ @Transactional(rollbackFor = Exception.class) @Override - public R orderCreate(ComShopOrderCreateDTO orderCreateDTO) { + public R orderCreate(ComShopOrderCreateDTO orderCreateDTO){ //创建返回参数 ComShopOrderVO shopOrderVO = new ComShopOrderVO(); - //查询用户收货地址 ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(orderCreateDTO.getReceiverId()); - if (userAddressDO == null) { + if(userAddressDO == null){ return R.fail("收货地址不存在"); } //用户id @@ -190,19 +208,17 @@ String orderNo = OrderNoUtils.NextOrderNo(userId); //配送方式 Integer deliveryType = 0; - //订单总金额 BigDecimal orderTotal = BigDecimal.ZERO; - //创建订单商品信息 List<ComShopOrderGoodsDO> orderGoodsDOList = new ArrayList<>(); - if (!orderCreateDTO.getOrderGoodsList().isEmpty()) { - for (ComShopOrderCreateGoodsDTO createGoodsDTO : orderCreateDTO.getOrderGoodsList()) { + if(!orderCreateDTO.getOrderGoodsList().isEmpty()){ + for (ComShopOrderCreateGoodsDTO createGoodsDTO:orderCreateDTO.getOrderGoodsList()) { //查询当前商品信息 ComShopGoodsDO goodsDO = comShopGoodsDAO.selectOne(new QueryWrapper<ComShopGoodsDO>() - .eq("id", createGoodsDTO.getGoodsId()).eq("delete_status", ComShopGoodsDO.deleteStatus.no) - .eq("status", ComShopGoodsDO.status.sell)); - if (goodsDO == null) { + .eq("id",createGoodsDTO.getGoodsId()).eq("delete_status",ComShopGoodsDO.deleteStatus.no) + .eq("status",ComShopGoodsDO.status.sell)); + if(goodsDO == null){ log.error("未查询到商品信息,商品已下架活已删除,商品id" + createGoodsDTO.getGoodsId()); continue; } @@ -217,7 +233,7 @@ orderGoodsDO.setOrderNo(orderNo); //查询当前商品规格 ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(createGoodsDTO.getGoodsAttrId()); - if (goodsAttrDO == null) { + if(goodsAttrDO == null){ log.error("未查询到商品规格信息,商品id" + createGoodsDTO.getGoodsId() + "商品规格id:" + createGoodsDTO.getGoodsAttrId()); continue; } @@ -229,12 +245,10 @@ orderTotal = orderTotal.add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount()))); } } - //如果是购物车提交,需要将购物车内商品移除 - if (orderCreateDTO.getSubmitType().equals(ComShopOrderCreateDTO.submitType.cart)) { + if(orderCreateDTO.getSubmitType().equals(ComShopOrderCreateDTO.submitType.cart)){ comShopCartDAO.deleteBatchIds(orderCreateDTO.getCartIds()); } - //创建订单信息 ComShopOrderDO shopOrderDO = new ComShopOrderDO(); shopOrderDO.setOrderNo(orderNo); @@ -247,58 +261,66 @@ shopOrderDO.setTotalAmount(orderTotal); shopOrderDO.setDiscountAmount(BigDecimal.ZERO); shopOrderDO.setDeliveryType(deliveryType); - if (StringUtils.isNotEmpty(orderCreateDTO.getRemark())) { + if(StringUtils.isNotEmpty(orderCreateDTO.getRemark())){ shopOrderDO.setRemark(orderCreateDTO.getRemark()); } this.baseMapper.insert(shopOrderDO); - - if (!orderGoodsDOList.isEmpty()) { - orderGoodsDOList.forEach(orderGoods -> { + if(!orderGoodsDOList.isEmpty()){ + orderGoodsDOList.forEach(orderGoods ->{ orderGoods.setOrderId(shopOrderDO.getId()); comShopOrderGoodsDAO.insert(orderGoods); }); } - //创建订单操作记录 ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); orderOperateDO.setOrderNo(orderNo); - orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.create); orderOperateDO.setOperationTime(new Date()); - if (StringUtils.isNotEmpty(orderCreateDTO.getPhone())) { + if(StringUtils.isNotEmpty(orderCreateDTO.getPhone())){ orderOperateDO.setOperationContent("用户" + orderCreateDTO.getPhone() + "下单"); orderOperateDO.setOperationBy("用户" + orderCreateDTO.getPhone()); - } else { + }else { orderOperateDO.setOperationContent("用户下单"); orderOperateDO.setOperationBy("用户"); } comShopOrderOperateDAO.insert(orderOperateDO); - shopOrderVO.setOrderNo(orderNo); shopOrderVO.setOrderTotal(orderTotal); + + try { + BigDecimal money = orderTotal; + if(isTest){ + money = BigDecimal.valueOf(0.01); + } + //调用wx支付 + String xml = WxPayUtils.getUnifiedorder(appid,mchId,payKey,notifyUrl,"商品购买",orderCreateDTO.getOpenId(),orderNo,money); + log.info("微信支付返回参数:" + xml); + shopOrderVO.setPayResult(xml); + }catch (Exception e){ + log.error("调用微信支付异常,异常原因:" + e.getMessage()); + } return R.ok(shopOrderVO); } /** * 分页查询用户订单列表 - * - * @param comOrderListDTO 请求参数 - * @return 查询结果 + * @param comOrderListDTO 请求参数 + * @return 查询结果 */ @Override - public R pageOrderList(PageComOrderListDTO comOrderListDTO) { - Page page = new Page<>(comOrderListDTO.getPageNum(), comOrderListDTO.getPageSize()); - IPage<ComShopOrderPageVO> orderPageVOIPage = this.baseMapper.pageOrderList(page, comOrderListDTO); - if (!orderPageVOIPage.getRecords().isEmpty()) { + public R pageOrderList(PageComOrderListDTO comOrderListDTO){ + Page page = new Page<>(comOrderListDTO.getPageNum(),comOrderListDTO.getPageSize()); + IPage<ComShopOrderPageVO> orderPageVOIPage = this.baseMapper.pageOrderList(page,comOrderListDTO); + if(!orderPageVOIPage.getRecords().isEmpty()){ orderPageVOIPage.getRecords().forEach(orderVo -> { List<ComShopOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); //查询订单下商品信息 List<ComShopOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopOrderGoodsDO>() - .eq("order_no", orderVo.getOrderNo())); - if (!orderGoodsDOList.isEmpty()) { + .eq("order_no",orderVo.getOrderNo())); + if(!orderGoodsDOList.isEmpty()){ orderGoodsDOList.forEach(orderGoods -> { ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO(); - BeanUtils.copyProperties(orderGoods, orderGoodsVO); + BeanUtils.copyProperties(orderGoods,orderGoodsVO); orderGoodsVO.setNum(orderGoods.getAmount()); orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); @@ -310,8 +332,8 @@ PageShopStoreVO shopStoreVO = new PageShopStoreVO(); //查询店铺信息 ComShopStoreDO shopStoreDO = comShopStoreDAO.selectById(orderVo.getStoreId()); - if (shopStoreDO != null) { - BeanUtils.copyProperties(shopStoreDO, shopStoreVO); + if(shopStoreDO != null){ + BeanUtils.copyProperties(shopStoreDO,shopStoreVO); } orderVo.setShopStoreVO(shopStoreVO); }); @@ -321,9 +343,8 @@ /** * 根据订单id查询订单详情 - * - * @param orderId 订单id - * @return 订单详情 + * @param orderId 订单id + * @return 订单详情 */ @Override public R orderDetail(Long orderId) { @@ -331,83 +352,94 @@ ComShopOrderPageVO orderVO = new ComShopOrderPageVO(); //查询订单信息 ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId); - if (shopOrderDO == null) { + if(shopOrderDO == null){ return R.fail("未查询到订单"); } - BeanUtils.copyProperties(shopOrderDO, orderVO); + BeanUtils.copyProperties(shopOrderDO,orderVO); orderVO.setOrderTotal(shopOrderDO.getTotalAmount()); PageShopStoreVO shopStoreVO = new PageShopStoreVO(); //查询店铺信息 ComShopStoreDO shopStoreDO = comShopStoreDAO.selectById(shopOrderDO.getStoreId()); - if (shopStoreDO != null) { - BeanUtils.copyProperties(shopStoreDO, shopStoreVO); + if(shopStoreDO != null){ + BeanUtils.copyProperties(shopStoreDO,shopStoreVO); } orderVO.setShopStoreVO(shopStoreVO); List<ComShopOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); //查询订单下商品信息 List<ComShopOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopOrderGoodsDO>() - .eq("order_no", shopOrderDO.getOrderNo())); - if (!orderGoodsDOList.isEmpty()) { + .eq("order_no",shopOrderDO.getOrderNo())); + StringBuilder sbr = new StringBuilder(""); + if(!orderGoodsDOList.isEmpty()){ orderGoodsDOList.forEach(orderGoods -> { ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO(); - BeanUtils.copyProperties(orderGoods, orderGoodsVO); + BeanUtils.copyProperties(orderGoods,orderGoodsVO); orderGoodsVO.setNum(orderGoods.getAmount()); orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); orderGoodsVOS.add(orderGoodsVO); + sbr.append(orderGoods.getGoodsName() + " " ); }); } orderVO.setOrderGoodsVOList(orderGoodsVOS); + orderVO.setGoodsName(sbr.toString()); ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); //查询用户收货地址 ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrderDO.getReceiverId()); - if (userAddressDO != null) { - BeanUtils.copyProperties(userAddressDO, userAddressVO); + if(userAddressDO != null){ + BeanUtils.copyProperties(userAddressDO,userAddressVO); orderVO.setUserAddressVO(userAddressVO); } + //操作日志 + List<ComShopOrderOperateDO> listOperLog = comShopOrderOperateDAO.selectList(new LambdaQueryWrapper<ComShopOrderOperateDO>().eq(ComShopOrderOperateDO::getOrderNo, shopOrderDO.getOrderNo())); + List<ComShopOrderOperateVO> listOperLogVO = new ArrayList<>(listOperLog.size()); + listOperLog.forEach(logDO ->{ + ComShopOrderOperateVO copyVO = new ComShopOrderOperateVO(); + BeanUtils.copyProperties(logDO,copyVO); + listOperLogVO.add(copyVO); + }); + orderVO.setLogs(listOperLogVO); return R.ok(orderVO); } /** * 根据订单id取消订单 - * - * @param orderId 订单id - * @param phone 操作用户手机号 - * @return 取消结果 + * @param orderId 订单id + * @param phone 操作用户手机号 + * @return 取消结果 */ @Transactional(rollbackFor = Exception.class) @Override - public R orderCancel(Long orderId, String phone) { + public R orderCancel(Long orderId,String phone){ //查询订单 ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId); - if (shopOrderDO == null) { + if(shopOrderDO == null){ return R.fail("未查询到订单"); } - if (!shopOrderDO.getStatus().equals(ComShopOrderDO.status.dfk)) { + if(!shopOrderDO.getStatus().equals(ComShopOrderDO.status.dfk)){ return R.fail("已支付订单不可取消"); } //取消订单 shopOrderDO.setStatus(ComShopOrderDO.status.yqx); - if (this.baseMapper.updateById(shopOrderDO) > 0) { + if(this.baseMapper.updateById(shopOrderDO) > 0){ //添加订单操作记录 ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); orderOperateDO.setOrderNo(shopOrderDO.getOrderNo()); orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.cancel); orderOperateDO.setOperationTime(new Date()); - if (StringUtils.isNotEmpty(phone)) { + if(StringUtils.isNotEmpty(phone)){ orderOperateDO.setOperationContent("用户" + phone + "取消订单"); orderOperateDO.setOperationBy("用户" + phone); - } else { + }else { orderOperateDO.setOperationContent("用户取消订单"); orderOperateDO.setOperationBy("用户"); } comShopOrderOperateDAO.insert(orderOperateDO); return R.ok(); - } else { + }else{ return R.fail("取消订单失败"); } @@ -415,77 +447,74 @@ /** * 根据订单id删除订单 - * - * @param orderId 订单id - * @return 删除结果 + * @param orderId 订单id + * @return 删除结果 */ @Override - public R orderDelete(Long orderId) { + public R orderDelete(Long orderId){ //查询订单 ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId); - if (shopOrderDO == null) { + if(shopOrderDO == null){ return R.fail("未查询到订单"); } - if (!shopOrderDO.getStatus().equals(ComShopOrderDO.status.ywc) && !shopOrderDO.getStatus().equals(ComShopOrderDO.status.yqx)) { + if(!shopOrderDO.getStatus().equals(ComShopOrderDO.status.ywc) && !shopOrderDO.getStatus().equals(ComShopOrderDO.status.yqx)){ return R.fail("该订单状态不可删除"); } shopOrderDO.setDeleteStatus(ComShopOrderDO.deleteStatus.yes); - if (this.baseMapper.updateById(shopOrderDO) > 0) { + if(this.baseMapper.updateById(shopOrderDO) > 0){ return R.ok(); - } else { + }else{ return R.fail("取消订单失败"); } } /** * 根据订单id确认收货 - * - * @param orderId 订单id - * @param phone 手机号 - * @return 确认结果 + * @param orderId 订单id + * @param phone 手机号 + * @return 确认结果 */ @Transactional(rollbackFor = Exception.class) @Override - public R orderConfirm(Long orderId, String phone) { + public R orderConfirm(Long orderId, String phone){ //查询订单 ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId); - if (shopOrderDO == null) { + if(shopOrderDO == null){ return R.fail("未查询到订单"); } - if (!shopOrderDO.getStatus().equals(ComShopOrderDO.status.dsh)) { + if(!shopOrderDO.getStatus().equals(ComShopOrderDO.status.dsh)){ return R.fail("该订单状态不可确认收货"); } //订单确认收货 shopOrderDO.setStatus(ComShopOrderDO.status.ywc); - if (this.baseMapper.updateById(shopOrderDO) > 0) { + if(this.baseMapper.updateById(shopOrderDO) > 0){ //添加订单操作记录 ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); orderOperateDO.setOrderNo(shopOrderDO.getOrderNo()); orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.complete); orderOperateDO.setOperationTime(new Date()); - if (StringUtils.isNotEmpty(phone)) { + if(StringUtils.isNotEmpty(phone)){ orderOperateDO.setOperationContent("用户" + phone + "确认收货"); orderOperateDO.setOperationBy("用户" + phone); - } else { + }else { orderOperateDO.setOperationContent("用户确认收货"); orderOperateDO.setOperationBy("用户"); } comShopOrderOperateDAO.insert(orderOperateDO); return R.ok(); - } else { + }else{ return R.fail("确认收货失败"); } } /** * 统计用户订单数量 - * - * @param userId 用户id - * @return 统计结果 + * @param userId 用户id + * @return 统计结果 */ @Override - public R orderStatistics(Long userId) { + public R orderStatistics(Long userId){ OrderStatisticsVO orderStatisticsVO = new OrderStatisticsVO(); //待付款订单数 Integer paymentNum = 0; @@ -494,14 +523,14 @@ //待收货订单数 Integer receivingNum = 0; List<ComShopOrderDO> shopOrderList = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>() - .eq("user_id", userId).eq("delete_status", ComShopOrderDO.deleteStatus.no)); - if (!shopOrderList.isEmpty()) { - for (ComShopOrderDO orderDO : shopOrderList) { - if (orderDO.getStatus().equals(ComShopOrderDO.status.dfk)) { + .eq("user_id",userId).eq("delete_status",ComShopOrderDO.deleteStatus.no)); + if(!shopOrderList.isEmpty()){ + for (ComShopOrderDO orderDO:shopOrderList) { + if(orderDO.getStatus().equals(ComShopOrderDO.status.dfk)){ paymentNum++; - } else if (orderDO.getStatus().equals(ComShopOrderDO.status.dfh)) { + }else if(orderDO.getStatus().equals(ComShopOrderDO.status.dfh)){ deliverNum++; - } else if (orderDO.getStatus().equals(ComShopOrderDO.status.dsh)) { + }else if(orderDO.getStatus().equals(ComShopOrderDO.status.dsh)){ receivingNum++; } } @@ -513,27 +542,121 @@ } @Override - public R pageShopOrder(PageComShopOrderSearchDTO pageComShopOrderSearchDTO) { - - Long pageNum = pageComShopOrderSearchDTO.getPageNum(); - Long pageSize = pageComShopOrderSearchDTO.getPageSize(); - PageDTO page = new PageDTO(); - - page.setPageNum(pageNum); - page.setPageSize(pageSize); - if (pageNum == null || new Long(0).equals(pageNum.longValue())) { - page.setPageNum(1l); + public R shipOrder(ComShopOrderShipDTO orderShipDTO) { + ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderShipDTO.getOrderId()); + if(comShopOrderDO==null){ + return R.fail("订单不存在"); } - if (pageSize == null || new Long(0).equals(pageSize.longValue())) { - page.setPageSize(10l); + if(!(comShopOrderDO.getStatus()==2) + || !(comShopOrderDO.getDeleteStatus()==1)){ + return R.fail("订单发货失败,订单状态不允许发货"); } - - this.baseMapper.pageOrderBy(page, pageComShopOrderSearchDTO); - return null; + comShopOrderDO.setDeliveryStatus(2); + comShopOrderDO.setDeliveryType(2); + comShopOrderDO.setStatus(3); + comShopOrderDO.setLogisticsCompany(orderShipDTO.getLogisticsCompany()); + comShopOrderDO.setLogisticsNo(orderShipDTO.getLogisticsNo()); + int updated = comShopOrderDAO.updateById(comShopOrderDO); + if(updated==1){ + return R.ok("发货成功"); + } + return R.fail("发货失败!"); } + @Override + public R deliverOrder(Long orderId) { + ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderId); + if(comShopOrderDO==null){ + return R.fail("订单不存在"); + } + if(!(comShopOrderDO.getStatus()==2)){ + return R.fail("当前订单不能配送"); + } + comShopOrderDO.setDeliveryStatus(4); + comShopOrderDO.setDeliveryType(1); + int updated = comShopOrderDAO.updateById(comShopOrderDO); + if(updated==1){ + return R.ok("开始配送"); + } + return R.fail("操作失败!"); + } + @Override + public R finishDeliverOrder(Long orderId) { + ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderId); + if(comShopOrderDO==null){ + return R.fail("订单不存在"); + } + if(!(comShopOrderDO.getDeliveryStatus() == 4)){ + return R.fail("订单还未开始配送"); + } + comShopOrderDO.setDeliveryStatus(5); + int updated = comShopOrderDAO.updateById(comShopOrderDO); + if(updated==1){ + return R.ok("配送完成"); + } + return R.fail("操作失败!"); + } + @Override + public R shopOrderExportData(ComShopOrderExportDTO comShopOrderExportDTO) { + Page page = new Page(); + page.setSize(1000); + page.setCurrent(1); + IPage<ExcelShopOrderDTO> excelShopOrderDTO = comShopOrderDAO.selectOrderExport(page, comShopOrderExportDTO); + return R.ok(excelShopOrderDTO.getRecords()); + } + + @Override + public R shopOrderFundsExportData(ComShopFundsExportDTO comShopFundsExportDTO) { + Page page = new Page(); + page.setSize(1000); + page.setCurrent(1); + IPage<ExcelShopFundsDTO> excelShopFundsDTO = comShopOrderDAO.selectFundsExport(page, comShopFundsExportDTO); + return R.ok(excelShopFundsDTO.getRecords()); + } + + @Override + public R getFundsStat(Long userId) { + ComShopFundsVO comShopFundsVO = comShopOrderDAO.queryStatis(userId); + return R.ok(comShopFundsVO); + } + + @Override + public R pageShopFunds(PageComShopFundsSearchDTO pageComShopFundsSearchDTO) { + Long pageNum = pageComShopFundsSearchDTO.getPageNum(); + Long pageSize = pageComShopFundsSearchDTO.getPageSize(); + Page page = new Page(); + if(pageNum==null||0==pageNum.longValue()){ + pageNum = 1l; + } + if(pageSize==null||0==pageSize.longValue()){ + pageSize = 10l; + } + page.setCurrent(pageNum); + page.setSize(pageSize); + IPage<ComShopFundsOrderVO> comShopFundsOrderVOIPage = comShopOrderDAO.pageShopFunds(page, pageComShopFundsSearchDTO); + return R.ok(comShopFundsOrderVOIPage); + } + + @Override + public R pageShopOrder(PageComShopOrderSearchDTO pageComShopOrderSearchDTO) { + Long pageNum = pageComShopOrderSearchDTO.getPageNum(); + Long pageSize = pageComShopOrderSearchDTO.getPageSize(); + Page page = new Page(); + + page.setCurrent(pageNum); + page.setSize(pageSize); + if(pageNum==null||0==pageNum.longValue()){ + page.setCurrent(1l); + } + if(pageSize==null||0==pageSize.longValue()){ + page.setSize(10l); + } + + IPage<ComShopOrderSearchVO> ipage = this.baseMapper.pageOrderBy(page, pageComShopOrderSearchDTO); + return R.ok(ipage); + } @Override public R capitalDetailByStore(Long id) { @@ -543,4 +666,109 @@ CapitalDetailVO vo = this.baseMapper.capitalDetailByStore(id); return R.ok(vo); } + + /** + * 微信支付订单回调 + * @param wxPayNotifyOrderDTO 订单支付回调参数 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void wxOrderPayNotify(WxPayNotifyOrderDTO wxPayNotifyOrderDTO){ + if(StringUtils.isEmpty(wxPayNotifyOrderDTO.getOrderTradeNo())){ + log.error("微信支付回调失败,订单号为空"); + return; + } + + //查询订单 + ComShopOrderDO shopOrderDO = this.baseMapper.selectOne(new QueryWrapper<ComShopOrderDO>().lambda().eq(ComShopOrderDO::getOrderNo,wxPayNotifyOrderDTO.getOrderTradeNo())); + if(shopOrderDO == null){ + log.error("未查询到支付订单,订单回调失败,订单号:" + wxPayNotifyOrderDTO.getOrderTradeNo()); + return; + } + shopOrderDO.setStatus(ComShopOrderDO.status.dfh); + shopOrderDO.setPayType(ComShopOrderDO.payType.wx); + shopOrderDO.setPayStatus(ComShopOrderDO.payStatus.yes); + shopOrderDO.setPayAmount(BigDecimal.valueOf(Integer.parseInt(wxPayNotifyOrderDTO.getCashFee()) * 100)); + shopOrderDO.setWxTardeNo(wxPayNotifyOrderDTO.getWxTradeNo()); + shopOrderDO.setPayTime(new Date(Long.parseLong(wxPayNotifyOrderDTO.getPayTime()))); + this.baseMapper.updateById(shopOrderDO); + + //查询订单商品 + List<ComShopOrderGoodsDO> orderGoodsList = comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopOrderGoodsDO>().lambda().eq(ComShopOrderGoodsDO ::getOrderNo,shopOrderDO.getOrderNo())); + if(!orderGoodsList.isEmpty()){ + int goodsNub = 0; + for (ComShopOrderGoodsDO orderGood:orderGoodsList) { + goodsNub += orderGood.getAmount(); + //更新商品信息 + ComShopGoodsDO goodsDO = comShopGoodsDAO.selectById(orderGood.getGoodsId()); + if(goodsDO != null){ + goodsDO.setSale(goodsDO.getSale() + orderGood.getAmount()); + comShopGoodsDAO.updateById(goodsDO); + } + + //更新商品规格 + ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderGood.getGoodsAttrId()); + if(goodsAttrDO != null){ + goodsAttrDO.setSale(goodsAttrDO.getSale() + orderGood.getAmount()); + comShopGoodsAttrDAO.updateById(goodsAttrDO); + } + } + + //更新店铺销量以及销售额 + ComShopStoreDO storeDO = comShopStoreDAO.selectById(shopOrderDO.getStoreId()); + if(storeDO != null){ + storeDO.setSale(storeDO.getSale() + goodsNub); + storeDO.setSaleVolume(storeDO.getSaleVolume().add(shopOrderDO.getTotalAmount())); + comShopStoreDAO.updateById(storeDO); + } + } + + + //添加订单操作记录 + ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); + orderOperateDO.setOrderNo(shopOrderDO.getOrderNo()); + orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.pay); + orderOperateDO.setOperationTime(new Date()); + orderOperateDO.setOperationContent("用户支付订单"); + orderOperateDO.setOperationBy("用户"); + comShopOrderOperateDAO.insert(orderOperateDO); + + //添加订单支付记录表 + ComShopOrderPayDO orderPayDO = new ComShopOrderPayDO(); + orderPayDO.setOrderNo(shopOrderDO.getOrderNo()); + orderPayDO.setOrderAmount(shopOrderDO.getTotalAmount()); + orderPayDO.setWxTradeNo(wxPayNotifyOrderDTO.getWxTradeNo()); + orderPayDO.setPayStatus(ComShopOrderPayDO.payStatus.yes); + orderPayDO.setPayAmount(shopOrderDO.getPayAmount()); + orderPayDO.setPayTime(shopOrderDO.getPayTime()); + comShopOrderPayDAO.insert(orderPayDO); + } + + /** + * 订单去支付 + * @param orderPayDTO 请求参数 + * @return 支付对象 + */ + public R wxPay(OrderPayDTO orderPayDTO){ + //创建返回参数 + ComShopOrderVO shopOrderVO = new ComShopOrderVO(); + //查询订单 + ComShopOrderDO orderDO = comShopOrderDAO.selectOne(new QueryWrapper<ComShopOrderDO>().lambda().eq(ComShopOrderDO::getOrderNo,orderPayDTO.getOrderNo())); + if(orderDO == null){ + return R.fail("订单不存在"); + } + try { + BigDecimal money = orderDO.getTotalAmount(); + if(isTest){ + money = BigDecimal.valueOf(0.01); + } + //调用wx支付 + String xml = WxPayUtils.getUnifiedorder(appid,mchId,payKey,notifyUrl,"商品购买",orderPayDTO.getOpenId(),orderDO.getOrderNo(),money); + log.info("微信支付返回参数:" + xml); + shopOrderVO.setPayResult(xml); + }catch (Exception e){ + log.error("调用微信支付异常,异常原因:" + e.getMessage()); + } + return R.ok(shopOrderVO); + } } -- Gitblit v1.7.1