This commit is contained in:
zengtao01
2024-04-08 15:46:57 +08:00
parent 15837f5260
commit 0a1ebeaac0
8 changed files with 128 additions and 26 deletions

View File

@ -34,10 +34,16 @@ public class AppDiningPlatesController {
return success(BeanUtils.toBean(pageResult, DiningPlatesRespVO.class));
}
@GetMapping("/bind")
@Operation(summary = "绑定餐盘")
public CommonResult<Boolean> bind(String diningPlatesNum,String cardId) {
@GetMapping("/bindByCard")
@Operation(summary = "打卡绑定餐盘")
public CommonResult<Boolean> bindByCard(String diningPlatesNum,String cardId) {
return success(diningPlatesService.bind(diningPlatesNum,cardId));
}
@GetMapping("/bindByFace")
@Operation(summary = "人脸绑定餐盘")
public CommonResult<Boolean> bindByFace(String diningPlatesNum,Long faceId) {
return success(diningPlatesService.bindByFace(diningPlatesNum,faceId));
}
}

View File

@ -2,7 +2,15 @@ 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.*;
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.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
@ -11,8 +19,14 @@ import cn.iocoder.yudao.module.member.service.user.MemberUserService;
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.*;
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 javax.annotation.Resource;
import javax.validation.Valid;
@ -97,24 +111,30 @@ public class AppMemberUserController {
@GetMapping("/nutritionDay")
@Operation(summary = "营养日报")
public CommonResult<List<AppNutritionDayVo>> nutritionDay(String time){
List<AppNutritionDayVo> appNutritionDayVos = userService.nutritionDay(time);
public CommonResult<List<AppNutritionDayVo>> nutritionDay(String start, String end){
List<AppNutritionDayVo> appNutritionDayVos = userService.nutritionDay(start,end);
return success(appNutritionDayVos);
}
@GetMapping("/NutritionWeek")
@Operation(summary = "营养周报")
public CommonResult<List<AppNutritionWeekVO>> NutritionWeek(String start, String end){
List<AppNutritionWeekVO> appNutritionWeekVOS = userService.NutritionWeek(start, end);
return success(appNutritionWeekVOS);
public CommonResult<AppWeekVO> NutritionWeek(String start, String end){
return success(userService.NutritionWeek(start, end));
}
@GetMapping("/heat")
@Operation(summary = "获得会员热量分析")
public CommonResult<List<Map>> getUserHeat(@RequestParam(value = "userId",required = false) Long userId,
@RequestParam(value = "startDate",required = false) LocalDateTime startDate,
@RequestParam(value = "endDate",required = false) LocalDateTime endDate,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "startDate",required = false) LocalDateTime startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "endDate",required = false) LocalDateTime endDate,
@RequestParam(value = "orderId",required = false)Long orderId){
return success(userService.getUserHeat(userId,startDate,endDate,orderId));
}
@PutMapping("/bindFace")
@Operation(summary = "绑脸")
public CommonResult<Boolean> bindFace(Long userId,Long faceId){
return success(userService.bindFace(userId,faceId));
}
}

View File

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.member.controller.app.user.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @author zt
* @description <description class purpose>
* @since 2024/4/2
*/
@Data
public class AppWeekVO {
@Schema(description = "用餐次数")
private Integer num;
@Schema(description = "周报")
private List<AppNutritionWeekVO> list;
}

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -93,4 +94,7 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
return update(null, lambdaUpdateWrapper);
}
@Delete("delete from user_face where user_id = #{faceId}")
void deleteFace(Long faceId);
}

View File

@ -82,4 +82,5 @@ public interface DiningPlatesService {
*/
Boolean bind(String diningPlatesNum,String cardId);
Boolean bindByFace(String diningPlatesNum,Long faceId);
}

View File

@ -152,4 +152,32 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
stringRedisTemplate.opsForValue().set(diningPlatesNum,"0");
return i>0;
}
@Override
public Boolean bindByFace(String diningPlatesNum, Long faceId) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery()
.eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum)
.last("limit 1"));
if(diningPlatesDO.getUserId()!=null){
throw new ServiceException(20001,"餐盘已被绑定");
}
MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.<MemberUserDO>lambdaQuery()
.eq(MemberUserDO::getFaceId, faceId)
.last("limit 1"));
diningPlatesDO.setUserId(memberUserDO.getId());
diningPlatesDO.setStatus(DiningPlatesDO.USE);
diningPlatesDO.setBindingTime(LocalDateTime.now());
int i = diningPlatesMapper.updateById(diningPlatesDO);
//创建初始订单
DishOrderDO dishOrderDO = new DishOrderDO();
dishOrderDO.setDiningPlatesNum(diningPlatesNum);
dishOrderDO.setOrderStatus(DishOrderDO.INCOMPLETE);
dishOrderDO.setUserId(memberUserDO.getId());
dishOrderMapper.insert(dishOrderDO);
//设置总价
stringRedisTemplate.opsForValue().set(diningPlatesNum,"0");
return i>0;
}
}

