From ae917e09a897843344424ca7d36dd22c216f5f50 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 19 一月 2026 18:13:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 132 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 124 insertions(+), 8 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index a8a17a7..c2cc064 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
@@ -24,6 +25,7 @@
import com.doumee.dao.web.request.*;
import com.doumee.dao.web.request.goods.*;
import com.doumee.dao.web.response.HomeInfoResponse;
+import com.doumee.dao.web.response.MailConfigResponse;
import com.doumee.dao.web.response.MyPageResponse;
import com.doumee.dao.web.response.goods.*;
import com.doumee.service.business.AreasService;
@@ -37,9 +39,12 @@
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
+import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
+import okhttp3.Address;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.C;
@@ -97,6 +102,9 @@
private ShopMapper shopMapper;
@Autowired
+ private LabelsMapper labelsMapper;
+
+ @Autowired
private ShopGoodsRelationMapper relationMapper;
@Autowired
@@ -137,6 +145,9 @@
@Autowired
private AreasService areasService;
+
+ @Autowired
+ private AreasMapper areasMapper;
@Autowired
private GoodsorderDetailJoinMapper goodsorderDetailJoinMapper;
@@ -429,7 +440,6 @@
queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus());
queryWrapper.eq(pageWrap.getModel().getIsdeleted()==null,Goodsorder::getIsdeleted,Constants.ZERO);
- queryWrapper.eq(pageWrap.getModel().getIsdeleted()!=null,Goodsorder::getIsdeleted,pageWrap.getModel().getIsdeleted());
queryWrapper.orderByDesc(Goodsorder::getCreateDate);
IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
@@ -485,6 +495,82 @@
model.setGoodsorderDetailList(goodsorderDetailList);
}
return PageData.from(result);
+ }
+ @Override
+ public PageData<Goodsorder> findPageShop(PageWrap<Goodsorder> pageWrap) {
+ IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+
+ queryWrapper.selectAll(Goodsorder.class)
+ .eq(pageWrap.getModel().getDistributionShopId()!=null,Goodsorder::getDistributionShopId,pageWrap.getModel().getDistributionShopId())
+ .eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus())
+ .eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode())
+ .ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime())
+ .le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime())
+ .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+ .exists(StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),
+ "select d.id from goodsorder_detail d where d.isdeleted=0 and d.order_id=t.id and (d.goods_sku_id ='"+pageWrap.getModel().getGoodsName()+"' or d.name like '%"+pageWrap.getModel().getGoodsName()+"%')")
+ .orderByDesc(Goodsorder::getCreateDate);
+ IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
+ PageData<Goodsorder> rr = PageData.from(result);
+ if(result!=null && result.getRecords().size()>0) {
+ List<Integer> idList = new ArrayList<>();
+ for(Goodsorder model:result.getRecords()){
+ idList.add(model.getId());
+ }
+ MPJLambdaWrapper<GoodsorderDetail> queryGoods = new MPJLambdaWrapper<>();
+ queryGoods.selectAll(GoodsorderDetail.class);
+ queryGoods.in(GoodsorderDetail::getOrderId,idList);
+ queryGoods.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
+ queryGoods.and( StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),w ->{
+ w.like(GoodsorderDetail::getName,pageWrap.getModel().getGoodsName() ).or().eq(GoodsorderDetail::getGoodsSkuId,pageWrap.getModel().getGoodsName());
+ } );
+ List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
+ for(Goodsorder model:result.getRecords()){
+ model.setGoodsorderDetailList(getDetailListById(goodsorderDetailList,model.getId()));
+ }
+ if(pageWrap.getPage() == 1 && pageWrap.getModel().getDistributionShopId()!=null){
+ //濡傛灉鏌ヨ绗竴椤碉紝鍋氱粡閿�鍟嗛攢鍞俊鎭粺璁′笟鍔℃煡璇�
+ Goodsorder count = new Goodsorder();
+ count.setOrderCount(rr.getTotal());
+ List<GoodsorderDetail> list = goodsorderDetailJoinMapper.selectJoinList(GoodsorderDetail.class,new MPJLambdaWrapper<GoodsorderDetail>()
+ .selectAll(GoodsorderDetail.class)
+ .leftJoin(Goodsorder.class,Goodsorder::getId,GoodsorderDetail::getOrderId)
+ .eq(pageWrap.getModel().getDistributionShopId()!=null,Goodsorder::getDistributionShopId,pageWrap.getModel().getDistributionShopId())
+ .eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus())
+ .and( StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),w ->{
+ w.like(GoodsorderDetail::getName,pageWrap.getModel().getGoodsName() ).or().eq(GoodsorderDetail::getGoodsSkuId,pageWrap.getModel().getGoodsName());
+ } )
+ .eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode())
+ .ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime())
+ .le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime())
+ .eq(Goodsorder::getIsdeleted,Constants.ZERO));
+ if(list!=null && list.size()>0){
+ //鍟嗗搧鎬婚噺
+ for (GoodsorderDetail d : list){
+ count.setGoodsNum(Constants.formatIntegerNum(count.getGoodsNum()) + Constants.formatIntegerNum(d.getGoodsNum()));
+ count.setOrderMoneyCount(Constants.formatBigdecimal(count.getOrderMoneyCount())
+ .add(Constants.formatBigdecimal(d.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(d.getGoodsNum())))));
+ }
+ }
+ rr.setCountData(count);
+ }
+ }
+
+
+
+ return rr;
+ }
+
+ private List<GoodsorderDetail> getDetailListById(List<GoodsorderDetail> goodsorderDetailList, Integer id) {
+ List<GoodsorderDetail> list = new ArrayList<>();
+ for(GoodsorderDetail d : goodsorderDetailList){
+ if(Constants.equalsInteger(id,d.getOrderId())){
+ list.add(d);
+ }
+ }
+ return list;
}
@@ -794,8 +880,7 @@
goodsorder.setPrice(orderPayConfirmResponse.getPayAmount());
goodsorder.setTotalPrice(orderPayConfirmResponse.getAmount());
goodsorder.setUseIntegral(orderPayConfirmResponse.getDeductIntegral());
- goodsorder.setIntegral(goodsorder.getUseIntegral());
- goodsorder.setIntegralPrice(orderPayConfirmResponse.getIntegralAmount());
+ goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount());
goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount());
goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE);
if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
@@ -808,6 +893,8 @@
.eq(MemberCoupon::getId,orderPayConfirmResponse.getMemberCoupon().getId())
);
}
+ goodsorder.setReturnCustomerIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ONE));
+ goodsorder.setReturnMemberIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ZERO));
goodsorderMapper.insert(goodsorder);
List<OrderGoodsCalculateResponse> goodsCalculateList = orderPayConfirmResponse.getGoodsCalculateList();
if(CollectionUtils.isEmpty(goodsCalculateList)){
@@ -1064,7 +1151,6 @@
member.setImgFullUrl(memberfullUrl + member.getImgurl());
memberOrderResponse.setMember(member);
}
-
return memberOrderResponse;
}
@@ -1384,14 +1470,44 @@
//閭垂閲戦
if(Objects.nonNull(request.getReceiveType())){
if(Constants.equalsInteger(request.getReceiveType(),Constants.ZERO)){
- //TODO 鏍规嵁鏀惰揣鍦板潃 鏌ヨ杩愯垂閰嶇疆
+ MailConfigResponse mailConfigResponse = systemDictDataBiz.getMailConfig();
+ if(Objects.nonNull(request.getAddressId())){
+ Addr addr = addrMapper.selectById(request.getAddressId());
+ if(Objects.isNull(addr)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏀惰揣鍦板潃淇℃伅");
+ }
+ Areas areas = areasMapper.selectOne(new QueryWrapper<Areas>().lambda()
+ .eq(Areas::getIsdeleted,Constants.ZERO)
+ .eq(Areas::getId,StringUtils.leftPad(addr.getAreaId().toString().substring(0,2),6,"0"))
+ .isNotNull(Areas::getYunFeeId)
+ .last(" limit 1 ")
+ );
+ if(Objects.nonNull(areas)){
+ Labels labels = labelsMapper.selectById(areas.getYunFeeId());
+ if(Objects.nonNull(labels)&&StringUtils.isNotBlank(labels.getParam())){
+ //{weight0:10,fee0:10,weight1:10,fee1:10},{棣栭噸:10,棣栭噸杩愯垂锛�10,缁噸锛�10,缁噸璐癸細10}
+ mailConfigResponse = JSONObject.parseObject(labels.getParam(),MailConfigResponse.class);
+ }
+ }
+ }
+ //鏍规嵁鏀惰揣鍦板潃 鏌ヨ杩愯垂閰嶇疆
//璁$畻鍟嗗搧淇℃伅鎬婚噸閲�
BigDecimal totalWeight = goodsCalculateList.stream().map(i->
i.getWeight().multiply(new BigDecimal(i.getGoodsNum().toString()))
).reduce(BigDecimal.ZERO,BigDecimal::add);
- //TODO 鏆傛椂鏃犺繍璐归噾棰�
- mailAmount = BigDecimal.ZERO;
-
+ if(totalWeight.compareTo(mailConfigResponse.getWeight0())>=Constants.ZERO){
+ mailAmount = mailConfigResponse.getFee0();
+ }else{
+ //瓒呴噸閲嶉噺
+ BigDecimal overWeight = totalWeight.subtract(mailConfigResponse.getWeight0());
+ if (overWeight.compareTo(mailConfigResponse.getWeight1()) >= Constants.ZERO) {
+ mailAmount = mailConfigResponse.getFee0().add(
+ mailConfigResponse.getFee1()
+ .multiply(overWeight.divide(mailConfigResponse.getWeight1(),2,RoundingMode.HALF_UP)));
+ }else{
+ mailAmount = mailConfigResponse.getFee0().add(mailConfigResponse.getFee1());
+ }
+ }
amount = amount.add(mailAmount);
}
}
--
Gitblit v1.9.3