Parcourir la source

首页用户统计

guomengjiao il y a 4 mois
Parent
commit
e8cd78b009

+ 2 - 1
ruoyi-api/src/main/java/com/ruoyi/api/controller/shop/ApiAgentWithdrawalController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.constraints.DecimalMin;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
+import java.util.Map;
 
 /**
  * 提现Controller
@@ -63,7 +64,7 @@ public class ApiAgentWithdrawalController extends AbstractApiController {
      */
     @ApiOperation("获取提现手续费")
     @GetMapping("/fee")
-    public R<BigDecimal> queryFee(@NotNull(message = "金额不能为空")
+    public R<Map<String, BigDecimal>> queryFee(@NotNull(message = "金额不能为空")
                                   @DecimalMin(value = "0.01", message = "金额必须大于0.01")
                                   BigDecimal amount) {
         return R.ok(iWithdrawalService.queryFee(WithdrawalSource.AGENT, amount));

+ 2 - 1
ruoyi-api/src/main/java/com/ruoyi/api/controller/shop/ApiUserWithdrawalController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.constraints.DecimalMin;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
+import java.util.Map;
 
 /**
  * 提现Controller
@@ -63,7 +64,7 @@ public class ApiUserWithdrawalController extends AbstractApiController {
      */
     @ApiOperation("获取提现手续费")
     @GetMapping("/fee")
-    public R<BigDecimal> queryFee(@NotNull(message = "金额不能为空")
+    public R<Map<String, BigDecimal>> queryFee(@NotNull(message = "金额不能为空")
                                   @DecimalMin(value = "0.01", message = "金额必须大于0.01")
                                   BigDecimal amount) {
         return R.ok(iWithdrawalService.queryFee(WithdrawalSource.USER, amount));

+ 21 - 0
ruoyi-common/src/main/java/com/ruoyi/common/convert/StringToDateConverter.java

@@ -0,0 +1,21 @@
+package com.ruoyi.common.convert;
+
+import org.springframework.core.convert.converter.Converter;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class StringToDateConverter implements Converter<String, Date> {
+    private static final String[] PATTERNS = {"yyyy-MM-dd", "yyyy/MM/dd"};
+
+    @Override
+    public Date convert(String source) {
+        for (String pattern : PATTERNS) {
+            try {
+                return new SimpleDateFormat(pattern).parse(source);
+            } catch (ParseException ignored) {}
+        }
+        throw new IllegalArgumentException("无效日期格式: " + source);
+    }
+}

+ 2 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java

@@ -1,5 +1,6 @@
 package com.ruoyi.framework.config;
 
+import com.ruoyi.common.convert.StringToDateConverter;
 import com.ruoyi.common.enums.serializer.EnumConvertFactory;
 import com.ruoyi.framework.interceptor.PlusWebInvokeTimeInterceptor;
 import com.yomahub.tlog.web.interceptor.TLogWebInterceptor;
@@ -35,6 +36,7 @@ public class ResourcesConfig implements WebMvcConfigurer {
     @Override
     public void addFormatters(FormatterRegistry registry) {
         registry.addConverterFactory(enumConvertFactory);
+        registry.addConverter(new StringToDateConverter());
     }
     @Override
     public void addInterceptors(InterceptorRegistry registry) {

+ 6 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/business/domain/bo/UserBusinessVerifierIntegralBo.java

@@ -1,7 +1,9 @@
 package com.ruoyi.shop.business.domain.bo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
@@ -49,11 +51,15 @@ public class UserBusinessVerifierIntegralBo implements Serializable {
      * 开始时间
      */
     @ApiModelProperty("开始时间")
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startTime;
 
     /**
      * 结束时间
      */
     @ApiModelProperty("结束时间")
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 }

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

@@ -225,7 +225,7 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
     @Override
     public void updateByUserAndBusiness(Long userId, Long businessId, BigDecimal amount, OrderType orderType) {
         UserBusinessRole userBusinessRole = queryByUserAndBusiness(userId, businessId);
-        if(ObjectUtil.isEmpty(userBusinessRole)){
+        if(ObjectUtil.isNull(userBusinessRole)){
             userBusinessRole = new UserBusinessRole();
             userBusinessRole.setUserId(userId);
             userBusinessRole.setBusinessId(businessId);
@@ -234,6 +234,13 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
             } else if (OrderType.ONLINE.equals(orderType)) {
                 userBusinessRole.setOnlineOrderTotalConsumption(amount);
             }
+            Long count = baseMapper.selectCount(new LambdaQueryWrapper<UserBusinessRole>().eq(UserBusinessRole::getUserId, userId));
+            if (count > 0) {
+                userBusinessRole.setIsBound(false);
+            } else {
+                //第一次消费
+                userBusinessRole.setIsBound(true);
+            }
         } else {
             if (OrderType.NORMAL.equals(orderType)) {
                 userBusinessRole.setOrderTotalConsumption(userBusinessRole.getOrderTotalConsumption().add(amount));
@@ -241,13 +248,6 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
                 userBusinessRole.setOnlineOrderTotalConsumption(userBusinessRole.getOnlineOrderTotalConsumption().add(amount));
             }
         }
-        Long count = baseMapper.selectCount(new LambdaQueryWrapper<UserBusinessRole>().eq(UserBusinessRole::getUserId, userId));
-        if (count > 0) {
-            userBusinessRole.setIsBound(false);
-        } else {
-            //第一次消费
-            userBusinessRole.setIsBound(true);
-        }
         baseMapper.insertOrUpdate(userBusinessRole);
     }
 

+ 2 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/withdrawal/service/IWithdrawalService.java

@@ -11,6 +11,7 @@ import com.ruoyi.shop.withdrawal.enums.WithdrawalSource;
 import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 提现Service接口
@@ -75,7 +76,7 @@ public interface IWithdrawalService {
      * @param amount 提现金额
      * @return 提现手续费
      */
-    BigDecimal queryFee(WithdrawalSource withdrawalSource, BigDecimal amount);
+    Map<String, BigDecimal> queryFee(WithdrawalSource withdrawalSource, BigDecimal amount);
     /**
      * 校验并批量删除提现信息
      *

+ 11 - 7
ruoyi-shop/src/main/java/com/ruoyi/shop/withdrawal/service/impl/WithdrawalServiceImpl.java

@@ -48,10 +48,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 提现Service业务层处理
@@ -178,7 +175,8 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
             throw new ServiceException("支付密码错误");
         }
         //判断手续费是否一致
-        if (queryFee(bo.getWithdrawalSource(), bo.getAmount()).compareTo(bo.getFee()) != 0) {
+        Map<String, BigDecimal> map = queryFee(bo.getWithdrawalSource(), bo.getAmount());
+        if (map.getOrDefault("fee", BigDecimal.ZERO).compareTo(bo.getFee()) != 0) {
             throw new ServiceException(WithdrawalExceptionEnum.WITHDRAWAL_FEE_NOT_MATCH);
         }
         Withdrawal add = BeanUtil.toBean(bo, Withdrawal.class);
@@ -198,7 +196,7 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
      * 查询提现手续费
      */
     @Override
-    public BigDecimal queryFee(WithdrawalSource withdrawalSource, BigDecimal amount) {
+    public Map<String, BigDecimal> queryFee(WithdrawalSource withdrawalSource, BigDecimal amount) {
         RevenueSharingConfigVo info = revenueSharingConfigService.getInfo();
         BigDecimal withdrawRatio = null;
         if (WithdrawalSource.USER.equals(withdrawalSource)) {
@@ -210,7 +208,10 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
         if (withdrawRatio != null) {
             fee = MathUtils.setScale(amount.doubleValue() * withdrawRatio.doubleValue() / 100);
         }
-        return fee;
+        Map<String, BigDecimal> map = new HashMap<>();
+        map.put("fee", fee);
+        map.put("withdrawRatio", withdrawRatio);
+        return map;
     }
 
     /**
@@ -262,6 +263,9 @@ public class WithdrawalServiceImpl implements IWithdrawalService {
         }
         //查提现审核中
         BigDecimal withdrawing = baseMapper.withdrawing(withdrawalSourceId, withdrawalSource.getCode(), AuditStatus.WAIT_AUDIT.getCode());
+        if (withdrawing == null) {
+            withdrawing = BigDecimal.ZERO;
+        }
         WithdrawalAmountVo amountVo = new WithdrawalAmountVo();
         amountVo.setAbleAmount(balance.subtract(withdrawing));
         amountVo.setProcessingAmount(withdrawing);

+ 0 - 1
ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java

@@ -115,7 +115,6 @@ public class UserServiceImpl implements IUserService {
         if(ObjectUtil.isNotNull(bo.getCreateDayEnd())) {
             bo.setCreateDayEnd(DateUtil.endOfDay(bo.getCreateDayEnd()));
         }
-
         LambdaQueryWrapper<User> lqw = buildQueryWrapper(bo);
         Page<UserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);