更换 redis 版本为 7

This commit is contained in:
Jack 2025-07-24 00:41:13 +08:00
parent 1c5b4648f5
commit 97f8282494
15 changed files with 310 additions and 142 deletions

View File

@ -24,10 +24,12 @@
<artifactId>spring-boot-starter-web</artifactId>
<optional>true</optional> <!-- 设为可选依赖 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>

View File

@ -69,8 +69,16 @@ public class CommonConstant {
/**
* 推送消息类别Contract-商家入驻合同orderList-商家订单列表orderDetail-商家订单详情
* * mchContract-商家入驻合同
* * mchOrderDetail-商家订单详情
* * mchOnLineOrderList-商家进行中订单列表
* * mchAbnormalOrderList-商家异常订单列表
* * mchRetrunOrderList-商家退款订单列表
*/
public static final String PUSH_MSG_CATE_EC = "mchContract";
public static final String PUSH_MSG_CATE_ORDER_LIST = "mchOrderList";
public static final String PUSH_MSG_CATE_ORDER_DETAIL = "mchOrderDetail";
public static final String PUSH_MSG_CATE_MCH_ORDER_DETAIL = "mchOrderDetail";
public static final String PUSH_MSG_CATE_MCH_ONLINE_ORDER_LIST = "mchOnLineOrderList";
public static final String PUSH_MSG_CATE_MCH_ABNORMAL_ORDER_LIST = "mchAbnormalOrderList";
public static final String PUSH_MSG_CATE_MCH_RETURN_ORDER_LIST = "mchRetrunOrderList";
}

View File

@ -1,6 +1,7 @@
package com.suisung.mall.shop.order.controller.admin;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -11,6 +12,7 @@ import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.order.*;
import com.suisung.mall.common.modules.order.dto.MchOrderInfoDTO;
import com.suisung.mall.common.service.impl.BaseControllerImpl;
import com.suisung.mall.common.utils.CheckUtil;
import com.suisung.mall.common.utils.I18nUtil;
@ -40,6 +42,8 @@ import java.util.stream.Collectors;
@Slf4j
public class ShopOrderBaseController extends BaseControllerImpl {
private static final long mchOrderExpireSeconds = 1500; // 25分钟超时60秒*25分钟 = 1500秒
@Autowired
private ShopOrderBaseService shopOrderBaseService;
@ -296,7 +300,7 @@ public class ShopOrderBaseController extends BaseControllerImpl {
// 商家版接口 开始
@ApiOperation(value = "查询移动商家端订单数据(新)", notes = "查询移动商家端订单数据(新)")
@ApiOperation(value = "查询商家端订单分页数据(新)", notes = "查询商家端订单分页数据(新)")
@RequestMapping(value = "/mch/order/list", method = RequestMethod.POST)
public CommonResult selectMchOrderPageList(@RequestBody JSONObject params) {
// === 用户验证 ===
@ -321,14 +325,13 @@ public class ShopOrderBaseController extends BaseControllerImpl {
// === 构建响应数据 ===
Map<String, Object> respMap = new HashMap<>();
// 订单列表数据缓存时间25分钟
long expireSeconds = 1500L;// 60秒*25分钟 = 1500秒
respMap.put("order_page_list", shopOrderBaseService.selectMchOrderPageList(
storeId,
params.getStr("keyword"),
params.getInt("delivery"),
params.getInt("status"),
params.getInt("logistics_status"),
expireSeconds,
mchOrderExpireSeconds,
params.getLong("begin_time"),
params.getLong("end_time"),
params.getInt("pageNum"),
@ -336,11 +339,51 @@ public class ShopOrderBaseController extends BaseControllerImpl {
));
// 订单数量统计
respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId, expireSeconds, params.getLong("begin_time"), params.getLong("end_time")));
respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId, mchOrderExpireSeconds, params.getLong("begin_time"), params.getLong("end_time")));
return CommonResult.success(respMap);
}
@ApiOperation(value = "获取商家端订单详情数据(新)", notes = "获取商家端订单详情数据(新)")
@PostMapping(value = "/mch/order/detail")
public CommonResult getMchOrderDetail(@RequestBody JSONObject params) {
try {
// 1. 参数校验
String orderId = params.getStr("orderId");
if (StrUtil.isBlank(orderId)) {
log.warn("订单ID不能为空");
return CommonResult.failed(ResultCode.VALIDATE_FAILED);
}
// 2. 获取订单详情
MchOrderInfoDTO mchOrderInfoDTO = shopOrderBaseService.getMchOrderDetail(orderId, mchOrderExpireSeconds);
if (mchOrderInfoDTO == null) {
log.info("未查询到订单ID:{}的详情", orderId);
return CommonResult.success(null);
}
// 3. 用户认证
UserDto userDto = getCurrentUser();
if (userDto == null) {
log.warn("未获取到当前用户信息");
return CommonResult.failed(ResultCode.NEED_LOGIN);
}
// 4. 店铺权限校验
Integer storeId = Convert.toInt(userDto.getStore_id());
if (storeId != null && storeId > 0 && !storeId.equals(mchOrderInfoDTO.getOrder_state_id())) {
log.warn("用户{}无权限访问订单{}", userDto.getId(), orderId);
return CommonResult.failed(ResultCode.FORBIDDEN);
}
// 5. 返回结果
return CommonResult.success(mchOrderInfoDTO);
} catch (Exception e) {
log.error("获取商家端订单详情异常", e);
return CommonResult.failed();
}
}
// 商家版接口 结束

