| | |
| | | package com.panzhihua.service_community.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.panzhihua.common.model.dtos.shop.*; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientElevatingPointVO; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO; |
| | | import com.panzhihua.common.model.vos.shop.*; |
| | | import com.panzhihua.common.utlis.DateUtils; |
| | | import com.panzhihua.common.utlis.OrderNoUtils; |
| | | import com.panzhihua.common.utlis.StringUtils; |
| | | import com.panzhihua.common.utlis.WxPayUtils; |
| | | import com.panzhihua.common.utlis.wx.WXPayUtil; |
| | | import com.panzhihua.service_community.dao.*; |
| | | import com.panzhihua.service_community.model.dos.*; |
| | | import com.panzhihua.service_community.service.ComShopFlowerOrderService; |
| | | 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 javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static java.util.Objects.nonNull; |
| | | |
| | | /** |
| | | * @auther lyq |
| | |
| | | @Slf4j |
| | | @Service |
| | | public class ComShopFlowerOrderServiceImpl extends ServiceImpl<ComShopFlowerOrderDAO, ComShopFlowerOrderDO> |
| | | implements ComShopFlowerOrderService { |
| | | implements ComShopFlowerOrderService { |
| | | |
| | | @Resource |
| | | private ComShopFlowerGoodsDAO comShopGoodsDAO; |
| | | private ComShopFlowerGoodsDAO comShopFlowerGoodsDAO; |
| | | @Resource |
| | | private ComShopFlowerGoodsAttrDAO comShopGoodsAttrDAO; |
| | | private ComShopFlowerGoodsAttrDAO comShopFlowerGoodsAttrDAO; |
| | | @Resource |
| | | private ComShopCartDAO comShopCartDAO; |
| | | @Resource |
| | | private ComShopStoreDAO comShopStoreDAO; |
| | | @Resource |
| | | private ConvenientMerchantDAO convenientMerchantDAO; |
| | | @Resource |
| | | private ComShopFlowerUserAddressDAO comShopUserAddressDAO; |
| | | private ComShopFlowerUserAddressDAO comShopFlowerUserAddressDAO; |
| | | @Resource |
| | | private ComShopFlowerOrderOperateDAO comShopOrderOperateDAO; |
| | | private ComShopFlowerOrderOperateDAO comShopFlowerOrderOperateDAO; |
| | | @Resource |
| | | private ComShopFlowerOrderGoodsDAO comShopOrderGoodsDAO; |
| | | private ComShopFlowerOrderGoodsDAO comShopFlowerOrderGoodsDAO; |
| | | @Resource |
| | | private ComShopFlowerOrderDAO comShopOrderDAO; |
| | | private ComShopFlowerOrderDAO comShopFlowerOrderDAO; |
| | | @Resource |
| | | private ComShopFlowerOrderPayDAO 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; |
| | | private ComShopFlowerOrderPayDAO comShopFlowerOrderPayDAO; |
| | | @Resource |
| | | private ConvenientElevatingPointDAO convenientElevatingPointDAO; |
| | | @Resource |
| | | private ComShopFlowerEvaluateDAO comShopFlowerEvaluateDAO; |
| | | |
| | | public static void main(String[] args) { |
| | | BigDecimal one = BigDecimal.valueOf(Double.valueOf("1") / 100); |
| | | System.out.println(); |
| | | } |
| | | |
| | | @Value("${hcMin.app.isTest}") |
| | | private Boolean isTest; |
| | | @Value("${hcMin.app.appid}") |
| | | private String appid; |
| | | @Value("${hcMin.app.payKey}") |
| | | private String payKey; |
| | | @Value("${hcMin.app.mchId}") |
| | | private String mchId; |
| | | @Value("${hcMin.app.notifyUrl}") |
| | | private String notifyUrl; |
| | | |
| | | /** |
| | | * 订单预览 |
| | | * |
| | | * @param orderPreviewDTO |
| | | * 请求参数 |
| | | * @param orderPreviewDTO 请求参数 |
| | | * @return 订单预览数据 |
| | | */ |
| | | @Override |
| | |
| | | if (orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.details)) {// 详情页提交 |
| | | // 查询商品信息 |
| | | ComShopFlowerGoodsDO goodsDO = |
| | | comShopGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", orderPreviewDTO.getGoodsId()) |
| | | .eq("status", ComShopGoodsDO.status.sell).eq("delete_status", ComShopGoodsDO.deleteStatus.no)); |
| | | comShopFlowerGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", orderPreviewDTO.getGoodsId()) |
| | | .eq("status", ComShopGoodsDO.status.sell).eq("delete_status", ComShopGoodsDO.deleteStatus.no)); |
| | | if (goodsDO == null) { |
| | | return R.fail("商品已下架或已删除"); |
| | | } |
| | |
| | | storeId = goodsDO.getStoreId(); |
| | | |
| | | // 查询商品规格信息 |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderPreviewDTO.getGoodsAttrId()); |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(orderPreviewDTO.getGoodsAttrId()); |
| | | if (goodsAttrDO == null) { |
| | | return R.fail("商品规格不存在"); |
| | | } |
| | | if (goodsAttrDO.getSale() < orderPreviewDTO.getBuyNum()) { |
| | | return R.fail("该规格库存不足,无法下单"); |
| | | } |
| | | |
| | | orderTotal = goodsAttrDO.getPrice().multiply(BigDecimal.valueOf(orderPreviewDTO.getBuyNum())); |
| | |
| | | orderGoodsVO.setNum(cartDO.getAmount()); |
| | | orderGoodsVO.setGoodsName(cartDO.getGoodsName()); |
| | | // 查询商品规格 |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(cartDO.getGoodsAttrId()); |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(cartDO.getGoodsAttrId()); |
| | | if (goodsAttrDO != null) { |
| | | orderGoodsVO.setPrice(goodsAttrDO.getPrice()); |
| | | } else { |
| | |
| | | |
| | | // 查询默认收货地址 |
| | | ComShopFlowerUserAddressDO userDefaultAddressDO = |
| | | comShopUserAddressDAO.selectOne(new QueryWrapper<ComShopFlowerUserAddressDO>().eq("delete_status", 2) |
| | | .eq("user_id", orderPreviewDTO.getUserId()).eq("is_default", ComShopUserAddressDO.isDefault.yes)); |
| | | comShopFlowerUserAddressDAO.selectOne(new QueryWrapper<ComShopFlowerUserAddressDO>().eq("delete_status", 2) |
| | | .eq("user_id", orderPreviewDTO.getUserId()).eq("is_default", ComShopUserAddressDO.isDefault.yes)); |
| | | |
| | | // 查询用户收货地址中的默认地址 |
| | | if (userDefaultAddressDO != null) { |
| | |
| | | // 查询上次购买记录的收货地址 |
| | | // 查询到用户上一笔订单 |
| | | List<ComShopFlowerOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopFlowerOrderDO>() |
| | | .eq("delete_status", 2).eq("user_id", orderPreviewDTO.getUserId()).orderByDesc("create_at")); |
| | | .eq("delete_status", 2).eq("user_id", orderPreviewDTO.getUserId()).orderByDesc("create_at")); |
| | | if (shopOrders != null && shopOrders.size() > 0) { |
| | | ComShopFlowerUserAddressDO userAddressDO = |
| | | comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); |
| | | comShopFlowerUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); |
| | | if (userAddressDO != null) { |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | BeanUtils.copyProperties(userAddressDO, userAddressVO); |
| | |
| | | /** |
| | | * 创建订单 |
| | | * |
| | | * @param orderCreateDTO |
| | | * 创建订单请求参数 |
| | | * @param orderCreateDTO 创建订单请求参数 |
| | | * @return 创建结果 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | // 创建返回参数 |
| | | ComShopFlowerOrderVO shopOrderVO = new ComShopFlowerOrderVO(); |
| | | // 查询用户收货地址 |
| | | ComShopFlowerUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(orderCreateDTO.getReceiverId()); |
| | | ComShopFlowerUserAddressDO userAddressDO = comShopFlowerUserAddressDAO.selectById(orderCreateDTO.getReceiverId()); |
| | | if (userAddressDO == null || userAddressDO.getDeleteStatus() != 2) { |
| | | return R.fail("收货地址不存在"); |
| | | } |
| | |
| | | for (ComShopOrderCreateGoodsDTO createGoodsDTO : orderCreateDTO.getOrderGoodsList()) { |
| | | // 查询当前商品信息 |
| | | ComShopFlowerGoodsDO goodsDO = |
| | | comShopGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", createGoodsDTO.getGoodsId()) |
| | | .eq("delete_status", ComShopGoodsDO.deleteStatus.no).eq("status", ComShopGoodsDO.status.sell)); |
| | | comShopFlowerGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", createGoodsDTO.getGoodsId()) |
| | | .eq("delete_status", ComShopGoodsDO.deleteStatus.no).eq("status", ComShopGoodsDO.status.sell)); |
| | | if (goodsDO == null) { |
| | | log.error("未查询到商品信息,商品已下架活已删除,商品id" + createGoodsDTO.getGoodsId()); |
| | | continue; |
| | |
| | | orderGoodsDO.setAmount(createGoodsDTO.getNum()); |
| | | orderGoodsDO.setOrderNo(orderNo); |
| | | // 查询当前商品规格 |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(createGoodsDTO.getGoodsAttrId()); |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(createGoodsDTO.getGoodsAttrId()); |
| | | if (goodsAttrDO == null) { |
| | | log.error( |
| | | "未查询到商品规格信息,商品id" + createGoodsDTO.getGoodsId() + "商品规格id:" + createGoodsDTO.getGoodsAttrId()); |
| | | "未查询到商品规格信息,商品id" + createGoodsDTO.getGoodsId() + "商品规格id:" + createGoodsDTO.getGoodsAttrId()); |
| | | continue; |
| | | } |
| | | |
| | | if (goodsAttrDO.getSale() < createGoodsDTO.getNum()) { |
| | | return R.fail("该规格库存不足,无法下单"); |
| | | } |
| | | orderGoodsDO.setGoodsAttrId(goodsAttrDO.getId()); |
| | | orderGoodsDO.setGoodsAttrPrice(goodsAttrDO.getPrice()); |
| | |
| | | orderGoodsDOList.add(orderGoodsDO); |
| | | // 将商品金额计算到订单总金额 |
| | | orderTotal = orderTotal |
| | | .add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount()))); |
| | | .add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount()))); |
| | | } |
| | | } |
| | | // 如果是购物车提交,需要将购物车内商品移除 |
| | |
| | | shopOrderDO.setTotalAmount(orderTotal); |
| | | shopOrderDO.setDiscountAmount(BigDecimal.ZERO); |
| | | shopOrderDO.setDeliveryType(deliveryType); |
| | | shopOrderDO.setPointId(orderCreateDTO.getPointId()); |
| | | if (StringUtils.isNotEmpty(orderCreateDTO.getRemark())) { |
| | | shopOrderDO.setRemark(orderCreateDTO.getRemark()); |
| | | } |
| | |
| | | if (!orderGoodsDOList.isEmpty()) { |
| | | orderGoodsDOList.forEach(orderGoods -> { |
| | | orderGoods.setOrderId(shopOrderDO.getId()); |
| | | comShopOrderGoodsDAO.insert(orderGoods); |
| | | comShopFlowerOrderGoodsDAO.insert(orderGoods); |
| | | }); |
| | | } |
| | | // 创建订单操作记录 |
| | |
| | | orderOperateDO.setOperationContent("用户下单"); |
| | | orderOperateDO.setOperationBy("用户"); |
| | | } |
| | | comShopOrderOperateDAO.insert(orderOperateDO); |
| | | comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | shopOrderVO.setOrderNo(orderNo); |
| | | shopOrderVO.setOrderTotal(orderTotal); |
| | | shopOrderVO.setOrderId(shopOrderDO.getId()); |
| | |
| | | } |
| | | // 调用wx支付 |
| | | String xml = WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "商品购买", orderCreateDTO.getOpenId(), |
| | | orderNo, money,null); |
| | | orderNo, money, null); |
| | | log.info("微信支付返回参数:" + xml); |
| | | shopOrderVO.setPayResult(xml); |
| | | } catch (Exception e) { |
| | |
| | | /** |
| | | * 分页查询用户订单列表 |
| | | * |
| | | * @param comOrderListDTO |
| | | * 请求参数 |
| | | * @param comOrderListDTO 请求参数 |
| | | * @return 查询结果 |
| | | */ |
| | | @Override |
| | |
| | | orderPageVOIPage.getRecords().forEach(orderVo -> { |
| | | List<ComShopFlowerOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); |
| | | // 查询订单下商品信息 |
| | | List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO |
| | | .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", orderVo.getOrderNo())); |
| | | List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopFlowerOrderGoodsDAO |
| | | .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", orderVo.getOrderNo())); |
| | | if (!orderGoodsDOList.isEmpty()) { |
| | | orderGoodsDOList.forEach(orderGoods -> { |
| | | ComShopFlowerOrderGoodsVO orderGoodsVO = new ComShopFlowerOrderGoodsVO(); |
| | | BeanUtils.copyProperties(orderGoods, orderGoodsVO); |
| | | // 根据商品规格id查询商品规格 |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); |
| | | if (goodsAttrDO != null) { |
| | | orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttrName()); |
| | | } |
| | |
| | | /** |
| | | * 根据订单id查询订单详情 |
| | | * |
| | | * @param orderId |
| | | * 订单id |
| | | * @param orderId 订单id |
| | | * @return 订单详情 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | List<ComShopFlowerOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); |
| | | // 查询订单下商品信息 |
| | | List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO |
| | | .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", shopOrderDO.getOrderNo())); |
| | | List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopFlowerOrderGoodsDAO |
| | | .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", shopOrderDO.getOrderNo())); |
| | | StringBuilder sbr = new StringBuilder(); |
| | | if (!orderGoodsDOList.isEmpty()) { |
| | | orderGoodsDOList.forEach(orderGoods -> { |
| | |
| | | orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); |
| | | orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); |
| | | // 查询商品信息判断商品状态 |
| | | ComShopFlowerGoodsDO goodsDO = comShopGoodsDAO.selectById(orderGoods.getGoodsId()); |
| | | ComShopFlowerGoodsDO goodsDO = comShopFlowerGoodsDAO.selectById(orderGoods.getGoodsId()); |
| | | if (goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.deleteStatus.yes) |
| | | || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.status.recovery)) { |
| | | || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.status.recovery)) { |
| | | orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.ysc); |
| | | } else if (goodsDO.getStatus().equals(ComShopFlowerGoodsDO.status.lower)) { |
| | | orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.yxj); |
| | |
| | | } |
| | | |
| | | // 根据商品规格id查询商品规格 |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); |
| | | if (goodsAttrDO != null) { |
| | | orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttrName()); |
| | | } |
| | | orderGoodsVOS.add(orderGoodsVO); |
| | | sbr.append(orderGoods.getGoodsName() + " "); |
| | | sbr.append(orderGoods.getGoodsName()).append(" "); |
| | | }); |
| | | } |
| | | orderVO.setOrderGoodsVOList(orderGoodsVOS); |
| | |
| | | |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | // 查询用户收货地址 |
| | | ComShopFlowerUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrderDO.getReceiverId()); |
| | | ComShopFlowerUserAddressDO userAddressDO = comShopFlowerUserAddressDAO.selectById(shopOrderDO.getReceiverId()); |
| | | if (userAddressDO != null) { |
| | | BeanUtils.copyProperties(userAddressDO, userAddressVO); |
| | | orderVO.setUserAddressVO(userAddressVO); |
| | |
| | | |
| | | // 操作日志 |
| | | List<ComShopFlowerOrderOperateDO> listOperLog = |
| | | comShopOrderOperateDAO.selectList(new LambdaQueryWrapper<ComShopFlowerOrderOperateDO>() |
| | | .eq(ComShopFlowerOrderOperateDO::getOrderNo, shopOrderDO.getOrderNo())); |
| | | comShopFlowerOrderOperateDAO.selectList(new LambdaQueryWrapper<ComShopFlowerOrderOperateDO>() |
| | | .eq(ComShopFlowerOrderOperateDO::getOrderNo, shopOrderDO.getOrderNo())); |
| | | List<ComShopFlowerOrderOperateVO> listOperLogVO = new ArrayList<>(listOperLog.size()); |
| | | listOperLog.forEach(logDO -> { |
| | | ComShopFlowerOrderOperateVO copyVO = new ComShopFlowerOrderOperateVO(); |
| | |
| | | listOperLogVO.add(copyVO); |
| | | }); |
| | | orderVO.setLogs(listOperLogVO); |
| | | Long pointId = shopOrderDO.getPointId(); |
| | | if (null != pointId) { |
| | | ConvenientElevatingPointDO convenientElevatingPointDO = convenientElevatingPointDAO.selectById(pointId); |
| | | ConvenientElevatingPointVO convenientElevatingPointVO = new ConvenientElevatingPointVO(); |
| | | BeanUtils.copyProperties(convenientElevatingPointVO, convenientElevatingPointDO); |
| | | orderVO.setConvenientElevatingPointVO(convenientElevatingPointVO); |
| | | } |
| | | //已完成、已退款才有评论 |
| | | if (ComShopFlowerOrderDO.status.ywc == shopOrderDO.getStatus() || ComShopFlowerOrderDO.status.ytk == shopOrderDO.getStatus()) { |
| | | ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(shopOrderDO.getOrderNo()); |
| | | if (nonNull(comShopFlowerEvaluateVO)) { |
| | | orderVO.setComShopFlowerEvaluateVO(comShopFlowerEvaluateVO); |
| | | } |
| | | } |
| | | |
| | | |
| | | return R.ok(orderVO); |
| | | } |
| | | |
| | | /** |
| | | * 根据订单id取消订单 |
| | | * |
| | | * @param comShopOrderQueryDTO |
| | | * 订单信息 |
| | | * @param comShopOrderQueryDTO 订单信息 |
| | | * @return 取消结果 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | } |
| | | // 取消订单 |
| | | shopOrderDO.setStatus(ComShopFlowerOrderDO.status.yqx); |
| | | //退款 |
| | | String refundNo = WXPayUtil.generateNonceStr(); |
| | | try { |
| | | String refundStr = WxPayUtils.refund(appid, mchId, shopOrderDO.getWxTardeNo(), shopOrderDO.getPayAmount(), |
| | | shopOrderDO.getPayAmount(), refundNo, isTest); |
| | | log.info("退款请求接口返回参数:{}", refundStr); |
| | | Map<String, String> mapResult = WXPayUtil.xmlToMap(refundStr); |
| | | if (CollUtil.isNotEmpty(mapResult)) { |
| | | String return_code = (String) mapResult.get("return_code"); |
| | | String result_code = (String) mapResult.get("result_code"); |
| | | String return_msg = mapResult.get("return_msg"); |
| | | ComShopFlowerOrderPayDO orderPayDO = new ComShopFlowerOrderPayDO(); |
| | | |
| | | orderPayDO.setOrderNo(shopOrderDO.getOrderNo()); |
| | | orderPayDO.setOrderAmount(shopOrderDO.getTotalAmount()); |
| | | orderPayDO.setPayTime(new Date()); |
| | | orderPayDO.setStoreId(shopOrderDO.getStoreId()); |
| | | orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType()); |
| | | orderPayDO.setOrderId(shopOrderDO.getId()); |
| | | orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.qx); |
| | | if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) { |
| | | //退款成功 |
| | | // 添加订单支付记录表 |
| | | orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes); |
| | | orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg); |
| | | |
| | | } else { |
| | | //退款失败 |
| | | // 添加订单支付记录表 |
| | | orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no); |
| | | orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb); |
| | | shopOrderDO.setRemark(shopOrderDO.getRemark() + "_" + return_msg); |
| | | } |
| | | comShopFlowerOrderPayDAO.insert(orderPayDO); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("申请退款失败," + e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | if (this.baseMapper.updateById(shopOrderDO) > 0) { |
| | | // 添加订单操作记录 |
| | | ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO(); |
| | |
| | | orderOperateDO.setOperationContent("用户取消订单"); |
| | | orderOperateDO.setOperationBy("用户"); |
| | | } |
| | | comShopOrderOperateDAO.insert(orderOperateDO); |
| | | comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | return R.ok(); |
| | | } else { |
| | | return R.fail("取消订单失败"); |
| | |
| | | /** |
| | | * 根据订单id删除订单 |
| | | * |
| | | * @param orderId |
| | | * 订单id |
| | | * @param orderId 订单id |
| | | * @return 删除结果 |
| | | */ |
| | | @Override |
| | |
| | | return R.fail("未查询到订单"); |
| | | } |
| | | if (!shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.ywc) |
| | | && !shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.yqx)) { |
| | | && !shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.yqx)) { |
| | | return R.fail("该订单状态不可删除"); |
| | | } |
| | | |
| | |
| | | /** |
| | | * 根据订单id确认收货 |
| | | * |
| | | * @param orderId |
| | | * 订单id |
| | | * @param phone |
| | | * 手机号 |
| | | * @param orderId 订单id |
| | | * @param phone 手机号 |
| | | * @return 确认结果 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | orderOperateDO.setOperationContent("用户确认收货"); |
| | | orderOperateDO.setOperationBy("用户"); |
| | | } |
| | | comShopOrderOperateDAO.insert(orderOperateDO); |
| | | comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | return R.ok(); |
| | | } else { |
| | | return R.fail("确认收货失败"); |
| | |
| | | /** |
| | | * 统计用户订单数量 |
| | | * |
| | | * @param userId |
| | | * 用户id |
| | | * @param userId 用户id |
| | | * @return 统计结果 |
| | | */ |
| | | @Override |
| | |
| | | /** |
| | | * 订单发货 |
| | | * |
| | | * @param orderShipDTO |
| | | * 订单发货信息 |
| | | * @param orderShipDTO 订单发货信息 |
| | | * @return 发货结果 |
| | | */ |
| | | @Override |
| | | public R shipOrder(ComShopOrderShipDTO orderShipDTO) { |
| | | ComShopFlowerOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderShipDTO.getOrderId()); |
| | | ComShopFlowerOrderDO comShopOrderDO = comShopFlowerOrderDAO.selectById(orderShipDTO.getOrderId()); |
| | | if (comShopOrderDO == null) { |
| | | return R.fail("订单不存在"); |
| | | } |
| | |
| | | comShopOrderDO.setDeliveryTime(Calendar.getInstance().getTime()); |
| | | comShopOrderDO.setLogisticsCompany(orderShipDTO.getLogisticsCompany()); |
| | | comShopOrderDO.setLogisticsNo(orderShipDTO.getLogisticsNo()); |
| | | int updated = comShopOrderDAO.updateById(comShopOrderDO); |
| | | int updated = comShopFlowerOrderDAO.updateById(comShopOrderDO); |
| | | if (updated == 1) { |
| | | // 创建订单操作记录 |
| | | ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO(); |
| | |
| | | orderOperateDO.setOperationContent(orderShipDTO.getOperUserAccount() + "已发货"); |
| | | orderOperateDO.setOperationBy(orderShipDTO.getOperUserAccount()); |
| | | } |
| | | int inserted = comShopOrderOperateDAO.insert(orderOperateDO); |
| | | int inserted = comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | if (inserted != 1) { |
| | | log.error("订单发货日志保存错误"); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public R deliverOrder(ComShopOrderDeliverDTO orderDeliverDTO) { |
| | | ComShopFlowerOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderDeliverDTO.getOrderId()); |
| | | ComShopFlowerOrderDO comShopOrderDO = comShopFlowerOrderDAO.selectById(orderDeliverDTO.getOrderId()); |
| | | if (comShopOrderDO == null) { |
| | | return R.fail("订单不存在"); |
| | | } |
| | |
| | | comShopOrderDO.setDeliveryType(1); |
| | | comShopOrderDO.setStatus(3); |
| | | comShopOrderDO.setDeliveryTime(Calendar.getInstance().getTime()); |
| | | int updated = comShopOrderDAO.updateById(comShopOrderDO); |
| | | int updated = comShopFlowerOrderDAO.updateById(comShopOrderDO); |
| | | if (updated == 1) { |
| | | |
| | | // 创建订单操作记录 |
| | |
| | | orderOperateDO.setOperationContent(orderDeliverDTO.getOperUserAccount() + "已发货"); |
| | | orderOperateDO.setOperationBy(orderDeliverDTO.getOperUserAccount()); |
| | | } |
| | | int inserted = comShopOrderOperateDAO.insert(orderOperateDO); |
| | | int inserted = comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | if (inserted != 1) { |
| | | log.error("订单发货日志保存错误"); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public R finishDeliverOrder(ComShopOrderDeliverDTO orderDeliverDTO) { |
| | | ComShopFlowerOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderDeliverDTO.getOrderId()); |
| | | ComShopFlowerOrderDO comShopOrderDO = comShopFlowerOrderDAO.selectById(orderDeliverDTO.getOrderId()); |
| | | if (comShopOrderDO == null) { |
| | | return R.fail("订单不存在"); |
| | | } |
| | |
| | | } |
| | | // comShopOrderDO.setStatus(4); |
| | | comShopOrderDO.setDeliveryStatus(5); |
| | | int updated = comShopOrderDAO.updateById(comShopOrderDO); |
| | | int updated = comShopFlowerOrderDAO.updateById(comShopOrderDO); |
| | | if (updated == 1) { |
| | | // 创建订单操作记录 |
| | | ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO(); |
| | |
| | | orderOperateDO.setOperationContent("订单已完成"); |
| | | orderOperateDO.setOperationBy(orderDeliverDTO.getOperUserAccount()); |
| | | } |
| | | int inserted = comShopOrderOperateDAO.insert(orderOperateDO); |
| | | int inserted = comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | if (inserted != 1) { |
| | | log.error("订单发货日志保存错误"); |
| | | } |
| | |
| | | /** |
| | | * 微信支付订单回调 |
| | | * |
| | | * @param wxPayNotifyOrderDTO |
| | | * 订单支付回调参数 |
| | | * @param wxPayNotifyOrderDTO 订单支付回调参数 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | |
| | | log.info("微信订单支付回调开始查询订单"); |
| | | // 查询订单 |
| | | ComShopFlowerOrderDO shopOrderDO = this.baseMapper.selectOne(new QueryWrapper<ComShopFlowerOrderDO>().lambda() |
| | | .eq(ComShopFlowerOrderDO::getOrderNo, wxPayNotifyOrderDTO.getOrderTradeNo())); |
| | | .eq(ComShopFlowerOrderDO::getOrderNo, wxPayNotifyOrderDTO.getOrderTradeNo())); |
| | | if (shopOrderDO == null) { |
| | | log.error("未查询到支付订单,订单回调失败,订单号:" + wxPayNotifyOrderDTO.getOrderTradeNo()); |
| | | return; |
| | |
| | | shopOrderDO.setPayAmount(BigDecimal.valueOf(Double.valueOf(wxPayNotifyOrderDTO.getCashFee()) / 100)); |
| | | shopOrderDO.setWxTardeNo(wxPayNotifyOrderDTO.getWxTradeNo()); |
| | | shopOrderDO.setPayTime( |
| | | DateUtils.stringToDate(wxPayNotifyOrderDTO.getPayTime(), new SimpleDateFormat("yyyyMMddHHmmss"))); |
| | | DateUtils.stringToDate(wxPayNotifyOrderDTO.getPayTime(), new SimpleDateFormat("yyyyMMddHHmmss"))); |
| | | this.baseMapper.updateById(shopOrderDO); |
| | | |
| | | // 查询订单商品 |
| | | List<ComShopFlowerOrderGoodsDO> orderGoodsList = |
| | | comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().lambda() |
| | | .eq(ComShopFlowerOrderGoodsDO::getOrderNo, shopOrderDO.getOrderNo())); |
| | | comShopFlowerOrderGoodsDAO.selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().lambda() |
| | | .eq(ComShopFlowerOrderGoodsDO::getOrderNo, shopOrderDO.getOrderNo())); |
| | | if (!orderGoodsList.isEmpty()) { |
| | | int goodsNub = 0; |
| | | for (ComShopFlowerOrderGoodsDO orderGood : orderGoodsList) { |
| | | goodsNub += orderGood.getAmount(); |
| | | // 更新商品信息 |
| | | ComShopFlowerGoodsDO goodsDO = comShopGoodsDAO.selectById(orderGood.getGoodsId()); |
| | | ComShopFlowerGoodsDO goodsDO = comShopFlowerGoodsDAO.selectById(orderGood.getGoodsId()); |
| | | if (goodsDO != null) { |
| | | goodsDO.setSale(goodsDO.getSale() + orderGood.getAmount()); |
| | | comShopGoodsDAO.updateById(goodsDO); |
| | | comShopFlowerGoodsDAO.updateById(goodsDO); |
| | | } |
| | | |
| | | // 更新商品规格 |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderGood.getGoodsAttrId()); |
| | | ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(orderGood.getGoodsAttrId()); |
| | | if (goodsAttrDO != null) { |
| | | goodsAttrDO.setSale(goodsAttrDO.getSale() + orderGood.getAmount()); |
| | | comShopGoodsAttrDAO.updateById(goodsAttrDO); |
| | | //减库存 |
| | | goodsAttrDO.setStock(goodsAttrDO.getStock() - orderGood.getAmount()); |
| | | comShopFlowerGoodsAttrDAO.updateById(goodsAttrDO); |
| | | } |
| | | } |
| | | |
| | | // 更新店铺销量以及销售额 |
| | | ComShopStoreDO storeDO = comShopStoreDAO.selectById(shopOrderDO.getStoreId()); |
| | | ConvenientMerchantDO storeDO = convenientMerchantDAO.selectById(shopOrderDO.getStoreId()); |
| | | if (storeDO != null) { |
| | | storeDO.setSale(storeDO.getSale() + goodsNub); |
| | | storeDO.setSaleVolume(storeDO.getSaleVolume().add(shopOrderDO.getTotalAmount())); |
| | | comShopStoreDAO.updateById(storeDO); |
| | | convenientMerchantDAO.updateById(storeDO); |
| | | } |
| | | } |
| | | |
| | |
| | | orderOperateDO.setOperationTime(new Date()); |
| | | orderOperateDO.setOperationContent("用户支付订单"); |
| | | orderOperateDO.setOperationBy("用户"); |
| | | comShopOrderOperateDAO.insert(orderOperateDO); |
| | | comShopFlowerOrderOperateDAO.insert(orderOperateDO); |
| | | |
| | | // 添加订单支付记录表 |
| | | ComShopFlowerOrderPayDO orderPayDO = new ComShopFlowerOrderPayDO(); |
| | |
| | | orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes); |
| | | orderPayDO.setPayAmount(shopOrderDO.getPayAmount()); |
| | | orderPayDO.setPayTime(shopOrderDO.getPayTime()); |
| | | comShopOrderPayDAO.insert(orderPayDO); |
| | | orderPayDO.setStoreId(shopOrderDO.getStoreId()); |
| | | orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType()); |
| | | orderPayDO.setOrderId(shopOrderDO.getId()); |
| | | orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.zf); |
| | | comShopFlowerOrderPayDAO.insert(orderPayDO); |
| | | } |
| | | |
| | | /** |
| | | * 订单去支付 |
| | | * |
| | | * @param orderPayDTO |
| | | * 请求参数 |
| | | * @param orderPayDTO 请求参数 |
| | | * @return 支付对象 |
| | | */ |
| | | public R wxPay(OrderPayDTO orderPayDTO) { |
| | | // 创建返回参数 |
| | | ComShopFlowerOrderVO shopOrderVO = new ComShopFlowerOrderVO(); |
| | | // 查询订单 |
| | | ComShopFlowerOrderDO orderDO = comShopOrderDAO.selectOne( |
| | | new QueryWrapper<ComShopFlowerOrderDO>().lambda().eq(ComShopFlowerOrderDO::getOrderNo, orderPayDTO.getOrderNo())); |
| | | ComShopFlowerOrderDO orderDO = comShopFlowerOrderDAO.selectOne( |
| | | new QueryWrapper<ComShopFlowerOrderDO>().lambda().eq(ComShopFlowerOrderDO::getOrderNo, orderPayDTO.getOrderNo())); |
| | | if (orderDO == null) { |
| | | return R.fail("订单不存在"); |
| | | } |
| | |
| | | } |
| | | // 调用wx支付 |
| | | String xml = WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "商品购买", orderPayDTO.getOpenId(), |
| | | orderDO.getOrderNo(), money,null); |
| | | orderDO.getOrderNo(), money, null); |
| | | log.info("微信支付返回参数:" + xml); |
| | | shopOrderVO.setPayResult(xml); |
| | | } catch (Exception e) { |
| | |
| | | shopOrderVO.setOrderTotal(orderDO.getTotalAmount()); |
| | | return R.ok(shopOrderVO); |
| | | } |
| | | |
| | | @Override |
| | | public R pageOrderByStoreId(PageComFlowerOrderListDTO pageComFlowerOrderListDTO) { |
| | | |
| | | Page page = new Page(pageComFlowerOrderListDTO.getPageNum(), pageComFlowerOrderListDTO.getPageSize()); |
| | | |
| | | IPage<ComShopFlowerOrderStoreListVO> ipage = this.baseMapper.pageOrderByStoreId(page, pageComFlowerOrderListDTO); |
| | | return R.ok(ipage); |
| | | } |
| | | |
| | | @Override |
| | | public R selectCountByDeliveryType(Integer deliveryType) { |
| | | List<ComShopOrderCountVO> comShopOrderCountVOS = this.baseMapper.selectCountByDeliveryType(deliveryType); |
| | | Map<Integer, Integer> collect = comShopOrderCountVOS.stream().collect(Collectors.toMap(ComShopOrderCountVO::getStatus, ComShopOrderCountVO::getAmount)); |
| | | ComShopOrderCountVO comShopOrderCountVO = new ComShopOrderCountVO(); |
| | | comShopOrderCountVO.setStatus(8); |
| | | comShopOrderCountVO.setAmount(0); |
| | | for (int i = 1; i < 8; i++) { |
| | | if (collect.containsKey(i)) { |
| | | Integer amount = collect.get(i); |
| | | comShopOrderCountVO.setAmount(amount + comShopOrderCountVO.getAmount()); |
| | | }else { |
| | | collect.put(i,0); |
| | | } |
| | | } |
| | | collect.put(comShopOrderCountVO.getStatus(),comShopOrderCountVO.getAmount()); |
| | | |
| | | return R.ok(collect); |
| | | } |
| | | |
| | | |
| | | } |