退款
This commit is contained in:
@@ -5,6 +5,7 @@ import com.czg.market.dto.GbWareDTO;
|
|||||||
import com.czg.market.dto.GbWareQueryParamDTO;
|
import com.czg.market.dto.GbWareQueryParamDTO;
|
||||||
import com.czg.market.entity.GbWare;
|
import com.czg.market.entity.GbWare;
|
||||||
import com.czg.market.service.GbWareService;
|
import com.czg.market.service.GbWareService;
|
||||||
|
import com.czg.order.service.GbOrderService;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
@@ -26,6 +27,15 @@ public class GbWareController {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private GbWareService wareService;
|
private GbWareService wareService;
|
||||||
|
@Resource
|
||||||
|
private GbOrderService gbOrderService;
|
||||||
|
|
||||||
|
@PostMapping("/upShopConfig")
|
||||||
|
@SaAdminCheckPermission(parentName = "拼团商品", value = "ware:info:up", name = "拼团商品-修改")
|
||||||
|
public CzgResult<Boolean> upShopConfig(@RequestBody GbWareDTO param) {
|
||||||
|
AssertUtil.isNull(param.getOnlineStatus(), "操作失败,请选择状态");
|
||||||
|
return CzgResult.success(wareService.upShopConfig(param.getOnlineStatus(), StpKit.USER.getShopId()));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/getGbWarePage")
|
@GetMapping("/getGbWarePage")
|
||||||
@SaAdminCheckPermission(parentName = "拼团商品", value = "ware:info:list", name = "拼团商品-列表")
|
@SaAdminCheckPermission(parentName = "拼团商品", value = "ware:info:list", name = "拼团商品-列表")
|
||||||
@@ -44,7 +54,7 @@ public class GbWareController {
|
|||||||
public CzgResult<Boolean> editGbWareOnlineStatus(@RequestBody GbWareDTO param) {
|
public CzgResult<Boolean> editGbWareOnlineStatus(@RequestBody GbWareDTO param) {
|
||||||
AssertUtil.isNull(param.getId(), "操作失败,请选择商品");
|
AssertUtil.isNull(param.getId(), "操作失败,请选择商品");
|
||||||
AssertUtil.isNull(param.getOnlineStatus(), "操作失败,请选择商品状态");
|
AssertUtil.isNull(param.getOnlineStatus(), "操作失败,请选择商品状态");
|
||||||
return CzgResult.success(wareService.editGbWareOnlineStatus(param.getId(), param.getOnlineStatus()));
|
return CzgResult.success(gbOrderService.editGbWareOnlineStatus(param.getId(), param.getOnlineStatus()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateGbWareById")
|
@PostMapping("/updateGbWareById")
|
||||||
@@ -2,23 +2,17 @@ package com.czg.controller.user;
|
|||||||
|
|
||||||
import com.czg.market.dto.GbWareQueryParamDTO;
|
import com.czg.market.dto.GbWareQueryParamDTO;
|
||||||
import com.czg.market.entity.GbWare;
|
import com.czg.market.entity.GbWare;
|
||||||
import com.czg.market.entity.MkPointsGoodsRecord;
|
|
||||||
import com.czg.market.service.GbWareService;
|
import com.czg.market.service.GbWareService;
|
||||||
import com.czg.market.service.MkPointsGoodsRecordService;
|
|
||||||
import com.czg.market.service.MkPointsGoodsService;
|
|
||||||
import com.czg.order.dto.CommonRefundDTO;
|
import com.czg.order.dto.CommonRefundDTO;
|
||||||
import com.czg.order.dto.GbOrderQueryParam;
|
import com.czg.order.dto.GbOrderQueryParam;
|
||||||
import com.czg.order.dto.GroupJoinDTO;
|
import com.czg.order.dto.GroupJoinDTO;
|
||||||
import com.czg.order.dto.LtPayOtherDTO;
|
|
||||||
import com.czg.order.service.GbOrderService;
|
import com.czg.order.service.GbOrderService;
|
||||||
import com.czg.order.service.PointsGoodPayService;
|
|
||||||
import com.czg.order.vo.GbOrderDetailVO;
|
import com.czg.order.vo.GbOrderDetailVO;
|
||||||
import com.czg.order.vo.GbWareVO;
|
import com.czg.order.vo.GbWareVO;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.utils.ServletUtil;
|
import com.czg.utils.ServletUtil;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|||||||
@@ -13,15 +13,16 @@ import com.mybatisflex.core.service.IService;
|
|||||||
* @since 2025-12-15
|
* @since 2025-12-15
|
||||||
*/
|
*/
|
||||||
public interface GbWareService extends IService<GbWare> {
|
public interface GbWareService extends IService<GbWare> {
|
||||||
|
|
||||||
|
//操作店铺功能开关
|
||||||
|
boolean upShopConfig(Integer status, Long shopId);
|
||||||
|
|
||||||
//拼团 活动 注意分店 主店的 问题
|
//拼团 活动 注意分店 主店的 问题
|
||||||
Page<GbWare> getGbWarePage(GbWareQueryParamDTO param, Long shopId);
|
Page<GbWare> getGbWarePage(GbWareQueryParamDTO param, Long shopId);
|
||||||
|
|
||||||
//添加
|
//添加
|
||||||
boolean addGbWare(GbWareDTO param);
|
boolean addGbWare(GbWareDTO param);
|
||||||
|
|
||||||
//修改 上架状态可修改
|
|
||||||
boolean editGbWareOnlineStatus(Long id, Integer onlineStatus);
|
|
||||||
|
|
||||||
//修改 下架状态可修改
|
//修改 下架状态可修改
|
||||||
boolean updateGbWareById(GbWareDTO param);
|
boolean updateGbWareById(GbWareDTO param);
|
||||||
|
|
||||||
|
|||||||
@@ -38,13 +38,24 @@ public interface GbOrderService extends IService<GbOrder> {
|
|||||||
//支付回调 处理成团人数, 如果没团则创团
|
//支付回调 处理成团人数, 如果没团则创团
|
||||||
void payCallBack(Long recordId, Long payOrderId);
|
void payCallBack(Long recordId, Long payOrderId);
|
||||||
|
|
||||||
|
|
||||||
//用户申请退款
|
//用户申请退款
|
||||||
boolean applyRefund(CommonRefundDTO param, Long userId);
|
boolean applyRefund(CommonRefundDTO param, Long userId);
|
||||||
|
|
||||||
//取消退款
|
//取消退款
|
||||||
boolean cancelRefund(CommonRefundDTO param, Long userId, Long shopId);
|
boolean cancelRefund(CommonRefundDTO param, Long userId, Long shopId);
|
||||||
|
|
||||||
//退款 同意退款/任务过期 自动退款
|
//退款 同意退款
|
||||||
boolean agreeRefund(CommonRefundDTO param, Long shopId);
|
boolean agreeRefund(CommonRefundDTO param, Long shopId);
|
||||||
|
|
||||||
|
//商品下架 同步操作退款
|
||||||
|
boolean editGbWareOnlineStatus(Long id, Integer onlineStatus);
|
||||||
|
|
||||||
|
//任务过期 自动退款 成团期限超时
|
||||||
|
boolean expireRefund(Long gbOrderId);
|
||||||
|
|
||||||
|
//商品下架 退款 所属活动变更为下架状态
|
||||||
|
boolean wareDownRefund(Long wareId);
|
||||||
|
|
||||||
|
//店铺商品拼团功能关闭 退款
|
||||||
|
boolean shopDownRefund(Long shopId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ public class AssertUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断两个对象是否不相等,如果不相等则抛出异常
|
* 判断两个对象是否不相等,如果不相等则抛出异常
|
||||||
|
* 注意字段类型
|
||||||
*
|
*
|
||||||
* @param a 实际值
|
* @param a 实际值
|
||||||
* @param b 期望值
|
* @param b 期望值
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.czg.service.market.service.impl;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.czg.account.service.ShopInfoService;
|
import com.czg.account.service.ShopInfoService;
|
||||||
import com.czg.exception.CzgException;
|
|
||||||
import com.czg.market.dto.GbWareDTO;
|
import com.czg.market.dto.GbWareDTO;
|
||||||
import com.czg.market.dto.GbWareQueryParamDTO;
|
import com.czg.market.dto.GbWareQueryParamDTO;
|
||||||
import com.czg.market.entity.GbWare;
|
import com.czg.market.entity.GbWare;
|
||||||
@@ -11,11 +10,11 @@ import com.czg.market.service.GbWareService;
|
|||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.market.mapper.GbWareMapper;
|
import com.czg.service.market.mapper.GbWareMapper;
|
||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
import com.czg.utils.CzgStrUtils;
|
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,6 +28,14 @@ public class GbWareServiceImpl extends ServiceImpl<GbWareMapper, GbWare> impleme
|
|||||||
@DubboReference
|
@DubboReference
|
||||||
private ShopInfoService shopInfoService;
|
private ShopInfoService shopInfoService;
|
||||||
|
|
||||||
|
|
||||||
|
@CacheEvict(cacheNames = "shopInfo", key = "#shopId")
|
||||||
|
@Override
|
||||||
|
public boolean upShopConfig(Integer status, Long shopId) {
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<GbWare> getGbWarePage(GbWareQueryParamDTO param, Long shopId) {
|
public Page<GbWare> getGbWarePage(GbWareQueryParamDTO param, Long shopId) {
|
||||||
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
|
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
|
||||||
@@ -62,13 +69,6 @@ public class GbWareServiceImpl extends ServiceImpl<GbWareMapper, GbWare> impleme
|
|||||||
return save(gbWare);
|
return save(gbWare);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean editGbWareOnlineStatus(Long id, Integer onlineStatus) {
|
|
||||||
GbWare gbWare = new GbWare();
|
|
||||||
gbWare.setOnlineStatus(onlineStatus);
|
|
||||||
return update(gbWare, query().eq(GbWare::getId, id).eq(GbWare::getShopId, StpKit.USER.getShopId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updateGbWareById(GbWareDTO param) {
|
public boolean updateGbWareById(GbWareDTO param) {
|
||||||
@@ -88,8 +88,6 @@ public class GbWareServiceImpl extends ServiceImpl<GbWareMapper, GbWare> impleme
|
|||||||
|
|
||||||
private void checkStatus(Long id) {
|
private void checkStatus(Long id) {
|
||||||
GbWare ware = getById(id);
|
GbWare ware = getById(id);
|
||||||
if (ware.getOnlineStatus() == 1) {
|
AssertUtil.isNotEqual(ware.getOnlineStatus(), 1, "操作失败,请下架后,重试");
|
||||||
throw new CzgException("操作失败,请下架后,重试");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import com.czg.enums.OrderNoPrefixEnum;
|
|||||||
import com.czg.enums.YesNoEnum;
|
import com.czg.enums.YesNoEnum;
|
||||||
import com.czg.exception.CzgException;
|
import com.czg.exception.CzgException;
|
||||||
import com.czg.market.entity.GbWare;
|
import com.czg.market.entity.GbWare;
|
||||||
import com.czg.market.entity.MkPointsGoodsRecord;
|
|
||||||
import com.czg.market.service.GbWareService;
|
import com.czg.market.service.GbWareService;
|
||||||
import com.czg.order.dto.CommonRefundDTO;
|
import com.czg.order.dto.CommonRefundDTO;
|
||||||
import com.czg.order.dto.GbOrderQueryParam;
|
import com.czg.order.dto.GbOrderQueryParam;
|
||||||
@@ -25,6 +24,7 @@ import com.czg.order.vo.GbOrderUserVO;
|
|||||||
import com.czg.order.vo.GbWareOrderVO;
|
import com.czg.order.vo.GbWareOrderVO;
|
||||||
import com.czg.order.vo.GbWareVO;
|
import com.czg.order.vo.GbWareVO;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.order.mapper.GbOrderMapper;
|
import com.czg.service.order.mapper.GbOrderMapper;
|
||||||
import com.czg.service.order.service.PayService;
|
import com.czg.service.order.service.PayService;
|
||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
@@ -273,7 +273,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
|
|||||||
throw new CzgException("申请失败,该商品不可申请退款");
|
throw new CzgException("申请失败,该商品不可申请退款");
|
||||||
}
|
}
|
||||||
if ("待成团".equals(record.getStatus())) {
|
if ("待成团".equals(record.getStatus())) {
|
||||||
return refundAmount(record, "");
|
return refundAmount(record, param.getReason());
|
||||||
}
|
}
|
||||||
GbOrderDetail upRecord = new GbOrderDetail();
|
GbOrderDetail upRecord = new GbOrderDetail();
|
||||||
record.setStatus("退款中");
|
record.setStatus("退款中");
|
||||||
@@ -338,16 +338,66 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
|
|||||||
return refundAmount(record, param.getReason());
|
return refundAmount(record, param.getReason());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean editGbWareOnlineStatus(Long id, Integer onlineStatus) {
|
||||||
|
GbWare gbWare = new GbWare();
|
||||||
|
gbWare.setOnlineStatus(onlineStatus);
|
||||||
|
boolean update = wareService.update(gbWare, query().eq(GbWare::getId, id).eq(GbWare::getShopId, StpKit.USER.getShopId()));
|
||||||
|
if (update && onlineStatus == 0) {
|
||||||
|
//退钱
|
||||||
|
wareDownRefund(id);
|
||||||
|
}
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean expireRefund(Long gbOrderId) {
|
||||||
|
GbOrder order = getOne(query().eq(GbOrder::getId, gbOrderId).eq(GbOrder::getStatus, "ing"));
|
||||||
|
return refundByGbOrder(order, "成团期限超时");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean wareDownRefund(Long wareId) {
|
||||||
|
List<GbOrder> list = list(query().eq(GbOrder::getWareId, wareId).eq(GbOrder::getStatus, "ing"));
|
||||||
|
for (GbOrder gbOrder : list) {
|
||||||
|
refundByGbOrder(gbOrder, "所属活动变更为下架状态");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shopDownRefund(Long shopId) {
|
||||||
|
List<GbOrder> list = list(query().eq(GbOrder::getShopId, shopId).eq(GbOrder::getStatus, "ing"));
|
||||||
|
for (GbOrder gbOrder : list) {
|
||||||
|
refundByGbOrder(gbOrder, "商品拼团功能关闭");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean refundByGbOrder(GbOrder gbOrder, String reason) {
|
||||||
|
if (gbOrder == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
List<GbOrderDetail> details = detailService.list(query()
|
||||||
|
.ne(GbOrderDetail::getShopId, gbOrder.getShopId())
|
||||||
|
.eq(GbOrderDetail::getGroupOrderNo, gbOrder.getGroupOrderNo())
|
||||||
|
.ne(GbOrderDetail::getStatus, "已退款")
|
||||||
|
.eq(GbOrderDetail::getIsDel, YesNoEnum.NO.value()));
|
||||||
|
details.forEach(item -> refundAmount(item, reason));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private boolean refundAmount(GbOrderDetail record, String reason) {
|
private boolean refundAmount(GbOrderDetail record, String reason) {
|
||||||
//退钱
|
//退钱
|
||||||
String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REP);
|
String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REP);
|
||||||
payService.unifyRefund(record.getShopId(), record.getId(), record.getPayOrderId(), refPayOrderNo,
|
payService.unifyRefund(record.getShopId(), record.getId(), record.getPayOrderId(), refPayOrderNo,
|
||||||
StrUtil.isBlankIfStr(reason) ? "拼团退款" : reason, record.getPayAmount());
|
StrUtil.isBlankIfStr(reason) ? "拼团退款" : reason, record.getPayAmount());
|
||||||
|
|
||||||
//回退 人数
|
//回退 人数
|
||||||
GbOrder gbOrder = getOne(query().eq(GbOrder::getGroupOrderNo, record.getGroupOrderNo()).eq(GbOrder::getShopId, record.getShopId()));
|
GbOrder gbOrder = getOne(query().eq(GbOrder::getGroupOrderNo, record.getGroupOrderNo()).eq(GbOrder::getShopId, record.getShopId()));
|
||||||
if (gbOrder != null) {
|
if (gbOrder != null) {
|
||||||
GbOrder upOrder = new GbOrder();
|
GbOrder upOrder = new GbOrder();
|
||||||
|
upOrder.setId(gbOrder.getId());
|
||||||
upOrder.setCurrentPeopleNum(gbOrder.getCurrentPeopleNum() - 1);
|
upOrder.setCurrentPeopleNum(gbOrder.getCurrentPeopleNum() - 1);
|
||||||
if (upOrder.getCurrentPeopleNum() == 0) {
|
if (upOrder.getCurrentPeopleNum() == 0) {
|
||||||
upOrder.setStatus("fail");
|
upOrder.setStatus("fail");
|
||||||
@@ -357,6 +407,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
|
|||||||
}
|
}
|
||||||
GbOrderDetail upRecord = new GbOrderDetail();
|
GbOrderDetail upRecord = new GbOrderDetail();
|
||||||
upRecord.setStatus("已退款");
|
upRecord.setStatus("已退款");
|
||||||
|
upRecord.setCancelReason(reason);
|
||||||
return detailService.update(upRecord, query().eq(GbOrderDetail::getId, record.getId()));
|
return detailService.update(upRecord, query().eq(GbOrderDetail::getId, record.getId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user