xuhy
2024-09-25 842947e6ecf0bdf8fd98049c0e47eb3893a8cbdb
修改接口
18个文件已修改
400 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderMealGoodsMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java
@@ -72,11 +72,7 @@
        user.setPhonenumber(dto.getAccount());
        if (!userService.checkUserNameUnique(user))
        {
            return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
        }
        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
        {
            return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
            return error("添加用户'" + user.getUserName() + "'失败,登录账号已存在");
        }
        shopService.save(dto);
        // 添加账号
@@ -95,13 +91,10 @@
        SysUser user = new SysUser();
        user.setUserName(dto.getAccount());
        user.setPhonenumber(dto.getAccount());
        user.setUserId(dto.getUserId());
        if (!userService.checkUserNameUnique(user))
        {
            return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
        }
        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
        {
            return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        shopService.updateById(dto);
        userService.updateAccount(dto);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -71,7 +71,7 @@
            return AjaxResult.error("用户不存在!");
        }
        if(sysUser.getRoleType() != 1){
            return AjaxResult.error("商家无法登录平台系统!请访问商家平台");
            return AjaxResult.error("商家账号无权限登录");
        }
@@ -128,6 +128,38 @@
    }
    /**
     * 商家跳转登录
     *
     * @param loginBody 登录信息
     * @return 结果
     */
    @ApiOperation(value = "商家跳转登录",notes = "商家跳转登录")
    @PostMapping("/reLogin")
    public AjaxResult<Map<String,Object>> reLogin(@RequestBody LoginBody loginBody)
    {
        Map<String,Object> map = new HashMap<>();
        loginBody.setPassword("123456");
        // 生成令牌
        LoginUser loginUser = loginService.reLogin(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
                loginBody.getUuid());
        map.put(Constants.TOKEN, tokenService.createToken(loginUser));
        List<SysRole> roles = loginUser.getUser().getRoles();
        if(CollectionUtils.isEmpty(roles)){
            return AjaxResult.error("请关联角色!");
        }
        if(roles.get(0).getStatus() == 1){
            return AjaxResult.error("该账号角色已被禁用!");
        }
        List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
        map.put("menus",menus);
        map.put("roleName",roles.get(0).getRoleName());
        map.put("userInfo",loginUser);
        return AjaxResult.success(map);
    }
    /**
     * 账号密码登录
     *
     * @param loginBody 登录信息
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -182,6 +182,7 @@
            return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setPassword("123456");
        user.setRePassword("123456");
        user.setCreateBy(getUsername());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        userService.insertUser(user);
@@ -247,7 +248,8 @@
//        userService.checkUserDataScope(user.getUserId());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        user.setUpdateBy(getUsername());
        return AjaxResult.success(userService.resetPwd(user));
        userService.resetPwd(user);
        return AjaxResult.success();
    }
    /**
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
@@ -74,5 +74,5 @@
     * 密码长度限制
     */
    public static final int PASSWORD_MIN_LENGTH = 5;
    public static final int PASSWORD_MAX_LENGTH = 20;
    public static final int PASSWORD_MAX_LENGTH = 40;
}
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -124,6 +124,11 @@
     */
    @ApiModelProperty(value = "禁用备注")
    private String disableRemark;
    /**
     * 隐藏的密码,用于跳转
     */
    @ApiModelProperty(value = "隐藏的密码,用于跳转")
    private String rePassword;
    @TableField(exist = false)
    private String roleName;
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@
                // 过滤请求
                .authorizeRequests()
                // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                .antMatchers("/getPrivacyAgreement/{agreementType}","/applet/queryProtocolConfigByType","/applet/login","/login","/applet/queryProtocolConfigByType", "/register","/applet/getCode","/applet/loginCode","/applet/changepwd", "/captchaImage","/getCode","/loginCode","/operations/getBySingleNum/**",
                .antMatchers("/getPrivacyAgreement/{agreementType}","/applet/queryProtocolConfigByType","/applet/login","/reLogin","/platformLogin","/login","/applet/queryProtocolConfigByType", "/register","/applet/getCode","/applet/loginCode","/applet/changepwd", "/captchaImage","/getCode","/loginCode","/operations/getBySingleNum/**",
                        "/user/getUserInfoByNumber/**").permitAll()
                // 静态资源,可匿名访问
                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -121,6 +121,60 @@
        return loginUser;
    }
    public LoginUser reLogin(String username, String password, String code, String uuid)
    {
        // 验证码校验
        validateCaptcha(username, code, uuid);
        // 登录前置校验
        loginPreCheck(username, password);
        // 用户验证
        Authentication authentication = null;
        // 用户验证
        SysUser user = userService.selectUserByUserName(username);
        if (StringUtils.isNull(user)){
            log.info("登录用户:{} 不存在.", username);
            throw new ServiceException(MessageUtils.message("user.not.exists"));
        } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
            log.info("登录用户:{} 已被删除.", username);
            throw new ServiceException(MessageUtils.message("user.password.delete"));
        } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
            log.info("登录用户:{} 已被停用.", username);
            throw new ServiceException(MessageUtils.message("user.blocked"));
        }
        try
        {
            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username+"_", password);
            AuthenticationContextHolder.setContext(authenticationToken);
            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
            authentication = authenticationManager.authenticate(authenticationToken);
        }
        catch (Exception e)
        {
            if (e instanceof BadCredentialsException)
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
                throw new UserPasswordNotMatchException();
            }
            else
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
                throw new ServiceException(e.getMessage());
            }
        }
        finally
        {
            AuthenticationContextHolder.clearContext();
        }
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
        loginUser.setNickName(user.getNickName());
        loginUser.setRoleType(user.getRoleType());
        loginUser.setObjectId(user.getObjectId());
        recordLoginInfo(loginUser.getUserId());
        // 生成token
        return loginUser;
    }
    /**
     * 登录验证
     *
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java
@@ -78,12 +78,60 @@
            clearLoginRecordCache(username);
        }
    }
    public void reValidate(SysUser user)
    {
        Authentication usernamePasswordAuthenticationToken = AuthenticationContextHolder.getContext();
        String username = usernamePasswordAuthenticationToken.getName();
        if(username.contains("_")){
            username = username.split("_")[0];
        }
        String password = usernamePasswordAuthenticationToken.getCredentials().toString();
        Integer retryCount = redisCache.getCacheObject(getCacheKey(username));
        if (retryCount == null)
        {
            retryCount = 0;
        }
        if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
        {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,
                    MessageUtils.message("user.password.retry.limit.exceed", maxRetryCount, lockTime)));
            throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime);
        }
        if (!reMatches(user, password))
        {
            retryCount = retryCount + 1;
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,
                    MessageUtils.message("user.password.retry.limit.count", retryCount)));
            redisCache.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
            throw new UserPasswordNotMatchException();
        }
        else
        {
            clearLoginRecordCache(username);
        }
    }
    public boolean matches(SysUser user, String rawPassword)
    {
        return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
    }
    public static void main(String[] args) {
        // $2a$10$qofXsM/ZKUMqvysvsWBAfOizecqUdAaXPFUYDVxaYYM0FJg6/mOpq
        String s = SecurityUtils.encryptPassword("111111");
        System.err.println(s);
        boolean b = SecurityUtils.matchesPassword("111111", "$2a$10$Wx75W2oW23.tsSkvA21QyueQ59iwWwv2ns06Bxubje0ZwPe2wNOQ2");
        System.err.println(b);
    }
    public boolean reMatches(SysUser user, String rawPassword)
    {
        return SecurityUtils.matchesPassword(rawPassword, user.getRePassword());
    }
    public void clearLoginRecordCache(String loginName)
    {
        if (redisCache.hasKey(getCacheKey(loginName)))
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
@@ -37,7 +37,12 @@
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
    {
        SysUser user = userService.selectUserByUserName(username);
        SysUser user;
        if(username.contains("_")){
            user = userService.selectUserByUserName(username.split("_")[0]);
        }else {
            user = userService.selectUserByUserName(username);
        }
        if (StringUtils.isNull(user))
        {
            log.info("登录用户:{} 不存在.", username);
@@ -53,8 +58,11 @@
            log.info("登录用户:{} 已被停用.", username);
            throw new ServiceException(MessageUtils.message("user.blocked"));
        }
        passwordService.validate(user);
        if(username.contains("_")){
            passwordService.reValidate(user);
        }else {
            passwordService.validate(user);
        }
        return createLoginUser(user);
    }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -651,6 +651,7 @@
            sysUser.setRoleId(2L);
        }
        sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
        sysUser.setRePassword(SecurityUtils.encryptPassword("123456"));
        this.insertUser(sysUser);
        return sysUser.getUserId();
    }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -113,7 +113,10 @@
        List<OrderMealGeneratorCountDTO> orderMealGeneratorCountDTOS = dto.getOrderMealGeneratorCountDTOS();
        List<TOrderMeal> orderMeals = new ArrayList<>();
        for (OrderMealGeneratorCountDTO orderMealGeneratorCountDTO : orderMealGeneratorCountDTOS) {
            TBoard board = boards.stream().filter(e -> e.getId().equals(orderMealGeneratorCountDTO.getBoardId())).findFirst().get();
            TBoard board = boards.stream().filter(e -> e.getId().equals(orderMealGeneratorCountDTO.getBoardId())).findFirst().orElse(null);
            if(Objects.isNull(board)){
                throw new ServiceException("桌台用餐人数配置不存在");
            }
            Integer orderCount = orderMealGeneratorCountDTO.getOrderCount();
            // 查询当前桌的用餐人数
            for (int i = 1; i <= orderCount; i++) {
@@ -526,7 +529,7 @@
//                BigDecimal money = orderSaleGoods.stream().filter(e -> collect.contains(e.getOrderId()))
//                        .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsCostPrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add);
                if(!CollectionUtils.isEmpty(orderSales)){
                    BigDecimal money = orderSales.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get();
                    BigDecimal money = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get();
                    tDataGeneratorVO.setTotalRevenue(money);
                }
            }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java
@@ -34,6 +34,14 @@
    @Override
    public void add(TFoundationPersonDTO dto) {
        long count1 = this.count(Wrappers.lambdaQuery(TFoundationPerson.class)
                .eq(TFoundationPerson::getShopId, dto.getShopId())
                .eq(TFoundationPerson::getMealCount, dto.getMealCount()));
        if(count1>0){
            throw new ServiceException("该店铺已存在该用餐人数设置");
        }
        List<TFoundationConfig> foundationConfigs = dto.getFoundationConfigs();
        long count = foundationConfigs.stream().map(TFoundationConfig::getTypeId).distinct().count();
        if(foundationConfigs.size()!=count){
@@ -50,6 +58,14 @@
    @Override
    public void edit(TFoundationPersonDTO dto) {
        long count1 = this.count(Wrappers.lambdaQuery(TFoundationPerson.class)
                .eq(TFoundationPerson::getShopId, dto.getShopId())
                .eq(TFoundationPerson::getMealCount, dto.getMealCount())
                .ne(TFoundationPerson::getId,dto.getId()));
        if(count1>0){
            throw new ServiceException("该店铺已存在该用餐人数设置");
        }
        List<TFoundationConfig> foundationConfigs = dto.getFoundationConfigs();
        long count = foundationConfigs.stream().map(TFoundationConfig::getTypeId).distinct().count();
        if(foundationConfigs.size()!=count){
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
@@ -5,8 +5,10 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.constant.OrderNumConstants;
import com.ruoyi.common.enums.BoardEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.CodeGenerateUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.dto.*;
import com.ruoyi.system.mapper.TOrderMealGoodsMapper;
@@ -51,11 +53,17 @@
    @Override
    public void add(TOrderMealDTO dto) {
        if(Objects.isNull(dto.getBoardId())){
            throw new RuntimeException("餐桌不能为空");
        }
        TOrderMeal orderMeal = this.getById(dto.getId());
        orderMeal.setRemark(orderMeal.getRemark()+dto.getRemark());
        if(Objects.isNull(orderMeal)){
            throw new ServiceException("该订单不存在");
        }
        if(StringUtils.isNotEmpty(dto.getRemark())){
            if(StringUtils.isNotEmpty(orderMeal.getRemark())){
                orderMeal.setRemark(orderMeal.getRemark()+dto.getRemark());
            }else {
                orderMeal.setRemark(dto.getRemark());
            }
        }
        orderMeal.setMealType(dto.getMealType());
        orderMeal.setMealPerson(dto.getMealPerson());
        orderMeal.setMealTime(dto.getMealTime());
@@ -63,44 +71,46 @@
        // 查询菜品分类
        List<TGoodsType> list1 = goodsTypeService.list();
        // 查询餐桌
        TBoard board = boardService.getById(dto.getBoardId());
        TBoard board = boardService.getById(orderMeal.getBoardId());
        if(!CollectionUtils.isEmpty(dto.getMealOrderGoodsDTOS())){
            board.setStatus(BoardEnum.DURING_MEAL.getCode());
            boardService.updateById(board);
            // 订单金额,订单编号
            String orderNum = OrderNumConstants.MEAL+CodeGenerateUtils.generateVolumeSn();
            dto.setOrderNum(orderNum);
//            String orderNum = OrderNumConstants.MEAL+CodeGenerateUtils.generateVolumeSn();
//            dto.setOrderNum(orderNum);
            List<TOrderMealGoods> orderMealGoods = new ArrayList<>();
            // 查询商品
            List<Long> goodsIds = dto.getMealOrderGoodsDTOS().stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList());
            List<MealOrderGoodsDTO> mealOrderGoodsDTOS = dto.getMealOrderGoodsDTOS();
            List<Long> goodsIds = mealOrderGoodsDTOS.stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList());
            List<TGoods> list = goodsService.list(Wrappers.lambdaQuery(TGoods.class)
                    .in(TGoods::getId, goodsIds));
            // 查询已存在的菜品
            List<TOrderMealGoods> list2 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class)
                    .in(TOrderMealGoods::getOrderId, dto.getId()));
            dto.getMealOrderGoodsDTOS().forEach(item -> {
                if(CollectionUtils.isEmpty(list2)){
                    list.stream().filter(item1 -> item1.getId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> {
                        TOrderMealGoods orderMealGood = new TOrderMealGoods();
                        orderMealGood.setGoodsName(item1.getGoodsName());
                        orderMealGood.setGoodsNum(item1.getGoodsNum());
                        orderMealGood.setGoodsPicture(item1.getGoodsPicture());
                        orderMealGood.setGoodsCount(item.getGoodsCount());
                        orderMealGood.setGoodsSalePrice(item1.getSalePrice());
                        orderMealGood.setCostPrice(item1.getCostPrice());
                        orderMealGood.setTypeId(item1.getTypeId());
                        orderMealGood.setGoodsId(item1.getId());
                        orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName());
                        orderMealGoods.add(orderMealGood);
                    });
                }else {
                    list2.stream().filter(item1 -> item1.getGoodsId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> {
                        item1.setGoodsCount(item1.getGoodsCount()+item.getGoodsCount());
                        orderMealGoods.add(item1);
                    });
            for (MealOrderGoodsDTO mealOrderGoodsDTO : mealOrderGoodsDTOS) {
                TOrderMealGoods tOrderMealGoods = list2.stream().filter(item1 -> item1.getGoodsId().equals(mealOrderGoodsDTO.getGoodsId())).findFirst().orElse(null);
                if(Objects.nonNull(tOrderMealGoods)){
                    tOrderMealGoods.setGoodsCount(tOrderMealGoods.getGoodsCount()+mealOrderGoodsDTO.getGoodsCount());
                    orderMealGoods.add(tOrderMealGoods);
                    continue;
                }
            });
            BigDecimal orderMoney = BigDecimal.ZERO;
                for (TGoods goods : list) {
                    if(goods.getId().equals(mealOrderGoodsDTO.getGoodsId())){
                        TOrderMealGoods orderMealGood = new TOrderMealGoods();
                        orderMealGood.setGoodsName(goods.getGoodsName());
                        orderMealGood.setGoodsNum(goods.getGoodsNum());
                        orderMealGood.setGoodsPicture(goods.getGoodsPicture());
                        orderMealGood.setGoodsCount(mealOrderGoodsDTO.getGoodsCount());
                        orderMealGood.setGoodsSalePrice(goods.getSalePrice());
                        orderMealGood.setCostPrice(goods.getCostPrice());
                        orderMealGood.setTypeId(goods.getTypeId());
                        orderMealGood.setGoodsId(goods.getId());
                        orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(goods.getTypeId())).findFirst().get().getTypeName());
                        orderMealGoods.add(orderMealGood);
                    }
                }
            }
            BigDecimal orderMoney = orderMeal.getOrderMoney();
            // 添加菜品
            for (TOrderMealGoods orderMealGood : orderMealGoods) {
                orderMealGood.setOrderId(dto.getId());
@@ -168,33 +178,35 @@
    @Override
    public PageInfo<TOrderMealVO> pageList(TOrderMealQuery query) {
        if(Objects.nonNull(query.getTimeType())){
            LocalDateTime startTime = null;
            LocalDateTime endTime = null;
            switch (query.getTimeType()){
                case 1:
                    // 今日
                    startTime = DateUtils.getDayStart(LocalDateTime.now());
                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                    break;
                case 2:
                    // 昨日
                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
                    endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                    break;
                case 3:
                    // 近7天
                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                    break;
                case 4:
                    // 近30天
                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                    break;
        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
            if(Objects.nonNull(query.getTimeType())){
                LocalDateTime startTime = null;
                LocalDateTime endTime = null;
                switch (query.getTimeType()){
                    case 1:
                        // 今日
                        startTime = DateUtils.getDayStart(LocalDateTime.now());
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                    case 2:
                        // 昨日
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                        break;
                    case 3:
                        // 近7天
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                    case 4:
                        // 近30天
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                }
                query.setStartTime(DateUtils.localDateTimeToDate(startTime));
                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
            }
            query.setStartTime(DateUtils.localDateTimeToDate(startTime));
            query.setEndTime(DateUtils.localDateTimeToDate(endTime));
        }
        PageInfo<TOrderMealVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
        List<TOrderMealVO> list = this.baseMapper.pageList(query,pageInfo);
@@ -218,6 +230,36 @@
    @Override
    public AmountSumVO amountSum(TOrderMealQuery query) {
        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
            if(Objects.nonNull(query.getTimeType())){
                LocalDateTime startTime = null;
                LocalDateTime endTime = null;
                switch (query.getTimeType()){
                    case 1:
                        // 今日
                        startTime = DateUtils.getDayStart(LocalDateTime.now());
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                    case 2:
                        // 昨日
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                        break;
                    case 3:
                        // 近7天
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                    case 4:
                        // 近30天
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                }
                query.setStartTime(DateUtils.localDateTimeToDate(startTime));
                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
            }
        }
        return this.baseMapper.amountSum(query);
    }
@@ -310,11 +352,11 @@
    @Override
    public List<OrderTrendsVO> orderingTrends(TDataStatisticsQuery query) {
        List<OrderTrendsVO> orderTrendsVOS = this.baseMapper.orderingTrends(query);
        LocalDate localDate = LocalDate.now();
        LocalDate localDate = DateUtils.stringToLocalDateTime(query.getEndTime()).toLocalDate();
        for (int i = 0; i < 7; i++) {
            if(i == 0){
                LocalDate finalLocalDate = localDate;
                OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> DateUtils.stringToLocalDate(e.getDayTime()).compareTo(finalLocalDate) == 0).findFirst().orElse(null);
                OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> finalLocalDate.compareTo(DateUtils.stringToLocalDate(e.getDayTime())) == 0).findFirst().orElse(null);
                if(Objects.isNull(orderTrendsVO)){
                    orderTrendsVO = new OrderTrendsVO();
                    orderTrendsVO.setDayTime(DateUtils.localDateToString(localDate));
@@ -324,7 +366,7 @@
            }else {
                localDate = localDate.minusDays(1);
                LocalDate finalLocalDate1 = localDate;
                OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> DateUtils.stringToLocalDate(e.getDayTime()).compareTo(finalLocalDate1) == 0).findFirst().orElse(null);
                OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> finalLocalDate1.compareTo(DateUtils.stringToLocalDate(e.getDayTime())) == 0).findFirst().orElse(null);
                if(Objects.isNull(orderTrendsVO)){
                    orderTrendsVO = new OrderTrendsVO();
                    orderTrendsVO.setDayTime(DateUtils.localDateToString(finalLocalDate1));
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
@@ -156,6 +156,37 @@
    @Override
    public Map<String, Object> getDataGeneratorStockDetail(TDataGeneratorStockQuery query) {
        if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){
            // 判断时间
            if(Objects.nonNull(query.getTimeType())){
                LocalDateTime startTime = null;
                LocalDateTime endTime = null;
                switch (query.getTimeType()){
                    case 1:
                        // 今日
                        startTime = DateUtils.getDayStart(LocalDateTime.now());
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                    case 2:
                        // 昨日
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                        break;
                    case 3:
                        // 近7天
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                    case 4:
                        // 近30天
                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
                        break;
                }
                query.setStartTime(DateUtils.localDateTimeToDate(startTime));
                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
            }
        }
        return this.baseMapper.getDataGeneratorStockDetail(query);
    }
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -24,6 +24,7 @@
        <result property="updateTime"   column="update_time"  />
        <result property="remark"       column="remark"       />
        <result property="disableRemark"       column="disableRemark"       />
        <result property="rePassword"       column="rePassword"       />
        <result property="roleType"       column="roleType"       />
        <result property="objectId"       column="objectId"       />
        <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
@@ -51,7 +52,7 @@
    
    <sql id="selectUserVo">
        select u.user_id, u.dept_id, u.user_name , u.nick_name , u.email , u.avatar ,
               u.phonenumber  , u.password  , u.sex  , u.status  , u.del_flag  , u.login_ip  ,
               u.phonenumber  , u.password  , u.sex  , u.status  , u.del_flag  , u.login_ip  ,u.rePassword,
               u.login_date  , u.create_by  , u.create_time  , u.remark  ,u.roleType  , u.objectId  ,u.disableRemark,
               d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
ruoyi-system/src/main/resources/mapper/system/TOrderMealGoodsMapper.xml
@@ -22,7 +22,7 @@
        id, goodsNum, goodsName, goodsSalePrice, goodsPicture, goodsCount, orderId,typeName,costPrice,typeId,goodsId
    </sql>
    <select id="costTotal" resultType="java.math.BigDecimal">
        select sum(costPrice) from t_order_meal_goods
        select sum(costPrice*goodsCount) from t_order_meal_goods
        <where>
            <if test="ids != null and ids.size()>0">
                AND orderId IN
ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml
@@ -58,7 +58,7 @@
            AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
            AND tom.isCover = 1
        </where>
        ORDER BY tom.mealTime DESC
        ORDER BY tom.mealTime,tom.createTime DESC
    </select>
    <select id="amountSum" resultType="com.ruoyi.system.vo.AmountSumVO">
        select
@@ -156,6 +156,7 @@
            AND isCover = 1
            AND status = 2
        </where>
        GROUP BY DATE_FORMAT(mealTime, '%Y-%m-%d')
    </select>
    <select id="personnelStatistics" resultType="com.ruoyi.system.vo.PersonnelStatisticsVO">
        select
ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml
@@ -23,7 +23,8 @@
    <select id="getListByTimeAndShopId" resultType="com.ruoyi.system.domain.TOrderStockGoods">
        select t.id, t.orderId, t.goodsNum, t.goodsName, t.costPrice, t.salePrice, t.goodsPicture, t.stockCount,t.thisCostPrice,t.goodsId
        from t_order_stock_goods t
        where t.orderId in (select id from t_order_stock where DATE_FORMAT(orderTime, '%Y-%m-%d')) = #{orderTime} and shopId = #{shopId})
        left join t_order_stock ts on t.orderId = ts.id
        where DATE_FORMAT(ts.stockTime, '%Y-%m-%d') = #{orderTime} and ts.shopId = #{shopId}
    </select>
</mapper>