@ -1,16 +1,19 @@
package cn.iocoder.yudao.module.promotion.controller.admin.combination ;
package cn.iocoder.yudao.module.promotion.controller.admin.combination ;
import cn.hutool.core.map.MapUtil ;
import cn.iocoder.yudao.framework.common.pojo.CommonResult ;
import cn.iocoder.yudao.framework.common.pojo.CommonResult ;
import cn.iocoder.yudao.framework.common.pojo.PageResult ;
import cn.iocoder.yudao.framework.common.pojo.PageResult ;
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordPageItemRespVO ;
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO ;
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO ;
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecord Resp VO;
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecord Summary VO;
import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert ;
import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert ;
import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO ;
import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO ;
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum ;
import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService ;
import cn.iocoder.yudao.module.promotion.service.combination.CombinationRecordService ;
import cn.iocoder.yudao.module.promotion.service.combination.CombinationRecordService ;
import com.google.common.cache.CacheLoader ;
import com.google.common.cache.LoadingCache ;
import io.swagger.v3.oas.annotations.Operation ;
import io.swagger.v3.oas.annotations.Operation ;
import io.swagger.v3.oas.annotations.tags.Tag ;
import io.swagger.v3.oas.annotations.tags.Tag ;
import org.springframework.context.annotation.Lazy ;
import org.springframework.security.access.prepost.PreAuthorize ;
import org.springframework.security.access.prepost.PreAuthorize ;
import org.springframework.validation.annotation.Validated ;
import org.springframework.validation.annotation.Validated ;
import org.springframework.web.bind.annotation.GetMapping ;
import org.springframework.web.bind.annotation.GetMapping ;
@ -19,11 +22,10 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource ;
import javax.annotation.Resource ;
import javax.validation.Valid ;
import javax.validation.Valid ;
import java.time.Duration ;
import java.util.List ;
import java.util.Map ;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success ;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success ;
import static cn.iocoder.yudao.framework.common.util.c ache.CacheUtils.buildAsyncReloadingCache ;
import static cn.iocoder.yudao.framework.common.util.c ollection.CollectionUtils.convertSet ;
@Tag ( name = "管理后台 - 拼团记录" )
@Tag ( name = "管理后台 - 拼团记录" )
@RestController
@RestController
@ -32,44 +34,31 @@ import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsync
public class CombinationRecordController {
public class CombinationRecordController {
@Resource
@Resource
private CombinationActivityService combinationActivityService ;
@Resource
@Lazy
private CombinationRecordService combinationRecordService ;
private CombinationRecordService combinationRecordService ;
// TODO @puhui999:这个缓存不用做哈;主要管理后台,对性能要求不高;不像前段;
/ * *
* { @link Map } 缓 存 , 通 过 它 异 步 刷 新 { @link # getCombinationRecordSummary0 ( ) } 所 要 的 拼 团 记 录 统 计 数 据
* /
private final LoadingCache < String , Map < String , Long > > combinationRecordSummary = buildAsyncReloadingCache ( Duration . ofSeconds ( 60L ) ,
new CacheLoader < String , Map < String , Long > > ( ) {
@Override
public Map < String , Long > load ( String key ) {
return getCombinationRecordSummary0 ( ) ;
}
} ) ;
@GetMapping ( "/page" )
@GetMapping ( "/page" )
@Operation ( summary = "获得拼团记录分页" )
@Operation ( summary = "获得拼团记录分页" )
@PreAuthorize ( "@ss.hasPermission('promotion:combination-record:query')" )
@PreAuthorize ( "@ss.hasPermission('promotion:combination-record:query')" )
public CommonResult < PageResult < CombinationRecordRespVO > > getBargainRecordPage ( @Valid CombinationRecordReqPageVO pageVO ) {
public CommonResult < PageResult < CombinationRecordPageItemRespVO > > getBargainRecordPage ( @Valid CombinationRecordReqPageVO pageVO ) {
return success ( CombinationActivityConvert . INSTANCE . convert (
PageResult < CombinationRecordDO > recordPage = combinationRecordService . getCombinationRecordPage ( pageVO ) ;
combinationRecordService . getCombinationRecordPage ( pageVO ) ) ) ;
List < CombinationActivityDO > activities = combinationActivityService . getCombinationActivityListByIds (
convertSet ( recordPage . getList ( ) , CombinationRecordDO : : getActivityId ) ) ;
return success ( CombinationActivityConvert . INSTANCE . convert ( recordPage , activities ) ) ;
}
}
// TODO @puhui999: Map 改成对象,尽量避免 Map 返回结果哈;然后 getCombinationRecordCount、getCombinationRecordsSuccessCount、getRecordsVirtualGroupCount 三个方法,可以合并成一个方法哈,返回这个 vo
@GetMapping ( "/get-summary" )
@GetMapping ( "/get-summary" )
@Operation ( summary = "获得拼团记录的概要信息" , description = "用于拼团记录页面展示" )
@Operation ( summary = "获得拼团记录的概要信息" , description = "用于拼团记录页面展示" )
@PreAuthorize ( "@ss.hasPermission('promotion:combination-record:query')" )
@PreAuthorize ( "@ss.hasPermission('promotion:combination-record:query')" )
public CommonResult < Map < String , Long > > getCombinationRecordSummary ( ) {
public CommonResult < CombinationRecordSummaryVO > getCombinationRecordSummary ( ) {
return success ( combinationRecordSummary . getUnchecked ( "" ) ) ; // 缓存
CombinationRecordSummaryVO summaryVO = new CombinationRecordSummaryVO ( ) ;
}
summaryVO . setUserCount ( combinationRecordService . getCombinationRecordCount ( null , null ) ) ; // 获取所有拼团记录
summaryVO . setSuccessCount ( combinationRecordService . getCombinationRecordCount (
private Map < String , Long > getCombinationRecordSummary0 ( ) {
CombinationRecordStatusEnum . SUCCESS . getStatus ( ) , null ) ) ; // 获取成团记录
Map < String , Long > hashMap = MapUtil . newHashMap ( 3 ) ; // TODO @puhui999: Maps.newHashMapWithExpectedSize()
summaryVO . setVirtualGroupCount ( combinationRecordService . getCombinationRecordCount ( null , Boolean . TRUE ) ) ; // 获取虚拟成团记录
hashMap . put ( "userCount" , combinationRecordService . getCombinationRecordCount ( ) ) ; // 获取所有拼团记录
return success ( summaryVO ) ;
hashMap . put ( "successCount" , combinationRecordService . getCombinationRecordsSuccessCount ( ) ) ; // 获取成团记录
hashMap . put ( "virtualGroupCount" , combinationRecordService . getRecordsVirtualGroupCount ( ) ) ; // 获取虚拟成团记录
return hashMap ;
}
}
}
}