guomengjiao 3 mesi fa
parent
commit
63fb993a89

+ 29 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AbstractBusinessController.java

@@ -0,0 +1,29 @@
+package com.ruoyi.web.controller.common;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.helper.LoginHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class AbstractBusinessController extends BaseController {
+
+    @Autowired
+    protected IBusinessService businessService;
+
+    public void checkBusinessStatus() {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        if(ObjectUtil.isNotNull(loginUser))
+        {
+            Long businessId = loginUser.getBusinessId();
+            if(ObjectUtil.isNotNull(businessId))
+            {
+                if (!businessService.isValid(businessId)) {
+                    throw new ServiceException("门店已关闭,无法操作该功能");
+                }
+            }
+        }
+    }
+}

+ 4 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/business/BusinessController.java

@@ -37,6 +37,7 @@ import com.ruoyi.subsidy.service.ISubsidyQueueService;
 import com.ruoyi.system.service.ISysPostService;
 import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.controller.common.AbstractBusinessController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -62,7 +63,7 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/business/business")
-public class BusinessController extends BaseController {
+public class BusinessController extends AbstractBusinessController {
 
     private final IBusinessService iBusinessService;
     private final ISysUserService userService;
@@ -334,6 +335,8 @@ public class BusinessController extends BaseController {
     @Log(title = "店铺设置付贝参数", businessType = BusinessType.UPDATE)
     @PostMapping("/setPayParams")
     public R<Void> setPayParams(@RequestBody BusinessBo bo) {
+        // 检查商户状态
+        checkBusinessStatus();
         iBusinessService.updateBaseByBo(bo);
         return R.ok();
     }

+ 4 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/business/BusinessSettlementController.java

@@ -3,10 +3,10 @@ package com.ruoyi.web.controller.shop.business;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.business.domain.vo.BusinessSettlementVo;
 import com.ruoyi.business.service.IBusinessSettlementService;
-import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
+import com.ruoyi.web.controller.common.AbstractBusinessController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/business/businessSettlement")
-public class BusinessSettlementController extends BaseController {
+public class BusinessSettlementController extends AbstractBusinessController {
 
     private final IBusinessSettlementService iBusinessSettlementService;
 
@@ -38,6 +38,8 @@ public class BusinessSettlementController extends BaseController {
     @SaCheckPermission("business:businessSettlement:query")
     @GetMapping("/info")
     public R<BusinessSettlementVo> getInfo() {
+        // 检查商户状态
+        checkBusinessStatus();
         return R.ok(iBusinessSettlementService.queryByBusinessId(getBusinessId(true)));
     }
 

+ 10 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/order/ShopOrderPackageController.java

@@ -3,16 +3,11 @@ package com.ruoyi.web.controller.shop.order;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.google.gson.JsonObject;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
-import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
@@ -21,14 +16,17 @@ import com.ruoyi.message.enums.MessageType;
 import com.ruoyi.message.enums.ModelType;
 import com.ruoyi.message.service.ISendPrivateMessageMsgService;
 import com.ruoyi.shop.order.domain.ShopOrderPackage;
-import com.ruoyi.shop.order.domain.bo.*;
-import com.ruoyi.shop.order.domain.vo.ShopOrderCommentVo;
+import com.ruoyi.shop.order.domain.bo.SelfPickupOrderVerificationBo;
+import com.ruoyi.shop.order.domain.bo.ShopShipExpressBo;
+import com.ruoyi.shop.order.domain.bo.ShopShipExpressUpdateBo;
+import com.ruoyi.shop.order.domain.bo.ShopStockUpBo;
 import com.ruoyi.shop.order.domain.vo.ShopOrderPackageExpressVo;
 import com.ruoyi.shop.order.domain.vo.ShopOrderPackageVo;
 import com.ruoyi.shop.order.domain.vo.ShopOrderVo;
 import com.ruoyi.shop.order.enums.VerificationRole;
 import com.ruoyi.shop.order.service.IShopOrderPackageService;
 import com.ruoyi.shop.order.service.mqproduct.IShopOrderMqProductService;
+import com.ruoyi.web.controller.common.AbstractBusinessController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -51,7 +49,7 @@ import javax.validation.constraints.NotNull;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/order/shopOrderPackage")
-public class ShopOrderPackageController extends BaseController {
+public class ShopOrderPackageController extends AbstractBusinessController {
 
     private final IShopOrderPackageService iShopOrderPackageService;
     private final IShopOrderMqProductService shopOrderMqProductService;
@@ -67,6 +65,8 @@ public class ShopOrderPackageController extends BaseController {
     @SaCheckPermission("order:shopOrderPackage:Verification")
     @PostMapping("/pickUpVerification")
     public R<Void> pickUpVerification(@Validated(EditGroup.class) @RequestBody SelfPickupOrderVerificationBo bo) {
+        // 检查商户状态
+        checkBusinessStatus();
         bo.setUserId(getUserId());
         bo.setVerificationRole(VerificationRole.SHOP_ADMIN);
         iShopOrderPackageService.pickUpVerification(bo);
@@ -82,6 +82,8 @@ public class ShopOrderPackageController extends BaseController {
     @SaCheckPermission("order:shopOrderPackage:verificationCode")
     @GetMapping("/getOrderByVerificationCode")
     public R<ShopOrderVo> getOrderByVerificationCode(SelfPickupOrderVerificationBo bo) {
+        // 检查商户状态
+        checkBusinessStatus();
         bo.setUserId(getUserId());
         ShopOrderVo order =iShopOrderPackageService.getOrderByVerificationCode(bo);
         if(ObjectUtil.isNotNull( order))

+ 21 - 22
ruoyi-admin/src/main/java/com/ruoyi/web/controller/subsidy/SubsidyModeController.java

@@ -1,40 +1,35 @@
 package com.ruoyi.web.controller.subsidy;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Arrays;
-
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.ruoyi.onlineorder.domain.bo.OnlineOrderBo;
-import com.ruoyi.onlineorder.domain.vo.OnlineOrderVo;
-import com.ruoyi.rabbitmq.client.RabbitMqClient;
-import com.ruoyi.rabbitmq.constant.DelayedConstant;
-import com.ruoyi.subsidy.domain.SubsidySharedPool;
-import lombok.RequiredArgsConstructor;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.*;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.subsidy.domain.vo.SubsidyModeVo;
+import com.ruoyi.rabbitmq.client.RabbitMqClient;
+import com.ruoyi.rabbitmq.constant.DelayedConstant;
+import com.ruoyi.subsidy.domain.SubsidySharedPool;
 import com.ruoyi.subsidy.domain.bo.SubsidyModeBo;
+import com.ruoyi.subsidy.domain.vo.SubsidyModeVo;
 import com.ruoyi.subsidy.service.ISubsidyModeService;
-import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.web.controller.common.AbstractBusinessController;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 补贴模式Controller
@@ -47,7 +42,7 @@ import io.swagger.annotations.ApiOperation;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/subsidy/subsidyMode")
-public class SubsidyModeController extends BaseController {
+public class SubsidyModeController extends AbstractBusinessController {
 
     private final ISubsidyModeService iSubsidyModeService;
     private final RabbitMqClient rabbitMqClient;
@@ -103,6 +98,8 @@ public class SubsidyModeController extends BaseController {
     @RepeatSubmit()
     @PostMapping("/add")
     public R<Void> add(@Validated(AddGroup.class) @RequestBody SubsidyModeBo bo) {
+        // 检查商户状态
+        checkBusinessStatus();
         bo.setBusinessId(getBusinessId(true));
         SubsidySharedPool subsidySharedPool = iSubsidyModeService.insertByBo(bo);
         if(ObjectUtil.isNull(subsidySharedPool) || ObjectUtil.isNull(subsidySharedPool.getExpireTime()) || subsidySharedPool.getSettlemented())
@@ -126,6 +123,8 @@ public class SubsidyModeController extends BaseController {
     @RepeatSubmit()
     @PostMapping("/edit")
     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubsidyModeBo bo) {
+        // 检查商户状态
+        checkBusinessStatus();
         bo.setBusinessId(getBusinessId(true));
         return toAjax(iSubsidyModeService.updateByBo(bo) ? 1 : 0);
     }

+ 7 - 0
ruoyi-business/src/main/java/com/ruoyi/business/service/IBusinessService.java

@@ -159,4 +159,11 @@ public interface IBusinessService {
     Long queryParentBusinessIdById(Long businessId);
 
     String getQrCode(Long id);
+
+    /**
+     * 验证商家是否可用
+     * @param businessId
+     * @return
+     */
+    boolean isValid(Long businessId);
 }

+ 6 - 0
ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java

@@ -766,4 +766,10 @@ public class BusinessServiceImpl implements IBusinessService {
         return business.getQrCode();
     }
 
+    @Override
+    public boolean isValid(Long businessId) {
+        Business business = loadById(businessId, true);
+        return business.isValid(false);
+    }
+
 }

+ 39 - 16
ruoyi-shop/src/main/java/com/ruoyi/shop/withdrawal/service/impl/WithdrawalServiceImpl.java

@@ -159,6 +159,7 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
      * @param bo 提现
      * @return 结果
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean insertByBo(WithdrawalBo bo) {
         //判断提现金单笔是否超200
@@ -188,6 +189,28 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setId(add.getId());
+            //扣减钱包
+            if (WithdrawalSource.USER.equals(add.getWithdrawalSource())) {
+                userService.changeUserBalance(UserChangeBalanceBo.builder()
+                    .userId(add.getWithdrawalSourceId())
+                    .entryValue(add.getAmount())
+                    .isAdd(false)
+                    .sourceType(BalanceSourceType.WITHDRAWAL)
+                    .sourceId(add.getId())
+                    .sourceCode(add.getWithdrawalNo())
+                    .remark("提现扣减")
+                    .build());
+            } else if (WithdrawalSource.AGENT.equals(add.getWithdrawalSource())) {
+                agentService.changeAgentBalance(AgentChangeBalanceBo.builder()
+                    .agentId(add.getWithdrawalSourceId())
+                    .entryValue(add.getAmount())
+                    .isAdd(false)
+                    .sourceType(com.ruoyi.agent.enums.BalanceSourceType.WITHDRAW)
+                    .sourceId(add.getId())
+                    .sourceCode(add.getWithdrawalNo())
+                    .remark("提现扣减")
+                    .build());
+            }
         }
         return flag;
     }
@@ -267,7 +290,7 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
             withdrawing = BigDecimal.ZERO;
         }
         WithdrawalAmountVo amountVo = new WithdrawalAmountVo();
-        amountVo.setAbleAmount(balance.subtract(withdrawing));
+        amountVo.setAbleAmount(balance);
         amountVo.setProcessingAmount(withdrawing);
         return amountVo;
     }
@@ -335,36 +358,36 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
                 throw new ServiceException(WithdrawalExceptionEnum.WITHDRAWAL_THIRD_ORDER_ID_EMPTY);
             }
             withdrawal.setThirdOrderId(thirdOrderId);
-            //扣减钱包
+            withdrawal.setStatus(WithdrawalStatus.SUCCESS);
+            withdrawal.setPaymentAmount(paymentAmount);
+            withdrawal.setPaymentTime(new Date());
+        } else if (AuditStatus.AUDIT_NOT_PASS.equals(bo.getAuditStatus())) {
+            if (StringUtils.isEmpty(bo.getAuditResult())) {
+                throw new ServiceException(WithdrawalExceptionEnum.WITHDRAWAL_AUDIT_RESULT_NOT_EMPTY);
+            }
+            withdrawal.setStatus(WithdrawalStatus.FAIL);
+            //返还钱包
             if (WithdrawalSource.USER.equals(withdrawal.getWithdrawalSource())) {
                 userService.changeUserBalance(UserChangeBalanceBo.builder()
                     .userId(withdrawal.getWithdrawalSourceId())
-                    .entryValue(amount)
-                    .isAdd(false)
+                    .entryValue(withdrawal.getAmount())
+                    .isAdd(true)
                     .sourceType(BalanceSourceType.WITHDRAWAL)
                     .sourceId(withdrawal.getId())
                     .sourceCode(withdrawal.getWithdrawalNo())
-                    .remark("提现扣减")
+                    .remark("提现失败返回")
                     .build());
             } else if (WithdrawalSource.AGENT.equals(withdrawal.getWithdrawalSource())) {
                 agentService.changeAgentBalance(AgentChangeBalanceBo.builder()
                     .agentId(withdrawal.getWithdrawalSourceId())
-                    .entryValue(amount)
-                    .isAdd(false)
+                    .entryValue(withdrawal.getAmount())
+                    .isAdd(true)
                     .sourceType(com.ruoyi.agent.enums.BalanceSourceType.WITHDRAW)
                     .sourceId(withdrawal.getId())
                     .sourceCode(withdrawal.getWithdrawalNo())
-                    .remark("提现扣减")
+                    .remark("提现失败返回")
                     .build());
             }
-            withdrawal.setStatus(WithdrawalStatus.SUCCESS);
-            withdrawal.setPaymentAmount(paymentAmount);
-            withdrawal.setPaymentTime(new Date());
-        } else if (AuditStatus.AUDIT_NOT_PASS.equals(bo.getAuditStatus())) {
-            if (StringUtils.isEmpty(bo.getAuditResult())) {
-                throw new ServiceException(WithdrawalExceptionEnum.WITHDRAWAL_AUDIT_RESULT_NOT_EMPTY);
-            }
-            withdrawal.setStatus(WithdrawalStatus.FAIL);
         } else {
             throw new ServiceException(WithdrawalExceptionEnum.WITHDRAWAL_AUDIT_STATUS_NOT_SUPPORT);
         }