View File

@ -3,11 +3,10 @@ package com.suisung.mall.shop.order.controller.mobile;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiUserException;
import com.suisung.mall.common.modules.order.ShopOrderReturnReason;
import com.suisung.mall.common.service.impl.BaseControllerImpl;
import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.shop.order.service.ShopOrderReturnReasonService;
import com.suisung.mall.shop.order.service.ShopOrderReturnService;
import com.suisung.mall.shop.order.vo.OrderReturnInputVo;
@ -61,6 +60,11 @@ public class UserReturnController extends BaseControllerImpl {
@ApiOperation(value = "添加退款退货-部分退货,卖家也可以决定不退货退款,买家申请退款不支持。卖家可以主动退款。", notes = "添加退款退货-发货退货,卖家也可以决定不退货退款,买家申请退款不支持。卖家可以主动退款。")
@RequestMapping(value = "/addItem", method = RequestMethod.GET)
public CommonResult addItem(OrderReturnVo orderReturnVo) {
UserDto user = getCurrentUser();
if (user == null) {
return CommonResult.failed(ResultCode.NEED_LOGIN);
}
OrderReturnInputVo orderReturnInputVo = BeanUtil.copyProperties(orderReturnVo, OrderReturnInputVo.class);
OrderReturnItemInputVo orderReturnItemInputVo = new OrderReturnItemInputVo();
@ -70,16 +74,15 @@ public class UserReturnController extends BaseControllerImpl {
orderReturnInputVo.getReturn_items().add(orderReturnItemInputVo);
return shopOrderReturnService.addItem(orderReturnInputVo);
return shopOrderReturnService.addItem(orderReturnInputVo, true);
}
@ApiOperation(value = "添加退款退货-整单退货", notes = "添加退款退货-整单退货")
@RequestMapping(value = "/addWholeItems", method = RequestMethod.POST)
public CommonResult addWholeItems(@RequestParam(name = "order_id") String order_id) {
UserDto user = getCurrentUser();
if (user == null) {
throw new ApiUserException(I18nUtil._("用户信息异常!"));
return CommonResult.failed(ResultCode.NEED_LOGIN);
}
return shopOrderReturnService.addWholeItems(order_id, false, "");

View File

@ -1,10 +1,13 @@
package com.suisung.mall.shop.order.listener;
import cn.hutool.core.convert.Convert;
import cn.hutool.json.JSONObject;
import com.rabbitmq.client.Channel;
import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.constant.MqConstant;
import com.suisung.mall.common.modules.order.ShopOrderInfo;
import com.suisung.mall.common.utils.DateTimeUtils;
import com.suisung.mall.shop.message.service.PushMessageService;
import com.suisung.mall.shop.order.service.ShopOrderBaseService;
import com.suisung.mall.shop.order.service.ShopOrderInfoService;
@ -21,6 +24,7 @@ import org.springframework.data.util.Pair;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
@ -119,6 +123,15 @@ public class OrderPayedListener {
logger.info("顺丰同城下单成功");
}
// 同城配送或普通快递都发送 unipush 推送您有一个新的订单请查收
String orderType = orderInfoOld.getDelivery_type_id() == StateCode.DELIVERY_TYPE_SAME_CITY ? "同城" : "";
String title = String.format("您有一个新的%s订单请注意查收", orderType);
String content = String.format("新%s订单号%s用户在%s下的单请注意查收", orderId, DateTimeUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_ONLINE_ORDER_LIST);
payload.put("orderId", orderId);
pushMessageService.noticeMerchantEmployeeOrderAction(orderInfoOld.getStore_id(), orderId, title, content, payload);
}
}
}

View File

