Browse Source

对接拼团数据1

master
wangfukang 1 month ago
parent
commit
8352deccd9
  1. 2
      hiver-admin/src/main/resources/application.yml
  2. 16
      hiver-admin/test-output/test-report.html
  3. 5
      hiver-core/src/main/java/cc/hiver/core/common/constant/SettingConstant.java
  4. 2
      hiver-core/src/main/java/cc/hiver/core/dao/UserDao.java
  5. 21
      hiver-core/src/main/java/cc/hiver/core/vo/AppUpdateSetting.java
  6. 52
      hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/SettingController.java
  7. 43
      hiver-modules/hiver-file/src/main/java/cc/hiver/file/controller/UploadController.java
  8. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java
  9. 35
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderServiceImpl.java
  10. 68
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallRefundRecordServiceImpl.java
  11. 6
      hiver-modules/hiver-mall/src/main/resources/mapper/MallDeliveryOrderMapper.xml

2
hiver-admin/src/main/resources/application.yml

@ -367,6 +367,8 @@ ignored:
- /hiver/social/**
- /hiver/ws/**
- /hiver/setting/notice
- /hiver/setting/app-update/latest
- /hiver/setting/app-update/download
- /hiver/common/**
- /druid/**
- /doc.html

16
hiver-admin/test-output/test-report.html

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">八月 11, 2026 15:27:11</span></a>
<a href="#"><span class="badge badge-primary">八月 13, 2026 11:52:38</span></a>
</li>
</ul>
</div>
@ -84,7 +84,7 @@
<div class="test-detail">
<span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p>
<p class="text-sm"><span>15:27:11 下</span> / <span>0.038 secs</span></p>
<p class="text-sm"><span>11:52:38 上</span> / <span>0.033 secs</span></p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
@ -92,9 +92,9 @@
<div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>08.11.2026 15:27:11</span>
<span class='badge badge-danger'>08.11.2026 15:27:11</span>
<span class='badge badge-default'>0.038 secs</span>
<span class='badge badge-success'>08.13.2026 11:52:38</span>
<span class='badge badge-danger'>08.13.2026 11:52:39</span>
<span class='badge badge-default'>0.033 secs</span>
</div>
<div class="m-t-10 m-l-5"></div>
</div>
@ -104,7 +104,7 @@
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>15:27:11</td>
<td>11:52:39</td>
<td>
Test passed
</td>
@ -128,13 +128,13 @@
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>八月 11, 2026 15:27:11</h3>
<h3>八月 13, 2026 11:52:38</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>八月 11, 2026 15:27:11</h3>
<h3>八月 13, 2026 11:52:39</h3>
</div></div>
</div>
<div class="col-md-3">

5
hiver-core/src/main/java/cc/hiver/core/common/constant/SettingConstant.java

@ -138,4 +138,9 @@ public interface SettingConstant {
* 公告配置
*/
String NOTICE_SETTING = "NOTICE_SETTING";
/**
* APP热更新配置
*/
String APP_UPDATE_SETTING = "APP_UPDATE_SETTING";
}

2
hiver-core/src/main/java/cc/hiver/core/dao/UserDao.java

