Merge branch 'feature' of https://gitee.com/liuyingfang/cashier-admin into feature
# Conflicts: # eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbShopCategoryQueryCriteria.java # eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbShopCategoryServiceImpl.java
This commit is contained in:
84
README.md
84
README.md
@@ -11,47 +11,6 @@
|
|||||||
#### 项目简介
|
#### 项目简介
|
||||||
一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统
|
一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统
|
||||||
|
|
||||||
**开发文档:** [https://eladmin.vip](https://eladmin.vip)
|
|
||||||
|
|
||||||
**体验地址:** [https://eladmin.vip/demo](https://eladmin.vip/demo)
|
|
||||||
|
|
||||||
**账号密码:** `admin / 123456`
|
|
||||||
|
|
||||||
#### 项目源码
|
|
||||||
|
|
||||||
| | 后端源码 | 前端源码 |
|
|
||||||
|--- |--- | --- |
|
|
||||||
| github | https://github.com/elunez/eladmin | https://github.com/elunez/eladmin-web |
|
|
||||||
| 码云 | https://gitee.com/elunez/eladmin | https://gitee.com/elunez/eladmin-web |
|
|
||||||
|
|
||||||
#### 主要特性
|
|
||||||
- 使用最新技术栈,社区资源丰富。
|
|
||||||
- 高效率开发,代码生成器可一键生成前后端代码
|
|
||||||
- 支持数据字典,可方便地对一些状态进行管理
|
|
||||||
- 支持接口限流,避免恶意请求导致服务层压力过大
|
|
||||||
- 支持接口级别的功能权限与数据权限,可自定义操作
|
|
||||||
- 自定义权限注解与匿名接口注解,可快速对接口拦截与放行
|
|
||||||
- 对一些常用地前端组件封装:表格数据请求、数据字典等
|
|
||||||
- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断
|
|
||||||
- 支持在线用户管理与服务器性能监控,支持限制单用户登录
|
|
||||||
- 支持运维管理,可方便地对远程服务器的应用进行部署与管理
|
|
||||||
|
|
||||||
#### 系统功能
|
|
||||||
- 用户管理:提供用户的相关配置,新增用户后,默认密码为123456
|
|
||||||
- 角色管理:对权限与菜单进行分配,可根据部门设置角色的数据权限
|
|
||||||
- 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单
|
|
||||||
- 部门管理:可配置系统组织架构,树形表格展示
|
|
||||||
- 岗位管理:配置各个部门的职位
|
|
||||||
- 字典管理:可维护常用一些固定的数据,如:状态,性别等
|
|
||||||
- 系统日志:记录用户操作日志与异常日志,方便开发人员定位排错
|
|
||||||
- SQL监控:采用druid 监控数据库访问性能,默认用户名admin,密码123456
|
|
||||||
- 定时任务:整合Quartz做定时任务,加入任务日志,任务运行情况一目了然
|
|
||||||
- 代码生成:高灵活度生成前后端代码,减少大量重复的工作任务
|
|
||||||
- 邮件工具:配合富文本,发送html格式的邮件
|
|
||||||
- 七牛云存储:可同步七牛云存储的数据到系统,无需登录七牛云直接操作云数据
|
|
||||||
- 支付宝支付:整合了支付宝支付并且提供了测试账号,可自行测试
|
|
||||||
- 服务监控:监控服务器的负载情况
|
|
||||||
- 运维管理:一键部署你的应用
|
|
||||||
|
|
||||||
#### 项目结构
|
#### 项目结构
|
||||||
项目采用按功能分模块的开发方式,结构如下
|
项目采用按功能分模块的开发方式,结构如下
|
||||||
@@ -69,40 +28,23 @@
|
|||||||
#### 详细结构
|
#### 详细结构
|
||||||
|
|
||||||
```
|
```
|
||||||
- eladmin-common 公共模块
|
|
||||||
- annotation 为系统自定义注解
|
|
||||||
- aspect 自定义注解的切面
|
|
||||||
- base 提供了Entity、DTO基类和mapstruct的通用mapper
|
|
||||||
- config 自定义权限实现、redis配置、swagger配置、Rsa配置等
|
|
||||||
- exception 项目统一异常的处理
|
|
||||||
- utils 系统通用工具类
|
|
||||||
- eladmin-system 系统核心模块(系统启动入口)
|
|
||||||
- config 配置跨域与静态资源,与数据权限
|
|
||||||
- thread 线程池相关
|
|
||||||
- modules 系统相关模块(登录授权、系统监控、定时任务、运维管理等)
|
|
||||||
- eladmin-logging 系统日志模块
|
|
||||||
- eladmin-tools 系统第三方工具模块
|
|
||||||
- eladmin-generator 系统代码生成模块
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 特别鸣谢
|
#### 问题记录
|
||||||
|
|
||||||
- 感谢 [七牛云](https://portal.qiniu.com/signup?utm_source=kaiyuan&utm_media=ELADMIN) 提供的免费云存储与CDN加速支持
|
- 手动修改密码
|
||||||
|
- token生成 地址 TokenProvider.createToken
|
||||||
|
- OnlineUserService.save token保存地址
|
||||||
|
|
||||||
- 感谢 [JetBrains](https://www.jetbrains.com/) 提供的非商业开源软件开发授权
|
原文:[123456]()
|
||||||
|
|
||||||
- 感谢 [PanJiaChen](https://github.com/PanJiaChen/vue-element-admin) 大佬提供的前端模板
|
passwordEncoder.encode后为:
|
||||||
|
[$2a$10$VweP6V.MYfhW9pUOhp1rEOqTpglY.gQGZSvCcVvSDpzbLBGP45WZ6]()
|
||||||
|
|
||||||
- 感谢 [Moxun](https://github.com/moxun1639) 大佬提供的前端 Curd 通用组件
|
MD5Utils.encrypt后为:
|
||||||
|
[e10adc3949ba59abbe56e057f20f883e]()
|
||||||
|
|
||||||
- 感谢 [zhy6599](https://gitee.com/zhy6599) 大佬提供的后端运维管理相关功能
|
- sys_user的密码 内容修改为passwordEncoder.encode后密码
|
||||||
|
- MerchantAccount的密码 修改为MD5Utils.encrypt后密码
|
||||||
- 感谢 [j.yao.SUSE](https://github.com/everhopingandwaiting) 大佬提供的匿名接口与Redis限流等功能
|
- tb_pluss_shop_staff的密码 修改为MD5Utils.encrypt后的密码
|
||||||
|
|
||||||
- 感谢 [d15801543974](https://github.com/d15801543974) 大佬提供的基于注解的通用查询方式
|
|
||||||
|
|
||||||
#### 项目捐赠
|
|
||||||
项目的发展离不开你的支持,请作者喝杯咖啡吧☕ [Donate](https://eladmin.vip/donation/)
|
|
||||||
|
|
||||||
#### 反馈交流
|
|
||||||
- QQ交流群:一群:<strike>891137268</strike> 、二群:<strike>947578238</strike>、三群:659622532
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package cn.ysk.cashier.config;
|
package cn.ysk.cashier.config;
|
||||||
|
|
||||||
import cn.ysk.cashier.exception.BadRequestException;
|
|
||||||
import cn.ysk.cashier.utils.FastJsonUtils;
|
import cn.ysk.cashier.utils.FastJsonUtils;
|
||||||
import cn.ysk.cashier.utils.SpringContextHolder;
|
import cn.ysk.cashier.utils.SpringContextHolder;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -11,8 +10,6 @@ import org.aspectj.lang.annotation.Around;
|
|||||||
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
import org.aspectj.lang.annotation.Pointcut;
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
import org.aspectj.lang.reflect.MethodSignature;
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -26,8 +23,6 @@ import java.util.Map;
|
|||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class AppApiMethodAspect {
|
public class AppApiMethodAspect {
|
||||||
|
|
||||||
// @Pointcut("execution(public * cn.ysk.cashier.controller.*.*(..))")
|
|
||||||
@Pointcut("execution(public * (" +
|
@Pointcut("execution(public * (" +
|
||||||
"cn.ysk.cashier.controller.* " +
|
"cn.ysk.cashier.controller.* " +
|
||||||
"|| cn.ysk.cashier.controller.*.* " +
|
"|| cn.ysk.cashier.controller.*.* " +
|
||||||
@@ -62,26 +57,31 @@ public class AppApiMethodAspect {
|
|||||||
FastJsonUtils.toJSONString(result)
|
FastJsonUtils.toJSONString(result)
|
||||||
);
|
);
|
||||||
return result;
|
return result;
|
||||||
} catch (BadRequestException e) {
|
} catch (RuntimeException e) {
|
||||||
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
if (StringUtils.isBlank(e.getMessage())) {
|
||||||
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
|
||||||
FastJsonUtils.toJSONString(params),
|
|
||||||
e);
|
|
||||||
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
|
|
||||||
} catch (Throwable e) {
|
|
||||||
if(StringUtils.isBlank(e.getMessage())){
|
|
||||||
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
||||||
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
||||||
FastJsonUtils.toJSONString(params),
|
FastJsonUtils.toJSONString(params),
|
||||||
e);
|
e);
|
||||||
}else{
|
} else {
|
||||||
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
||||||
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
||||||
FastJsonUtils.toJSONString(params),
|
FastJsonUtils.toJSONString(params),
|
||||||
e.getMessage());
|
e.getMessage());
|
||||||
}
|
}
|
||||||
ResponseEntity<String> body = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
|
throw e;
|
||||||
return body;
|
} catch (Error e) {
|
||||||
|
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
||||||
|
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
||||||
|
FastJsonUtils.toJSONString(params),
|
||||||
|
e);
|
||||||
|
throw e;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error("\n>>>>>>{} {}\n>>>>>>{}\n>>>>>>Request: {}\n>>>>>>Exception: {}"
|
||||||
|
, req.getMethod(), req.getRequestURL(), req.getRemoteAddr(),
|
||||||
|
FastJsonUtils.toJSONString(params),
|
||||||
|
e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package cn.ysk.cashier.config.security.rest;
|
|||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.ysk.cashier.config.security.config.bean.LoginCodeEnum;
|
import cn.ysk.cashier.config.security.config.bean.LoginCodeEnum;
|
||||||
import cn.ysk.cashier.config.security.security.TokenProvider;
|
import cn.ysk.cashier.config.security.security.TokenProvider;
|
||||||
|
import cn.ysk.cashier.utils.*;
|
||||||
import com.wf.captcha.base.Captcha;
|
import com.wf.captcha.base.Captcha;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -37,10 +38,6 @@ import cn.ysk.cashier.config.security.service.dto.JwtUserDto;
|
|||||||
import cn.ysk.cashier.config.security.service.OnlineUserService;
|
import cn.ysk.cashier.config.security.service.OnlineUserService;
|
||||||
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
||||||
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
|
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
|
||||||
import cn.ysk.cashier.utils.RsaUtils;
|
|
||||||
import cn.ysk.cashier.utils.RedisUtils;
|
|
||||||
import cn.ysk.cashier.utils.SecurityUtils;
|
|
||||||
import cn.ysk.cashier.utils.StringUtils;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
|
|||||||
@@ -17,18 +17,22 @@ package cn.ysk.cashier.controller.order;
|
|||||||
|
|
||||||
import cn.ysk.cashier.annotation.Log;
|
import cn.ysk.cashier.annotation.Log;
|
||||||
import cn.ysk.cashier.dto.order.TbOrderInfoDto;
|
import cn.ysk.cashier.dto.order.TbOrderInfoDto;
|
||||||
|
import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria;
|
||||||
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
||||||
import cn.ysk.cashier.service.order.TbOrderInfoService;
|
import cn.ysk.cashier.service.order.TbOrderInfoService;
|
||||||
import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria;
|
import cn.ysk.cashier.vo.TbOrderPayCountVo;
|
||||||
import org.springframework.data.domain.Pageable;
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import io.swagger.annotations.*;
|
|
||||||
import java.io.IOException;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
@@ -50,13 +54,20 @@ public class TbOrderInfoController {
|
|||||||
tbOrderInfoService.download(tbOrderInfoService.queryAll(criteria), response);
|
tbOrderInfoService.download(tbOrderInfoService.queryAll(criteria), response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping
|
@PostMapping("/date")
|
||||||
@Log("查询订单")
|
@Log("查询订单")
|
||||||
@ApiOperation("查询订单")
|
@ApiOperation("查询订单")
|
||||||
public ResponseEntity<Object> queryTbOrderInfo(TbOrderInfoQueryCriteria criteria, Pageable pageable){
|
public ResponseEntity<Object> queryTbOrderInfo(@RequestBody TbOrderInfoQueryCriteria criteria, Pageable pageable){
|
||||||
return new ResponseEntity<>(tbOrderInfoService.queryAll(criteria,pageable),HttpStatus.OK);
|
return new ResponseEntity<>(tbOrderInfoService.queryAll(criteria,pageable),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/payCount")
|
||||||
|
@Log("通过shopId查询支付统计")
|
||||||
|
@ApiOperation("通过shopId查询支付统计")
|
||||||
|
public List<TbOrderPayCountVo> queryTbOrderPayCount(String shopId){
|
||||||
|
return tbOrderInfoService.queryTbOrderPayCount(shopId);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
@Log("通过Id查询订单")
|
@Log("通过Id查询订单")
|
||||||
@ApiOperation("通过Id查询订单")
|
@ApiOperation("通过Id查询订单")
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ public class TbProductStockDetailController {
|
|||||||
@Log("导出数据")
|
@Log("导出数据")
|
||||||
@ApiOperation("导出数据")
|
@ApiOperation("导出数据")
|
||||||
@GetMapping(value = "/download")
|
@GetMapping(value = "/download")
|
||||||
@PreAuthorize("@el.check('tbProductStockDetail:list')")
|
|
||||||
public void exportTbProductStockDetail(HttpServletResponse response, TbProductStockDetailQueryCriteria criteria) throws IOException {
|
public void exportTbProductStockDetail(HttpServletResponse response, TbProductStockDetailQueryCriteria criteria) throws IOException {
|
||||||
tbProductStockDetailService.download(tbProductStockDetailService.queryAll(criteria), response);
|
tbProductStockDetailService.download(tbProductStockDetailService.queryAll(criteria), response);
|
||||||
}
|
}
|
||||||
@@ -54,7 +53,6 @@ public class TbProductStockDetailController {
|
|||||||
@GetMapping
|
@GetMapping
|
||||||
@Log("查询/product/Stock")
|
@Log("查询/product/Stock")
|
||||||
@ApiOperation("查询/product/Stock")
|
@ApiOperation("查询/product/Stock")
|
||||||
@PreAuthorize("@el.check('tbProductStockDetail:list')")
|
|
||||||
public ResponseEntity<Object> queryTbProductStockDetail(TbProductStockDetailQueryCriteria criteria, Pageable pageable){
|
public ResponseEntity<Object> queryTbProductStockDetail(TbProductStockDetailQueryCriteria criteria, Pageable pageable){
|
||||||
return new ResponseEntity<>(tbProductStockDetailService.queryAll(criteria,pageable),HttpStatus.OK);
|
return new ResponseEntity<>(tbProductStockDetailService.queryAll(criteria,pageable),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
@@ -80,7 +78,6 @@ public class TbProductStockDetailController {
|
|||||||
@PostMapping
|
@PostMapping
|
||||||
@Log("新增/product/Stock")
|
@Log("新增/product/Stock")
|
||||||
@ApiOperation("新增/product/Stock")
|
@ApiOperation("新增/product/Stock")
|
||||||
@PreAuthorize("@el.check('tbProductStockDetail:add')")
|
|
||||||
public ResponseEntity<Object> createTbProductStockDetail(@Validated @RequestBody TbProductStockDetail resources){
|
public ResponseEntity<Object> createTbProductStockDetail(@Validated @RequestBody TbProductStockDetail resources){
|
||||||
return new ResponseEntity<>(tbProductStockDetailService.create(resources),HttpStatus.CREATED);
|
return new ResponseEntity<>(tbProductStockDetailService.create(resources),HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
@@ -88,7 +85,6 @@ public class TbProductStockDetailController {
|
|||||||
@PutMapping
|
@PutMapping
|
||||||
@Log("修改/product/Stock")
|
@Log("修改/product/Stock")
|
||||||
@ApiOperation("修改/product/Stock")
|
@ApiOperation("修改/product/Stock")
|
||||||
@PreAuthorize("@el.check('tbProductStockDetail:edit')")
|
|
||||||
public ResponseEntity<Object> updateTbProductStockDetail(@Validated @RequestBody TbProductStockDetail resources){
|
public ResponseEntity<Object> updateTbProductStockDetail(@Validated @RequestBody TbProductStockDetail resources){
|
||||||
tbProductStockDetailService.update(resources);
|
tbProductStockDetailService.update(resources);
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
@@ -97,7 +93,6 @@ public class TbProductStockDetailController {
|
|||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
@Log("删除/product/Stock")
|
@Log("删除/product/Stock")
|
||||||
@ApiOperation("删除/product/Stock")
|
@ApiOperation("删除/product/Stock")
|
||||||
@PreAuthorize("@el.check('tbProductStockDetail:del')")
|
|
||||||
public ResponseEntity<Object> deleteTbProductStockDetail(@RequestBody Long[] ids) {
|
public ResponseEntity<Object> deleteTbProductStockDetail(@RequestBody Long[] ids) {
|
||||||
tbProductStockDetailService.deleteAll(ids);
|
tbProductStockDetailService.deleteAll(ids);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
|||||||
@@ -16,26 +16,30 @@
|
|||||||
package cn.ysk.cashier.controller.shop;
|
package cn.ysk.cashier.controller.shop;
|
||||||
|
|
||||||
import cn.ysk.cashier.annotation.Log;
|
import cn.ysk.cashier.annotation.Log;
|
||||||
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
import cn.ysk.cashier.config.security.security.TokenProvider;
|
||||||
import cn.ysk.cashier.service.shop.TbShopInfoService;
|
import cn.ysk.cashier.config.security.service.OnlineUserService;
|
||||||
import cn.ysk.cashier.dto.shop.TbShopInfoDto;
|
import cn.ysk.cashier.dto.shop.TbShopInfoDto;
|
||||||
import cn.ysk.cashier.dto.shop.TbShopInfoQueryCriteria;
|
import cn.ysk.cashier.dto.shop.TbShopInfoQueryCriteria;
|
||||||
import org.springframework.data.domain.Pageable;
|
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
||||||
|
import cn.ysk.cashier.service.shop.TbShopInfoService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import io.swagger.annotations.*;
|
|
||||||
import java.io.IOException;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
* @author lyf
|
* @author lyf
|
||||||
* @date 2023-11-07
|
* @date 2023-11-07
|
||||||
**/
|
**/
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Api(tags = "/shop/list管理")
|
@Api(tags = "/shop/list管理")
|
||||||
@@ -43,6 +47,8 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
public class TbShopInfoController {
|
public class TbShopInfoController {
|
||||||
|
|
||||||
private final TbShopInfoService tbShopInfoService;
|
private final TbShopInfoService tbShopInfoService;
|
||||||
|
private final OnlineUserService onlineUserService;
|
||||||
|
private final TokenProvider tokenProvider;
|
||||||
|
|
||||||
// @Log("导出数据")
|
// @Log("导出数据")
|
||||||
// @ApiOperation("导出数据")
|
// @ApiOperation("导出数据")
|
||||||
@@ -75,6 +81,16 @@ public class TbShopInfoController {
|
|||||||
return new ResponseEntity<>(tbShopInfoService.create(resources),HttpStatus.CREATED);
|
return new ResponseEntity<>(tbShopInfoService.create(resources),HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("修改商户密码")
|
||||||
|
@PostMapping(value = "/shop/upPass")
|
||||||
|
public ResponseEntity<Object> upShopPass(HttpServletRequest request, @RequestBody String username,String password) throws Exception {
|
||||||
|
tbShopInfoService.upShopPass(username,password);
|
||||||
|
//根据token踢出用户
|
||||||
|
// onlineUserService.logout(tokenProvider.getToken(request));
|
||||||
|
log.info("修改商户密码成功。");
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
@PutMapping
|
@PutMapping
|
||||||
@Log("修改/shop/list")
|
@Log("修改/shop/list")
|
||||||
@ApiOperation("修改/shop/list")
|
@ApiOperation("修改/shop/list")
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2020 Zheng Jie
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package cn.ysk.cashier.repository.order;
|
||||||
|
|
||||||
|
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
||||||
|
import cn.ysk.cashier.vo.TbOrderPayCountVo;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @website https://eladmin.vip
|
||||||
|
* @author lyf
|
||||||
|
* @date 2024-03-02
|
||||||
|
**/
|
||||||
|
public interface TbOrderPayCountRepository extends JpaRepository<TbOrderInfo, Integer> {
|
||||||
|
|
||||||
|
@Query("SELECT new cn.ysk.cashier.vo.TbOrderPayCountVo(info.payType, SUM(info.amount)) " +
|
||||||
|
"FROM TbOrderInfo info " +
|
||||||
|
"WHERE info.shopId = :shopId " +
|
||||||
|
"GROUP BY info.payType")
|
||||||
|
List<TbOrderPayCountVo> queryTbOrderPayCount(@Param("shopId")String shopId);
|
||||||
|
}
|
||||||
@@ -18,6 +18,8 @@ package cn.ysk.cashier.repository.shop;
|
|||||||
import cn.ysk.cashier.pojo.shop.TbMerchantAccount;
|
import cn.ysk.cashier.pojo.shop.TbMerchantAccount;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
@@ -25,4 +27,15 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|||||||
* @date 2024-02-08
|
* @date 2024-02-08
|
||||||
**/
|
**/
|
||||||
public interface TbMerchantAccountRepository extends JpaRepository<TbMerchantAccount, Integer>, JpaSpecificationExecutor<TbMerchantAccount> {
|
public interface TbMerchantAccountRepository extends JpaRepository<TbMerchantAccount, Integer>, JpaSpecificationExecutor<TbMerchantAccount> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改密码
|
||||||
|
* @param account 用户名
|
||||||
|
* @param password 密码
|
||||||
|
* @param lastPasswordResetTime 更新时间
|
||||||
|
* @param lastPasswordResetTime /
|
||||||
|
*/
|
||||||
|
@Modifying
|
||||||
|
@Query(value = "update tb_merchant_account set password = ?2 , updated_at = ?3 where account = ?1",nativeQuery = true)
|
||||||
|
void updatePass(String account, String password, Long lastPasswordResetTime);
|
||||||
}
|
}
|
||||||
@@ -18,6 +18,8 @@ package cn.ysk.cashier.repository.shop;
|
|||||||
import cn.ysk.cashier.pojo.shop.TbPlussShopStaff;
|
import cn.ysk.cashier.pojo.shop.TbPlussShopStaff;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
@@ -25,4 +27,16 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|||||||
* @date 2024-03-01
|
* @date 2024-03-01
|
||||||
**/
|
**/
|
||||||
public interface TbPlussShopStaffRepository extends JpaRepository<TbPlussShopStaff, Integer>, JpaSpecificationExecutor<TbPlussShopStaff> {
|
public interface TbPlussShopStaffRepository extends JpaRepository<TbPlussShopStaff, Integer>, JpaSpecificationExecutor<TbPlussShopStaff> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改密码
|
||||||
|
* @param account 用户名
|
||||||
|
* @param password 密码
|
||||||
|
* @param lastPasswordResetTime 更新时间
|
||||||
|
* @param lastPasswordResetTime /
|
||||||
|
*/
|
||||||
|
@Modifying
|
||||||
|
// @Query(value = "update tb_pluss_shop_staff set password = ?2 , updated_at = ?3 where account = ?1",nativeQuery = true)
|
||||||
|
@Query("update TbPlussShopStaff set password = :password , updatedAt = :lastPasswordResetTime where account = :account")
|
||||||
|
void updatePass(String account, String password, Long lastPasswordResetTime);
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2020 Zheng Jie
|
* Copyright 2019-2020 Zheng Jie
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package cn.ysk.cashier.service.impl.order;
|
package cn.ysk.cashier.service.impl.order;
|
||||||
|
|
||||||
import cn.ysk.cashier.dto.order.TbOrderInfoDto;
|
import cn.ysk.cashier.dto.order.TbOrderInfoDto;
|
||||||
@@ -22,9 +22,11 @@ import cn.ysk.cashier.pojo.order.TbOrderDetail;
|
|||||||
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
||||||
import cn.ysk.cashier.repository.order.TbOrderDetailRepository;
|
import cn.ysk.cashier.repository.order.TbOrderDetailRepository;
|
||||||
import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
|
import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
|
||||||
|
import cn.ysk.cashier.repository.order.TbOrderPayCountRepository;
|
||||||
import cn.ysk.cashier.service.order.TbOrderInfoService;
|
import cn.ysk.cashier.service.order.TbOrderInfoService;
|
||||||
import cn.ysk.cashier.utils.*;
|
import cn.ysk.cashier.utils.*;
|
||||||
import cn.ysk.cashier.vo.TbOrderInfoVo;
|
import cn.ysk.cashier.vo.TbOrderInfoVo;
|
||||||
|
import cn.ysk.cashier.vo.TbOrderPayCountVo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -38,11 +40,11 @@ import java.util.*;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @author lyf
|
||||||
* @description 服务实现
|
* @website https://eladmin.vip
|
||||||
* @author lyf
|
* @description 服务实现
|
||||||
* @date 2024-03-02
|
* @date 2024-03-02
|
||||||
**/
|
**/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
||||||
@@ -51,12 +53,15 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
private final TbOrderInfoMapper tbOrderInfoMapper;
|
private final TbOrderInfoMapper tbOrderInfoMapper;
|
||||||
|
|
||||||
private final TbOrderDetailRepository tbOrderDetailRepository;
|
private final TbOrderDetailRepository tbOrderDetailRepository;
|
||||||
|
|
||||||
|
private final TbOrderPayCountRepository tbOrderPayCountRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String,Object> queryAll(TbOrderInfoQueryCriteria criteria, Pageable pageable){
|
public Map<String, Object> queryAll(TbOrderInfoQueryCriteria criteria, Pageable pageable) {
|
||||||
Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
||||||
List<TbOrderInfoVo> orderInfoVoList = new ArrayList<>();
|
List<TbOrderInfoVo> orderInfoVoList = new ArrayList<>();
|
||||||
for (TbOrderInfo tbOrderInfo : page.getContent()) {
|
for (TbOrderInfo tbOrderInfo : page.getContent()) {
|
||||||
TbOrderInfoVo orderInfoVo=new TbOrderInfoVo();
|
TbOrderInfoVo orderInfoVo = new TbOrderInfoVo();
|
||||||
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
|
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
|
||||||
orderInfoVo.setDetailList(details);
|
orderInfoVo.setDetailList(details);
|
||||||
BeanUtils.copyProperties(tbOrderInfo, orderInfoVo);
|
BeanUtils.copyProperties(tbOrderInfo, orderInfoVo);
|
||||||
@@ -66,7 +71,12 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbOrderInfoDto> queryAll(TbOrderInfoQueryCriteria criteria){
|
public List<TbOrderPayCountVo> queryTbOrderPayCount(String shopId) {
|
||||||
|
return tbOrderPayCountRepository.queryTbOrderPayCount(shopId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TbOrderInfoDto> queryAll(TbOrderInfoQueryCriteria criteria) {
|
||||||
List<TbOrderInfoDto> dto = tbOrderInfoMapper.toDto(tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
|
List<TbOrderInfoDto> dto = tbOrderInfoMapper.toDto(tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
|
||||||
for (TbOrderInfoDto tbOrderInfo : dto) {
|
for (TbOrderInfoDto tbOrderInfo : dto) {
|
||||||
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
|
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
|
||||||
@@ -79,7 +89,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public TbOrderInfoDto findById(Integer id) {
|
public TbOrderInfoDto findById(Integer id) {
|
||||||
TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(id).orElseGet(TbOrderInfo::new);
|
TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(id).orElseGet(TbOrderInfo::new);
|
||||||
ValidationUtil.isNull(tbOrderInfo.getId(),"TbOrderInfo","id",id);
|
ValidationUtil.isNull(tbOrderInfo.getId(), "TbOrderInfo", "id", id);
|
||||||
TbOrderInfoDto dto = tbOrderInfoMapper.toDto(tbOrderInfo);
|
TbOrderInfoDto dto = tbOrderInfoMapper.toDto(tbOrderInfo);
|
||||||
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
|
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
|
||||||
dto.setDetailList(details);
|
dto.setDetailList(details);
|
||||||
@@ -96,7 +106,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(TbOrderInfo resources) {
|
public void update(TbOrderInfo resources) {
|
||||||
TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(resources.getId()).orElseGet(TbOrderInfo::new);
|
TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(resources.getId()).orElseGet(TbOrderInfo::new);
|
||||||
ValidationUtil.isNull( tbOrderInfo.getId(),"TbOrderInfo","id",resources.getId());
|
ValidationUtil.isNull(tbOrderInfo.getId(), "TbOrderInfo", "id", resources.getId());
|
||||||
tbOrderInfo.copy(resources);
|
tbOrderInfo.copy(resources);
|
||||||
tbOrderInfoRepository.save(tbOrderInfo);
|
tbOrderInfoRepository.save(tbOrderInfo);
|
||||||
}
|
}
|
||||||
@@ -112,9 +122,9 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
public void download(List<TbOrderInfoDto> all, HttpServletResponse response) throws IOException {
|
public void download(List<TbOrderInfoDto> all, HttpServletResponse response) throws IOException {
|
||||||
List<Map<String, Object>> list = new ArrayList<>();
|
List<Map<String, Object>> list = new ArrayList<>();
|
||||||
for (TbOrderInfoDto tbOrderInfo : all) {
|
for (TbOrderInfoDto tbOrderInfo : all) {
|
||||||
Map<String,Object> map = new LinkedHashMap<>();
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
map.put("订单编号", tbOrderInfo.getOrderNo());
|
map.put("订单编号", tbOrderInfo.getOrderNo());
|
||||||
switch (tbOrderInfo.getOrderType()){
|
switch (tbOrderInfo.getOrderType()) {
|
||||||
case "cash":
|
case "cash":
|
||||||
tbOrderInfo.setOrderType("收银");
|
tbOrderInfo.setOrderType("收银");
|
||||||
break;
|
break;
|
||||||
@@ -128,7 +138,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
tbOrderInfo.setOrderType("退单");
|
tbOrderInfo.setOrderType("退单");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tbOrderInfo.setOrderType(tbOrderInfo.getOrderType()+"未知订单类型");
|
tbOrderInfo.setOrderType(tbOrderInfo.getOrderType() + "未知订单类型");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
map.put("订单类型", tbOrderInfo.getOrderType());
|
map.put("订单类型", tbOrderInfo.getOrderType());
|
||||||
@@ -146,7 +156,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
tbOrderInfo.setSendType("堂食");
|
tbOrderInfo.setSendType("堂食");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tbOrderInfo.setSendType(tbOrderInfo.getSendType()+"未知送货类型");
|
tbOrderInfo.setSendType(tbOrderInfo.getSendType() + "未知送货类型");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
map.put("发货类型", tbOrderInfo.getSendType());
|
map.put("发货类型", tbOrderInfo.getSendType());
|
||||||
@@ -193,12 +203,12 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
|||||||
tbOrderInfo.setStatus("激活订单");
|
tbOrderInfo.setStatus("激活订单");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tbOrderInfo.setStatus(tbOrderInfo.getStatus()+"未知订单状态");
|
tbOrderInfo.setStatus(tbOrderInfo.getStatus() + "未知订单状态");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
map.put("状态", tbOrderInfo.getStatus());
|
map.put("状态", tbOrderInfo.getStatus());
|
||||||
map.put("创建日期", DateUtil.timeStampFormatyMdHms(tbOrderInfo.getCreatedAt()));
|
map.put("创建日期", DateUtil.timeStampFormatyMdHms(tbOrderInfo.getCreatedAt()));
|
||||||
map.put("备注", tbOrderInfo.getRemark());
|
map.put("备注", tbOrderInfo.getRemark());
|
||||||
//
|
//
|
||||||
// map.put("商户结算金额", tbOrderInfo.getSettlementAmount());
|
// map.put("商户结算金额", tbOrderInfo.getSettlementAmount());
|
||||||
// map.put("包装费", tbOrderInfo.getPackFee());
|
// map.put("包装费", tbOrderInfo.getPackFee());
|
||||||
|
|||||||
@@ -15,41 +15,44 @@
|
|||||||
*/
|
*/
|
||||||
package cn.ysk.cashier.service.impl.shopimpl;
|
package cn.ysk.cashier.service.impl.shopimpl;
|
||||||
|
|
||||||
|
import cn.ysk.cashier.config.security.security.TokenProvider;
|
||||||
|
import cn.ysk.cashier.config.security.service.UserCacheManager;
|
||||||
|
import cn.ysk.cashier.dto.shop.TbShopInfoDto;
|
||||||
|
import cn.ysk.cashier.dto.shop.TbShopInfoQueryCriteria;
|
||||||
import cn.ysk.cashier.exception.BadRequestException;
|
import cn.ysk.cashier.exception.BadRequestException;
|
||||||
import cn.ysk.cashier.pojo.product.TbShopCategory;
|
import cn.ysk.cashier.exception.EntityNotFoundException;
|
||||||
|
import cn.ysk.cashier.mapper.shop.TbShopInfoMapper;
|
||||||
import cn.ysk.cashier.pojo.shop.TbMerchantAccount;
|
import cn.ysk.cashier.pojo.shop.TbMerchantAccount;
|
||||||
import cn.ysk.cashier.pojo.shop.TbPlussShopStaff;
|
|
||||||
import cn.ysk.cashier.repository.shop.TbMerchantAccountRepository;
|
|
||||||
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
|
||||||
import cn.ysk.cashier.pojo.shop.TbMerchantRegister;
|
import cn.ysk.cashier.pojo.shop.TbMerchantRegister;
|
||||||
|
import cn.ysk.cashier.pojo.shop.TbPlussShopStaff;
|
||||||
|
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
||||||
|
import cn.ysk.cashier.repository.shop.TbMerchantAccountRepository;
|
||||||
import cn.ysk.cashier.repository.shop.TbMerchantRegisterRepository;
|
import cn.ysk.cashier.repository.shop.TbMerchantRegisterRepository;
|
||||||
import cn.ysk.cashier.repository.shop.TbPlussShopStaffRepository;
|
import cn.ysk.cashier.repository.shop.TbPlussShopStaffRepository;
|
||||||
|
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
|
||||||
|
import cn.ysk.cashier.service.shop.TbShopInfoService;
|
||||||
import cn.ysk.cashier.system.domain.Dept;
|
import cn.ysk.cashier.system.domain.Dept;
|
||||||
import cn.ysk.cashier.system.domain.Job;
|
import cn.ysk.cashier.system.domain.Job;
|
||||||
import cn.ysk.cashier.system.domain.Role;
|
import cn.ysk.cashier.system.domain.Role;
|
||||||
import cn.ysk.cashier.system.domain.User;
|
import cn.ysk.cashier.system.domain.User;
|
||||||
import cn.ysk.cashier.system.repository.UserRepository;
|
import cn.ysk.cashier.system.repository.UserRepository;
|
||||||
|
import cn.ysk.cashier.system.service.UserService;
|
||||||
import cn.ysk.cashier.utils.*;
|
import cn.ysk.cashier.utils.*;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
|
|
||||||
import cn.ysk.cashier.service.shop.TbShopInfoService;
|
|
||||||
import cn.ysk.cashier.dto.shop.TbShopInfoDto;
|
|
||||||
import cn.ysk.cashier.dto.shop.TbShopInfoQueryCriteria;
|
|
||||||
import cn.ysk.cashier.mapper.shop.TbShopInfoMapper;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.*;
|
|
||||||
import java.io.IOException;
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
@@ -69,6 +72,11 @@ public class TbShopInfoServiceImpl implements TbShopInfoService {
|
|||||||
|
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
private final UserCacheManager userCacheManager;
|
||||||
|
private final TokenProvider tokenProvider;
|
||||||
|
|
||||||
private final TbMerchantRegisterRepository merchantRegisterRepository;
|
private final TbMerchantRegisterRepository merchantRegisterRepository;
|
||||||
|
|
||||||
private final PasswordEncoder passwordEncoder;
|
private final PasswordEncoder passwordEncoder;
|
||||||
@@ -213,6 +221,19 @@ public class TbShopInfoServiceImpl implements TbShopInfoService {
|
|||||||
return tbShopInfoMapper.toDto(new TbShopInfo());
|
return tbShopInfoMapper.toDto(new TbShopInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void upShopPass(String username,String password){
|
||||||
|
User user = userRepository.findByUsername(username);
|
||||||
|
if (user == null) {
|
||||||
|
throw new EntityNotFoundException(User.class, "username", username);
|
||||||
|
}
|
||||||
|
String encPass = MD5Utils.encrypt(password);
|
||||||
|
shopStaffRepository.updatePass(username,encPass,System.currentTimeMillis());
|
||||||
|
merchantAccountRepository.updatePass(username,encPass,System.currentTimeMillis());
|
||||||
|
userService.updatePass(username,passwordEncoder.encode(passwordEncoder.encode(password)));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(TbShopInfo resources) {
|
public void update(TbShopInfo resources) {
|
||||||
|
|||||||
@@ -15,14 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
package cn.ysk.cashier.service.order;
|
package cn.ysk.cashier.service.order;
|
||||||
|
|
||||||
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
|
||||||
import cn.ysk.cashier.dto.order.TbOrderInfoDto;
|
import cn.ysk.cashier.dto.order.TbOrderInfoDto;
|
||||||
import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria;
|
import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria;
|
||||||
|
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
||||||
|
import cn.ysk.cashier.vo.TbOrderPayCountVo;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.List;
|
|
||||||
import java.io.IOException;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
@@ -40,6 +42,13 @@ public interface TbOrderInfoService {
|
|||||||
*/
|
*/
|
||||||
Map<String,Object> queryAll(TbOrderInfoQueryCriteria criteria, Pageable pageable);
|
Map<String,Object> queryAll(TbOrderInfoQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据支付类型统计
|
||||||
|
* @param shopId shopId
|
||||||
|
* @return TbOrderPayCountVo
|
||||||
|
*/
|
||||||
|
List<TbOrderPayCountVo> queryTbOrderPayCount(String shopId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询所有数据不分页
|
* 查询所有数据不分页
|
||||||
* @param criteria 条件参数
|
* @param criteria 条件参数
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ public interface TbShopInfoService {
|
|||||||
*/
|
*/
|
||||||
TbShopInfoDto create(TbShopInfoDto resources);
|
TbShopInfoDto create(TbShopInfoDto resources);
|
||||||
|
|
||||||
|
void upShopPass(String username,String password) throws Exception ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑
|
* 编辑
|
||||||
* @param resources /
|
* @param resources /
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package cn.ysk.cashier.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TbOrderPayCountVo{
|
||||||
|
private String payType;
|
||||||
|
private BigDecimal payAmount;
|
||||||
|
|
||||||
|
// 构造函数,参数名需要与查询中的别名一致
|
||||||
|
public TbOrderPayCountVo(String payType, BigDecimal payAmount) {
|
||||||
|
this.payType = payType;
|
||||||
|
this.payAmount = payAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter和Setter方法
|
||||||
|
public String getPayType() {
|
||||||
|
return payType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPayType(String payType) {
|
||||||
|
this.payType = payType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPayAmount() {
|
||||||
|
return payAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPayAmount(BigDecimal payAmount) {
|
||||||
|
this.payAmount = payAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// toString方法,用于简单的打印信息,可根据需要添加
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "TbOrderPayCountVo{" +
|
||||||
|
"payType='" + payType + '\'' +
|
||||||
|
", payAmount=" + payAmount +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user