待分成金额

This commit is contained in:
磷叶 2024-10-29 17:16:15 +08:00
parent f2b4675ac3
commit fdfc592f76
10 changed files with 100 additions and 0 deletions

View File

@ -0,0 +1,18 @@
package com.ruoyi.common.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author wjh
* 2024/10/29
*/
@Data
public class LongDecimalVO {
private Long key;
private BigDecimal value;
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.ss.bonus.mapper;
import com.ruoyi.common.domain.vo.CommonCountVO;
import com.ruoyi.common.domain.vo.CommonSumVO;
import com.ruoyi.common.domain.vo.LongDecimalVO;
import com.ruoyi.ss.bonus.domain.Bonus;
import com.ruoyi.ss.bonus.domain.BonusProvideQuery;
import com.ruoyi.ss.bonus.domain.BonusQuery;
@ -130,4 +131,9 @@ public interface BonusMapper
* @return
*/
int selectCount(@Param("query") BonusQuery query);
/**
* 查询未分成金额并以到账方分组
*/
List<LongDecimalVO> selectWaitAmountGroupByArrival(@Param("query") BonusQuery query);
}

View File

@ -177,6 +177,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<resultMap id="LongDecimalVO" type="LongDecimalVO" autoMapping="true">
<id column="key" property="key"/>
<id column="value" property="value" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
</resultMap>
<select id="selectWaitAmountGroupByArrival" resultType="LongDecimalVO">
select
sb.arrival_id as `key`,
sum(sb.wait_amount) as `value`
<include refid="searchTables"/>
<where>
<include refid="searchCondition"/>
</where>
group by `key`
</select>
<insert id="insertBonus" parameterType="Bonus" useGeneratedKeys="true" keyProperty="id">
insert into ss_bonus
<trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -2,6 +2,7 @@ package com.ruoyi.ss.bonus.service;
import com.ruoyi.common.domain.vo.CommonCountVO;
import com.ruoyi.common.domain.vo.CommonSumVO;
import com.ruoyi.common.domain.vo.LongDecimalVO;
import com.ruoyi.ss.bonus.domain.Bonus;
import com.ruoyi.ss.bonus.domain.BonusProvideQuery;
import com.ruoyi.ss.bonus.domain.BonusQuery;
@ -147,4 +148,9 @@ public interface BonusService
* 支付预计分成在指定时间的分成
*/
int payBonusBeforeTime(LocalDateTime time);
/**
* 查询待分成金额以到账方分组统计
*/
List<LongDecimalVO> selectWaitAmountGroupByArrival(BonusQuery query);
}

View File

@ -3,6 +3,7 @@ package com.ruoyi.ss.bonus.service.impl;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.domain.vo.CommonCountVO;
import com.ruoyi.common.domain.vo.CommonSumVO;
import com.ruoyi.common.domain.vo.LongDecimalVO;
import com.ruoyi.common.enums.LoginType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
@ -36,6 +37,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@ -410,6 +412,11 @@ public class BonusServiceImpl implements BonusService
return sum;
}
@Override
public List<LongDecimalVO> selectWaitAmountGroupByArrival(BonusQuery query) {
return bonusMapper.selectWaitAmountGroupByArrival(query);
}
private int batchUpdateAmount(List<BonusVO> list) {
if (CollectionUtils.isEmptyElement(list)) {
return 0;

View File

@ -49,4 +49,8 @@ public class SmUserVo extends SmUser {
@ApiModelProperty("实际服务费率")
private BigDecimal realServiceRate;
@ApiModelProperty("未入账金额")
@JsonView(JsonViewProfile.App.class)
private BigDecimal waitBonusAmount;
}

View File

@ -29,4 +29,10 @@ public interface UserAssembler {
* 拼接用户实际服务费率
*/
void assembleRealServiceRate(List<SmUserVo> list);
/**
* 拼接未入账金额
* @param list
*/
void assembleWaitBonusAmount(List<SmUserVo> list);
}

View File

@ -1,7 +1,13 @@
package com.ruoyi.ss.user.service.impl;
import com.ruoyi.common.domain.vo.LongDecimalVO;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.collection.CollectionUtils;
import com.ruoyi.ss.bonus.domain.Bonus;
import com.ruoyi.ss.bonus.domain.BonusQuery;
import com.ruoyi.ss.bonus.domain.enums.BonusArrivalType;
import com.ruoyi.ss.bonus.domain.enums.BonusStatus;
import com.ruoyi.ss.bonus.service.BonusService;
import com.ruoyi.ss.device.domain.DeviceCountVO;
import com.ruoyi.ss.device.domain.DeviceQuery;
import com.ruoyi.ss.device.domain.enums.DeviceGroupBy;
@ -18,6 +24,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -36,6 +43,9 @@ public class UserAssemblerImpl implements UserAssembler {
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private BonusService bonusService;
/**
* 拼接用户店铺数量
*
@ -120,4 +130,28 @@ public class UserAssemblerImpl implements UserAssembler {
}
}
}
@Override
public void assembleWaitBonusAmount(List<SmUserVo> list) {
if (CollectionUtils.isEmptyElement(list)) {
return ;
}
BonusQuery query = new BonusQuery();
query.setArrivalIds(CollectionUtils.map(list, SmUserVo::getUserId));
query.setArrivalTypes(BonusArrivalType.userList());
query.setStatus(BonusStatus.WAIT_DIVIDE.getStatus());
List<LongDecimalVO> amountList = bonusService.selectWaitAmountGroupByArrival(query);
for (SmUserVo user : list) {
LongDecimalVO sum = amountList.stream()
.filter(item -> Objects.equals(item.getKey(), user.getUserId()))
.findFirst().orElse(null);
if (sum != null) {
user.setWaitBonusAmount(sum.getValue());
} else {
user.setWaitBonusAmount(BigDecimal.ZERO);
}
}
}
}

View File

@ -72,6 +72,7 @@ public class AppUserController extends BaseController {
userService.desensitization(list);
userAssembler.assembleStoreCount(list);
userAssembler.assembleDeviceCount(list);
userAssembler.assembleWaitBonusAmount(list);
return AjaxResult.success(user);
}

View File

@ -60,6 +60,7 @@ public class SmUserController extends BaseController
userAssembler.assembleDeviceCount(list);
userAssembler.assembleRealServiceRate(list);
smUserService.desensitization(list);
userAssembler.assembleWaitBonusAmount(list);
return getDataTable(list);
}
@ -100,6 +101,7 @@ public class SmUserController extends BaseController
userAssembler.assembleDeviceCount(list);
userAssembler.assembleRealServiceRate(list);
smUserService.desensitization(list);
userAssembler.assembleWaitBonusAmount(list);
return success(user);
}