菜品绑定修改

This commit is contained in:
qjq
2024-04-10 16:07:24 +08:00
parent 8dff194ec5
commit 8395ea0bcb
11 changed files with 236 additions and 47 deletions

View File

@ -0,0 +1,17 @@
package cn.iocoder.yudao.module.member.api.diningplates;
import cn.iocoder.yudao.module.member.api.diningplates.dto.DiningPlatesRespDTO;
/**
* @Author:qjq
* @Date:2024/4/10 下午2:36
*/
public interface DiningplatesApi {
/**
* @Description: 根据餐盘查询
* @Author: qjq
* @Date: 2024/4/10 下午2:41
* @return
*/
DiningPlatesRespDTO getQueryByDiningPlatesNum(String diningPlatesNum);
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.api.diningplates.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author:qjq
* @Date:2024/4/10 下午2:38
*/
@Data
public class DiningPlatesRespDTO {
public final static String USE = "1";
public final static String FREE = "0";
public final static String PAY = "1";
public final static String TO_PAY = "0";
/**
* 餐盘编号
*/
private String diningPlatesNum;
/**
* 用户id
*/
private Long userId;
/**
* 状态0-空闲1-正在使用
*/
private String status;
/**
* 状态:付费标志(0-无付费1-正在付费)
*/
private String payFlag;
/**
* 绑定时间
*/
private LocalDateTime bindingTime;
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.member.api.diningplates;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.api.diningplates.dto.DiningPlatesRespDTO;
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author:qjq
* @Date:2024/4/10 下午2:42
*/
@Service
public class DiningplatesApiImpl implements DiningplatesApi{
@Resource
private DiningPlatesMapper diningPlatesMapper;
/**
* @param diningPlatesNum
* @return
* @Description: 根据餐盘查询
* @Author: qjq
* @Date: 2024/4/10 下午2:41
*/
@Override
public DiningPlatesRespDTO getQueryByDiningPlatesNum(String diningPlatesNum) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(new LambdaQueryWrapperX<DiningPlatesDO>()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
);
return BeanUtil.toBean(diningPlatesDO, DiningPlatesRespDTO.class);
}
}

View File

@ -2,15 +2,7 @@ package cn.iocoder.yudao.module.member.controller.app.user;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppBindCardVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserInfoRespVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserResetPasswordReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileByWeixinReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdatePasswordReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionDayVo;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppWeekVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.*;
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
@ -18,17 +10,13 @@ import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO;
import cn.iocoder.yudao.module.member.service.level.MemberLevelService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService;
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
@ -136,12 +124,20 @@ public class AppMemberUserController {
@RequestParam(value = "orderId",required = false)Long orderId){
return success(userService.getUserHeat(userId,startDate,endDate,orderId));
}
@GetMapping("/heat/dishes")
@Operation(summary = "获得会员热量分析")
public CommonResult<List<DishesNutritionRespDTO>> getUserHeat(@RequestParam(value = "dishesId",required = false)Long dishesId){
return success( userService.getHeatDishes(dishesId));
}
@PutMapping("/bindFace")
@Operation(summary = "绑脸")
public CommonResult<Boolean> bindFace(Long userId,Long faceId){
return success(userService.bindFace(userId,faceId));
}
@GetMapping("/dishes")
public CommonResult<Map<String,String>> getDishesList(@RequestParam("platesNum") String platesNum){
return success(userService.getDishesList(platesNum));
}
}

View File

@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdate
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionDayVo;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppWeekVO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
import javax.validation.Valid;
import java.time.LocalDateTime;
@ -214,10 +215,16 @@ public interface MemberUserService {
AppWeekVO NutritionWeek(String start, String end);
List<Map> getUserHeat(Long userId, LocalDateTime startDate,LocalDateTime endDate, Long orderId);
List<DishesNutritionRespDTO> getHeatDishes(Long dishesId);
/**
* 用户绑定人脸
*/
Boolean bindFace(Long userId,Long faceId);
/**
* @Description:
* @Author: qjq
* @Date: 2024/4/10 下午2:30
* @return
*/
Map<String,String> getDishesList(String platesNum);
}

View File

@ -16,25 +16,21 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserResetPasswordReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileByWeixinReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdatePasswordReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionDayVo;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionWeekVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppWeekVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.*;
import cn.iocoder.yudao.module.member.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper;
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.mq.producer.user.MemberUserProducer;
import cn.iocoder.yudao.module.member.service.card.CardService;
import cn.iocoder.yudao.module.member.service.order.OrderService;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService;
@ -58,15 +54,11 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
import javax.annotation.Resource;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.WeekFields;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -88,10 +80,12 @@ public class MemberUserServiceImpl implements MemberUserService {
private OrderDetailMapper orderDetailMapper;
@Resource
private DishesNutritionApi dishesNutritionApil;
@Resource
private DiningPlatesMapper diningPlatesMapper;
@Resource
private MemberUserMapper memberUserMapper;
@Resource
private CardService cardService;
@Resource
private SmsCodeApi smsCodeApi;
@ -488,6 +482,13 @@ public class MemberUserServiceImpl implements MemberUserService {
return appWeekVO;
}
@Override
public List<DishesNutritionRespDTO> getHeatDishes(Long dishesId) {
List<DishesNutritionRespDTO> dishesList = dishesNutritionApil.getDishesList(dishesId);
this.computePercentage(dishesList);
return dishesList;
}
@Override
public List<Map> getUserHeat(Long userId, LocalDateTime startDate,LocalDateTime endDate,Long orderId) {
if(ObjectUtil.isNotEmpty(orderId)){
@ -541,8 +542,16 @@ public class MemberUserServiceImpl implements MemberUserService {
.map(x -> new BigDecimal(x.getNutritionNumber()))
// 使用reduce聚合函数,实现累加器
.reduce(BigDecimal.ZERO, BigDecimal::add);
//获取菜品总量总和
BigDecimal reduce = value.stream()
.map(x -> new BigDecimal(x.getDishesNumber()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
//计算营养乘数 菜品总量/100g=营养乘数
BigDecimal divide = reduce.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
BigDecimal bigDecimal = sum1.multiply(divide).setScale(0, RoundingMode.HALF_UP);
dto.setNutritionName(entry.getKey());
dto.setNutritionNumber(sum1.toString());
dto.setNutritionNumber(bigDecimal.toString());
list.add(dto);
}
this.computePercentage(list);
@ -594,4 +603,27 @@ public class MemberUserServiceImpl implements MemberUserService {
memberUserDO.setFaceId(faceId);
return memberUserMapper.updateById(memberUserDO)>0;
}
/**
* @param platesNum
* @return
* @Description:
* @Author: qjq
* @Date: 2024/4/10 下午2:30
*/
@Override
public Map<String,String> getDishesList(String platesNum) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(new LambdaQueryWrapperX<DiningPlatesDO>()
.eq(DiningPlatesDO::getDiningPlatesNum,platesNum));
//获取用户id
Long userId = diningPlatesDO.getUserId();
//获取用户名称
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
BigDecimal moneyByUserId = cardService.getMoneyByUserId(userId);
Map<String, String> map = new HashMap<>();
map.put("name",memberUserDO.getName());
map.put("money", String.valueOf(moneyByUserId));
return map;
}
}