@ -45,7 +45,7 @@ public interface UserDao extends HiverBaseDao<User, String> {
* @param mobile
* @return
*/
@Query("select u from User u where u.mobile = ?1 and u.type = ?2 ")
@Query("select u from User u where u.mobile = ?1 and u.type like %?2% ")
User findByMobile(String mobile,String type);
/**

21
hiver-core/src/main/java/cc/hiver/core/vo/AppUpdateSetting.java

@ -0,0 +1,21 @@
package cc.hiver.core.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* APP热更新配置
*/
@Data
public class AppUpdateSetting implements Serializable {
@ApiModelProperty(value = "版本号")
private String version;
@ApiModelProperty(value = "wgt包下载地址")
private String url;
@ApiModelProperty(value = "文件名")
private String fileName;
}

52
hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/SettingController.java

@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -173,6 +175,35 @@ public class SettingController {
return new ResultUtil<NoticeSetting>().setData(noticeSetting);
}
@RequestMapping(value = "/app-update", method = RequestMethod.GET)
@ApiOperation(value = "查看APP热更新配置")
public Result<AppUpdateSetting> appUpdate() {
AppUpdateSetting appUpdateSetting = getAppUpdateSetting();
return new ResultUtil<AppUpdateSetting>().setData(appUpdateSetting);
}
@RequestMapping(value = "/app-update/latest", method = RequestMethod.GET)
@ApiOperation(value = "查看APP最新版本")
public Result<AppUpdateSetting> appUpdateLatest() {
AppUpdateSetting appUpdateSetting = getAppUpdateSetting();
if (appUpdateSetting == null || StrUtil.isBlank(appUpdateSetting.getVersion())
|| StrUtil.isBlank(appUpdateSetting.getUrl())) {
return new ResultUtil<AppUpdateSetting>().setData(null);
}
return new ResultUtil<AppUpdateSetting>().setData(appUpdateSetting);
}
@RequestMapping(value = "/app-update/download", method = RequestMethod.GET)
@ApiOperation(value = "下载APP热更新包")
public void appUpdateDownload(HttpServletResponse response) throws IOException {
AppUpdateSetting appUpdateSetting = getAppUpdateSetting();
if (appUpdateSetting == null || StrUtil.isBlank(appUpdateSetting.getUrl())) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, "APP热更新包不存在");
return;
}
response.sendRedirect(appUpdateSetting.getUrl());
}
@RequestMapping(value = "/oss/set", method = RequestMethod.POST)
@ApiOperation(value = "OSS配置")
public Result ossSet(OssSetting ossSetting) {
@ -266,4 +297,25 @@ public class SettingController {
settingService.saveOrUpdate(setting);
return ResultUtil.data(null);
}
@RequestMapping(value = "/app-update/set", method = RequestMethod.POST)
@ApiOperation(value = "APP热更新配置")
public Result appUpdateSet(AppUpdateSetting appUpdateSetting) {
if (appUpdateSetting == null || StrUtil.isBlank(appUpdateSetting.getVersion())
|| StrUtil.isBlank(appUpdateSetting.getUrl())) {
return ResultUtil.error("版本号和wgt包地址不能为空");
}
Setting setting = settingService.get(SettingConstant.APP_UPDATE_SETTING);
setting.setValue(new Gson().toJson(appUpdateSetting));
settingService.saveOrUpdate(setting);
return ResultUtil.data(null);
}
private AppUpdateSetting getAppUpdateSetting() {
Setting setting = settingService.get(SettingConstant.APP_UPDATE_SETTING);
if (setting == null || StrUtil.isBlank(setting.getValue())) {
return null;
}
return new Gson().fromJson(setting.getValue(), AppUpdateSetting.class);
}
}

43
hiver-modules/hiver-file/src/main/java/cc/hiver/file/controller/UploadController.java