@ -93,6 +93,16 @@ public interface ShopOrderBaseMapper extends BaseMapper<ShopOrderBase> {
*/
Long countMchOrderByCondition(@Param("storeId") Integer storeId, @Param("keyword") String keyword, @Param("delivery") Integer delivery, @Param("status") Integer status, @Param("logisticsStatus") Integer logisticsStatus, @Param("expireSeconds") Long expireSeconds, @Param("beginTime") Long beginTime, @Param("endTime") Long endTime);
/**
* 获取商家版订单详情
*
* @param orderId
* @param expireSeconds 配送超时的秒数单位秒
* @return
*/
MchOrderInfoDTO getMchOrderDetail(@Param("orderId") String orderId, @Param("expireSeconds") Long expireSeconds);
/**
* 获取微信发货订单基本信息
*

View File

@ -568,6 +568,15 @@ public interface ShopOrderBaseService extends IBaseService<ShopOrderBase> {
*/
Long countMchOrderByCondition(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime);
/**
* 获取商家订单详情
*
* @param orderId
* @param expireSeconds 配送超时的秒数单位秒
* @return
*/
MchOrderInfoDTO getMchOrderDetail(String orderId, Long expireSeconds);
/**
* 商家订单各个分类和状态的订单数量

View File

@ -41,17 +41,20 @@ public interface ShopOrderReturnService extends IBaseService<ShopOrderReturn> {
long getReturnNum(List<Integer> return_state_id, Integer store_id, Integer subsite_id);
/**
* 提交一条退货订单等待商家审核处理同意或不同意
*
* @param orderReturnInputVo
* @param needSendMsg 是否需要发站内 推送消息
* @return
*/
CommonResult addItem(OrderReturnInputVo orderReturnInputVo);
CommonResult addItem(OrderReturnInputVo orderReturnInputVo, Boolean needSendMsg);
Map getReturnDetail(String return_id);
boolean processReviewList(ShopOrderReturn shopOrderReturn, Integer receiving_address);
/**
* 退单审核
* 退单审核商家审核处理同意或不同意
*
* @param return_ids 退单编号
* @param return_rows 退单数据

View File

@ -2801,7 +2801,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
throw new ApiException(I18nUtil._("订单商品表为空!"));
}
editOrderInfo(time, order_ids);
// 生成退款单
// 延迟支付系统自动退款生成退款单
OrderReturnInputVo orderReturnInputVo = new OrderReturnInputVo();
orderReturnInputVo.setOrder_id(orderInfo.getOrder_id());
orderReturnInputVo.setReturn_tel("");
@ -2816,7 +2816,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
returnItemInputVo.setReturn_refund_amount(orderItem.getOrder_item_payment_amount());
orderReturnInputVo.getReturn_items().add(returnItemInputVo);
}
shopOrderReturnService.addItem(orderReturnInputVo);
shopOrderReturnService.addItem(orderReturnInputVo, true);
is_refund = true;
}
}
@ -8601,6 +8602,26 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
return shopOrderBaseMapper.countMchOrderByCondition(storeId, keyword, delivery, status, logisticsStatus, expireSeconds, beginTime, endTime);
}
/**
* 获取商家订单详情
*
* @param orderId
* @param expireSeconds 配送超时的秒数单位秒
* @return
*/
@Override
public MchOrderInfoDTO getMchOrderDetail(String orderId, Long expireSeconds) {
if (StrUtil.isBlank(orderId)) {
return null;
}
if (expireSeconds == null || expireSeconds <= 0) {
expireSeconds = 60 * 60 * 24 * 7 * 1000L;
}
return shopOrderBaseMapper.getMchOrderDetail(orderId, expireSeconds);
}
/**
* 商家订单各个分类和状态的订单数量

View File

@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.constant.ConfigConstant;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
@ -34,10 +35,7 @@ import com.suisung.mall.common.modules.product.ShopProductItem;
import com.suisung.mall.common.modules.store.ShopStoreBase;
import com.suisung.mall.common.modules.store.ShopStoreShippingAddress;
import com.suisung.mall.common.service.MessageService;
import com.suisung.mall.common.utils.CSVUtils;
import com.suisung.mall.common.utils.CheckUtil;
import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.common.utils.LogUtil;
import com.suisung.mall.common.utils.*;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import com.suisung.mall.shop.base.service.AccountBaseConfigService;
import com.suisung.mall.shop.base.service.ShopBaseProductUnitService;
@ -45,6 +43,7 @@ import com.suisung.mall.shop.base.service.ShopBaseStateCodeService;
import com.suisung.mall.shop.distribution.service.ShopDistributionUserCommissionService;
import com.suisung.mall.shop.distribution.service.ShopDistributionUserOrderItemService;
import com.suisung.mall.shop.distribution.service.ShopDistributionUserOrderService;
import com.suisung.mall.shop.message.service.PushMessageService;
import com.suisung.mall.shop.number.service.ShopNumberSeqService;
import com.suisung.mall.shop.order.mapper.ShopOrderReturnMapper;
import com.suisung.mall.shop.order.service.*;
@ -70,6 +69,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -133,6 +133,9 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
pay_channel_id_row.put("1413", I18nUtil._("线下付款"));
}
@Lazy
@Autowired
private PushMessageService pushMessageService;
@Autowired
private ShopOrderReturnMapper shopOrderReturnMapper;
@Autowired
@ -413,22 +416,22 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
/**
* 添加退款退货-发货退货,卖家也可以决定不退货退款买家申请退款不支持卖家可以主动退款
*
* @param orderReturnInputVo
* @param needSendMsg 是否需要发站内 推送消息
* @return
*/
@Override
@Transactional
public CommonResult addItem(OrderReturnInputVo orderReturnInputVo) {
public CommonResult addItem(OrderReturnInputVo orderReturnInputVo, Boolean needSendMsg) {
Map data = new HashMap();
Integer user_id;
if (CheckUtil.isEmpty(orderReturnInputVo.getUser_id())) {
Integer user_id = orderReturnInputVo.getUser_id();
if (CheckUtil.isEmpty(user_id)) {
UserDto user = getCurrentUser();
if (user == null) {
throw new ApiUserException(I18nUtil._("用户信息异常!"));
}
user_id = user.getId();
} else {
user_id = orderReturnInputVo.getUser_id();
}
//是否有店铺
@ -467,101 +470,95 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
// todo 检测该订单使用的优惠券等情况
if (CheckUtil.checkDataRights(user_id, orderBase, ShopOrderBase::getBuyer_user_id)) {
if (!CheckUtil.checkDataRights(user_id, orderBase, ShopOrderBase::getBuyer_user_id)) {
throw new ApiException(ResultCode.FORBIDDEN);
}
String return_id = orderReturnInputVo.getReturn_id();
Integer return_reason_id = orderReturnInputVo.getReturn_reason_id();
String return_buyer_message = orderReturnInputVo.getReturn_buyer_message();
Integer store_id = Convert.toInt(orderBase.getStore_id());
String return_tel = orderReturnInputVo.getReturn_tel();
String return_id = orderReturnInputVo.getReturn_id();
Integer return_reason_id = orderReturnInputVo.getReturn_reason_id();
String return_buyer_message = orderReturnInputVo.getReturn_buyer_message();
Integer store_id = Convert.toInt(orderBase.getStore_id());
String return_tel = orderReturnInputVo.getReturn_tel();
// 手机号验证
if (StrUtil.isNotBlank(return_tel) && !PhoneUtil.isMobile(return_tel)) {
throw new ApiException(I18nUtil._("手机号输入有误!"));
// 手机号验证
if (StrUtil.isNotBlank(return_tel) && !PhoneUtil.isMobile(return_tel)) {
throw new ApiException(I18nUtil._("手机号输入有误!"));
}
Date curTime = new Date();
ShopOrderReturn orderReturn = new ShopOrderReturn();
orderReturn.setReturn_id(return_id);
orderReturn.setOrder_id(order_id);
orderReturn.setBuyer_user_id(user_id);
orderReturn.setBuyer_store_id(buyer_store_id);
orderReturn.setReturn_reason_id(return_reason_id);
orderReturn.setReturn_buyer_message(return_buyer_message);
orderReturn.setStore_id(store_id);
orderReturn.setReturn_refund_amount(BigDecimal.ZERO);
orderReturn.setReturn_commision_fee(BigDecimal.ZERO);
orderReturn.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
orderReturn.setReturn_tel(return_tel);
orderReturn.setReturn_year(DateUtil.year(curTime)); // 退单年份-索引查询
orderReturn.setReturn_month(DateUtil.month(curTime) + 1); // 退单月份-索引查询
orderReturn.setReturn_day(DateUtil.dayOfMonth(curTime)); // 退单日-索引查询
orderReturn.setReturn_reason_id(0);
orderReturn.setReturn_store_user_id(0);
orderReturn.setReturn_mobile(0L);
orderReturn.setReturn_telephone("");
orderReturn.setSubsite_id(shopOrderInfo.getSubsite_id());
List<ShopOrderReturnItem> shopOrderReturnItems = new ArrayList<>();
for (OrderReturnItemInputVo returnItemInputVo : orderReturnInputVo.getReturn_items()) {
ShopOrderItem shopOrderItem = shopOrderItemService.get(returnItemInputVo.getOrder_item_id());
if (shopOrderItem == null) {
throw new ApiException(I18nUtil._("此订单商品订单数据有误!"));
}
ShopProductIndex shopProductIndex = shopProductIndexService.get(shopOrderItem.getProduct_id());
if (shopProductIndex == null) {
throw new ApiException(I18nUtil._("此订单商品数据有误!"));
}
Date curTime = new Date();
boolean is_denyreturn = ifDenyReturn(shopOrderInfo, shopOrderItem, shopProductIndex);
if (is_denyreturn) {
throw new ApiException(I18nUtil._("此商品不允许退货!"));
}
ShopOrderReturnItem orderReturnItem = new ShopOrderReturnItem();
Integer return_item_num = returnItemInputVo.getReturn_item_num();
ShopOrderReturn orderReturn = new ShopOrderReturn();
orderReturn.setReturn_id(return_id);
orderReturn.setOrder_id(order_id);
orderReturn.setBuyer_user_id(user_id);
orderReturn.setBuyer_store_id(buyer_store_id);
orderReturn.setReturn_reason_id(return_reason_id);
orderReturn.setReturn_buyer_message(return_buyer_message);
orderReturn.setStore_id(store_id);
orderReturn.setReturn_refund_amount(BigDecimal.ZERO);
orderReturn.setReturn_commision_fee(BigDecimal.ZERO);
orderReturn.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
orderReturn.setReturn_tel(return_tel);
orderReturn.setReturn_year(DateUtil.year(curTime)); // 退单年份-索引查询
orderReturn.setReturn_month(DateUtil.month(curTime) + 1); // 退单月份-索引查询
orderReturn.setReturn_day(DateUtil.dayOfMonth(curTime)); // 退单日-索引查询
orderReturn.setReturn_reason_id(0);
orderReturn.setReturn_store_user_id(0);
orderReturn.setReturn_mobile(0L);
orderReturn.setReturn_telephone("");
orderReturn.setSubsite_id(shopOrderInfo.getSubsite_id());
List<ShopOrderReturnItem> shopOrderReturnItems = new ArrayList<>();
for (OrderReturnItemInputVo returnItemInputVo : orderReturnInputVo.getReturn_items()) {
ShopOrderItem shopOrderItem = shopOrderItemService.get(returnItemInputVo.getOrder_item_id());
if (shopOrderItem == null) {
throw new ApiException(I18nUtil._("此订单商品订单数据有误!"));
}
ShopProductIndex shopProductIndex = shopProductIndexService.get(shopOrderItem.getProduct_id());
if (shopProductIndex == null) {
throw new ApiException(I18nUtil._("此订单商品数据有误!"));
}
boolean is_denyreturn = ifDenyReturn(shopOrderInfo, shopOrderItem, shopProductIndex);
if (is_denyreturn) {
throw new ApiException(I18nUtil._("此商品不允许退货!"));
}
ShopOrderReturnItem orderReturnItem = new ShopOrderReturnItem();
Integer return_item_num = returnItemInputVo.getReturn_item_num();
if (return_item_num <= 0) {
throw new ApiException(I18nUtil._("退款数量不正确!"));
}
BigDecimal return_refund_amount = returnItemInputVo.getReturn_refund_amount();
String return_item_image = ObjectUtil.defaultIfBlank(orderReturnInputVo.getRefund_pic(), orderReturnInputVo.getUpload_img());
orderReturnItem.setOrder_item_id(returnItemInputVo.getOrder_item_id()); // 退货商品编号(DOT):0为退款
orderReturnItem.setOrder_id(order_id); // 订单编号
orderReturnItem.setReturn_item_num(return_item_num); // 退货商品编号(DOT):0为退款
orderReturnItem.setReturn_item_subtotal(return_refund_amount); // 退款金额 = goods_payment_amount/goods_quantity, 因为涉及到折扣等等 或者 为订单中 order_payment_amount
orderReturnItem.setReturn_reason_id(return_reason_id); // 退款理由id
orderReturnItem.setReturn_item_note(return_buyer_message); // 买家退货备注
orderReturnItem.setReturn_item_image(return_item_image);
orderReturnItem.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
orderReturnItem.setReturn_reason_id(0);
shopOrderReturnItems.add(orderReturnItem);
if (return_item_num <= 0) {
throw new ApiException(I18nUtil._("退款数量不正确!"));
}
if (!addReturnByItem(orderReturn, shopOrderReturnItems)) {
throw new ApiException(ResultCode.FAILED);
}
BigDecimal return_refund_amount = returnItemInputVo.getReturn_refund_amount();
String return_item_image = ObjectUtil.defaultIfBlank(orderReturnInputVo.getRefund_pic(), orderReturnInputVo.getUpload_img());
// 退货单提交成功对商家进行提醒
// String message_id = "return-reminder";
// Map args = new HashMap();
// args.put("order_id", return_id);
// args.put("id", order_id);
// args.put("return_id", return_id);
// args.put("order_item", String.format(("退货商品编号:[%s]"), order_item_id));
// messageService.sendNoticeMsg(0, store_id, message_id, args);
orderReturnItem.setOrder_item_id(returnItemInputVo.getOrder_item_id()); // 退货商品编号(DOT):0为退款
orderReturnItem.setOrder_id(order_id); // 订单编号
orderReturnItem.setReturn_item_num(return_item_num); // 退货商品编号(DOT):0为退款
orderReturnItem.setReturn_item_subtotal(return_refund_amount); // 退款金额 = goods_payment_amount/goods_quantity, 因为涉及到折扣等等 或者 为订单中 order_payment_amount
orderReturnItem.setReturn_reason_id(return_reason_id); // 退款理由id
orderReturnItem.setReturn_item_note(return_buyer_message); // 买家退货备注
orderReturnItem.setReturn_item_image(return_item_image);
orderReturnItem.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
orderReturnItem.setReturn_reason_id(0);
data.put("return", orderReturn);
data.put("items", shopOrderReturnItems);
shopOrderReturnItems.add(orderReturnItem);
}
//暂时注释
// 七天无理由自动退货
if (!addReturnByItem(orderReturn, shopOrderReturnItems)) {
throw new ApiException(ResultCode.FAILED);
}
data.put("return", orderReturn);
data.put("items", shopOrderReturnItems);
//暂时注释
// 七天无理由自动退货
/*if (contractTypeIds.contains(StateCode.CONTRACT_TYPE_7_RETURN) && shopOrderInfo.getOrder_is_out().equals(StateCode.ORDER_PICKING_STATE_NO)) {
ShopOrderReturn shopOrderReturn = new ShopOrderReturn();
shopOrderReturn.setReturn_id(orderReturn.getReturn_id());
@ -572,15 +569,34 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
shopOrderReturnService.review(shopOrderReturn, 0);
}*/
// 商家退款提醒
String message_id2 = "refund-reminder";
Map args1 = new HashMap();
args1.put("order_id", orderReturn.getReturn_id());
messageService.sendNoticeMsg(0, store_id, message_id2, args1);
} else {
throw new ApiException(ResultCode.FORBIDDEN);
if (needSendMsg) {
// 退款提醒商家
// 退货单提交成功对商家进行提醒
// String message_id = "return-reminder";
// Map args = new HashMap();
// args.put("order_id", return_id);
// args.put("id", order_id);
// args.put("return_id", return_id);
// args.put("order_item", String.format(("退货商品编号:[%s]"), order_item_id));
// messageService.sendNoticeMsg(0, store_id, message_id, args);
String message_id = "refund-reminder";
Map args = new HashMap();
args.put("order_id", orderReturn.getReturn_id());
messageService.sendNoticeMsg(0, store_id, message_id, args);
// 发送unipush 消息
String title = "您有一个退款的订单,请及时前往后台审核!";
String content = String.format("订单号:%s 退单号:[%s],时间:%s请及时前往后台审核", order_id, orderReturn.getReturn_id(), DateTimeUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_RETURN_ORDER_LIST);
payload.put("orderId", order_id);
payload.put("returnId", orderReturn.getReturn_id());
pushMessageService.noticeMerchantEmployeeOrderAction(store_id, order_id, title, content, payload);
}
data.put("order_item_ids", order_item_ids);
return CommonResult.success(data);
@ -2060,7 +2076,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
orderReturnInputVo.getReturn_items().add(returnItemInputVo);
}
return addItem(orderReturnInputVo);
return addItem(orderReturnInputVo, true);
}
/**
@ -2276,7 +2292,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
});
}
CommonResult createResult = addItem(refundRequest);
CommonResult createResult = addItem(refundRequest, false);
if (createResult == null || createResult.getStatus() != 200) {
log.error("退货单创建失败params:{}", refundRequest);
return createResult;

View File

@ -230,7 +230,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 个推推送消息
JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_ORDER_DETAIL);
payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_ORDER_DETAIL);
payload.put("orderId", shopOrderId);
pushMessageService.noticeMerchantEmployeeOrderAction(null, shopOrderId, "您有一笔新的订单", "您有一笔同城订单[" + shopOrderId + "],请及时处理。", payload);
@ -585,7 +585,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 个推推送消息
JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_ORDER_DETAIL);
payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_ORDER_DETAIL);
payload.put("orderId", shopOrderId);
pushMessageService.noticeMerchantEmployeeOrderAction(null, shopOrderId, "您有一笔取消订单", "您有一笔取消订单[" + shopOrderId + "],请及时处理。", null);
@ -688,7 +688,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 消息推送
JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_ORDER_DETAIL);
payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_ORDER_DETAIL);
payload.put("orderId", orderId);
pushMessageService.noticeMerchantEmployeeOrderAction(null, orderId, "", "顺丰同城订单[" + orderId + "]" + pushRemark, payload);
@ -764,7 +764,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 消息推送
JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_ORDER_DETAIL);
payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_ORDER_DETAIL);
payload.put("orderId", orderId);
pushMessageService.noticeMerchantEmployeeOrderAction(null, orderId, "", "顺丰同城订单[" + orderId + "]已完成配送。", null);

View File

@ -109,7 +109,6 @@ public interface ShopUserCartService extends IBaseService<ShopUserCart> {
* 7.4计算每样商品的佣金
* 7.5计算最终运费运费根据重量计费同一店铺一次发货商品独立计算快递费用不合理
* 9计算总价
* 9
*
* @access public
*/
@ -139,7 +138,7 @@ public interface ShopUserCartService extends IBaseService<ShopUserCart> {
*
* @param cart_data 最终数据
* @param district_id 配送地区城市id
* @param canThrow 关键数据缺失抛出 api 异常错误
* @param canThrow 关键数据缺失抛出 api 异常错误
*/
void tryCalTransportFreight(Map cart_data, Integer district_id, boolean canThrow);

View File

@ -48,7 +48,6 @@ import com.suisung.mall.shop.product.pojo.vo.FixOrderVo;
import com.suisung.mall.shop.product.pojo.vo.ProductVo;
import com.suisung.mall.shop.product.service.*;
import com.suisung.mall.shop.store.service.*;
import com.suisung.mall.shop.store.service.impl.ShopStorePrinterLogServiceImpl;
import com.suisung.mall.shop.user.mapper.ShopUserCartMapper;
import com.suisung.mall.shop.user.service.ShopUserCartService;
import com.suisung.mall.shop.user.service.ShopUserDeliveryAddressService;
@ -59,7 +58,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;
@ -765,10 +763,10 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
if (Convert.toBool(is_delivery)) {
data.put("delivery_type_id", delivery_type_id);
// 重要配送运费校验和计算涉及的东西比较多
calTransportFreight(data, district_id);
// calTransportFreight(data, district_id);
// logger.debug("checkout 计算配送费时的配送方式:{}",delivery_type_id);
// 订单地址和金额不在配送范围抛出异常提示
// tryCalTransportFreight(data, district_id,true);
tryCalTransportFreight(data, district_id, true);
data.put("has_stock", data.get("can_delivery")); // 是否有货
} else {
data.put("can_delivery", true); // 是否可以派送
@ -2475,7 +2473,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
*
* @param cart_data 最终数据
* @param district_id 配送地区城市id
* @param canThrow 关键数据缺失抛出 api 异常错误
* @param canThrow 关键数据缺失抛出 api 异常错误
*/
@Override
public void tryCalTransportFreight(Map cart_data, Integer district_id, boolean canThrow) {
@ -2510,7 +2508,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
// 检查店铺城市和收货地址是否同一城市
List<Integer> storeDistrictId = Convert.toList(Integer.class, store_row.get("store_district_id"));
if (canThrow && uAddress!=null && storeDistrictId != null && storeDistrictId.size() > 0 && !CollUtil.contains(storeDistrictId, uAddress.getUd_city_id())) {
if (canThrow && uAddress != null && storeDistrictId != null && storeDistrictId.size() > 0 && !CollUtil.contains(storeDistrictId, uAddress.getUd_city_id())) {
throw new ApiException(I18nUtil._("订单不在同一城市,请检查您下单所在店铺的具体位置!"));
}

View File

@ -693,7 +693,7 @@
</choose>
</if>
<!-- 2-物流配送 -->
<!-- 2-物流配送订单 -->
<if test="delivery != null and delivery == 2">
AND oi.delivery_type_id IN (1,2,3,4,10)
@ -737,15 +737,23 @@
</where>
</sql>
<select id="selectMchOrderPageList" resultMap="MchOrderResult">
<sql id="mchOrderColumns">
SELECT
ob.order_id,
ob.order_time,
<!-- 送达时间戳-->
<if test="delivery!=null and delivery==1">
oi.order_time + #{expireSeconds}*1000 as arrival_time,
</if>
<!-- <if test="delivery!=null and delivery==1 and expireSeconds != null and expireSeconds > 0">-->
<!-- oi.order_time + #{expireSeconds}*1000 as arrival_time,-->
<!-- </if>-->
<!--送达时间戳-->
CASE
WHEN oi.delivery_type_id IS NOT NULL AND oi.delivery_type_id = 16 AND #{expireSeconds} IS NOT NULL AND
#{expireSeconds} > 0
THEN oi.order_time + #{expireSeconds}*1000
ELSE oi.order_time + 604800000 <!-- 7天 = 7*24*60*60*1000 = 604800000毫秒 -->
END as arrival_time,
ob.order_product_amount,
ob.order_payment_amount,
ob.currency_id,
@ -806,6 +814,12 @@
osf.push_time,
osf.h5_url,
osf.feed
</sql>
<select id="selectMchOrderPageList" resultMap="MchOrderResult">
<include refid="mchOrderColumns"/>
from shop_order_base ob
join shop_order_info oi on ob.order_id=oi.order_id
join shop_order_data od on ob.order_id=od.order_id
@ -832,6 +846,26 @@
<include refid="mchOrderWhereCondition"/>
</select>
<select id="getMchOrderDetail" resultMap="MchOrderResult">
<include refid="mchOrderColumns"/>
from shop_order_base ob
join shop_order_info oi on ob.order_id=oi.order_id
join shop_order_data od on ob.order_id=od.order_id
join shop_store_base sb on ob.store_id=sb.store_id
join shop_order_delivery_address oda on ob.order_id=oda.order_id
join shop_order_item oit on ob.order_id=oit.order_id
left join shop_store_sf_order osf on ob.order_id=osf.shop_order_id
left join shop_product_item spi on oit.product_id=spi.product_id
left join shop_base_store_grade sbsg on sb.store_grade_id=sbsg.store_grade_id
<where>
ob.order_id=#{orderId}
</where>
ORDER BY ob.order_id DESC
</select>
<select id="getWxOrderBaseInfo" resultMap="WxOrderBaseInfoResult">
SELECT a.store_id,

21
pom.xml
View File

@ -330,10 +330,14 @@
<!-- <mysql.pwd>J0XivNvAcR14}pA6Cysm.E17</mysql.pwd>-->
<!-- <mysql.driver>com.mysql.cj.jdbc.Driver</mysql.driver>-->
<!-- redis配置 -->
<redis.host>114.132.210.208</redis.host>
<!-- <redis.host>114.132.210.208</redis.host>-->
<!-- <redis.database>15</redis.database>-->
<!-- <redis.port>6379</redis.port>-->
<!-- <redis.password>Gpff654321</redis.password>-->
<redis.host>42.194.196.179</redis.host>
<redis.database>15</redis.database>
<redis.port>6379</redis.port>
<redis.password>Gpff654321</redis.password>
<redis.port>6480</redis.port>
<redis.password>hwe9EgqgMAwY</redis.password>
<!-- rabbitmq配置 -->
<rabbitmq.host>114.132.210.208</rabbitmq.host>
<rabbitmq.port>5672</rabbitmq.port>
@ -479,11 +483,16 @@
<mysql.user>webprod</mysql.user>
<mysql.pwd>v9W2ER6KG9HVtH1mjAytRvdr</mysql.pwd>
<mysql.driver>com.mysql.cj.jdbc.Driver</mysql.driver>
<!-- redis配置 -->
<!-- redis5配置 -->
<!-- <redis.host>172.16.0.11</redis.host>-->
<!-- <redis.database>0</redis.database>-->
<!-- <redis.port>6379</redis.port>-->
<!-- <redis.password>aIqoc08IeuKBd4yl</redis.password>-->
<!-- redis7配置 -->
<redis.host>172.16.0.11</redis.host>
<redis.database>0</redis.database>
<redis.port>6379</redis.port>
<redis.password>aIqoc08IeuKBd4yl</redis.password>
<redis.port>6480</redis.port>
<redis.password>hwe9EgqgMAwY</redis.password>
<!-- rabbitmq配置 -->
<rabbitmq.host>172.16.0.11</rabbitmq.host>
<rabbitmq.port>5672</rabbitmq.port>