人脸
This commit is contained in:
		@ -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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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.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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -82,4 +82,5 @@ public interface DiningPlatesService {
 | 
			
		||||
     */
 | 
			
		||||
    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");
 | 
			
		||||
        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.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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user