@ -43,6 +43,8 @@ import java.io.InputStream;
@RequestMapping("/hiver/upload")
@Transactional
public class UploadController {
private static final String APP_UPDATE_FILE_KEY = "merchant-app.wgt";
@Value("${hiver.maxUploadFile:50}")
private Long maxUploadFile;
@ -108,6 +110,47 @@ public class UploadController {
return ResultUtil.data(result);
}
@RequestMapping(value = "/app-update", method = RequestMethod.POST)
@ApiOperation(value = "APP热更新包上传")
public Result uploadAppUpdate(@RequestParam(required = false) MultipartFile file,
HttpServletRequest request) {
if (file == null) {
return ResultUtil.error("缺少文件参数");
}
if (file.getSize() > maxUploadFile * 1024 * 1024) {
return ResultUtil.error("文件大小过大,不能超过" + maxUploadFile + "MB");
}
String originalFilename = file.getOriginalFilename();
if (StrUtil.isBlank(originalFilename) || !originalFilename.toLowerCase().endsWith(".wgt")) {
return ResultUtil.error("只能上传wgt格式的热更新包");
}
Setting setting = settingService.get(SettingConstant.OSS_USED);
if (setting == null || StrUtil.isBlank(setting.getValue())) {
return ResultUtil.error(501, "您还未配置OSS存储服务");
}
Boolean token = redisRaterLimiter.acquireByRedis("uploadAppUpdate:" + ipInfoUtil.getIpAddr(request), 50L, 1000L);
if (!token) {
throw new LimitException("上传那么多干嘛,等等再传吧");
}
String result = "";
File f = new File();
try {
InputStream inputStream = file.getInputStream();
result = fileManageFactory.getFileManage(null).inputStreamUpload(inputStream, APP_UPDATE_FILE_KEY, file);
f.setLocation(getType(setting.getValue())).setTitle(originalFilename).setSize(file.getSize())
.setType(file.getContentType()).setFKey(APP_UPDATE_FILE_KEY).setUrl(result).setCategoryId("app-update");
fileService.save(f);
} catch (Exception e) {
log.error(e.toString());
return ResultUtil.error(e.toString());
}
if (setting.getValue().equals(SettingConstant.LOCAL_OSS)) {
OssSetting os = new Gson().fromJson(settingService.get(SettingConstant.LOCAL_OSS).getValue(), OssSetting.class);
result = os.getHttp() + os.getEndpoint() + "/" + f.getId();
}
return ResultUtil.data(result);
}
public Integer getType(String type) {
switch (type) {
case SettingConstant.QINIU_OSS:

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java

@ -1300,7 +1300,7 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM
marketplaceFee = BigDecimal.ZERO;
delivery.setDeliveryFeeMarketplace(marketplaceFee);
shouldUpdateMarketplaceFee = true;
} else if(order != null && Integer.valueOf(1).equals(order.getOrderType()) && order.getOtherOrder() == null && (delivery.getDeliveryFeeMarketplace() == null || delivery.getDeliveryFeeMarketplace().compareTo(BigDecimal.ZERO) == 0)){
} else if(order != null && Integer.valueOf(1).equals(order.getOrderType()) && order.getShopDelivery() != 1 && order.getOtherOrder() == null && (delivery.getDeliveryFeeMarketplace() == null || delivery.getDeliveryFeeMarketplace().compareTo(BigDecimal.ZERO) == 0)){
BigDecimal goodsAmount = order.getGoodsAmount() == null ? BigDecimal.ZERO : order.getGoodsAmount();
marketplaceFee = goodsAmount
.multiply(new BigDecimal("0.02"))

35
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderServiceImpl.java

@ -2243,7 +2243,7 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
delivery.setWorkerId(dto.getWorkerParam().getWorkerId());
delivery.setWorkerPhone(dto.getWorkerParam().getWorkerPhone());
delivery.setWorkerName(dto.getWorkerParam().getWorkerName());
if (order.getOrderType() == ORDER_TYPE_NORMAL) {
if (order.getOrderType() == ORDER_TYPE_NORMAL && order.getShopDelivery() != 1) {
BigDecimal bonus = order.getGoodsAmount()
.multiply(new BigDecimal("0.02"))
.setScale(2, RoundingMode.DOWN);
@ -2459,6 +2459,14 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
return order == null ? BigDecimal.ZERO : safeAmount(order.getDeliveryFee());
}
private BigDecimal deliveryMarketplaceAmount(MallDeliveryOrder delivery) {
return delivery == null ? BigDecimal.ZERO : safeAmount(delivery.getDeliveryFeeMarketplace());
}
private BigDecimal workerDeliverySettlementAmount(MallOrder order, MallDeliveryOrder delivery) {
return deliveryAmount(order).add(deliveryMarketplaceAmount(delivery)).setScale(2, RoundingMode.UP);
}
private boolean isRunnerOrder(MallOrder order) {
return order != null && Integer.valueOf(1).equals(order.getOtherOrder());
}
@ -2469,6 +2477,15 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
&& Integer.valueOf(DELIVERY_TYPE_EXPRESS).equals(order.getDeliveryType());
}
private MallDeliveryOrder getDeliveryOrder(MallOrder order) {
if (order == null) {
return null;
}
return Integer.valueOf(ORDER_TYPE_FACETOFACE).equals(order.getOrderType())
? mallDeliveryOrderMapper.selectByGroupId(order.getId())
: findDeliveryByOrderId(order.getId());
}
private boolean shouldMerchantBearDeliveryFeeForRefund(MallOrder order) {
if (!isMerchantDeliveryOrder(order)) {
return false;
@ -2476,9 +2493,7 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
if (Integer.valueOf(STATUS_DELIVERING).equals(order.getStatus())) {
return true;
}
MallDeliveryOrder delivery = Integer.valueOf(ORDER_TYPE_FACETOFACE).equals(order.getOrderType())
? mallDeliveryOrderMapper.selectByGroupId(order.getId())
: findDeliveryByOrderId(order.getId());
MallDeliveryOrder delivery = getDeliveryOrder(order);
return delivery != null
&& delivery.getStatus() != null
&& Integer.valueOf(2).equals(delivery.getStatus());
@ -2579,8 +2594,9 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
if(refundType == 3){
if(refundTypeStatus == 1){
if (isRunnerOrder(order)) {
MallDeliveryOrder delivery = getDeliveryOrder(order);
record.setLinkId(workerId);
record.setSettlementAmount(deliveryAmount(order));
record.setSettlementAmount(workerDeliverySettlementAmount(order, delivery));
} else {
record.setLinkId(order.getShopId());
record.setSettlementAmount(merchantFullRefundSettlementAmount(order));
@ -2600,8 +2616,9 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
}
}else if(refundTypeStatus == 2){
record.setLinkId(workerId);
MallDeliveryOrder delivery = isRunnerOrder(order) ? getDeliveryOrder(order) : null;
record.setSettlementAmount(isRunnerOrder(order)
? deliveryAmount(order)
? workerDeliverySettlementAmount(order, delivery)
: calculateMerchantNetSettlement(order));
/*if(ratio != null){
record.setRefundAmount(record.getRefundAmount()
@ -2618,8 +2635,9 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
}
}else if(refundTypeStatus == 3){
if (!isMerchantDeliveryOrder(order)) {
MallDeliveryOrder delivery = isRunnerOrder(order) ? getDeliveryOrder(order) : null;
record.setLinkId(isRunnerOrder(order) ? workerId : order.getShopId());
record.setSettlementAmount(isRunnerOrder(order) ? deliveryAmount(order) : goodsPackageAmount(order));
record.setSettlementAmount(isRunnerOrder(order) ? workerDeliverySettlementAmount(order, delivery) : goodsPackageAmount(order));
mallRefundRecordMapper.insert(record);
refundOrderCacheUtil.put(record.getLinkId(),record);
orderAsyncProducer.sendRefundDelayMessage(record.getId(), order.getId());
@ -2653,7 +2671,8 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
MallRefundRecord mallRefundRecord1 = copyRefundRecord(record);
mallRefundRecord1.setId(SnowFlakeUtil.nextId().toString());
mallRefundRecord1.setLinkId(workerId);
mallRefundRecord1.setSettlementAmount(deliveryAmount(order));
MallDeliveryOrder delivery = getDeliveryOrder(order);
mallRefundRecord1.setSettlementAmount(workerDeliverySettlementAmount(order, delivery));
if(ratio != null && ratio.compareTo(BigDecimal.ZERO) > 0){
mallRefundRecord1.setRefundAmount(order.getTotalAmount().subtract(shopRefund));
}else{

68
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallRefundRecordServiceImpl.java

@ -138,17 +138,32 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
return amount == null ? BigDecimal.ZERO : amount;
}
private boolean shouldIncludePackageFee(MallOrder order) {
return order == null
|| !Integer.valueOf(DELIVERY_TYPE_SELF).equals(order.getDeliveryType())
|| !Integer.valueOf(0).equals(order.getIsPack());
}
private BigDecimal goodsPackageAmount(MallOrder order) {
if (order == null) {
return BigDecimal.ZERO;
}
return safeAmount(order.getGoodsAmount()).add(safeAmount(order.getPackageFee()));
BigDecimal packageFee = shouldIncludePackageFee(order) ? safeAmount(order.getPackageFee()) : BigDecimal.ZERO;
return safeAmount(order.getGoodsAmount()).add(packageFee);
}
private BigDecimal deliveryAmount(MallOrder order) {
return order == null ? BigDecimal.ZERO : safeAmount(order.getDeliveryFee());
}
private BigDecimal deliveryMarketplaceAmount(MallDeliveryOrder delivery) {
return delivery == null ? BigDecimal.ZERO : safeAmount(delivery.getDeliveryFeeMarketplace());
}
private BigDecimal workerDeliverySettlementAmount(MallOrder order, MallDeliveryOrder delivery) {
return deliveryAmount(order).add(deliveryMarketplaceAmount(delivery)).setScale(2, RoundingMode.UP);
}
private boolean isRunnerOrder(MallOrder order) {
return order != null && Integer.valueOf(1).equals(order.getOtherOrder());
}
@ -211,10 +226,11 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
.setScale(2, RoundingMode.HALF_UP);
}
private BigDecimal workerFullAfterSaleSettlementAmount(MallOrder order) {
private BigDecimal workerFullAfterSaleSettlementAmount(MallOrder order, MallDeliveryOrder delivery) {
BigDecimal deliverySettlementAmount = workerDeliverySettlementAmount(order, delivery);
return isRunnerOrder(order)
? deliveryAmount(order)
: merchantNetSettlementAmount(order).add(deliveryAmount(order));
? deliverySettlementAmount
: merchantNetSettlementAmount(order).add(deliverySettlementAmount).setScale(2, RoundingMode.UP);
}
private boolean merchantRecordIncludesDeliveryFee(MallOrder order, MallRefundRecord refundRecord) {
@ -228,15 +244,20 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
return amount.compareTo(goodsPackageAmount(order)) > 0;
}
private BigDecimal selectedGoodsPackageAmount(MallRefundRecord refundRecord) {
private BigDecimal selectedGoodsPackageAmount(MallOrder order, MallRefundRecord refundRecord) {
boolean includePackageFee = shouldIncludePackageFee(order);
if (refundRecord == null || refundRecord.getItems() == null || refundRecord.getItems().isEmpty()) {
BigDecimal packageFee = includePackageFee
? safeAmount(refundRecord == null ? null : refundRecord.getPackageFee())
: BigDecimal.ZERO;
return safeAmount(refundRecord == null ? null : refundRecord.getGoodsAmount())
.add(safeAmount(refundRecord == null ? null : refundRecord.getPackageFee()));
.add(packageFee);
}
BigDecimal amount = BigDecimal.ZERO;
for (MallReturnOrderGoods item : refundRecord.getItems()) {
BigDecimal quantity = item.getQuantity() == null ? BigDecimal.ZERO : new BigDecimal(item.getQuantity());
amount = amount.add(safeAmount(item.getPrice()).add(safeAmount(item.getPackageFee())).multiply(quantity));
BigDecimal packageFee = includePackageFee ? safeAmount(item.getPackageFee()) : BigDecimal.ZERO;
amount = amount.add(safeAmount(item.getPrice()).add(packageFee).multiply(quantity));
}
return amount.setScale(2, RoundingMode.HALF_UP);
}
@ -379,7 +400,7 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
if(mallRefundRecord.getRefundType() == 1){
// 退商品,和商家有关联
mallRefundRecord.setLinkId(mallRefundRecord.getShopId());
mallRefundRecord.setSettlementAmount(selectedGoodsPackageAmount(mallRefundRecord));
mallRefundRecord.setSettlementAmount(selectedGoodsPackageAmount(order, mallRefundRecord));
/*if(ratio != null && ratio.compareTo(BigDecimal.ZERO) > 0){
mallRefundRecord.setRefundAmount(mallRefundRecord.getRefundAmount()
.subtract(mallRefundRecord.getRefundAmount().multiply(ratio)).setScale(2, RoundingMode.UP));
@ -399,8 +420,9 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
sendShopAfterSaleNotice(order);
}else if(mallRefundRecord.getRefundType() == 2){
// 退配送费和配送员有关联
MallDeliveryOrder delivery = getDeliveryOrder(order);
mallRefundRecord.setLinkId(mallRefundRecord.getWorkerId());
mallRefundRecord.setSettlementAmount(deliveryAmount(order));
mallRefundRecord.setSettlementAmount(workerDeliverySettlementAmount(order, delivery));
/*if(ratio != null && ratio.compareTo(BigDecimal.ZERO) > 0){
mallRefundRecord.setRefundAmount(mallRefundRecord.getRefundAmount()
.subtract(mallRefundRecord.getRefundAmount().multiply(ratio)).setScale(2, RoundingMode.UP));
@ -414,14 +436,15 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
refundOrderCacheUtil.put(mallRefundRecord.getLinkId(),mallRefundRecord);
//发送1小时延时MQ:超时未处理则自动同意
orderAsyncProducer.sendRefundDelayMessage(mallRefundRecord.getId(), mallRefundRecord.getOrderId());
sendWorkerAfterSaleSms(mallRefundRecord,order);
sendWorkerAfterSaleSms(mallRefundRecord,order,delivery);
}else if(mallRefundRecord.getRefundType() == 3){
// 全额退款
if(mallRefundRecord.getRefundTypeStatus() == 1){
//和商家有关联
if (isRunnerOrder(order)) {
MallDeliveryOrder delivery = getDeliveryOrder(order);
mallRefundRecord.setLinkId(mallRefundRecord.getWorkerId());
mallRefundRecord.setSettlementAmount(deliveryAmount(order));
mallRefundRecord.setSettlementAmount(workerDeliverySettlementAmount(order, delivery));
} else {
mallRefundRecord.setLinkId(mallRefundRecord.getShopId());
mallRefundRecord.setSettlementAmount(merchantFullAfterSaleSettlementAmount(order));
@ -438,23 +461,25 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
}
}else if(mallRefundRecord.getRefundTypeStatus() == 2){
//和配送员有关联
MallDeliveryOrder delivery = getDeliveryOrder(order);
mallRefundRecord.setLinkId(mallRefundRecord.getWorkerId());
mallRefundRecord.setSettlementAmount(workerFullAfterSaleSettlementAmount(order));
mallRefundRecord.setSettlementAmount(workerFullAfterSaleSettlementAmount(order, delivery));
mallRefundRecordMapper.insert(mallRefundRecord);
//售后放到缓存
refundOrderCacheUtil.put(mallRefundRecord.getLinkId(),mallRefundRecord);
//发送1小时延时MQ:超时未处理则自动同意
orderAsyncProducer.sendRefundDelayMessage(mallRefundRecord.getId(), mallRefundRecord.getOrderId());
sendWorkerAfterSaleSms(mallRefundRecord,order);
sendWorkerAfterSaleSms(mallRefundRecord,order,delivery);
}else if(mallRefundRecord.getRefundTypeStatus() == 3){
if (!isMerchantDeliveryOrder(order)) {
MallDeliveryOrder delivery = isRunnerOrder(order) ? getDeliveryOrder(order) : null;
mallRefundRecord.setLinkId(isRunnerOrder(order) ? mallRefundRecord.getWorkerId() : mallRefundRecord.getShopId());
mallRefundRecord.setSettlementAmount(isRunnerOrder(order) ? deliveryAmount(order) : goodsPackageAmount(order));
mallRefundRecord.setSettlementAmount(isRunnerOrder(order) ? workerDeliverySettlementAmount(order, delivery) : goodsPackageAmount(order));
mallRefundRecordMapper.insert(mallRefundRecord);
refundOrderCacheUtil.put(mallRefundRecord.getLinkId(),mallRefundRecord);
orderAsyncProducer.sendRefundDelayMessage(mallRefundRecord.getId(), mallRefundRecord.getOrderId());
if (isRunnerOrder(order)) {
sendWorkerAfterSaleSms(mallRefundRecord,order);
sendWorkerAfterSaleSms(mallRefundRecord,order,delivery);
} else {
sendShopAfterSaleNotice(order);
}
@ -478,7 +503,8 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
MallRefundRecord mallRefundRecord1 = copyRefundRecord(mallRefundRecord);
mallRefundRecord1.setId(SnowFlakeUtil.nextId().toString());
mallRefundRecord1.setLinkId(mallRefundRecord.getWorkerId());
mallRefundRecord1.setSettlementAmount(deliveryAmount(order));
MallDeliveryOrder delivery = getDeliveryOrder(order);
mallRefundRecord1.setSettlementAmount(workerDeliverySettlementAmount(order, delivery));
mallRefundRecord1.setRefundAmount(mallRefundRecord.getDeliveryFee());
if(ratio != null && ratio.compareTo(BigDecimal.ZERO) > 0){
mallRefundRecord1.setRefundAmount(order.getTotalAmount().subtract(shopRefund));
@ -488,7 +514,7 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
refundOrderCacheUtil.put(mallRefundRecord1.getLinkId(),mallRefundRecord1);
//发送1小时延时MQ:超时未处理则自动同意(配送员侧)
orderAsyncProducer.sendRefundDelayMessage(mallRefundRecord1.getId(), mallRefundRecord1.getOrderId());
sendWorkerAfterSaleSms(mallRefundRecord1,order);
sendWorkerAfterSaleSms(mallRefundRecord1,order,delivery);
}
}
}
@ -946,13 +972,19 @@ public class MallRefundRecordServiceImpl extends ServiceImpl<MallRefundRecordMap
}
private void sendWorkerAfterSaleSms(MallRefundRecord mallRefundRecord, MallOrder order) {
sendWorkerAfterSaleSms(mallRefundRecord, order, null);
}
private void sendWorkerAfterSaleSms(MallRefundRecord mallRefundRecord, MallOrder order, MallDeliveryOrder delivery) {
if (mallRefundRecord == null) {
return;
}
try {
MallDeliveryOrder delivery = order.getOrderType() == STATUS_WAIT_PICKUP
if (delivery == null) {
delivery = order.getOrderType() == STATUS_WAIT_PICKUP
? mallDeliveryOrderMapper.selectByGroupId(mallRefundRecord.getOrderId())
: findDeliveryByOrderId(order.getId());
}
if (delivery != null && delivery.getWorkerPhone() != null && !"".equals(delivery.getWorkerPhone())) {
smsUtil.sendCode(delivery.getWorkerPhone(), null, SettingConstant.SMS_TYPE.SMS_REFUNDWORKER.name());
recordSmsBilling(delivery.getRegionId(), SettingConstant.SMS_TYPE.SMS_REFUNDWORKER.name(),

6
hiver-modules/hiver-mall/src/main/resources/mapper/MallDeliveryOrderMapper.xml

@ -110,13 +110,13 @@
)
</if>
<if test="q.transferDelivery != null">
AND d.transfer_delivery = #{q.transferDelivery}
AND d.transfer_delivery = #{q.transferDelivery} and d.status not in (-1,4)
</if>
<if test="q.transferArriveEmpty != null and q.transferArriveEmpty == true">
AND d.transfer_arrive_time IS NULL
AND d.transfer_arrive_time IS NULL and d.status not in (-1,4)
</if>
<if test="q.transferArriveEmpty != null and q.transferArriveEmpty == false">
AND d.transfer_arrive_time IS NOT NULL
AND d.transfer_arrive_time IS NOT NULL and d.status not in (-1,4)
</if>
</where>
ORDER BY

Loading…
Cancel
Save