人脸
This commit is contained in:
@ -34,10 +34,16 @@ public class AppDiningPlatesController {
|
|||||||
return success(BeanUtils.toBean(pageResult, DiningPlatesRespVO.class));
|
return success(BeanUtils.toBean(pageResult, DiningPlatesRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/bind")
|
@GetMapping("/bindByCard")
|
||||||
@Operation(summary = "绑定餐盘")
|
@Operation(summary = "打卡绑定餐盘")
|
||||||
public CommonResult<Boolean> bind(String diningPlatesNum,String cardId) {
|
public CommonResult<Boolean> bindByCard(String diningPlatesNum,String cardId) {
|
||||||
return success(diningPlatesService.bind(diningPlatesNum,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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
|
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.convert.user.MemberUserConvert;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
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.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.validation.annotation.Validated;
|
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.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@ -97,24 +111,30 @@ public class AppMemberUserController {
|
|||||||
|
|
||||||
@GetMapping("/nutritionDay")
|
@GetMapping("/nutritionDay")
|
||||||
@Operation(summary = "营养日报")
|
@Operation(summary = "营养日报")
|
||||||
public CommonResult<List<AppNutritionDayVo>> nutritionDay(String time){
|
public CommonResult<List<AppNutritionDayVo>> nutritionDay(String start, String end){
|
||||||
List<AppNutritionDayVo> appNutritionDayVos = userService.nutritionDay(time);
|
List<AppNutritionDayVo> appNutritionDayVos = userService.nutritionDay(start,end);
|
||||||
return success(appNutritionDayVos);
|
return success(appNutritionDayVos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/NutritionWeek")
|
@GetMapping("/NutritionWeek")
|
||||||
@Operation(summary = "营养周报")
|
@Operation(summary = "营养周报")
|
||||||
public CommonResult<List<AppNutritionWeekVO>> NutritionWeek(String start, String end){
|
public CommonResult<AppWeekVO> NutritionWeek(String start, String end){
|
||||||
List<AppNutritionWeekVO> appNutritionWeekVOS = userService.NutritionWeek(start, end);
|
return success(userService.NutritionWeek(start, end));
|
||||||
return success(appNutritionWeekVOS);
|
|
||||||
}
|
}
|
||||||
@GetMapping("/heat")
|
@GetMapping("/heat")
|
||||||
@Operation(summary = "获得会员热量分析")
|
@Operation(summary = "获得会员热量分析")
|
||||||
public CommonResult<List<Map>> getUserHeat(@RequestParam(value = "userId",required = false) Long userId,
|
public CommonResult<List<Map>> getUserHeat(@RequestParam(value = "userId",required = false) Long userId,
|
||||||
@RequestParam(value = "startDate",required = false) LocalDateTime startDate,
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "startDate",required = false) LocalDateTime startDate,
|
||||||
@RequestParam(value = "endDate",required = false) LocalDateTime endDate,
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "endDate",required = false) LocalDateTime endDate,
|
||||||
@RequestParam(value = "orderId",required = false)Long orderId){
|
@RequestParam(value = "orderId",required = false)Long orderId){
|
||||||
return success(userService.getUserHeat(userId,startDate,endDate,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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -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.controller.admin.user.vo.MemberUserPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import org.apache.ibatis.annotations.Delete;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -93,4 +94,7 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
|
|||||||
return update(null, lambdaUpdateWrapper);
|
return update(null, lambdaUpdateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Delete("delete from user_face where user_id = #{faceId}")
|
||||||
|
void deleteFace(Long faceId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -82,4 +82,5 @@ public interface DiningPlatesService {
|
|||||||
*/
|
*/
|
||||||
Boolean bind(String diningPlatesNum,String cardId);
|
Boolean bind(String diningPlatesNum,String cardId);
|
||||||
|
|
||||||
|
Boolean bindByFace(String diningPlatesNum,Long faceId);
|
||||||
}
|
}
|
@ -152,4 +152,32 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
|||||||
stringRedisTemplate.opsForValue().set(diningPlatesNum,"0");
|
stringRedisTemplate.opsForValue().set(diningPlatesNum,"0");
|
||||||
return i>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;
|
||||||
|
}
|
||||||
}
|
}
|
@ -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.AppMemberUserUpdatePasswordReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
|
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.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 cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
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);
|
List<Map> getUserHeat(Long userId, LocalDateTime startDate,LocalDateTime endDate, Long orderId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户绑定人脸
|
||||||
|
*/
|
||||||
|
Boolean bindFace(Long userId,Long faceId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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.AppMemberUserUpdateReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionDayVo;
|
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.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.auth.AuthConvert;
|
||||||
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
|
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
@ -401,11 +402,11 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AppNutritionDayVo> nutritionDay(String time) {
|
public List<AppNutritionDayVo> nutritionDay(String start, String end) {
|
||||||
List<AppNutritionDayVo> result = new ArrayList<>();
|
List<AppNutritionDayVo> result = new ArrayList<>();
|
||||||
//获取日期的订单
|
//获取日期的订单
|
||||||
String start = time+" 00:00:00";
|
//String start = time+" 00:00:00";
|
||||||
String end = time+" 23:59:59";
|
//String end = time+" 23:59:59";
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
LocalDateTime startTime = LocalDateTime.parse(start, formatter);
|
LocalDateTime startTime = LocalDateTime.parse(start, formatter);
|
||||||
@ -459,15 +460,16 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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<>();
|
List<AppNutritionWeekVO> result = new ArrayList<>();
|
||||||
//获取日期的订单
|
//获取日期的订单
|
||||||
String newStart = start + " 00:00:00";
|
//String newStart = start + " 00:00:00";
|
||||||
String newEnd = end + " 23:59:59";
|
//String newEnd = end + " 23:59:59";
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
LocalDateTime startTime = LocalDateTime.parse(newStart, formatter);
|
LocalDateTime startTime = LocalDateTime.parse(start, formatter);
|
||||||
LocalDateTime endTime = LocalDateTime.parse(newEnd, formatter);
|
LocalDateTime endTime = LocalDateTime.parse(end, formatter);
|
||||||
List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime);
|
List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime);
|
||||||
|
|
||||||
WeekFields weekFields = WeekFields.ISO;
|
WeekFields weekFields = WeekFields.ISO;
|
||||||
@ -481,11 +483,13 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|||||||
if (CollectionUtil.isNotEmpty(ids)) {
|
if (CollectionUtil.isNotEmpty(ids)) {
|
||||||
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(ids);
|
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(ids);
|
||||||
mondayVO.setDetailList(orderDetailDOS);
|
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);
|
result.add(mondayVO);
|
||||||
}
|
}
|
||||||
return result;
|
appWeekVO.setNum(dishOrderDOS.size());
|
||||||
|
appWeekVO.setList(result);
|
||||||
|
return appWeekVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -519,7 +523,7 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|||||||
.inIfPresent(OrderDetailDO::getOrderId, collect));
|
.inIfPresent(OrderDetailDO::getOrderId, collect));
|
||||||
//热量求和统计方便 科学膳食小建议
|
//热量求和统计方便 科学膳食小建议
|
||||||
double sum = orderDetailDOS
|
double sum = orderDetailDOS
|
||||||
.stream()
|
.stream().filter(vo->vo!=null && vo.getHeat()!=null)
|
||||||
.mapToDouble(OrderDetailDO::getHeat).sum();
|
.mapToDouble(OrderDetailDO::getHeat).sum();
|
||||||
//获取菜品id
|
//获取菜品id
|
||||||
List<Long> collect1 = orderDetailDOS.stream()
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user