From 34c7d903efa4dc06a0f7b38bc5d2d721f80b220d Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期三, 09 七月 2025 09:04:52 +0800 Subject: [PATCH] 7.8冒烟修改问题 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java | 170 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 122 insertions(+), 48 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java index bc54bd5..f161767 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java @@ -12,31 +12,27 @@ import com.github.binarywang.wxpay.service.WxPayService; import com.ruoyi.common.utils.OrderUtil; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.dto.AddBuyerCompanyInfoDto; import com.ruoyi.system.mapper.TbOrderMapper; import com.ruoyi.system.model.*; import com.ruoyi.system.query.MyOrderListQuery; -import com.ruoyi.system.service.TbOrderService; -import com.ruoyi.system.service.TbSystemConfigService; -import com.ruoyi.system.service.TbUserService; +import com.ruoyi.system.service.*; import com.ruoyi.system.utils.wx.WxProperties; import com.ruoyi.system.vo.MyPushCompanyListVo; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.annotation.OrderUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.InetAddress; -import java.net.MalformedURLException; import java.util.Date; -import java.util.Objects; -import java.util.Optional; +import java.util.HashMap; +import java.util.List; /** * <p> @@ -57,12 +53,20 @@ @Resource private WxPayService wxPayService; - @Autowired private TbSystemConfigService configService; @Autowired private TbUserService userService; + + @Autowired + private TbCompanyService companyService; + + @Autowired + private TbMessageService messageService; + + @Autowired + private TbShareholderService shareholderService; @Override @@ -72,8 +76,19 @@ } @Override + public HashMap<String, Object> getMyOrderListNum(Long userId, HashMap<String, Object> map) { + List<MyPushCompanyListVo> list = this.baseMapper.getMyOrderListNum(userId); + map.put("toBeConfirmed", list.stream().filter(e -> e.getStatus() == 2).count()); + map.put("pendingPayment", list.stream().filter(e -> e.getStatus() == 3).count()); + map.put("processing", list.stream().filter(e -> e.getStatus() == 4).count()); + map.put("completed", list.stream().filter(e -> e.getStatus() == 6).count()); + return map; + } + + @Override public WxPayMpOrderResult payOrder(TbOrder tbOrder, Long userId) { - WxPayMpOrderResult result = this.createWxOrderToWxService(tbOrder.getUserId(),tbOrder.getOrderNo(),tbOrder.getPrice(),"购买商品", ""); + TbUser user = userService.getById(userId); + WxPayMpOrderResult result = this.createWxOrderToWxService(user.getOpenId(),tbOrder.getOrderNo(),tbOrder.getPrice(),"购买商品", ""); return result; } @@ -86,40 +101,10 @@ tbOrder.setOrderNo( OrderUtil.getOrderNoForPrefix("ZSX")); tbOrder.setStatus(2); tbOrder.setPrice(company.getSaleMoney()); - - // 生成记录 看是否分佣 金额 - TbUser user = userService.getById(company.getUserId()); - TbSystemConfig config = configService.getOne(new LambdaQueryWrapper<TbSystemConfig>().eq(TbSystemConfig::getType, 3)); - - if(config!=null){ - JSONObject jsonObject = JSONObject.parseObject(config.getContent()); - BigDecimal platformCommission = new BigDecimal(jsonObject.get("platform").toString()); - BigDecimal userCommission = new BigDecimal(jsonObject.get("user").toString()); - BigDecimal price = tbOrder.getPrice(); - BigDecimal divide = platformCommission.divide(new BigDecimal("100")); - BigDecimal platformCommissionMoney = divide.multiply(price).setScale(2, RoundingMode.HALF_UP); - if(StringUtils.isNotEmpty(user.getInviteId()) && user.getInviteNum()>0){ - BigDecimal divide1 = userCommission.divide(new BigDecimal("100")); - BigDecimal userCommissionMoney = divide1.multiply(price).setScale(2, RoundingMode.HALF_UP); - tbOrder.setCommissionPrice(userCommissionMoney); - } - tbOrder.setShare_user_id(user.getInviteId()); - tbOrder.setCommissionPlatform(platformCommissionMoney); - } tbOrder.insert(); - - // 生成记录 - TbAccountDetail tbAccountDetail = new TbAccountDetail(); - tbAccountDetail.setUserId(company.getUserId()); - tbAccountDetail.setType(1); - tbAccountDetail.setCategory(2); - tbAccountDetail.setStatus(1); - BigDecimal subtract = tbOrder.getPrice().subtract(tbOrder.getCommissionPrice()).subtract(tbOrder.getCommissionPlatform()); - tbAccountDetail.setMoney(subtract); - tbAccountDetail.setOrderId(tbOrder.getId()); - tbAccountDetail.insert(); - + company.setStatus(4); + company.updateById(); } @Override @@ -133,20 +118,68 @@ if (order!=null) { order.setStatus(4); order.setPayTime(new Date()); + order.setOutTradeNo(notifyResult.getOutTradeNo()); + order.setTransactionId(notifyResult.getTransactionId()); + TbCompany company = companyService.getById(order.getCompanyId()); + // 生成记录 看是否分佣 金额 + TbUser user = userService.getById(company.getUserId()); + TbSystemConfig config = configService.getOne(new LambdaQueryWrapper<TbSystemConfig>().eq(TbSystemConfig::getType, 3)); + if(config!=null){ + JSONObject jsonObject = JSONObject.parseObject(config.getContent()); + BigDecimal platformCommission = new BigDecimal(jsonObject.get("platform").toString()); + BigDecimal userCommission = new BigDecimal(jsonObject.get("user").toString()); + BigDecimal price = order.getPrice(); + BigDecimal divide = platformCommission.divide(new BigDecimal("100")); + BigDecimal platformCommissionMoney = divide.multiply(price).setScale(2, RoundingMode.HALF_UP); + if(StringUtils.isNotEmpty(user.getInviteId()) && user.getInviteNum()>0){ + BigDecimal divide1 = userCommission.divide(new BigDecimal("100")); + BigDecimal userCommissionMoney = divide1.multiply(price).setScale(2, RoundingMode.HALF_UP); + order.setCommissionPrice(userCommissionMoney); + } + order.setShareUserId(user.getInviteId()); + order.setCommissionPlatform(platformCommissionMoney); + } order.updateById(); + + // 生成记录 + TbAccountDetail tbAccountDetail = new TbAccountDetail(); + tbAccountDetail.setUserId(company.getUserId()); + tbAccountDetail.setType(1); + tbAccountDetail.setCategory(2); + tbAccountDetail.setStatus(1); + BigDecimal subtract = order.getPrice().subtract(order.getCommissionPrice()).subtract(order.getCommissionPlatform()); + tbAccountDetail.setMoney(subtract); + tbAccountDetail.setOrderId(order.getId()); + tbAccountDetail.insert(); + + // 生成记录 + TbAccountDetail tbAccountDetail1 = new TbAccountDetail(); + tbAccountDetail1.setUserId(order.getUserId()); + tbAccountDetail1.setType(2); + tbAccountDetail1.setCategory(5); + tbAccountDetail1.setStatus(2); + tbAccountDetail1.setMoney(order.getPrice()); + tbAccountDetail1.setOrderId(order.getId()); + tbAccountDetail1.insert(); + + + messageService.addMessage("下单成功,请及时发送快递", order.getUserId(),order.getId()); + messageService.addMessage("您发布的订单买家已支付,请尽快处理!", company.getUserId(),order.getId()); + return "<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>"; } - return "<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>"; + return null; + + } @Override public void commission(TbOrder order,String userId) { - String shareUserId = order.getShare_user_id(); + String shareUserId = order.getShareUserId(); if(StringUtils.isNotEmpty(shareUserId)){ TbUser shareUser = userService.getById(shareUserId); BigDecimal add = shareUser.getBalance().add(order.getCommissionPrice()); shareUser.setBalance(add); shareUser.updateById(); - TbAccountDetail accountDetail = new TbAccountDetail(); accountDetail.setUserId(shareUserId); @@ -166,8 +199,48 @@ user.setBalance(add); user.updateById(); - } + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public void lastPayOrderData(TbOrder tbOrder, AddBuyerCompanyInfoDto dto, Long userId,TbCompany company, TbBuyerCompanyInfo one) { + TbBuyerCompanyInfo tbBuyerCompanyInfo = new TbBuyerCompanyInfo(); + BeanUtils.copyProperties(dto,tbBuyerCompanyInfo); + if(one!=null){ + tbBuyerCompanyInfo.setId(one.getId()); + } + tbBuyerCompanyInfo.setOrderId(tbOrder.getId()); + List<TbShareholder> shareholders = dto.getShareholders(); + + BigDecimal addMoney=BigDecimal.ZERO; + int addDay=0; + // 判断是否需要支付改名费 迁区费 + if(dto.getNeedRename()==1){ + addMoney = company.getRenameMoney(); + addDay=company.getRenameDay(); + } + if(dto.getNewDistrict()==1){ + addMoney = addMoney.add(company.getRelocationAreaMoney()); + addDay = addDay+company.getRelocationAreaDay(); + } + // 更新订单金额 + BigDecimal add = company.getSaleMoney().add(addMoney); + tbOrder.setPrice(add); + tbOrder.setOrderNo(OrderUtil.getOrderNoForPrefix("ZSX")); + tbOrder.updateById(); + + if(addDay>0){ + tbBuyerCompanyInfo.setAddDay(addDay); + } + tbBuyerCompanyInfo.insertOrUpdate(); + + shareholderService.remove(new LambdaQueryWrapper<TbShareholder>().eq(TbShareholder::getOrderId, tbOrder.getId())); + for (TbShareholder shareholder : shareholders) { + shareholder.setOrderId(tbOrder.getId()); + shareholder.insert(); + } + } + /** @@ -189,11 +262,12 @@ wxPayUnifiedOrderRequest.setBody("购买商品"); wxPayUnifiedOrderRequest.setOutTradeNo(outTradeNo); wxPayUnifiedOrderRequest.setTotalFee(amountInFen);// 元转成分 + wxPayUnifiedOrderRequest.setOpenid(openId); wxPayUnifiedOrderRequest.setSpbillCreateIp( InetAddress.getLoopbackAddress().getHostAddress()); wxPayUnifiedOrderRequest.setTradeType("JSAPI"); wxPayUnifiedOrderRequest.setNotifyUrl( - wxProperties.getNotifyUrl() +"mall-hotel-order/WX/callback"); + wxProperties.getNotifyUrl()); WxPayMpOrderResult result = wxPayService.createOrder(wxPayUnifiedOrderRequest); return result; -- Gitblit v1.7.1