guomengjiao месяцев назад: 3
Родитель
Сommit
62a5ad9e46

+ 8 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessIntegralVerifierController.java

@@ -13,6 +13,7 @@ import com.ruoyi.shop.business.domain.bo.UserBusinessVerifierIntegralBo;
 import com.ruoyi.shop.business.domain.vo.UserBusinessVerifierIntegralStatisticsVo;
 import com.ruoyi.shop.business.domain.vo.UserBusinessVerifierIntegralVo;
 import com.ruoyi.shop.business.service.IUserBusinessRoleService;
+import com.ruoyi.user.domain.bo.BalanceToIntegralBo;
 import com.ruoyi.user.domain.vo.UserVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -98,4 +99,11 @@ public class ApiBusinessIntegralVerifierController extends AbstractApiController
         return userBusinessRoleService.pageVerifyRecord(bo, pageQuery);
     }
 
+    @ApiOperation("余额转积分")
+    @PostMapping("/balanceToIntegral")
+    public R<Void> balanceToIntegral(@Validated @RequestBody BalanceToIntegralBo bo) {
+        userBusinessRoleService.balanceToIntegral(bo, getUserId(true));
+        return R.ok();
+    }
+
 }

+ 3 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/business/service/IUserBusinessRoleService.java

@@ -13,6 +13,7 @@ import com.ruoyi.shop.business.domain.vo.UserBusinessVerifierIntegralVo;
 import com.ruoyi.shop.order.domain.bo.BusinessCountBo;
 import com.ruoyi.common.enums.order.OrderType;
 import com.ruoyi.user.domain.User;
+import com.ruoyi.user.domain.bo.BalanceToIntegralBo;
 import com.ruoyi.user.domain.vo.UserVo;
 
 import java.math.BigDecimal;
@@ -153,4 +154,6 @@ public interface IUserBusinessRoleService {
     User initUserAndBindBusiness(String mobile, String nickname, Long businessId);
 
     List<BusinessIntegralVo> businessList(UserBusinessRoleBo bo);
+
+    void balanceToIntegral(BalanceToIntegralBo bo, Long userId);
 }

+ 42 - 2
ruoyi-shop/src/main/java/com/ruoyi/shop/business/service/impl/UserBusinessRoleServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.shop.business.service.impl;
 
+import cn.dev33.satoken.secure.BCrypt;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
@@ -18,6 +19,7 @@ import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.ExceptionEnum;
+import com.ruoyi.common.enums.order.OrderType;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -36,11 +38,13 @@ import com.ruoyi.shop.business.mapper.UserBusinessRoleMapper;
 import com.ruoyi.shop.business.service.IUserBusinessIntegralRecordService;
 import com.ruoyi.shop.business.service.IUserBusinessRoleService;
 import com.ruoyi.shop.order.domain.bo.BusinessCountBo;
-import com.ruoyi.common.enums.order.OrderType;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.user.domain.User;
+import com.ruoyi.user.domain.bo.BalanceToIntegralBo;
 import com.ruoyi.user.domain.bo.UserBo;
+import com.ruoyi.user.domain.bo.UserChangeBalanceBo;
 import com.ruoyi.user.domain.vo.UserVo;
+import com.ruoyi.user.enums.BalanceSourceType;
 import com.ruoyi.user.enums.IntegralBillType;
 import com.ruoyi.user.enums.IntegralSourceType;
 import com.ruoyi.user.service.IUserService;
@@ -51,7 +55,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -489,6 +496,39 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
         }).collect(Collectors.toList());
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void balanceToIntegral(BalanceToIntegralBo bo, Long userId) {
+        User user = userService.getById(userId, true);
+        if(!BCrypt.checkpw(bo.getPayPassword(), user.getPayPassword()))
+        {
+            throw new ServiceException("支付密码错误");
+        }
+        Business business = businessService.loadById(bo.getBusinessId(), true);
+        // 检查商家状态
+        business.isValid(true);
+        //先扣余额
+        userService.changeUserBalance(UserChangeBalanceBo.builder()
+            .userId(userId)
+            .entryValue(bo.getIntegral())
+            .isAdd(false)
+            .sourceType(BalanceSourceType.BALANCE_TO_INTEGRAL)
+            .remark("用户余额转存积分")
+            .businessId(business.getBusinessId())
+            .businessName(business.getBusinessName())
+            .build());
+        //在加积分
+        changeUserIntegral(UserBusinessChangeIntegralBo.builder()
+            .userId(userId)
+            .businessId(bo.getBusinessId())
+            .integral(bo.getIntegral())
+            .isAdd(true)
+            .canExpire(false)
+            .sourceType(IntegralSourceType.BALANCE_TO_INTEGRAL)
+            .remark("用户余额转存积分")
+            .build());
+    }
+
 
     private List<UserBusinessVerifierIntegralVo> convertVerifyList(List<UserBusinessVerifierIntegralVo> voList) {
         return voList.stream().map(vo -> {

+ 21 - 0
ruoyi-user/src/main/java/com/ruoyi/user/domain/bo/BalanceToIntegralBo.java

@@ -0,0 +1,21 @@
+package com.ruoyi.user.domain.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class BalanceToIntegralBo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("店铺id")
+    private Long businessId;
+
+    @ApiModelProperty("转积分数")
+    private BigDecimal integral;
+
+    @ApiModelProperty("支付密码")
+    private String payPassword;
+}

+ 1 - 0
ruoyi-user/src/main/java/com/ruoyi/user/enums/BalanceSourceType.java

@@ -21,6 +21,7 @@ public enum BalanceSourceType implements IIntegerEnum {
     ONLINE_ORDER_REFUND_DEDUCT(6, "在线订单退款扣除补贴"),
     SUBSIDY_OVERFLOW_RETURN(7, "消费排队均摊补贴溢出退回"),
     WITHDRAWAL(8, "提现"),
+    BALANCE_TO_INTEGRAL(9, "余额转积分"),
     ;
 
     @EnumValue

+ 1 - 0
ruoyi-user/src/main/java/com/ruoyi/user/enums/IntegralSourceType.java

@@ -33,6 +33,7 @@ public enum IntegralSourceType implements IIntegerEnum {
     EXPIRE(99, "过期"),
 
     INTEGRAL_VERIFY(100, "积分核销"),
+    BALANCE_TO_INTEGRAL(101, "余额转积分"),
     ;
 
     @EnumValue