View File

@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdate
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.dal.dataobject.user.MemberUserDO;
import javax.validation.Valid;
@ -207,13 +207,17 @@ public interface MemberUserService {
/**
* 营养日报
*/
List<AppNutritionDayVo> nutritionDay(String time);
List<AppNutritionDayVo> nutritionDay(String start, String end);
/**
* 营养周报
*/
List<AppNutritionWeekVO> NutritionWeek(String start, String end);
AppWeekVO NutritionWeek(String start, String end);
List<Map> getUserHeat(Long userId, LocalDateTime startDate,LocalDateTime endDate, Long orderId);
/**
* 用户绑定人脸
*/
Boolean bindFace(Long userId,Long faceId);
}

View File

@ -27,6 +27,7 @@ import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdate
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.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
@ -401,11 +402,11 @@ public class MemberUserServiceImpl implements MemberUserService {
}
@Override
public List<AppNutritionDayVo> nutritionDay(String time) {
public List<AppNutritionDayVo> nutritionDay(String start, String end) {
List<AppNutritionDayVo> result = new ArrayList<>();
//获取日期的订单
String start = time+" 00:00:00";
String end = time+" 23:59:59";
//String start = time+" 00:00:00";
//String end = time+" 23:59:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startTime = LocalDateTime.parse(start, formatter);
@ -459,15 +460,16 @@ public class MemberUserServiceImpl implements MemberUserService {
}
@Override
public List<AppNutritionWeekVO> NutritionWeek(String start, String end) {
public AppWeekVO NutritionWeek(String start, String end) {
AppWeekVO appWeekVO = new AppWeekVO();
List<AppNutritionWeekVO> result = new ArrayList<>();
//获取日期的订单
String newStart = start + " 00:00:00";
String newEnd = end + " 23:59:59";
//String newStart = start + " 00:00:00";
//String newEnd = end + " 23:59:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime startTime = LocalDateTime.parse(newStart, formatter);
LocalDateTime endTime = LocalDateTime.parse(newEnd, formatter);
LocalDateTime startTime = LocalDateTime.parse(start, formatter);
LocalDateTime endTime = LocalDateTime.parse(end, formatter);
List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime);
WeekFields weekFields = WeekFields.ISO;
@ -481,11 +483,13 @@ public class MemberUserServiceImpl implements MemberUserService {
if (CollectionUtil.isNotEmpty(ids)) {
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(ids);
mondayVO.setDetailList(orderDetailDOS);
mondayVO.setIntake(orderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d, Double::sum));
mondayVO.setIntake(orderDetailDOS.stream().filter(vo->vo!=null && vo.getHeat()!=null).map(OrderDetailDO::getHeat).reduce(0d, Double::sum));
}
result.add(mondayVO);
}
return result;
appWeekVO.setNum(dishOrderDOS.size());
appWeekVO.setList(result);
return appWeekVO;
}
@Override
@ -519,7 +523,7 @@ public class MemberUserServiceImpl implements MemberUserService {
.inIfPresent(OrderDetailDO::getOrderId, collect));
//热量求和统计方便 科学膳食小建议
double sum = orderDetailDOS
.stream()
.stream().filter(vo->vo!=null && vo.getHeat()!=null)
.mapToDouble(OrderDetailDO::getHeat).sum();
//获取菜品id
List<Long> collect1 = orderDetailDOS.stream()
@ -580,4 +584,18 @@ public class MemberUserServiceImpl implements MemberUserService {
}
}
}
@Override
public Boolean bindFace(Long userId,Long faceId) {
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
if(memberUserDO == null){
throw new ServerException(20003,"用户不存在");
}
if(memberUserDO.getFaceId()!=null){
memberUserMapper.deleteFace(memberUserDO.getFaceId());
}
memberUserDO.setFaceId(faceId);
return memberUserMapper.updateById(memberUserDO)>0;
}
}