| | |
| | | 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.DateUtils; |
| | | 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.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.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 订单预览 |
| | |
| | | } |
| | | |
| | | //查询默认收货地址 |
| | | //查询上次购买记录的收货地址 |
| | | List<ComShopOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>() |
| | | .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){ |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | BeanUtils.copyProperties(userAddressDO,userAddressVO); |
| | | orderPreviewVO.setUserAddressVO(userAddressVO); |
| | | }else{ |
| | | ComShopUserAddressDO userDefaultAddressDO = comShopUserAddressDAO.selectOne(new QueryWrapper<ComShopUserAddressDO>() |
| | | .eq("delete_status", 2) |
| | | .eq("user_id",orderPreviewDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes)); |
| | | |
| | | //查询用户收货地址中的默认地址 |
| | | if(userDefaultAddressDO != null){ |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | BeanUtils.copyProperties(userDefaultAddressDO,userAddressVO); |
| | | orderPreviewVO.setUserAddressVO(userAddressVO); |
| | | }else{ |
| | | //查询上次购买记录的收货地址 |
| | | //查询到用户上一笔订单 |
| | | List<ComShopOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>() |
| | | .eq("delete_status", 2) |
| | | .eq("user_id",orderPreviewDTO.getUserId()) |
| | | .orderByDesc("create_at")); |
| | | if(shopOrders!=null && shopOrders.size()>0) { |
| | | ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); |
| | | if (userAddressDO != null) { |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | BeanUtils.copyProperties(userAddressDO, userAddressVO); |
| | | orderPreviewVO.setUserAddressVO(userAddressVO); |
| | | } |
| | | } |
| | | //无默认地址, 无上一单记录 地址 |
| | | /* |
| | | if(orderPreviewVO.getUserAddressVO()==null){ |
| | | List<ComShopUserAddressDO> userAddressDOList = comShopUserAddressDAO.selectList(new QueryWrapper<ComShopUserAddressDO>() |
| | | .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at")); |
| | | if(!userAddressDOList.isEmpty()){ |
| | |
| | | orderPreviewVO.setUserAddressVO(userAddressVO); |
| | | } |
| | | } |
| | | }else{//查询到用户上一笔订单 |
| | | ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | BeanUtils.copyProperties(userAddressDO,userAddressVO); |
| | | orderPreviewVO.setUserAddressVO(userAddressVO); |
| | | */ |
| | | } |
| | | |
| | | |
| | | return R.ok(orderPreviewVO); |
| | | } |
| | |
| | | public R orderCreate(ComShopOrderCreateDTO orderCreateDTO){ |
| | | //创建返回参数 |
| | | ComShopOrderVO shopOrderVO = new ComShopOrderVO(); |
| | | |
| | | //查询用户收货地址 |
| | | ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(orderCreateDTO.getReceiverId()); |
| | | if(userAddressDO == null){ |
| | | if(userAddressDO == null||userAddressDO.getDeleteStatus()!=2){ |
| | | return R.fail("收货地址不存在"); |
| | | } |
| | | //用户id |
| | |
| | | String orderNo = OrderNoUtils.NextOrderNo(userId); |
| | | //配送方式 |
| | | Integer deliveryType = 0; |
| | | |
| | | //订单总金额 |
| | | BigDecimal orderTotal = BigDecimal.ZERO; |
| | | |
| | | //创建订单商品信息 |
| | | List<ComShopOrderGoodsDO> orderGoodsDOList = new ArrayList<>(); |
| | | if(!orderCreateDTO.getOrderGoodsList().isEmpty()){ |
| | |
| | | orderTotal = orderTotal.add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount()))); |
| | | } |
| | | } |
| | | |
| | | //如果是购物车提交,需要将购物车内商品移除 |
| | | if(orderCreateDTO.getSubmitType().equals(ComShopOrderCreateDTO.submitType.cart)){ |
| | | comShopCartDAO.deleteBatchIds(orderCreateDTO.getCartIds()); |
| | | } |
| | | |
| | | //创建订单信息 |
| | | ComShopOrderDO shopOrderDO = new ComShopOrderDO(); |
| | | shopOrderDO.setOrderNo(orderNo); |
| | |
| | | shopOrderDO.setRemark(orderCreateDTO.getRemark()); |
| | | } |
| | | this.baseMapper.insert(shopOrderDO); |
| | | |
| | | 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())){ |
| | |
| | | orderOperateDO.setOperationBy("用户"); |
| | | } |
| | | comShopOrderOperateDAO.insert(orderOperateDO); |
| | | |
| | | shopOrderVO.setOrderNo(orderNo); |
| | | shopOrderVO.setOrderTotal(orderTotal); |
| | | shopOrderVO.setOrderId(shopOrderDO.getId()); |
| | | |
| | | 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); |
| | | } |
| | | |
| | |
| | | orderGoodsDOList.forEach(orderGoods -> { |
| | | ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO(); |
| | | BeanUtils.copyProperties(orderGoods,orderGoodsVO); |
| | | //根据商品规格id查询商品规格 |
| | | ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); |
| | | if(goodsAttrDO != null){ |
| | | orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttr()); |
| | | } |
| | | orderGoodsVO.setNum(orderGoods.getAmount()); |
| | | orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); |
| | | orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); |
| | |
| | | //查询订单下商品信息 |
| | | List<ComShopOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopOrderGoodsDO>() |
| | | .eq("order_no",shopOrderDO.getOrderNo())); |
| | | StringBuilder sbr = new StringBuilder(""); |
| | | if(!orderGoodsDOList.isEmpty()){ |
| | | orderGoodsDOList.forEach(orderGoods -> { |
| | | ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO(); |
| | |
| | | orderGoodsVO.setNum(orderGoods.getAmount()); |
| | | orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); |
| | | orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); |
| | | //查询商品信息判断商品状态 |
| | | ComShopGoodsDO goodsDO = comShopGoodsDAO.selectById(orderGoods.getGoodsId()); |
| | | if(goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopGoodsDO.deleteStatus.yes) || goodsDO.getDeleteStatus().equals(ComShopGoodsDO.status.recovery)){ |
| | | orderGoodsVO.setGoodsStatus(ComShopOrderGoodsVO.goodsStatus.ysc); |
| | | }else if(goodsDO.getStatus().equals(ComShopGoodsDO.status.lower)){ |
| | | orderGoodsVO.setGoodsStatus(ComShopOrderGoodsVO.goodsStatus.yxj); |
| | | }else if(goodsDO.getStatus().equals(ComShopGoodsDO.status.sell)){ |
| | | orderGoodsVO.setGoodsStatus(ComShopOrderGoodsVO.goodsStatus.csz); |
| | | } |
| | | |
| | | //根据商品规格id查询商品规格 |
| | | ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); |
| | | if(goodsAttrDO != null){ |
| | | orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttr()); |
| | | } |
| | | orderGoodsVOS.add(orderGoodsVO); |
| | | sbr.append(orderGoods.getGoodsName() + " " ); |
| | | }); |
| | | } |
| | | orderVO.setOrderGoodsVOList(orderGoodsVOS); |
| | | orderVO.setGoodsName(sbr.toString()); |
| | | |
| | | ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); |
| | | //查询用户收货地址 |
| | |
| | | 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 操作用户手机号 |
| | | * @param comShopOrderQueryDTO 订单信息 |
| | | * @return 取消结果 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public R orderCancel(Long orderId,String phone){ |
| | | public R orderCancel(ComShopOrderQueryDTO comShopOrderQueryDTO){ |
| | | //查询订单 |
| | | ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId); |
| | | ComShopOrderDO shopOrderDO = this.baseMapper.selectById(comShopOrderQueryDTO.getOrderId()); |
| | | if(shopOrderDO == null){ |
| | | return R.fail("未查询到订单"); |
| | | } |
| | |
| | | orderOperateDO.setOrderNo(shopOrderDO.getOrderNo()); |
| | | orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.cancel); |
| | | orderOperateDO.setOperationTime(new Date()); |
| | | if(StringUtils.isNotEmpty(phone)){ |
| | | orderOperateDO.setOperationContent("用户" + phone + "取消订单"); |
| | | orderOperateDO.setOperationBy("用户" + phone); |
| | | if(comShopOrderQueryDTO.getIsAdmin()){ |
| | | orderOperateDO.setOperationContent("管理员" + comShopOrderQueryDTO.getOperUserAccount() + "取消订单"); |
| | | orderOperateDO.setOperationBy("用户" + comShopOrderQueryDTO.getOperUserAccount()); |
| | | }else { |
| | | orderOperateDO.setOperationContent("用户取消订单"); |
| | | orderOperateDO.setOperationBy("用户"); |
| | |
| | | } |
| | | //订单确认收货 |
| | | shopOrderDO.setStatus(ComShopOrderDO.status.ywc); |
| | | shopOrderDO.setReceivingTime(new Date()); |
| | | if(this.baseMapper.updateById(shopOrderDO) > 0){ |
| | | //添加订单操作记录 |
| | | ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); |
| | |
| | | return R.fail("订单不存在"); |
| | | } |
| | | if(!(comShopOrderDO.getStatus()==2) |
| | | || !(comShopOrderDO.getDeleteStatus()==1)){ |
| | | || !(comShopOrderDO.getDeliveryStatus()==1)){ |
| | | return R.fail("订单发货失败,订单状态不允许发货"); |
| | | } |
| | | |
| | | ComShopStoreDO storeDO = comShopStoreDAO.selectById(comShopOrderDO.getStoreId()); |
| | | if(storeDO.getDeliveryType()!=2){ |
| | | return R.fail("该商家不支持通过快递物流发货"); |
| | | } |
| | | comShopOrderDO.setDeliveryStatus(2); |
| | | comShopOrderDO.setDeliveryType(2); |
| | | comShopOrderDO.setStatus(3); |
| | | comShopOrderDO.setDeliveryTime(Calendar.getInstance().getTime()); |
| | | comShopOrderDO.setLogisticsCompany(orderShipDTO.getLogisticsCompany()); |
| | | comShopOrderDO.setLogisticsNo(orderShipDTO.getLogisticsNo()); |
| | | int updated = comShopOrderDAO.updateById(comShopOrderDO); |
| | | if(updated==1){ |
| | | //创建订单操作记录 |
| | | ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); |
| | | orderOperateDO.setOrderNo(comShopOrderDO.getOrderNo()); |
| | | orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.deliver); |
| | | orderOperateDO.setOperationTime(new Date()); |
| | | if(orderShipDTO.getIsAdmin()){ |
| | | orderOperateDO.setOperationContent(orderShipDTO.getOperUserAccount()+"已发货"); |
| | | orderOperateDO.setOperationBy(orderShipDTO.getOperUserAccount()); |
| | | }else { |
| | | orderOperateDO.setOperationContent(orderShipDTO.getOperUserAccount() + "已发货"); |
| | | orderOperateDO.setOperationBy(orderShipDTO.getOperUserAccount()); |
| | | } |
| | | int inserted = comShopOrderOperateDAO.insert(orderOperateDO); |
| | | if(inserted!=1){ |
| | | log.error("订单发货日志保存错误"); |
| | | } |
| | | return R.ok("发货成功"); |
| | | } |
| | | return R.fail("发货失败!"); |
| | | } |
| | | |
| | | @Override |
| | | public R deliverOrder(Long orderId) { |
| | | ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderId); |
| | | public R deliverOrder(ComShopOrderDeliverDTO orderDeliverDTO) { |
| | | ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderDeliverDTO.getOrderId()); |
| | | if(comShopOrderDO==null){ |
| | | return R.fail("订单不存在"); |
| | | } |
| | | if(!(comShopOrderDO.getStatus()==2)){ |
| | | if(!(comShopOrderDO.getStatus()==2) |
| | | || !(comShopOrderDO.getDeliveryStatus()==1)){ |
| | | return R.fail("当前订单不能配送"); |
| | | } |
| | | ComShopStoreDO storeDO = comShopStoreDAO.selectById(comShopOrderDO.getStoreId()); |
| | | if(storeDO.getDeliveryType()!=1){ |
| | | return R.fail("该商家不支持通过商家配送"); |
| | | } |
| | | comShopOrderDO.setDeliveryStatus(4); |
| | | comShopOrderDO.setDeliveryType(1); |
| | | comShopOrderDO.setStatus(3); |
| | | comShopOrderDO.setDeliveryTime(Calendar.getInstance().getTime()); |
| | | int updated = comShopOrderDAO.updateById(comShopOrderDO); |
| | | if(updated==1){ |
| | | |
| | | //创建订单操作记录 |
| | | ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); |
| | | orderOperateDO.setOrderNo(comShopOrderDO.getOrderNo()); |
| | | orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.deliver); |
| | | orderOperateDO.setOperationTime(new Date()); |
| | | if(orderDeliverDTO.getIsAdmin()){ |
| | | orderOperateDO.setOperationContent(orderDeliverDTO.getOperUserAccount() + "已发货"); |
| | | orderOperateDO.setOperationBy(orderDeliverDTO.getOperUserAccount()); |
| | | }else { |
| | | orderOperateDO.setOperationContent(orderDeliverDTO.getOperUserAccount() + "已发货"); |
| | | orderOperateDO.setOperationBy(orderDeliverDTO.getOperUserAccount()); |
| | | } |
| | | int inserted = comShopOrderOperateDAO.insert(orderOperateDO); |
| | | if(inserted!=1){ |
| | | log.error("订单发货日志保存错误"); |
| | | } |
| | | return R.ok("开始配送"); |
| | | } |
| | | return R.fail("操作失败!"); |
| | | } |
| | | |
| | | @Override |
| | | public R finishDeliverOrder(Long orderId) { |
| | | ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderId); |
| | | public R finishDeliverOrder(ComShopOrderDeliverDTO orderDeliverDTO) { |
| | | ComShopOrderDO comShopOrderDO = comShopOrderDAO.selectById(orderDeliverDTO.getOrderId()); |
| | | if(comShopOrderDO==null){ |
| | | return R.fail("订单不存在"); |
| | | } |
| | | if(!(comShopOrderDO.getDeliveryStatus() == 4)){ |
| | | if(comShopOrderDO.getDeliveryStatus() != 4 && comShopOrderDO.getDeliveryStatus() != 3){ |
| | | return R.fail("订单还未开始配送"); |
| | | } |
| | | if(!(comShopOrderDO.getStatus() == 3)){ |
| | | return R.fail("订单还未发货"); |
| | | } |
| | | //comShopOrderDO.setStatus(4); |
| | | comShopOrderDO.setDeliveryStatus(5); |
| | | int updated = comShopOrderDAO.updateById(comShopOrderDO); |
| | | if(updated==1){ |
| | | //创建订单操作记录 |
| | | ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO(); |
| | | orderOperateDO.setOrderNo(comShopOrderDO.getOrderNo()); |
| | | orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.complete); |
| | | orderOperateDO.setOperationTime(new Date()); |
| | | if(orderDeliverDTO.getIsAdmin()){ |
| | | orderOperateDO.setOperationContent("订单已完成"); |
| | | orderOperateDO.setOperationBy(orderDeliverDTO.getOperUserAccount()); |
| | | }else { |
| | | orderOperateDO.setOperationContent("订单已完成"); |
| | | orderOperateDO.setOperationBy(orderDeliverDTO.getOperUserAccount()); |
| | | } |
| | | int inserted = comShopOrderOperateDAO.insert(orderOperateDO); |
| | | if(inserted!=1){ |
| | | log.error("订单发货日志保存错误"); |
| | | } |
| | | return R.ok("配送完成"); |
| | | } |
| | | return R.fail("操作失败!"); |
| | |
| | | @Override |
| | | public R shopOrderExportData(ComShopOrderExportDTO comShopOrderExportDTO) { |
| | | Page page = new Page(); |
| | | page.setSize(1000); |
| | | page.setSize(10000); |
| | | 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.setSize(10000); |
| | | 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); |
| | | if(comShopFundsVO==null){ |
| | | comShopFundsVO = new ComShopFundsVO(); |
| | | comShopFundsVO.setMonthTotal(new BigDecimal(0)); |
| | | comShopFundsVO.setTodayTotal(new BigDecimal(0)); |
| | | comShopFundsVO.setWeekTotal(new BigDecimal(0)); |
| | | } |
| | | return R.ok(comShopFundsVO); |
| | | } |
| | | |
| | |
| | | return R.ok(ipage); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public R capitalDetailByStore(Long id) { |
| | | if(id==null){ |
| | |
| | | CapitalDetailVO vo = this.baseMapper.capitalDetailByStore(id); |
| | | return R.ok(vo); |
| | | } |
| | | |
| | | /** |
| | | * 微信支付订单回调 |
| | | * @param wxPayNotifyOrderDTO 订单支付回调参数 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public void wxOrderPayNotify(WxPayNotifyOrderDTO wxPayNotifyOrderDTO){ |
| | | log.info("微信订单支付回调开始处理逻辑"); |
| | | if(StringUtils.isEmpty(wxPayNotifyOrderDTO.getOrderTradeNo())){ |
| | | log.error("微信支付回调失败,订单号为空"); |
| | | return; |
| | | } |
| | | |
| | | log.info("微信订单支付回调开始查询订单"); |
| | | //查询订单 |
| | | 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(Double.valueOf(wxPayNotifyOrderDTO.getCashFee()) / 100)); |
| | | shopOrderDO.setWxTardeNo(wxPayNotifyOrderDTO.getWxTradeNo()); |
| | | shopOrderDO.setPayTime(DateUtils.stringToDate(wxPayNotifyOrderDTO.getPayTime(),new SimpleDateFormat("yyyyMMddHHmmss"))); |
| | | 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()); |
| | | } |
| | | shopOrderVO.setOrderId(orderDO.getId()); |
| | | shopOrderVO.setOrderNo(orderDO.getOrderNo()); |
| | | shopOrderVO.setOrderTotal(orderDO.getTotalAmount()); |
| | | return R.ok(shopOrderVO); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | BigDecimal one = BigDecimal.valueOf(Double.valueOf("1") / 100); |
| | | System.out.println(); |
| | | } |
| | | } |