feat:不活跃用户列表
This commit is contained in:
1 parent
a3c441a083
commit
0228b99844
6 files changed
+118
-6
No files matched your search
+31
@@ -0,0 +1,31 @@
|
||||
package com.bsd.pjcloud.wallet.api.dto;
|
||||
|
||||
import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class WalletTopupActionDto implements BaseIsIncludeTreeInterface {
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 不活跃天数
|
||||
*/
|
||||
private Long unactiveMonthsNumber;
|
||||
|
||||
/**
|
||||
* 部门ids
|
||||
*/
|
||||
private List<Long> deptIds;
|
||||
|
||||
/**
|
||||
* 是否包含部门ids
|
||||
*/
|
||||
private Boolean isInclude;
|
||||
|
||||
}
|
||||
+9
-1
@@ -15,6 +15,7 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils;
|
||||
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTopupActionDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletManageVo;
|
||||
import com.bsd.pjcloud.wallet.mapper.WalletManageMapper;
|
||||
@@ -195,11 +196,18 @@ public class WalletManageController {
|
||||
|
||||
@Operation(summary = "钱包记录分页", description = "钱包记录分页")
|
||||
@PostMapping("/page-join-qb")
|
||||
public R pageJoinQb(@ParameterObject Page page, @RequestBody WalletManageBalanceDto dto) {
|
||||
public R<Page<WalletManageVo>> pageJoinQb(@ParameterObject Page page, @RequestBody WalletManageBalanceDto dto) {
|
||||
DataScope dataScope = new DataScope();
|
||||
return R.ok(walletManageService.scopeQbPage(page, dto, dataScope));
|
||||
}
|
||||
|
||||
@Operation(summary = "不活跃用户钱包", description = "不活跃用户钱包")
|
||||
@PostMapping("/page-join-active")
|
||||
public R<Page<WalletManageVo>> pageJoinActive(@ParameterObject Page page, @RequestBody WalletTopupActionDto dto) {
|
||||
DataScope dataScope = new DataScope();
|
||||
return R.ok(walletManageService.pageJoinActive(page, dto, dataScope));
|
||||
}
|
||||
|
||||
@Operation(summary = "通过id查询", description = "通过id查询")
|
||||
@GetMapping("/{id}")
|
||||
@PreAuthorize("@pms.hasPermission('wallet_walletManage_view')")
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTopupActionDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletManageBalanceVo;
|
||||
@@ -159,4 +160,6 @@ public interface WalletManageMapper extends PjcloudBaseMapper<WalletManageEntity
|
||||
List<Long> scopeUserList(@Param("dto") WalletManageDto dto, @Param("dataScope") DataScope dataScope);
|
||||
|
||||
List<WalletManageBalanceVo> selectBalance(@Param("dto") WalletManageBalanceDto walletDto);
|
||||
|
||||
Page<WalletManageVo> activeBalancePage(Page page, @Param("dto") WalletTopupActionDto dto, @Param("unactiveDayNumberStr") String unactiveDayNumberStr);
|
||||
}
|
||||
+6
@@ -6,6 +6,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTopupActionDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletManageVo;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
@@ -62,6 +63,11 @@ public interface WalletManageService extends IService<WalletManageEntity> {
|
||||
|
||||
Page<WalletManageVo> scopeQbPage(Page page, WalletManageBalanceDto dto, DataScope dataScope);
|
||||
|
||||
/**
|
||||
* 不活跃用户钱包
|
||||
*/
|
||||
Page<WalletManageVo> pageJoinActive(Page page, WalletTopupActionDto dto, DataScope dataScope);
|
||||
|
||||
List<WalletManageVo> scopeQbList(WalletManageBalanceDto dto, DataScope dataScope);
|
||||
|
||||
WalletManageVo join(Long walletId);
|
||||
|
||||
+21
-5
@@ -30,6 +30,7 @@ import com.bsd.pjcloud.common.data.resolver.ParamResolver;
|
||||
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletManageDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTopupActionDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.*;
|
||||
import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil;
|
||||
@@ -53,6 +54,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@@ -201,14 +203,14 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
@Override
|
||||
public List<WalletManageVo> scopeList(WalletManageDto dto, DataScope dataScope) {
|
||||
List<WalletManageVo> list = baseMapper.scopeList(dto, dataScope);
|
||||
disposeList(list, dto);
|
||||
disposeList(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<WalletManageVo> scopePageList(Page page, WalletManageDto dto, DataScope dataScope) {
|
||||
Page<WalletManageVo> list = baseMapper.scopePage(page, dto, dataScope);
|
||||
disposeList(list.getRecords(), dto);
|
||||
disposeList(list.getRecords());
|
||||
return list;
|
||||
}
|
||||
|
||||
@@ -278,10 +280,24 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
});
|
||||
}
|
||||
}
|
||||
disposeList(walletPage.getRecords(), walletDto);
|
||||
disposeList(walletPage.getRecords());
|
||||
return walletPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 不活跃用户钱包
|
||||
*/
|
||||
@Override
|
||||
public Page<WalletManageVo> pageJoinActive(Page page, WalletTopupActionDto dto, DataScope dataScope) {
|
||||
if (ObjectUtil.isNotEmpty(dto.getUnactiveMonthsNumber())) {
|
||||
dto.setUnactiveMonthsNumber(3L);
|
||||
}
|
||||
String unactiveDayNumberStr = LocalDateTimeUtil.format(LocalDateTimeUtil.now().minusMonths(dto.getUnactiveMonthsNumber()), DatePattern.NORM_DATE_PATTERN);
|
||||
Page<WalletManageVo> pageList = baseMapper.activeBalancePage(page, dto, unactiveDayNumberStr);
|
||||
disposeList(pageList.getRecords());
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WalletManageVo> scopeQbList(WalletManageBalanceDto dto, DataScope dataScope) {
|
||||
WalletManageDto walletDto = BeanUtils.toBean(dto, WalletManageDto.class);
|
||||
@@ -314,7 +330,7 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
});
|
||||
}
|
||||
}
|
||||
disposeList(walletList, walletDto);
|
||||
disposeList(walletList);
|
||||
return walletList;
|
||||
}
|
||||
|
||||
@@ -470,7 +486,7 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
return "消费钱包余额不足100元";
|
||||
}
|
||||
|
||||
private void disposeList(List<WalletManageVo> list, WalletManageDto dto) {
|
||||
private void disposeList(List<WalletManageVo> list) {
|
||||
if (ObjectUtil.isNotEmpty(list)) {
|
||||
// 用户
|
||||
List<Long> userIds = list.stream().map(WalletManageVo::getUserId).distinct().toList();
|
||||
|
||||
@@ -125,4 +125,52 @@
|
||||
<delete id="scopeUserList">
|
||||
<include refid="scopeUser" />
|
||||
</delete>
|
||||
|
||||
<select id="activeBalancePage" resultType="com.bsd.pjcloud.wallet.api.vo.WalletManageVo">
|
||||
<include refid="selectA"/>
|
||||
where a.del_flag = 0
|
||||
and a.id not in (SELECT DISTINCT (sub.wallet_id)
|
||||
FROM wallet_transaction sub
|
||||
LEFT JOIN wallet_manage wallet on wallet.id = sub.wallet_id
|
||||
WHERE sub.user_id = a.user_id
|
||||
<if test="dto.userId != null">
|
||||
AND sub.user_id = #{dto.userId}
|
||||
</if>
|
||||
<if test="dto.deptIds != null and dto.deptIds.size() != 0">
|
||||
<choose>
|
||||
<when test="dto.isInclude != null and dto.isInclude == true">
|
||||
and sub.dept_id IN
|
||||
</when>
|
||||
<when test="dto.isInclude != null and dto.isInclude == false">
|
||||
and sub.dept_id NOT IN
|
||||
</when>
|
||||
<otherwise>
|
||||
and sub.dept_id IN
|
||||
</otherwise>
|
||||
</choose>
|
||||
<foreach collection="dto.deptIds" item="v" open="(" close=")" separator=",">
|
||||
#{v}
|
||||
</foreach>
|
||||
</if>
|
||||
AND DATE_FORMAT(sub.create_time, '%Y-%m-%d') <= #{unactiveDayNumberStr})
|
||||
<if test="dto.userId != null">
|
||||
AND a.user_id = #{dto.userId}
|
||||
</if>
|
||||
<if test="dto.deptIds != null and dto.deptIds.size() != 0">
|
||||
<choose>
|
||||
<when test="dto.isInclude != null and dto.isInclude == true">
|
||||
and a.dept_id IN
|
||||
</when>
|
||||
<when test="dto.isInclude != null and dto.isInclude == false">
|
||||
and a.dept_id NOT IN
|
||||
</when>
|
||||
<otherwise>
|
||||
and a.dept_id IN
|
||||
</otherwise>
|
||||
</choose>
|
||||
<foreach collection="dto.deptIds" item="v" open="(" close=")" separator=",">
|
||||
#{v}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in new issue
Block a user