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