From 842947e6ecf0bdf8fd98049c0e47eb3893a8cbdb Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 25 九月 2024 18:13:14 +0800
Subject: [PATCH] 修改接口

---
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                            |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java       |   31 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java |   16 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java                |   11 -
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java      |   48 ++++++
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java  |   14 +
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java         |   54 +++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java           |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java    |    7 
 ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml                   |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java          |   34 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java        |  160 ++++++++++++++--------
 ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml                         |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java                |    5 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java               |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java           |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java                    |    2 
 ruoyi-system/src/main/resources/mapper/system/TOrderMealGoodsMapper.xml                    |    2 
 18 files changed, 319 insertions(+), 81 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java
index fcb3bce..3acfe2d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java
+++ b/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);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index de9cc1e..f233a45 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/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 登录信息
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index fc90d4d..38d45e0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/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();
     }
 
     /**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
index 96b149c..bd7fa1a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
+++ b/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;
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 48be71e..8e65bb4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/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;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 972e404..2066915 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/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()
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 67b4332..a7213b5 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/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;
+    }
+
     /**
      * 登录验证
      *
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java
index 6ad91b0..208be4a 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java
+++ b/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)))
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
index 5dcdf90..eba9882 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
+++ b/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);
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 948759d..21014c5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/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();
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
index 8113736..c4cd614 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
+++ b/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);
                 }
             }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java
index a626103..c65349e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java
+++ b/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){
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
index 25f1a01..eea6754 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
+++ b/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));
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
index a5cca79..41fe2a2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
+++ b/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);
     }
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index f3be2f0..c7a05b6 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/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
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderMealGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderMealGoodsMapper.xml
index fc74bf8..86d3d82 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderMealGoodsMapper.xml
+++ b/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
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml
index 34f4b04..01e1793 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml
+++ b/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
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml
index f2713f8..603e1a1 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml
+++ b/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>

--
Gitblit v1.7.1