|
|
|
@ -0,0 +1,371 @@
|
|
|
|
|
|
|
|
package com.zbkj.modules.autogencode.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
|
|
|
import com.zbkj.common.request.PageParamRequest;
|
|
|
|
|
|
|
|
import com.zbkj.common.response.CommonResult;
|
|
|
|
|
|
|
|
import com.zbkj.common.page.CommonPage;
|
|
|
|
|
|
|
|
import com.zbkj.common.utils.SecurityUtil;
|
|
|
|
|
|
|
|
import com.zbkj.common.vo.LoginUserVo;
|
|
|
|
|
|
|
|
import com.zbkj.modules.autogencode.entity.PmDailyMenu;
|
|
|
|
|
|
|
|
import com.zbkj.modules.autogencode.service.PmDailyMenuService;
|
|
|
|
|
|
|
|
import com.zbkj.modules.autogencode.entity.PmDailyMenuDtl;
|
|
|
|
|
|
|
|
import com.zbkj.modules.autogencode.service.PmDailyMenuDtlService;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
|
|
|
import com.zbkj.modules.autogencode.entity.PmDailyMenuDtlLike;
|
|
|
|
|
|
|
|
import com.zbkj.modules.autogencode.service.PmDailyMenuDtlLikeService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 食堂菜单明细点赞/点踩关联表 控制器
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@RestController
|
|
|
|
|
|
|
|
@RequestMapping("api/autogencode/pmdailymenudtllike")
|
|
|
|
|
|
|
|
public class PmDailyMenuDtlLikeController {
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private PmDailyMenuDtlLikeService pmDailyMenuDtlLikeService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private PmDailyMenuDtlService pmDailyMenuDtlService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private PmDailyMenuService pmDailyMenuService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 条件设置
|
|
|
|
|
|
|
|
* 根据实体类字段自动生成查询条件
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private void condition(LambdaQueryWrapper<PmDailyMenuDtlLike> queryWrapper, PmDailyMenuDtlLike request) {
|
|
|
|
|
|
|
|
if (request == null) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据实体类字段自动生成查询条件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 主键ID
|
|
|
|
|
|
|
|
if (request.getId() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getId, request.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 菜单明细ID(关联pm_daily_menu_dtl.id)
|
|
|
|
|
|
|
|
if (request.getMenuDtlId() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getMenuDtlId, request.getMenuDtlId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 评价用户ID
|
|
|
|
|
|
|
|
if (request.getUserId() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getUserId, request.getUserId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 菜单日期(冗余字段,方便按日统计)
|
|
|
|
|
|
|
|
if (request.getMenuDate() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getMenuDate, request.getMenuDate());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 评价类型:1-点赞,2-点踩
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(request.getLikeType())) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getLikeType, request.getLikeType());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 删除标志(0存在 2删除)
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(request.getDelFlag())) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getDelFlag, request.getDelFlag());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建人
|
|
|
|
|
|
|
|
if (request.getCreateBy() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getCreateBy, request.getCreateBy());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建时间
|
|
|
|
|
|
|
|
if (request.getCreateTime() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getCreateTime, request.getCreateTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 修改人
|
|
|
|
|
|
|
|
if (request.getUpdateBy() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getUpdateBy, request.getUpdateBy());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 修改时间
|
|
|
|
|
|
|
|
if (request.getUpdateTime() != null) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getUpdateTime, request.getUpdateTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 租户ID
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(request.getTenantId())) {
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getTenantId, request.getTenantId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 分页显示食堂菜单明细点赞/点踩关联表
|
|
|
|
|
|
|
|
* @param request 搜索条件
|
|
|
|
|
|
|
|
* @param pageParamRequest 分页参数
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@ApiOperation(value = "分页列表")
|
|
|
|
|
|
|
|
@RequestMapping(value = "/list", method = RequestMethod.GET)
|
|
|
|
|
|
|
|
public CommonResult<CommonPage<PmDailyMenuDtlLike>> getList(@Validated PmDailyMenuDtlLike request, @Validated PageParamRequest pageParamRequest) {
|
|
|
|
|
|
|
|
LambdaQueryWrapper<PmDailyMenuDtlLike> queryWrapper = new LambdaQueryWrapper();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 应用搜索条件
|
|
|
|
|
|
|
|
condition(queryWrapper, request);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CommonPage<PmDailyMenuDtlLike> page = CommonPage.restPage(pmDailyMenuDtlLikeService.pageList(queryWrapper, pageParamRequest));
|
|
|
|
|
|
|
|
return CommonResult.success(page);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 详情数据
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
|
|
|
|
|
|
|
|
public CommonResult<PmDailyMenuDtlLike> info(@PathVariable("id") Long id){
|
|
|
|
|
|
|
|
PmDailyMenuDtlLike pmDailyMenuDtlLike = pmDailyMenuDtlLikeService.getById(id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return CommonResult.success(pmDailyMenuDtlLike);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 新增数据
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@RequestMapping(value = "/save", method = RequestMethod.POST)
|
|
|
|
|
|
|
|
public CommonResult<String> save(@RequestBody PmDailyMenuDtlLike pmDailyMenuDtlLike){
|
|
|
|
|
|
|
|
if (pmDailyMenuDtlLikeService.save(pmDailyMenuDtlLike)) {
|
|
|
|
|
|
|
|
return CommonResult.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return CommonResult.failed();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 修改数据
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@RequestMapping(value = "/update", method = RequestMethod.POST)
|
|
|
|
|
|
|
|
public CommonResult<String> update(@RequestBody PmDailyMenuDtlLike pmDailyMenuDtlLike){
|
|
|
|
|
|
|
|
if (pmDailyMenuDtlLikeService.updateById(pmDailyMenuDtlLike)) {
|
|
|
|
|
|
|
|
return CommonResult.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return CommonResult.failed();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 删除:根据id集合
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@RequestMapping(value = "/delete", method = RequestMethod.POST)
|
|
|
|
|
|
|
|
public CommonResult<String> delete(@RequestBody Long[] ids){
|
|
|
|
|
|
|
|
if (pmDailyMenuDtlLikeService.removeByIds(Arrays.asList(ids))) {
|
|
|
|
|
|
|
|
return CommonResult.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return CommonResult.failed();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 对菜单明细进行点赞/点踩
|
|
|
|
|
|
|
|
* @param menuDtlId 菜单明细ID
|
|
|
|
|
|
|
|
* @param likeType 评价类型:1-点赞,2-点踩
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@ApiOperation(value = "对菜单明细进行点赞/点踩")
|
|
|
|
|
|
|
|
@RequestMapping(value = "/like", method = RequestMethod.POST)
|
|
|
|
|
|
|
|
public CommonResult<String> likeOrDislike(@RequestParam Long menuDtlId, @RequestParam String likeType) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// 获取当前登录用户ID
|
|
|
|
|
|
|
|
LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo();
|
|
|
|
|
|
|
|
if (loginUserVo == null || loginUserVo.getUser() == null) {
|
|
|
|
|
|
|
|
return CommonResult.failed("用户未登录");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Long userId = Long.valueOf(loginUserVo.getUser().getId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取菜单明细信息
|
|
|
|
|
|
|
|
PmDailyMenuDtl menuDtl = pmDailyMenuDtlService.getById(menuDtlId);
|
|
|
|
|
|
|
|
if (menuDtl == null) {
|
|
|
|
|
|
|
|
return CommonResult.failed("菜单明细不存在");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 通过PmDailyMenu 获取菜单日期
|
|
|
|
|
|
|
|
PmDailyMenu menu = pmDailyMenuService.getById(menuDtl.getMenuId());
|
|
|
|
|
|
|
|
if (menu == null) {
|
|
|
|
|
|
|
|
return CommonResult.failed("菜单不存在");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date menuDate = menu.getMenuDate();
|
|
|
|
|
|
|
|
if (menuDate == null) {
|
|
|
|
|
|
|
|
return CommonResult.failed("菜单日期不存在");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查用户在该日期的评价次数
|
|
|
|
|
|
|
|
LambdaQueryWrapper<PmDailyMenuDtlLike> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getUserId, userId);
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getMenuDate, menuDate);
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getLikeType, likeType);
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getDelFlag, "0");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int count = pmDailyMenuDtlLikeService.count(queryWrapper);
|
|
|
|
|
|
|
|
if (count >= 3) {
|
|
|
|
|
|
|
|
return CommonResult.failed("同一日期内" + ("1".equals(likeType) ? "点赞" : "点踩") + "次数已达上限(3次)");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否已经对该菜单明细进行过评价
|
|
|
|
|
|
|
|
LambdaQueryWrapper<PmDailyMenuDtlLike> existQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
|
existQueryWrapper.eq(PmDailyMenuDtlLike::getUserId, userId);
|
|
|
|
|
|
|
|
existQueryWrapper.eq(PmDailyMenuDtlLike::getMenuDtlId, menuDtlId);
|
|
|
|
|
|
|
|
existQueryWrapper.eq(PmDailyMenuDtlLike::getLikeType, likeType);
|
|
|
|
|
|
|
|
existQueryWrapper.eq(PmDailyMenuDtlLike::getDelFlag, "0");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PmDailyMenuDtlLike existingLike = pmDailyMenuDtlLikeService.getOne(existQueryWrapper);
|
|
|
|
|
|
|
|
if (existingLike != null) {
|
|
|
|
|
|
|
|
return CommonResult.failed("已经对该菜品进行过" + ("1".equals(likeType) ? "点赞" : "点踩"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 保存点赞/点踩记录
|
|
|
|
|
|
|
|
PmDailyMenuDtlLike like = new PmDailyMenuDtlLike();
|
|
|
|
|
|
|
|
like.setMenuDtlId(menuDtlId);
|
|
|
|
|
|
|
|
like.setUserId(userId);
|
|
|
|
|
|
|
|
like.setMenuDate(menuDate);
|
|
|
|
|
|
|
|
like.setLikeType(likeType);
|
|
|
|
|
|
|
|
like.setDelFlag("0");
|
|
|
|
|
|
|
|
like.setCreateBy(userId);
|
|
|
|
|
|
|
|
like.setCreateTime(new Date());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pmDailyMenuDtlLikeService.save(like)) {
|
|
|
|
|
|
|
|
return CommonResult.success("操作成功");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return CommonResult.failed("操作失败");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
return CommonResult.failed("操作失败:" + e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 查询菜品点赞和点踩排行
|
|
|
|
|
|
|
|
* @param limit 返回数量限制
|
|
|
|
|
|
|
|
* @param rankingType 排行类型:like-点赞排行,dislike-点踩排行
|
|
|
|
|
|
|
|
* @param itemType 菜品类型
|
|
|
|
|
|
|
|
* @param startDate 开始日期
|
|
|
|
|
|
|
|
* @param endDate 结束日期
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@ApiOperation(value = "查询菜品点赞和点踩排行")
|
|
|
|
|
|
|
|
@RequestMapping(value = "/ranking", method = RequestMethod.GET)
|
|
|
|
|
|
|
|
public CommonResult<CommonPage<PmDailyMenuDtlLike>> getRanking(@RequestParam(defaultValue = "10") Integer limit,
|
|
|
|
|
|
|
|
@RequestParam(defaultValue = "like") String rankingType,
|
|
|
|
|
|
|
|
@RequestParam(required = false) String itemType,
|
|
|
|
|
|
|
|
@RequestParam(required = false) String startDate,
|
|
|
|
|
|
|
|
@RequestParam(required = false) String endDate) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// 构建查询条件
|
|
|
|
|
|
|
|
LambdaQueryWrapper<PmDailyMenuDtlLike> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
|
queryWrapper.eq(PmDailyMenuDtlLike::getDelFlag, "0");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 如果有日期范围条件,添加日期过滤
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(startDate)) {
|
|
|
|
|
|
|
|
queryWrapper.ge(PmDailyMenuDtlLike::getMenuDate, startDate);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(endDate)) {
|
|
|
|
|
|
|
|
queryWrapper.le(PmDailyMenuDtlLike::getMenuDate, endDate);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取点赞/点踩记录
|
|
|
|
|
|
|
|
List<PmDailyMenuDtlLike> likeList = pmDailyMenuDtlLikeService.list(queryWrapper);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 统计每个菜品的点赞和点踩数量
|
|
|
|
|
|
|
|
Map<Long, Map<String, Object>> itemStats = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (PmDailyMenuDtlLike like : likeList) {
|
|
|
|
|
|
|
|
// 获取菜单明细信息
|
|
|
|
|
|
|
|
PmDailyMenuDtl menuDtl = pmDailyMenuDtlService.getById(like.getMenuDtlId());
|
|
|
|
|
|
|
|
if (menuDtl != null && StrUtil.isNotBlank(menuDtl.getItemName())) {
|
|
|
|
|
|
|
|
// 如果有菜品类型条件,过滤不符合的菜品
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(itemType) && !itemType.equals(menuDtl.getItemType())) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Long menuDtlId = menuDtl.getId();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化菜品统计信息
|
|
|
|
|
|
|
|
if (!itemStats.containsKey(menuDtlId)) {
|
|
|
|
|
|
|
|
Map<String, Object> stats = new HashMap<>();
|
|
|
|
|
|
|
|
stats.put("likeCount", 0);
|
|
|
|
|
|
|
|
stats.put("dislikeCount", 0);
|
|
|
|
|
|
|
|
stats.put("menuDtl", menuDtl);
|
|
|
|
|
|
|
|
itemStats.put(menuDtlId, stats);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新统计信息
|
|
|
|
|
|
|
|
Map<String, Object> stats = itemStats.get(menuDtlId);
|
|
|
|
|
|
|
|
if ("1".equals(like.getLikeType())) {
|
|
|
|
|
|
|
|
stats.put("likeCount", (Integer) stats.get("likeCount") + 1);
|
|
|
|
|
|
|
|
} else if ("2".equals(like.getLikeType())) {
|
|
|
|
|
|
|
|
stats.put("dislikeCount", (Integer) stats.get("dislikeCount") + 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 转换为排行列表
|
|
|
|
|
|
|
|
List<PmDailyMenuDtlLike> rankingList = new ArrayList<>();
|
|
|
|
|
|
|
|
for (Map.Entry<Long, Map<String, Object>> entry : itemStats.entrySet()) {
|
|
|
|
|
|
|
|
PmDailyMenuDtl menuDtl = (PmDailyMenuDtl) entry.getValue().get("menuDtl");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建PmDailyMenuDtlLike对象用于返回
|
|
|
|
|
|
|
|
PmDailyMenuDtlLike rankingItem = new PmDailyMenuDtlLike();
|
|
|
|
|
|
|
|
rankingItem.setId(menuDtl.getId());
|
|
|
|
|
|
|
|
rankingItem.setItemName(menuDtl.getItemName());
|
|
|
|
|
|
|
|
rankingItem.setItemType(menuDtl.getItemType());
|
|
|
|
|
|
|
|
rankingItem.setItemPrice(menuDtl.getItemPrice());
|
|
|
|
|
|
|
|
rankingItem.setLikeCount((Integer) entry.getValue().get("likeCount"));
|
|
|
|
|
|
|
|
rankingItem.setDislikeCount((Integer) entry.getValue().get("dislikeCount"));
|
|
|
|
|
|
|
|
rankingItem.setTotalCount((Integer) entry.getValue().get("likeCount") + (Integer) entry.getValue().get("dislikeCount"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rankingList.add(rankingItem);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据排行类型排序
|
|
|
|
|
|
|
|
if ("like".equals(rankingType)) {
|
|
|
|
|
|
|
|
// 按照点赞数量排序
|
|
|
|
|
|
|
|
rankingList.sort((a, b) -> {
|
|
|
|
|
|
|
|
return Integer.compare(b.getLikeCount(), a.getLikeCount());
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
} else if ("dislike".equals(rankingType)) {
|
|
|
|
|
|
|
|
// 按照点踩数量排序
|
|
|
|
|
|
|
|
rankingList.sort((a, b) -> {
|
|
|
|
|
|
|
|
return Integer.compare(b.getDislikeCount(), a.getDislikeCount());
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 限制返回数量
|
|
|
|
|
|
|
|
if (rankingList.size() > limit) {
|
|
|
|
|
|
|
|
rankingList = rankingList.subList(0, limit);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
CommonPage<PmDailyMenuDtlLike> page = CommonPage.restPage(rankingList);
|
|
|
|
|
|
|
|
return CommonResult.success(page);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
return CommonResult.failed("查询失败:" + e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|