一周菜谱(详情)api/v2/applet/menurecipe/week/recipe/detail

This commit is contained in:
tqzhang 2025-02-07 15:08:55 +08:00
parent 676001afa3
commit 08c8f1b0a3
11 changed files with 304 additions and 222 deletions

View File

@ -1,6 +1,7 @@
package com.bonus.core.account.v3.app.controller;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.core.account.v3.app.dto.AppTradeDetailListDTO;
import com.bonus.core.account.v3.app.service.AppAccService;
@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Resource;
import javax.validation.Valid;
@ -31,6 +33,15 @@ public class AppAccController {
@PostMapping({"/queryTradeAppPage"})
public AjaxResult queryTradeAppPage(@RequestBody @Valid AppTradeDetailListDTO dto) {
try {
if (StringUtils.isBlank(String.valueOf(dto.getCustId()))) {
return AjaxResult.error("食堂ID不能为空");
}
if (StringUtils.isBlank(String.valueOf(dto.getCurrent()))) {
return AjaxResult.error("当前页不能为空");
}
if (StringUtils.isBlank(String.valueOf(dto.getSize()))) {
return AjaxResult.error("每页显示记录数不能为空");
}
return AjaxResult.success(this.appAccService.queryTradeAppPage(dto));
} catch (Exception e) {
log.error(e.toString(), e);

View File

@ -1,5 +1,6 @@
package com.bonus.core.account.v4.app.controller;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.core.account.v4.app.dto.AppAccInfoV4DTO;
@ -8,6 +9,7 @@ import com.bonus.core.account.v4.app.vo.AppAccInfoV4VO;
import com.bonus.core.account.v4.app.vo.AppWalletBalanceVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -34,7 +36,15 @@ public class AppAccV4Controller extends BaseController {
)
@PostMapping({"/wallet/balance"})
public AjaxResult queryWalletBalance(@RequestBody AppAccInfoV4DTO o) {
try {
if (StringUtils.isBlank(String.valueOf(o.getCustId()))) {
return error("食堂ID不能为空");
}
return success(this.appAccV4Service.queryWalletBalance(o));
} catch (Exception e) {
log.error(e.toString(), e);
return error("查询账户失败");
}
}
@ApiOperation(
@ -43,6 +53,14 @@ public class AppAccV4Controller extends BaseController {
)
@PostMapping({"/info"})
public AjaxResult queryAccInfoForApp(@RequestBody AppAccInfoV4DTO o) {
try {
if (StringUtils.isBlank(String.valueOf(o.getCustId()))) {
return error("食堂ID不能为空");
}
return success(this.appAccV4Service.queryAccInfoForApp(o));
} catch (Exception e) {
log.error(e.toString(), e);
return error("查询账户失败");
}
}
}

View File

@ -1,16 +1,12 @@
package com.bonus.core.allocation.canteen.controller;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.core.allocation.canteen.model.AllocCanteen;
import com.bonus.core.allocation.canteen.service.AllocCanteenService;
import com.bonus.core.allocation.canteen.service.AllocStallService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -18,10 +14,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping({"/api/v2/alloc/canteen"})
@ -37,9 +29,14 @@ public class AllocCanteenController {
@ApiOperation("查询食堂所有开启的支付方式")
@PostMapping({"/list-avail-pay-type"})
public AjaxResult listAvailPayTypeForApp(@RequestBody AllocCanteen bean) {
try {
if (bean.getCanteenId() == null) {
return AjaxResult.error("食堂ID不能为空");
}
return AjaxResult.success(this.allocCanteenService.listAvailPayTypeForApp(bean.getCanteenId()));
} catch (Exception e) {
log.error(e.toString(), e);
return AjaxResult.error("查询食堂所有开启的支付方式失败");
}
}
}

View File

@ -0,0 +1,9 @@
package com.bonus.core.menu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bonus.core.menu.entity.MenuRecipeDetail;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MenuRecipeDetailMapper extends BaseMapper<MenuRecipeDetail> {
}

View File

@ -1,6 +1,8 @@
package com.bonus.core.menu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bonus.core.marketing.vo.MktEffectiveUserVO;
import com.bonus.core.menu.entity.MenuRecipe;
import com.bonus.core.menu.vo.AppletWeekRecipeVO;
import com.bonus.domain.CustInfo;
import org.apache.ibatis.annotations.Mapper;
@ -9,7 +11,7 @@ import java.time.LocalDate;
import java.util.List;
@Mapper
public interface MenuRecipeMapper {
public interface MenuRecipeMapper extends BaseMapper<MenuRecipe> {
CustInfo selectOrgAndPsnByCustLimitId(CustInfo custInfo);
List<MktEffectiveUserVO> selectAllUserEff(@Param("effType") Integer effType, @Param("delFlag") Integer delFlag);

View File

@ -8,7 +8,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
public interface MenuRecipeDetailService {
public interface MenuRecipeDetailService extends IService<MenuRecipeDetail> {
List<MenuRecipeDetail> getByRecipeIdAndDatesAndIntervalId(Long recipeId, Set<LocalDate> dates, Integer mealtimeType);
MenuRecipeDetail getByRecipeIdAndApplyDateAndIntervalId(Long recipeId, LocalDate applyDate, Integer mealtimeType);

View File

@ -1,5 +1,6 @@
package com.bonus.core.menu.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bonus.core.menu.dto.CheckDishesDto;
import com.bonus.core.menu.dto.OrderRecipeDishesDto;
import com.bonus.core.menu.entity.MenuRecipeDishes;
@ -11,7 +12,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
public interface MenuRecipeDishesService {
public interface MenuRecipeDishesService extends IService<MenuRecipeDishes> {
@Override
boolean saveBatch(Collection<MenuRecipeDishes> entityList);
}

View File

@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bonus.core.menu.entity.MenuRecipeDetail;
import com.bonus.core.menu.mapper.MenuRecipeDetailMapper;
import com.bonus.core.menu.service.MenuRecipeDetailService;
import org.springframework.stereotype.Service;
import java.lang.invoke.SerializedLambda;
import java.time.LocalDate;
import java.util.List;
@ -16,17 +19,29 @@ import java.util.TreeSet;
import java.util.stream.Collectors;
@Service
public class MenuRecipeDetailServiceImpl implements MenuRecipeDetailService {
public class MenuRecipeDetailServiceImpl extends ServiceImpl<MenuRecipeDetailMapper, MenuRecipeDetail> implements MenuRecipeDetailService {
@Override
public List<MenuRecipeDetail> getByRecipeIdAndDatesAndIntervalId(Long recipeId, Set<LocalDate> values, Integer mealtimeType) {
return this.list((Wrapper)((LambdaQueryWrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery().eq(MenuRecipeDetail::getMealtimeType, mealtimeType)).eq(MenuRecipeDetail::getRecipeId, recipeId)).in(MenuRecipeDetail::getApplyDate, values));
return this.list(Wrappers.<MenuRecipeDetail>lambdaQuery()
.eq(MenuRecipeDetail::getMealtimeType, mealtimeType)
.eq(MenuRecipeDetail::getRecipeId, recipeId).in(MenuRecipeDetail::getApplyDate, values));
}
@Override
public MenuRecipeDetail getByRecipeIdAndApplyDateAndIntervalId(Long recipeId, LocalDate applyDate, Integer mealtimeType) {
return (MenuRecipeDetail)this.getOne((Wrapper)((LambdaQueryWrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery().eq(MenuRecipeDetail::getMealtimeType, mealtimeType)).eq(MenuRecipeDetail::getRecipeId, recipeId)).eq(MenuRecipeDetail::getApplyDate, applyDate));
return (MenuRecipeDetail) this.getOne(Wrappers.<MenuRecipeDetail>lambdaQuery()
.eq(MenuRecipeDetail::getMealtimeType, mealtimeType)
.eq(MenuRecipeDetail::getRecipeId, recipeId)
.eq(MenuRecipeDetail::getApplyDate, applyDate));
}
@Override
public Map<Long, Set<LocalDate>> selectApplyDateListByRecipeId(List<Long> recipeIds) {
return (Map)this.list((Wrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery(MenuRecipeDetail.class).select(new SFunction[]{MenuRecipeDetail::getRecipeId, MenuRecipeDetail::getApplyDate}).ge(MenuRecipeDetail::getApplyDate, LocalDate.now())).in(MenuRecipeDetail::getRecipeId, recipeIds)).stream().collect(Collectors.groupingBy(MenuRecipeDetail::getRecipeId, Collectors.mapping(MenuRecipeDetail::getApplyDate, Collectors.toCollection(TreeSet::new))));
return this.list(Wrappers.<MenuRecipeDetail>lambdaQuery()
.select(MenuRecipeDetail::getRecipeId, MenuRecipeDetail::getApplyDate)
.ge(MenuRecipeDetail::getApplyDate, LocalDate.now())
.in(MenuRecipeDetail::getRecipeId, recipeIds)).stream()
.collect(Collectors.groupingBy(MenuRecipeDetail::getRecipeId, Collectors.mapping(MenuRecipeDetail::getApplyDate, Collectors.toCollection(TreeSet::new))));
}
}

View File

@ -2,6 +2,7 @@ package com.bonus.core.menu.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bonus.core.menu.entity.MenuRecipeDishes;
import com.bonus.core.menu.mapper.MenuRecipeDishesMapper;
import com.bonus.core.menu.service.MenuRecipeDishesService;
@ -9,6 +10,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.lang.invoke.SerializedLambda;
import java.math.BigDecimal;
import java.time.LocalDate;
@ -18,10 +21,10 @@ import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class MenuRecipeDishesServiceImpl implements MenuRecipeDishesService {
public class MenuRecipeDishesServiceImpl extends ServiceImpl<MenuRecipeDishesMapper, MenuRecipeDishes> implements MenuRecipeDishesService {
private static final Logger log = LoggerFactory.getLogger(MenuRecipeDishesServiceImpl.class);
@Autowired
@Resource
private MenuRecipeDishesMapper menuRecipeDishesMapper;
@Override

View File

@ -5,8 +5,6 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.constant.DelFlagEnum;
@ -35,6 +33,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
@ -56,6 +55,7 @@ public class MenuRecipeServiceImpl extends ServiceImpl<MenuRecipeMapper, MenuRec
@Autowired
private MenuRecipeMapper menuRecipeMapper;
@Override
public List<AppletWeekCanteenVO> getWeekMealList(AppletWeekCanteenDTO content) {
Set<Long> effIdSet = this.getShopstallIdListByCustId(content.getCustId(), false);
if (ObjectUtil.isEmpty(effIdSet)) {
@ -100,6 +100,7 @@ public class MenuRecipeServiceImpl extends ServiceImpl<MenuRecipeMapper, MenuRec
}
}
@Override
public List<AppletWeekRecipeVO> getWeekRecipeDetailList(AppletWeekRecipeDTO content) {
List<Long> recipeIdList = Lists.newArrayList();
if (ObjectUtil.isNull(content.getRecipeId())) {
@ -125,25 +126,33 @@ public class MenuRecipeServiceImpl extends ServiceImpl<MenuRecipeMapper, MenuRec
return resultList;
}
@Transactional(
rollbackFor = {Exception.class}
)
public synchronized void generateRecipe(List<Long> recipeIdList0, LocalDate applyDate) {
if (!ObjectUtil.isEmpty(recipeIdList0) && !ObjectUtil.isEmpty(applyDate)) {
List<Long> recipeIdList = new ArrayList(recipeIdList0);
Map<Long, Long> recipeDetailContMap = (Map)this.menuRecipeDetailService.list((Wrapper)((LambdaQueryWrapper) Wrappers.lambdaQuery(MenuRecipeDetail.class).select(new SFunction[]{MenuRecipeDetail::getRecipeId}).eq(MenuRecipeDetail::getApplyDate, applyDate)).in(MenuRecipeDetail::getRecipeId, recipeIdList)).stream().collect(Collectors.groupingBy(MenuRecipeDetail::getRecipeId, Collectors.counting()));
@Transactional(rollbackFor = {Exception.class})
public synchronized void generateRecipe(List<Long> recipeIdList, LocalDate applyDate) {
if (!ObjectUtil.isEmpty(recipeIdList) && !ObjectUtil.isEmpty(applyDate)) {
// List<Long> recipeIdList = new ArrayList(recipeIdList);
Map<Long, Long> recipeDetailContMap = this.menuRecipeDetailService.list(Wrappers.lambdaQuery(MenuRecipeDetail.class)
.select(MenuRecipeDetail::getRecipeId)
.eq(MenuRecipeDetail::getApplyDate, applyDate)
.in(MenuRecipeDetail::getRecipeId, recipeIdList))
.stream()
.collect(Collectors.groupingBy(MenuRecipeDetail::getRecipeId, Collectors.counting()));
recipeIdList.removeAll(recipeDetailContMap.keySet());
if (!ObjectUtil.isEmpty(recipeIdList)) {
List<MenuRecipe> menuRecipes = this.list((Wrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery(MenuRecipe.class).in(MenuRecipe::getRecipeType, new Object[]{2, 3})).in(MenuRecipe::getRecipeId, recipeIdList));
List<MenuRecipe> menuRecipes = this.list(Wrappers.<MenuRecipe>lambdaQuery()
.in(MenuRecipe::getRecipeType, Arrays.asList(2, 3))
.in(MenuRecipe::getRecipeId, recipeIdList));
if (!ObjectUtil.isEmpty(menuRecipes)) {
Map<Long, MenuRecipe> recipeMap = (Map) menuRecipes.stream().collect(Collectors.toMap(MenuRecipe::getRecipeId, Function.identity()));
List<MenuRecipeDetail> menuRecipeDetails = this.menuRecipeDetailService.list((Wrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery(MenuRecipeDetail.class).eq(MenuRecipeDetail::getDetailType, 1)).in(MenuRecipeDetail::getRecipeId, recipeIdList));
List<MenuRecipeDetail> menuRecipeDetails =
this.menuRecipeDetailService.list(Wrappers.<MenuRecipeDetail>lambdaQuery()
.eq(MenuRecipeDetail::getDetailType, 1).in(MenuRecipeDetail::getRecipeId, recipeIdList));
Map<Long, Integer> recipeTypeMap = (Map) menuRecipes.stream().collect(Collectors.toMap(MenuRecipe::getRecipeId, MenuRecipe::getRecipeType));
menuRecipeDetails = this.filterMenuRecipeDetails(recipeTypeMap, menuRecipeDetails, applyDate);
if (!ObjectUtil.isEmpty(menuRecipeDetails)) {
Map<Long, List<MenuRecipeDetail>> detailMap = (Map) menuRecipeDetails.stream().collect(Collectors.groupingBy(MenuRecipeDetail::getRecipeId));
List<Long> detailIds = (List) menuRecipeDetails.stream().map(MenuRecipeDetail::getDetailId).collect(Collectors.toList());
Map<Long, List<MenuRecipeDishes>> recipeDishes = (Map)this.menuRecipeDishesService.list((Wrapper)Wrappers.lambdaQuery(MenuRecipeDishes.class).in(MenuRecipeDishes::getDetailId, detailIds)).stream().collect(Collectors.groupingBy(MenuRecipeDishes::getDetailId));
Map<Long, List<MenuRecipeDishes>> recipeDishes = (Map) this.menuRecipeDishesService.list((Wrapper) Wrappers.lambdaQuery(MenuRecipeDishes.class)
.in(MenuRecipeDishes::getDetailId, detailIds)).stream().collect(Collectors.groupingBy(MenuRecipeDishes::getDetailId));
List<MenuRecipeDetail> recipeDetailV2List = Lists.newArrayList();
List<MenuRecipeDishes> recipeDishesV2List = Lists.newArrayList();
Iterator var13 = recipeMap.keySet().iterator();
@ -212,4 +221,16 @@ public class MenuRecipeServiceImpl extends ServiceImpl<MenuRecipeMapper, MenuRec
}
}
public List<MenuRecipeDetail> filterMenuRecipeDetails(Map<Long, Integer> recipeTypeMap, List<MenuRecipeDetail> menuRecipeDetails, LocalDate applyDate) {
return (List)menuRecipeDetails.stream().filter((item) -> {
Long recipeId = item.getRecipeId();
Integer type = (Integer)recipeTypeMap.get(recipeId);
if (type == 3) {
return ObjectUtil.equal(item.getApplyWeek(), applyDate.getDayOfWeek().getValue());
} else {
return type == 2;
}
}).collect(Collectors.toList());
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.core.menu.mapper.MenuRecipeDetailMapper">
</mapper>