增加菜单管理功能

Result重名为R
websocket忽略异常
master
toesbieya 6 years ago
parent 1c8164b7e3
commit 16ed4e3bc2
  1. 7
      java/cloud/api/src/main/java/cn/toesbieya/jxc/api/system/ResourceApi.java
  2. 15
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/ResourceTypeEnum.java
  3. 8
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysResource.java
  4. 83
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/R.java
  5. 83
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/Result.java
  6. 13
      java/cloud/gateway/pom.xml
  7. 87
      java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/config/ResourceConfig.java
  8. 6
      java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/controller/FallbackController.java
  9. 8
      java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/filter/SecurityFilter.java
  10. 2
      java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/filter/SentinelFilter.java
  11. 9
      java/cloud/gateway/src/main/resources/bootstrap.yml
  12. 10
      java/cloud/web/file/src/main/java/cn/toesbieya/jxc/file/controller/FileController.java
  13. 6
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/aspect/LockAspect.java
  14. 26
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/aspect/RestExceptionAspect.java
  15. 6
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/aspect/UserActionAspect.java
  16. 6
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/util/ExcelUtil.java
  17. 4
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/util/WebUtil.java
  18. 28
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/controller/AccountController.java
  19. 65
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/service/AccountService.java
  20. 6
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/DocHistoryController.java
  21. 42
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/PurchaseInboundController.java
  22. 42
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/PurchaseOrderController.java
  23. 42
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/SellOrderController.java
  24. 42
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/SellOutboundController.java
  25. 50
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/PurchaseInboundService.java
  26. 46
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/PurchaseOrderService.java
  27. 48
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/SellOrderService.java
  28. 50
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/SellOutboundService.java
  29. 24
      java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/controller/ManageController.java
  30. 10
      java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/controller/UserController.java
  31. 22
      java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/service/ManageService.java
  32. 12
      java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/service/UserService.java
  33. 10
      java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/controller/RecordController.java
  34. 18
      java/cloud/web/web-modules/statistic/src/main/java/cn/toesbieya/jxc/statistic/controller/StatisticController.java
  35. 18
      java/cloud/web/web-modules/stock/src/main/java/cn/toesbieya/jxc/stock/controller/StockController.java
  36. 22
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/CategoryController.java
  37. 22
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/CustomerController.java
  38. 18
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/DepartmentController.java
  39. 25
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/ResourceController.java
  40. 22
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/RoleController.java
  41. 22
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/SupplierController.java
  42. 26
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/UserController.java
  43. 4
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysResourceMapper.java
  44. 22
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/CategoryService.java
  45. 18
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/CustomerService.java
  46. 18
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/DepartmentService.java
  47. 160
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/ResourceService.java
  48. 18
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/RoleService.java
  49. 18
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SupplierService.java
  50. 26
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/UserService.java
  51. 37
      java/cloud/web/web-modules/system/src/main/resources/mapper/SysResource.xml
  52. 26
      java/cloud/websocket/src/main/java/cn/toesbieya/jxc/socket/config/SocketConfig.java
  53. BIN
      java/db/my.rar
  54. 6
      java/local/src/main/java/cn/toesbieya/jxc/aspect/LockAspect.java
  55. 26
      java/local/src/main/java/cn/toesbieya/jxc/aspect/RestExceptionAspect.java
  56. 6
      java/local/src/main/java/cn/toesbieya/jxc/aspect/UserActionAspect.java
  57. 26
      java/local/src/main/java/cn/toesbieya/jxc/config/SocketConfig.java
  58. 28
      java/local/src/main/java/cn/toesbieya/jxc/controller/AccountController.java
  59. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizStockController.java
  60. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/FileController.java
  61. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/RecController.java
  62. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/StatisticController.java
  63. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/TestController.java
  64. 6
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/HistoryController.java
  65. 42
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseInboundController.java
  66. 42
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseOrderController.java
  67. 42
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOrderController.java
  68. 42
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOutboundController.java
  69. 24
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/ManageController.java
  70. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/UserController.java
  71. 22
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/CategoryController.java
  72. 23
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/CustomerController.java
  73. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/DepartmentController.java
  74. 26
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/ResourceController.java
  75. 22
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/RoleController.java
  76. 22
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/SupplierController.java
  77. 26
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/UserController.java
  78. 15
      java/local/src/main/java/cn/toesbieya/jxc/enumeration/ResourceTypeEnum.java
  79. 6
      java/local/src/main/java/cn/toesbieya/jxc/interceptor/SecurityInterceptor.java
  80. 4
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysResourceMapper.java
  81. 8
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysResource.java
  82. 81
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/R.java
  83. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/ResourceVo.java
  84. 81
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/Result.java
  85. 54
      java/local/src/main/java/cn/toesbieya/jxc/module/PermissionModule.java
  86. 62
      java/local/src/main/java/cn/toesbieya/jxc/service/AccountService.java
  87. 50
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseInboundService.java
  88. 46
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseOrderService.java
  89. 48
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOrderService.java
  90. 50
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOutboundService.java
  91. 22
      java/local/src/main/java/cn/toesbieya/jxc/service/msg/MsgService.java
  92. 12
      java/local/src/main/java/cn/toesbieya/jxc/service/msg/MsgUserService.java
  93. 22
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysCategoryService.java
  94. 18
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysCustomerService.java
  95. 18
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysDepartmentService.java
  96. 156
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysResourceService.java
  97. 18
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysRoleService.java
  98. 18
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysSupplierService.java
  99. 26
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysUserService.java
  100. 6
      java/local/src/main/java/cn/toesbieya/jxc/util/ExcelUtil.java
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,11 +1,14 @@
package cn.toesbieya.jxc.api.system;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.vo.ResourceVo;
import java.util.List;
public interface ResourceApi {
//获取已启用的数据接口列表
List<SysResource> getEnableApi();
//获取角色的权限列表,包含admin权限
List<ResourceVo> getResourceByRole(SysRole role);
List<SysResource> getResourceByRole(SysRole role);
}

@ -0,0 +1,15 @@
package cn.toesbieya.jxc.common.enumeration;
public enum ResourceTypeEnum {
FOLDER(1), LEAF(2), API(3);
private final int code;
ResourceTypeEnum(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}

@ -9,9 +9,11 @@ public class SysResource implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer pid;
private Integer type;
private String name;
private String url;
private String path;
private String component;
private String meta;
private boolean admin = false;
private Long totalRate;
private Long ipRate;
private boolean enable = true;
}

@ -0,0 +1,83 @@
package cn.toesbieya.jxc.common.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class R implements Serializable {
private static final long serialVersionUID = 1L;
//返回码,200表示成功,其他表示失败
private int status;
//返回的信息
private String msg;
//返回的数据
private Object data;
public R(int status) {
this.status = status;
}
public R(int status, String msg) {
this.status = status;
this.msg = msg;
}
public R(int status, Object data) {
this.status = status;
this.data = data;
}
public static R success() {
return new R(200);
}
public static R success(String msg) {
return new R(200, msg);
}
public static R success(Object data) {
return new R(200, data);
}
public static R success(String msg, Object data) {
return new R(200, msg, data);
}
public static R fail(String msg) {
return new R(500, msg);
}
public static R notfound() {
return new R(404, "请求地址不存在");
}
public static R requireLogin() {
return new R(401, "请登录后重试");
}
public static R noPermission() {
return new R(403, "没有权限进行该操作");
}
public static R overload() {
return new R(503, "当前请求的人数过多,请稍后重试");
}
public static R tooManyRequest() {
return new R(429, "操作过于频繁,请稍后重试");
}
public boolean isSuccess() {
return this.status == 200;
}
}

@ -1,83 +0,0 @@
package cn.toesbieya.jxc.common.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Result implements Serializable {
private static final long serialVersionUID = 1L;
//返回码,200表示成功,其他表示失败
private int status;
//返回的信息
private String msg;
//返回的数据
private Object data;
public Result(int status) {
this.status = status;
}
public Result(int status, String msg) {
this.status = status;
this.msg = msg;
}
public Result(int status, Object data) {
this.status = status;
this.data = data;
}
public static Result success() {
return new Result(200);
}
public static Result success(String msg) {
return new Result(200, msg);
}
public static Result success(Object data) {
return new Result(200, data);
}
public static Result success(String msg, Object data) {
return new Result(200, msg, data);
}
public static Result fail(String msg) {
return new Result(500, msg);
}
public static Result notfound() {
return new Result(404, "请求地址不存在");
}
public static Result requireLogin() {
return new Result(401, "请登录后重试");
}
public static Result noPermission() {
return new Result(403, "没有权限进行该操作");
}
public static Result overload() {
return new Result(503, "当前请求的人数过多,请稍后重试");
}
public static Result tooManyRequest() {
return new Result(429, "操作过于频繁,请稍后重试");
}
public boolean isSuccess() {
return this.status == 200;
}
}

@ -16,6 +16,10 @@
<groupId>cn.toesbieya</groupId>
<artifactId>common</artifactId>
</dependency>
<dependency>
<groupId>cn.toesbieya</groupId>
<artifactId>api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -25,14 +29,9 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<!--<dependency>

@ -1,17 +1,15 @@
package cn.toesbieya.jxc.gateway.config;
import cn.toesbieya.jxc.api.system.ResourceApi;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@ -19,79 +17,50 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
@Slf4j
public class ResourceConfig implements CommandLineRunner {
private final static ConcurrentHashMap<String, Integer> urlMap = new ConcurrentHashMap<>(256);
private final static ConcurrentHashMap<String, Integer> adminUrlMap = new ConcurrentHashMap<>(16);
private static JdbcTemplate jdbcTemplate;
private final static ConcurrentHashMap<String, SysResource> urlMap = new ConcurrentHashMap<>(256);
private final static ConcurrentHashMap<String, SysResource> adminUrlMap = new ConcurrentHashMap<>(16);
@Reference
private ResourceApi resourceApi;
public static boolean authority(UserVo user, String url) {
//超级管理员放行
if (user.isAdmin()) {
return true;
}
//普通用户访问admin权限的资源时拦截
if (adminUrlMap.containsKey(url)) {
return false;
boolean isAdmin = user.isAdmin();
SysResource r = adminUrlMap.get(url);
//访问admin权限的资源时,需要用户是admin并且该权限已启用
if (r != null) {
return r.isEnable() && isAdmin;
}
if (isAdmin) return true;
r = urlMap.get(url);
//权限表中无记录的资源放行
if (!urlMap.containsKey(url)) {
return true;
}
if (r == null) return true;
Set<Integer> ids = user.getResourceIds();
//未启用时拦截
if (!r.isEnable()) return false;
return ids != null && ids.contains(urlMap.get(url));
//根据用户权限判断
Set<Integer> ids = user.getResourceIds();
return ids != null && ids.contains(r.getId());
}
@Override
public void run(String... args) throws Exception {
init(false);
}
public static void init(boolean clear) {
public void run(String... args) {
Instant start = Instant.now();
if (clear) {
urlMap.clear();
adminUrlMap.clear();
}
String sql = "select id,pid,url,admin from sys_resource";
List<SysResource> resources = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SysResource.class));
completeNode(resources);
List<SysResource> resources = resourceApi.getEnableApi();
for (SysResource p : resources) {
String path = p.getPath();
if (p.isAdmin()) {
adminUrlMap.put(p.getUrl(), p.getId());
adminUrlMap.put(path, p);
}
else urlMap.put(p.getUrl(), p.getId());
else urlMap.put(path, p);
}
Instant end = Instant.now();
log.info("权限资源加载完成,耗时:{}毫秒", ChronoUnit.MILLIS.between(start, end));
}
@Autowired
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
ResourceConfig.jdbcTemplate = jdbcTemplate;
}
private static void completeNode(List<SysResource> list) {
HashMap<Integer, String> url = new HashMap<>(128);
for (SysResource resource : list) {
//pid为0时跳过
if (resource.getPid() == 0) {
url.put(resource.getId(), resource.getUrl());
continue;
}
//获取父节点进行拼接
String parentUrl = url.get(resource.getPid());
resource.setUrl(parentUrl + resource.getUrl());
url.put(resource.getId(), resource.getUrl());
}
}
}

@ -1,13 +1,13 @@
package cn.toesbieya.jxc.gateway.controller;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
public class FallbackController {
@RequestMapping("fallback")
@ResponseBody
public Result fallback() {
return Result.fail("服务异常");
public R fallback() {
return R.fail("服务异常");
}
}

@ -1,11 +1,11 @@
package cn.toesbieya.jxc.gateway.filter;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.gateway.config.GatewayConfig;
import cn.toesbieya.jxc.gateway.config.ResourceConfig;
import com.alibaba.fastjson.JSON;
import cn.toesbieya.jxc.common.constant.SessionConstant;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.util.SessionUtil;
import cn.toesbieya.jxc.common.util.Util;
import lombok.extern.slf4j.Slf4j;
@ -62,19 +62,19 @@ public class SecurityFilter {
//未登录
if (user == null) {
return responseJSON(response, Result.requireLogin());
return responseJSON(response, R.requireLogin());
}
//没有权限
if (!ResourceConfig.authority(user, requestUrl)) {
return responseJSON(response, Result.noPermission());
return responseJSON(response, R.noPermission());
}
return chain.filter(exchange);
});
}
private Mono<Void> responseJSON(ServerHttpResponse response, Result result) {
private Mono<Void> responseJSON(ServerHttpResponse response, R result) {
byte[] bytes = JSON.toJSONString(result).getBytes(StandardCharsets.UTF_8);
DataBuffer buffer = response.bufferFactory().wrap(bytes);

@ -36,7 +36,7 @@ public class SentinelFilter {
ServerResponse
.status(HttpStatus.OK)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(fromObject(Result.tooManyRequest()))
.body(fromObject(R.tooManyRequest()))
);
}

@ -7,9 +7,14 @@ spring:
config:
server-addr: 127.0.0.1:8848
shared-configs:
- data-id: jxc-common-database.yml
- data-id: jxc-common-redis.yml
file-extension: yml
discovery:
server-addr: 127.0.0.1:8848
server-addr: 127.0.0.1:8848
dubbo:
registry:
address: nacos://127.0.0.1:8848
cloud:
subscribed-services: jxc-web-system

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.file.controller;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.file.service.FileService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@ -20,14 +20,14 @@ public class FileController {
@GetMapping("delete")
@ResponseBody
public Result delete(@RequestParam String url) throws UnsupportedEncodingException {
public R delete(@RequestParam String url) throws UnsupportedEncodingException {
service.delete(URLDecoder.decode(url, "utf-8"));
return Result.success("删除成功");
return R.success("删除成功");
}
@GetMapping("getToken")
@ResponseBody
public Result getToken() {
return Result.success(null, service.getToken());
public R getToken() {
return R.success(null, service.getToken());
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.web.common.aspect;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.util.RedisUtil;
import cn.toesbieya.jxc.common.util.SpringUtil;
import cn.toesbieya.jxc.web.common.annoation.Lock;
@ -23,7 +23,7 @@ import java.util.ArrayList;
public class LockAspect {
private final ThreadLocal<ArrayList<RedisUtil.Locker>> lockHelperThreadLocal = new ThreadLocal<>();
@Pointcut("@annotation(cn.toesbieya.jxc.web.common.annoation.Lock)&&execution(cn.toesbieya.jxc.common.model.vo.Result cn.toesbieya.jxc..*.*(..))")
@Pointcut("@annotation(cn.toesbieya.jxc.web.common.annoation.Lock)&&execution(cn.toesbieya.jxc.common.model.vo.R cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
}
@ -52,7 +52,7 @@ public class LockAspect {
if (!lockHelper.lock()) {
locks.forEach(RedisUtil.Locker::close);
return Result.fail("操作失败,请刷新后重试");
return R.fail("操作失败,请刷新后重试");
}
locks.add(lockHelper);

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.web.common.aspect;
import cn.toesbieya.jxc.api.RecordApi;
import cn.toesbieya.jxc.common.exception.JsonResultException;
import cn.toesbieya.jxc.common.model.entity.RecUserAction;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.web.common.enumeration.UserActionEnum;
import cn.toesbieya.jxc.web.common.util.ThreadUtil;
@ -26,45 +26,45 @@ public class RestExceptionAspect {
//抛出异常时希望返回给前台
@ExceptionHandler(JsonResultException.class)
public Result handle(JsonResultException e) {
public R handle(JsonResultException e) {
recordUserAction(e);
return Result.fail(e.getMessage());
return R.fail(e.getMessage());
}
//请求方法有误
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public Result handle(HttpRequestMethodNotSupportedException e) {
return Result.fail("请求方法有误");
public R handle(HttpRequestMethodNotSupportedException e) {
return R.fail("请求方法有误");
}
//@RequestParam没有匹配到值
@ExceptionHandler(MissingServletRequestParameterException.class)
public Result handle(MissingServletRequestParameterException e) {
public R handle(MissingServletRequestParameterException e) {
log.error(e.getMessage());
return Result.fail("get参数有误");
return R.fail("get参数有误");
}
//@RequestBody没有匹配到值
@ExceptionHandler(HttpMessageNotReadableException.class)
public Result handle(HttpMessageNotReadableException e) {
public R handle(HttpMessageNotReadableException e) {
log.error(e.getMessage());
return Result.fail("post参数有误");
return R.fail("post参数有误");
}
//上传文件过大
@ExceptionHandler(MaxUploadSizeExceededException.class)
public Result handle(MaxUploadSizeExceededException e) {
public R handle(MaxUploadSizeExceededException e) {
log.error("上传的文件超出限定大小,{}", e.getMessage());
recordUserAction(e);
return Result.fail("上传的文件过大");
return R.fail("上传的文件过大");
}
//最终捕获
@ExceptionHandler(Exception.class)
public Result handle(Exception e) {
public R handle(Exception e) {
log.error(String.format("服务运行异常,访问路径:%s", WebUtil.getRequest().getServletPath()), e);
recordUserAction(e);
return Result.fail("服务运行异常");
return R.fail("服务运行异常");
}
private void recordUserAction(Exception e) {

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.web.common.aspect;
import cn.toesbieya.jxc.api.RecordApi;
import cn.toesbieya.jxc.common.model.entity.RecUserAction;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.util.SpringUtil;
import cn.toesbieya.jxc.web.common.annoation.UserAction;
import cn.toesbieya.jxc.web.common.enumeration.UserActionEnum;
@ -28,7 +28,7 @@ public class UserActionAspect {
@Reference
private RecordApi recordApi;
@Pointcut("@annotation(cn.toesbieya.jxc.web.common.annoation.UserAction)&&execution(cn.toesbieya.jxc.common.model.vo.Result cn.toesbieya.jxc..*.*(..))")
@Pointcut("@annotation(cn.toesbieya.jxc.web.common.annoation.UserAction)&&execution(cn.toesbieya.jxc.common.model.vo.R cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
}
@ -57,7 +57,7 @@ public class UserActionAspect {
}
}
Result result = (Result) pjp.proceed();
R result = (R) pjp.proceed();
if (result.isSuccess()) {
action.setType(UserActionEnum.SUCCESS.getCode());

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.web.common.util;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.Head;
@ -49,11 +49,11 @@ public class ExcelUtil {
int size = list.size();
if (size == 0) {
WebUtil.responseJson(response, Result.fail("当前没有能导出的数据"));
WebUtil.responseJson(response, R.fail("当前没有能导出的数据"));
return;
}
else if (size < 10000) {
WebUtil.responseJson(response, Result.success(list));
WebUtil.responseJson(response, R.success(list));
return;
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.web.common.util;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import com.alibaba.fastjson.JSON;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@ -11,7 +11,7 @@ import java.io.IOException;
import java.util.Objects;
public class WebUtil {
public static void responseJson(HttpServletResponse response, Result result) throws IOException {
public static void responseJson(HttpServletResponse response, R result) throws IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
response.getWriter().print(JSON.toJSONString(result));

@ -5,8 +5,8 @@ import cn.toesbieya.jxc.account.vo.LoginParam;
import cn.toesbieya.jxc.account.vo.PasswordUpdateParam;
import cn.toesbieya.jxc.account.vo.RegisterParam;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.web.common.util.IpUtil;
import cn.toesbieya.jxc.web.common.util.SessionUtil;
import org.springframework.util.StringUtils;
@ -25,58 +25,58 @@ public class AccountController {
private AccountService service;
@PostMapping("login")
public Result login(HttpServletRequest request, @Valid @RequestBody LoginParam param) {
public R login(HttpServletRequest request, @Valid @RequestBody LoginParam param) {
return service.login(param, IpUtil.getIp(request));
}
@GetMapping("logout")
public Result logout(HttpServletRequest request) {
public R logout(HttpServletRequest request) {
UserVo user = SessionUtil.get();
return service.logout(user, IpUtil.getIp(request));
}
@PostMapping("register")
public Result register(@Valid @RequestBody RegisterParam param) {
public R register(@Valid @RequestBody RegisterParam param) {
return service.register(param);
}
@PostMapping("updatePwd")
public Result updatePwd(@RequestBody PasswordUpdateParam param) {
public R updatePwd(@RequestBody PasswordUpdateParam param) {
SysUser user = SessionUtil.get();
param.setId(user.getId());
String errMsg = validateUpdatePwdParam(param);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.updatePwd(param);
}
@GetMapping("updateAvatar")
public Result updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(key)) return Result.fail("参数错误");
public R updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(key)) return R.fail("参数错误");
UserVo user = SessionUtil.get();
return service.updateAvatar(user, URLDecoder.decode(key, "utf-8"));
}
@GetMapping("validate")
public Result validate(@RequestParam String pwd) {
public R validate(@RequestParam String pwd) {
SysUser current = SessionUtil.get();
if (!pwd.equals(current.getPwd())) {
return Result.fail("校验失败");
return R.fail("校验失败");
}
return Result.success("校验通过");
return R.success("校验通过");
}
@GetMapping("checkName")
public Result checkName(@RequestParam(required = false) Integer id, @RequestParam String name) {
public R checkName(@RequestParam(required = false) Integer id, @RequestParam String name) {
if (StringUtils.isEmpty(name)) {
return Result.success();
return R.success();
}
return Result.success(service.checkName(name, id) ? "该用户名已存在" : null);
return R.success(service.checkName(name, id) ? "该用户名已存在" : null);
}
private String validateUpdatePwdParam(PasswordUpdateParam vo) {

@ -12,12 +12,13 @@ import cn.toesbieya.jxc.api.system.DepartmentApi;
import cn.toesbieya.jxc.api.system.ResourceApi;
import cn.toesbieya.jxc.api.system.RoleApi;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.enumeration.ResourceTypeEnum;
import cn.toesbieya.jxc.common.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.ResourceVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.SessionUtil;
import cn.toesbieya.jxc.web.common.annoation.TimeCost;
@ -48,7 +49,7 @@ public class AccountService {
public DepartmentApi departmentApi;
@TimeCost
public Result login(LoginParam param, String ip) {
public R login(LoginParam param, String ip) {
long now = System.currentTimeMillis();
SysUser user = userMapper.selectOne(
@ -58,14 +59,14 @@ public class AccountService {
);
if (user == null) {
return Result.fail("用户名或密码错误");
return R.fail("用户名或密码错误");
}
if (user.getStatus() == GeneralStatusEnum.DISABLED.getCode()) {
return Result.fail("该用户已被禁用,请联系管理员");
if (user.getStatus().equals(GeneralStatusEnum.DISABLED.getCode())) {
return R.fail("该用户已被禁用,请联系管理员");
}
Integer roleId = user.getRole();
if (!user.isAdmin() && roleId == null) {
return Result.fail("该用户尚未被分配角色,请联系管理员");
return R.fail("该用户尚未被分配角色,请联系管理员");
}
//设置token
@ -79,10 +80,11 @@ public class AccountService {
LoginSuccessInfo info = new LoginSuccessInfo(user);
info.setToken(token);
Map<String, Integer> userResourcesUrlMap = null;
Map<String, Integer> userResources = null;
Set<Integer> userResourcesIdSet = null;
if (roleId != null) {
//为非admin的用户设置权限
if (!user.isAdmin()) {
//获取用户的角色
SysRole role = roleApi.getRoleById(roleId);
@ -93,15 +95,18 @@ public class AccountService {
info.setRoleName(roleName);
//获取用户的权限列表
List<ResourceVo> resources = resourceApi.getResourceByRole(role);
userResourcesUrlMap = new HashMap<>(128);
userResourcesIdSet = new HashSet<>(128);
for (ResourceVo resource : resources) {
Integer resourceId = resource.getId();
userResourcesUrlMap.put(resource.getUrl(), resourceId);
userResourcesIdSet.add(resourceId);
List<SysResource> resources = resourceApi.getResourceByRole(role);
userResources = new HashMap<>(resources.size());
userResourcesIdSet = new HashSet<>(resources.size());
for (SysResource r : resources) {
if (r.isAdmin()) continue;
Integer resourceId = r.getId();
userResources.put(r.getPath(), r.getId());
if (r.getType().equals(ResourceTypeEnum.API.getCode())) {
userResourcesIdSet.add(resourceId);
}
}
}
}
@ -125,7 +130,7 @@ public class AccountService {
userVo.setResourceIds(userResourcesIdSet);
//返回给前端的用户权限表
info.setResources(userResourcesUrlMap);
info.setResources(userResources);
//用户信息插入redis
SessionUtil.save(userVo);
@ -142,10 +147,10 @@ public class AccountService {
.build()
);
return Result.success(info);
return R.success(info);
}
public Result logout(UserVo user, String ip) {
public R logout(UserVo user, String ip) {
if (user != null) {
recordApi.insertLoginHistory(
RecLoginHistory
@ -160,14 +165,14 @@ public class AccountService {
SessionUtil.remove(user.getToken());
}
return Result.success("登出成功");
return R.success("登出成功");
}
public Result register(RegisterParam param) {
public R register(RegisterParam param) {
String name = param.getUsername();
if (checkName(name, null)) {
return Result.fail("该用户名称已存在");
return R.fail("该用户名称已存在");
}
SysUser user = new SysUser();
@ -180,11 +185,11 @@ public class AccountService {
userMapper.insert(user);
return Result.success("注册成功");
return R.success("注册成功");
}
@UserAction("'修改密码'")
public Result updatePwd(PasswordUpdateParam param) {
public R updatePwd(PasswordUpdateParam param) {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
@ -192,11 +197,11 @@ public class AccountService {
.eq(SysUser::getId, param.getId())
.eq(SysUser::getPwd, param.getOldPwd())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请检查原密码是否正确");
}
@UserAction("'修改头像'")
public Result updateAvatar(UserVo user, String avatar) {
public R updateAvatar(UserVo user, String avatar) {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
@ -212,13 +217,13 @@ public class AccountService {
}
user.setAvatar(avatar);
SessionUtil.save(user);
return Result.success("上传头像成功");
return R.success("上传头像成功");
}
//否则删除此次上传至云的头像
fileApi.delete(avatar);
return Result.fail("上传头像失败");
return R.fail("上传头像失败");
}
//用户名重复时返回true

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.doc.controller;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.doc.model.vo.DocHistorySearch;
import cn.toesbieya.jxc.doc.service.DocHistoryService;
import org.springframework.web.bind.annotation.*;
@ -14,7 +14,7 @@ public class DocHistoryController {
private DocHistoryService service;
@PostMapping("search")
public Result search(@RequestBody DocHistorySearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody DocHistorySearch vo) {
return R.success(service.search(vo));
}
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.doc.controller;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate;
@ -26,21 +26,21 @@ public class PurchaseInboundController {
private PurchaseInboundService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
PurchaseInboundVo inbound = service.getById(id);
return inbound == null ? Result.fail("获取单据信息失败") : Result.success(inbound);
return inbound == null ? R.fail("获取单据信息失败") : R.success(inbound);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody PurchaseInboundSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody PurchaseInboundSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,9 +49,9 @@ public class PurchaseInboundController {
}
@PostMapping("add")
public Result add(@RequestBody PurchaseInboundVo vo) {
public R add(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -64,21 +64,21 @@ public class PurchaseInboundController {
}
@PostMapping("update")
public Result update(@RequestBody PurchaseInboundVo vo) {
public R update(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody PurchaseInboundVo vo) {
public R commit(@RequestBody PurchaseInboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) {
@ -91,24 +91,24 @@ public class PurchaseInboundController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return R.fail("参数错误");
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.doc.controller;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocFinishEnum;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
@ -27,25 +27,25 @@ public class PurchaseOrderController {
private PurchaseOrderService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
PurchaseOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
return Result.success(service.getSubById(id));
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody PurchaseOrderSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody PurchaseOrderSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -54,15 +54,15 @@ public class PurchaseOrderController {
}
@PostMapping("add")
public Result add(@RequestBody PurchaseOrderVo vo) {
public R add(@RequestBody PurchaseOrderVo vo) {
if (vo.getSid() == null
|| StringUtils.isEmpty(vo.getSname())
|| vo.getTotal() == null) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -76,21 +76,21 @@ public class PurchaseOrderController {
}
@PostMapping("update")
public Result update(@RequestBody PurchaseOrderVo vo) {
public R update(@RequestBody PurchaseOrderVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody PurchaseOrderVo vo) {
public R commit(@RequestBody PurchaseOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -105,23 +105,23 @@ public class PurchaseOrderController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.doc.controller;
import cn.toesbieya.jxc.common.model.entity.BizSellOrder;
import cn.toesbieya.jxc.common.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate;
@ -26,21 +26,21 @@ public class SellOrderController {
private SellOrderService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
SellOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody SellOrderSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody SellOrderSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,14 +49,14 @@ public class SellOrderController {
}
@PostMapping("add")
public Result add(@RequestBody SellOrderVo vo) {
public R add(@RequestBody SellOrderVo vo) {
if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -69,21 +69,21 @@ public class SellOrderController {
}
@PostMapping("update")
public Result update(@RequestBody SellOrderVo vo) {
public R update(@RequestBody SellOrderVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody SellOrderVo vo) {
public R commit(@RequestBody SellOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -99,23 +99,23 @@ public class SellOrderController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.doc.controller;
import cn.toesbieya.jxc.common.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.common.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate;
@ -26,21 +26,21 @@ public class SellOutboundController {
private SellOutboundService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
SellOutboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody SellOutboundSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody SellOutboundSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,9 +49,9 @@ public class SellOutboundController {
}
@PostMapping("add")
public Result add(@RequestBody SellOutboundVo vo) {
public R add(@RequestBody SellOutboundVo vo) {
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -64,21 +64,21 @@ public class SellOutboundController {
}
@PostMapping("update")
public Result update(@RequestBody SellOutboundVo vo) {
public R update(@RequestBody SellOutboundVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody SellOutboundVo vo) {
public R commit(@RequestBody SellOutboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) {
@ -92,26 +92,26 @@ public class SellOutboundController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.api.RecordApi;
import cn.toesbieya.jxc.api.StockApi;
import cn.toesbieya.jxc.common.exception.JsonResultException;
import cn.toesbieya.jxc.common.model.entity.*;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.doc.enumeration.DocFinishEnum;
@ -86,23 +86,23 @@ public class PurchaseInboundService {
@UserAction("'添加采购入库单'")
@Transactional(rollbackFor = Exception.class)
public Result add(PurchaseInboundVo doc) {
public R add(PurchaseInboundVo doc) {
return addMain(doc);
}
@UserAction("'修改采购入库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(PurchaseInboundVo doc) {
public R update(PurchaseInboundVo doc) {
return updateMain(doc);
}
@UserAction("'提交采购入库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseInboundVo doc) {
public R commit(PurchaseInboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -123,12 +123,12 @@ public class PurchaseInboundService {
@UserAction("'撤回采购入库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -144,13 +144,13 @@ public class PurchaseInboundService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过采购入库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
String pid = vo.getPid();
@ -159,7 +159,7 @@ public class PurchaseInboundService {
//检查采购订单状态、入库商品是否符合订单要求
List<BizPurchaseInboundSub> subList = getSubById(id);
String err = checkOrder(pid, subList);
if (err != null) return Result.fail("通过失败," + err);
if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update(
null,
@ -171,7 +171,7 @@ public class PurchaseInboundService {
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
//修改采购订单完成情况、子表的未入库数量
@ -239,18 +239,18 @@ public class PurchaseInboundService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回采购入库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -266,34 +266,34 @@ public class PurchaseInboundService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除采购入库单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recordApi.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(PurchaseInboundVo doc) {
private R addMain(PurchaseInboundVo doc) {
List<BizPurchaseInboundSub> subList = doc.getData();
String err = checkOrder(doc.getPid(), subList);
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
String id = DocUtil.getDocId("CGRK");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -313,15 +313,15 @@ public class PurchaseInboundService {
}
recordApi.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(PurchaseInboundVo doc) {
private R updateMain(PurchaseInboundVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = checkOrder(doc.getPid(), doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -348,7 +348,7 @@ public class PurchaseInboundService {
}
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -5,7 +5,7 @@ import cn.toesbieya.jxc.common.model.entity.BizDocHistory;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.common.model.entity.RecAttachment;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
@ -78,23 +78,23 @@ public class PurchaseOrderService {
@UserAction("'添加采购订单'")
@Transactional(rollbackFor = Exception.class)
public Result add(PurchaseOrderVo doc) {
public R add(PurchaseOrderVo doc) {
return addMain(doc);
}
@UserAction("'修改采购订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(PurchaseOrderVo doc) {
public R update(PurchaseOrderVo doc) {
return updateMain(doc);
}
@UserAction("'提交采购订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseOrderVo doc) {
public R commit(PurchaseOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -115,12 +115,12 @@ public class PurchaseOrderService {
@UserAction("'撤回采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -136,13 +136,13 @@ public class PurchaseOrderService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
long now = System.currentTimeMillis();
@ -157,7 +157,7 @@ public class PurchaseOrderService {
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
historyMapper.insert(
@ -173,18 +173,18 @@ public class PurchaseOrderService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -200,29 +200,29 @@ public class PurchaseOrderService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除采购订单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recordApi.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(PurchaseOrderVo doc) {
private R addMain(PurchaseOrderVo doc) {
String id = DocUtil.getDocId("CGDD");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -248,14 +248,14 @@ public class PurchaseOrderService {
}
recordApi.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(PurchaseOrderVo doc) {
private R updateMain(PurchaseOrderVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -286,7 +286,7 @@ public class PurchaseOrderService {
}
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.doc.service;
import cn.toesbieya.jxc.api.RecordApi;
import cn.toesbieya.jxc.api.StockApi;
import cn.toesbieya.jxc.common.model.entity.*;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.StockSearch;
import cn.toesbieya.jxc.common.model.vo.StockSearchResult;
import cn.toesbieya.jxc.common.model.vo.UserVo;
@ -81,23 +81,23 @@ public class SellOrderService {
@UserAction("'添加销售订单'")
@Transactional(rollbackFor = Exception.class)
public Result add(SellOrderVo doc) {
public R add(SellOrderVo doc) {
return addMain(doc);
}
@UserAction("'修改销售订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(SellOrderVo doc) {
public R update(SellOrderVo doc) {
return updateMain(doc);
}
@UserAction("'提交销售订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(SellOrderVo doc) {
public R commit(SellOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -118,12 +118,12 @@ public class SellOrderService {
@UserAction("'撤回销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -139,13 +139,13 @@ public class SellOrderService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
long now = System.currentTimeMillis();
@ -160,7 +160,7 @@ public class SellOrderService {
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
historyMapper.insert(
@ -176,18 +176,18 @@ public class SellOrderService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -203,32 +203,32 @@ public class SellOrderService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除销售订单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recordApi.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(SellOrderVo doc) {
private R addMain(SellOrderVo doc) {
String err = checkStock(doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
String id = DocUtil.getDocId("XSDD");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -253,15 +253,15 @@ public class SellOrderService {
}
recordApi.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(SellOrderVo doc) {
private R updateMain(SellOrderVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = checkStock(doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -292,7 +292,7 @@ public class SellOrderService {
}
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.api.RecordApi;
import cn.toesbieya.jxc.api.StockApi;
import cn.toesbieya.jxc.common.exception.JsonResultException;
import cn.toesbieya.jxc.common.model.entity.*;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.StockOutboundVo;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.Util;
@ -89,23 +89,23 @@ public class SellOutboundService {
@UserAction("'添加销售出库单'")
@Transactional(rollbackFor = Exception.class)
public Result add(SellOutboundVo doc) {
public R add(SellOutboundVo doc) {
return addMain(doc);
}
@UserAction("'修改销售出库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(SellOutboundVo doc) {
public R update(SellOutboundVo doc) {
return updateMain(doc);
}
@UserAction("'提交销售出库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(SellOutboundVo doc) {
public R commit(SellOutboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -126,12 +126,12 @@ public class SellOutboundService {
@UserAction("'撤回销售出库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -147,13 +147,13 @@ public class SellOutboundService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过销售出库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
String pid = vo.getPid();
@ -161,7 +161,7 @@ public class SellOutboundService {
List<BizSellOutboundSub> subList = getSubById(vo.getId());
String err = check(vo.getPid(), subList);
if (err != null) return Result.fail("通过失败," + err);
if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update(
null,
@ -173,7 +173,7 @@ public class SellOutboundService {
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
//按分类分组统计出库数量
@ -244,18 +244,18 @@ public class SellOutboundService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回销售出库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -271,33 +271,33 @@ public class SellOutboundService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除销售出库单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recordApi.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(SellOutboundVo doc) {
private R addMain(SellOutboundVo doc) {
List<BizSellOutboundSub> subList = doc.getData();
String err = check(doc.getPid(), subList);
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
String id = DocUtil.getDocId("XSCK");
if (StringUtils.isEmpty(id)) return Result.fail("获取单号失败");
if (StringUtils.isEmpty(id)) return R.fail("获取单号失败");
doc.setId(id);
@ -316,15 +316,15 @@ public class SellOutboundService {
}
recordApi.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(SellOutboundVo doc) {
private R updateMain(SellOutboundVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = check(doc.getPid(), doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -351,7 +351,7 @@ public class SellOutboundService {
}
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.message.controller;
import cn.toesbieya.jxc.common.model.entity.Msg;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.message.constant.MsgConstant;
import cn.toesbieya.jxc.message.model.vo.MsgSearch;
@ -20,14 +20,14 @@ public class ManageController {
private ManageService service;
@RequestMapping("search")
public Result search(@RequestBody MsgSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody MsgSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody Msg msg) {
public R add(@RequestBody Msg msg) {
String errMsg = validateAdd(msg);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
msg.setId(null);
SysUser user = SessionUtil.get();
@ -37,23 +37,23 @@ public class ManageController {
}
@PostMapping("update")
public Result update(@RequestBody Msg msg) {
public R update(@RequestBody Msg msg) {
String errMsg = validateAdd(msg);
if (errMsg == null) errMsg = validateUpdate(msg);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(msg);
}
@PostMapping("publish")
public Result publish(@RequestBody Msg msg) {
public R publish(@RequestBody Msg msg) {
boolean isFirstCreate = msg.getId() == null;
String errMsg = validateAdd(msg);
if (errMsg == null && !isFirstCreate) {
errMsg = validateUpdate(msg);
}
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
SysUser user = SessionUtil.get();
if (isFirstCreate) setAddInfo(user, msg);
@ -67,8 +67,8 @@ public class ManageController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return Result.fail("参数错误");
public R withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return R.fail("参数错误");
UserVo user = SessionUtil.get();
@ -80,7 +80,7 @@ public class ManageController {
}
@GetMapping("del")
public Result del(@RequestParam Integer id, @RequestParam String title) {
public R del(@RequestParam Integer id, @RequestParam String title) {
return service.del(id, title);
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.message.controller;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.message.model.vo.MsgPersonalSearch;
import cn.toesbieya.jxc.message.service.UserService;
import cn.toesbieya.jxc.web.common.util.SessionUtil;
@ -16,20 +16,20 @@ public class UserController {
private UserService service;
@PostMapping("search")
public Result search(@RequestBody MsgPersonalSearch vo) {
public R search(@RequestBody MsgPersonalSearch vo) {
SysUser user = SessionUtil.get();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
return Result.success(service.search(vo));
return R.success(service.search(vo));
}
@GetMapping("read")
public Result read(@RequestParam Integer id) {
public R read(@RequestParam Integer id) {
return service.read(SessionUtil.get(), id);
}
@GetMapping("readAll")
public Result readAll() {
public R readAll() {
return service.readAll(SessionUtil.get());
}
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.message.service;
import cn.toesbieya.jxc.common.constant.SocketConstant;
import cn.toesbieya.jxc.common.model.entity.Msg;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.SocketEventVo;
import cn.toesbieya.jxc.common.util.WebSocketUtil;
import cn.toesbieya.jxc.message.constant.MsgConstant;
@ -43,13 +43,13 @@ public class ManageService {
}
@UserAction("'添加消息:'+#msg.title")
public Result add(Msg msg) {
public R add(Msg msg) {
mapper.insert(msg);
return Result.success("添加成功", msg);
return R.success("添加成功", msg);
}
@UserAction("'修改消息:'+#msg.title")
public Result update(Msg msg) {
public R update(Msg msg) {
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
@ -67,13 +67,13 @@ public class ManageService {
.set(Msg::getRecipient, msg.getRecipient())
.eq(Msg::getId, msg.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
}
@UserAction("'发布消息:'+#msg.title")
public Result publish(Msg msg) {
public R publish(Msg msg) {
boolean isFirstCreate = msg.getId() == null;
Result result = isFirstCreate ? add(msg) : update(msg);
R result = isFirstCreate ? add(msg) : update(msg);
if (result.isSuccess()) {
result.setMsg("提交成功");
@ -107,7 +107,7 @@ public class ManageService {
}
@UserAction("'撤回消息:'+#msg.title")
public Result withdraw(Msg msg) {
public R withdraw(Msg msg) {
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
@ -118,12 +118,12 @@ public class ManageService {
.eq(Msg::getId, msg.getId())
.eq(Msg::getStatus, MsgConstant.STATUS_PUBLISHED)
);
return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试");
return rows > 0 ? R.success("撤回成功", msg) : R.fail("撤回失败,请刷新重试");
}
@UserAction("'删除消息:'+#title")
public Result del(int id, String title) {
public R del(int id, String title) {
int rows = mapper.deleteById(id);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.message.service;
import cn.toesbieya.jxc.common.model.entity.Msg;
import cn.toesbieya.jxc.common.model.entity.MsgState;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.message.mapper.MsgMapper;
import cn.toesbieya.jxc.message.mapper.MsgStateMapper;
import cn.toesbieya.jxc.message.model.vo.MsgPersonalSearch;
@ -29,7 +29,7 @@ public class UserService {
return new PageResult<>(list);
}
public Result read(SysUser user, int id) {
public R read(SysUser user, int id) {
//如果该消息已读,直接返回
if (!msgStateMapper
.selectCount(
@ -38,7 +38,7 @@ public class UserService {
.eq(MsgState::getMid, user.getId())
)
.equals(0)) {
return Result.success();
return R.success();
}
MsgState state = new MsgState();
@ -46,11 +46,11 @@ public class UserService {
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
return Result.success(msgStateMapper.insert(state));
return R.success(msgStateMapper.insert(state));
}
@UserAction("'清空所有未读消息'")
public Result readAll(SysUser user) {
public R readAll(SysUser user) {
MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
@ -66,6 +66,6 @@ public class UserService {
msgStateMapper.insert(state);
}
return Result.success();
return R.success();
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.record.controller;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.record.model.vo.LoginHistorySearch;
import cn.toesbieya.jxc.record.model.vo.UserActionSearch;
import cn.toesbieya.jxc.record.service.RecordService;
@ -18,12 +18,12 @@ public class RecordController {
private RecordService service;
@PostMapping("searchLoginHistory")
public Result searchLoginHistory(@RequestBody LoginHistorySearch vo) {
return Result.success(service.searchLoginHistory(vo));
public R searchLoginHistory(@RequestBody LoginHistorySearch vo) {
return R.success(service.searchLoginHistory(vo));
}
@PostMapping("searchUserAction")
public Result searchUserAction(@RequestBody UserActionSearch vo) {
return Result.success(service.searchUserAction(vo));
public R searchUserAction(@RequestBody UserActionSearch vo) {
return R.success(service.searchUserAction(vo));
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.statistic.controller;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.statistic.service.StatisticService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -15,22 +15,22 @@ public class StatisticController {
private StatisticService service;
@GetMapping("getFourBlock")
public Result getFourBlock() {
return Result.success(service.getFourBlock());
public R getFourBlock() {
return R.success(service.getFourBlock());
}
@GetMapping("getDailyProfitStat")
public Result getDailyProfitStat() {
return Result.success(service.getDailyProfitStat());
public R getDailyProfitStat() {
return R.success(service.getDailyProfitStat());
}
@GetMapping("getDailyFinishOrder")
public Result getDailyFinishOrder() {
return Result.success(service.getDailyFinishOrder());
public R getDailyFinishOrder() {
return R.success(service.getDailyFinishOrder());
}
@GetMapping("getTotalProfitGoods")
public Result getTotalProfitGoods() {
return Result.success(service.getTotalProfitGoods());
public R getTotalProfitGoods() {
return R.success(service.getTotalProfitGoods());
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.stock.controller;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.stock.service.StockService;
import cn.toesbieya.jxc.common.model.vo.StockSearch;
import org.springframework.util.StringUtils;
@ -16,20 +16,20 @@ public class StockController {
private StockService service;
@PostMapping("search")
public Result search(@RequestBody StockSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody StockSearch vo) {
return R.success(service.search(vo));
}
@GetMapping("getDetail")
public Result getDetail(@RequestParam String cids) {
if (StringUtils.isEmpty(cids)) return Result.fail("参数错误");
return Result.success(service.getDetail(cids));
public R getDetail(@RequestParam String cids) {
if (StringUtils.isEmpty(cids)) return R.fail("参数错误");
return R.success(service.getDetail(cids));
}
@GetMapping("getDetailById")
public Result getDetailById(@RequestParam String ids) {
if (StringUtils.isEmpty(ids)) return Result.fail("参数错误");
return Result.success(service.getDetailById(ids));
public R getDetailById(@RequestParam String ids) {
if (StringUtils.isEmpty(ids)) return R.fail("参数错误");
return R.success(service.getDetailById(ids));
}
@PostMapping("export")

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysCategory;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.model.vo.CategorySearch;
import cn.toesbieya.jxc.system.service.CategoryService;
import org.springframework.util.StringUtils;
@ -16,19 +16,19 @@ public class CategoryController {
private CategoryService service;
@GetMapping("getAll")
public Result getAll() {
return Result.success(service.getAll());
public R getAll() {
return R.success(service.getAll());
}
@PostMapping("search")
public Result search(@RequestBody CategorySearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody CategorySearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysCategory category) {
public R add(@RequestBody SysCategory category) {
String errMsg = validateCategoryCreateParam(category);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
category.setId(null);
category.setCtime(System.currentTimeMillis());
@ -37,17 +37,17 @@ public class CategoryController {
}
@PostMapping("update")
public Result update(@RequestBody SysCategory category) {
public R update(@RequestBody SysCategory category) {
String errMsg = validateCategoryUpdateParam(category);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(category);
}
@PostMapping("del")
public Result del(@RequestBody SysCategory category) {
public R del(@RequestBody SysCategory category) {
if (category.getId() == null) {
return Result.fail("删除失败,参数错误");
return R.fail("删除失败,参数错误");
}
return service.del(category);
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysCustomer;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.service.CustomerService;
import cn.toesbieya.jxc.system.model.vo.CustomerSearch;
import org.springframework.util.StringUtils;
@ -16,19 +16,19 @@ public class CustomerController {
private CustomerService service;
@GetMapping("getLimitRegion")
public Result getLimitRegion() {
return Result.success(service.getLimitRegion());
public R getLimitRegion() {
return R.success(service.getLimitRegion());
}
@PostMapping("search")
public Result search(@RequestBody CustomerSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody CustomerSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysCustomer customer) {
public R add(@RequestBody SysCustomer customer) {
String errMsg = validateCreateParam(customer);
if (errMsg != null) return Result.fail("创建失败," + errMsg);
if (errMsg != null) return R.fail("创建失败," + errMsg);
customer.setId(null);
customer.setCtime(System.currentTimeMillis());
@ -36,16 +36,16 @@ public class CustomerController {
}
@PostMapping("update")
public Result update(@RequestBody SysCustomer customer) {
public R update(@RequestBody SysCustomer customer) {
String errMsg = validateUpdateParam(customer);
if (errMsg != null) return Result.fail("修改失败," + errMsg);
if (errMsg != null) return R.fail("修改失败," + errMsg);
return service.update(customer);
}
@PostMapping("del")
public Result del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return Result.fail("删除失败,参数错误");
public R del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return R.fail("删除失败,参数错误");
return service.del(customer);
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.SysDepartment;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.service.DepartmentService;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -19,7 +19,7 @@ public class DepartmentController {
private DepartmentService service;
@GetMapping("get")
public Result get(boolean all) {
public R get(boolean all) {
List<DepartmentVo> list = service.getAll();
if (!all) {
list = list
@ -27,15 +27,15 @@ public class DepartmentController {
.filter(i -> i.getStatus().equals(GeneralStatusEnum.ENABLED.getCode()))
.collect(Collectors.toList());
}
return Result.success(list);
return R.success(list);
}
@PostMapping("add")
public Result add(@RequestBody SysDepartment department) {
public R add(@RequestBody SysDepartment department) {
if (null == department.getPid()
|| StringUtils.isEmpty(department.getName())
|| null == department.getStatus()) {
return Result.fail("添加失败,参数错误");
return R.fail("添加失败,参数错误");
}
department.setId(null);
@ -44,21 +44,21 @@ public class DepartmentController {
}
@PostMapping("update")
public Result update(@RequestBody SysDepartment department) {
public R update(@RequestBody SysDepartment department) {
if (null == department.getId()
|| null == department.getPid()
|| StringUtils.isEmpty(department.getName())
|| null == department.getStatus()) {
return Result.fail("修改失败,参数错误");
return R.fail("修改失败,参数错误");
}
return service.update(department);
}
@PostMapping("del")
public Result del(@RequestBody SysDepartment department) {
public R del(@RequestBody SysDepartment department) {
if (null == department.getId() || StringUtils.isEmpty(department.getName())) {
return Result.fail("删除失败,参数错误");
return R.fail("删除失败,参数错误");
}
return service.del(department);

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.service.ResourceService;
import org.springframework.web.bind.annotation.*;
@ -14,17 +14,22 @@ public class ResourceController {
private ResourceService service;
@GetMapping("getAll")
public Result getAll() {
return Result.success(service.getAll());
public R getAll() {
return R.success(service.getAll());
}
@PostMapping("add")
public R add(@RequestBody SysResource entity) {
return service.add(entity);
}
@PostMapping("update")
public Result update(@RequestBody SysResource resource) {
if (resource.getId() == null
|| resource.getTotalRate() == null
|| resource.getIpRate() == null) {
return Result.fail("参数错误");
}
return service.update(resource);
public R update(@RequestBody SysResource entity) {
return service.update(entity);
}
@GetMapping("del")
public R del(@RequestParam int id) {
return service.del(id);
}
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.model.vo.RoleSearch;
import cn.toesbieya.jxc.system.service.RoleService;
import cn.toesbieya.jxc.web.common.util.SessionUtil;
@ -18,20 +18,20 @@ public class RoleController {
private RoleService service;
@GetMapping("get")
public Result get() {
return Result.success(service.get());
public R get() {
return R.success(service.get());
}
@PostMapping("search")
public Result search(@RequestBody RoleSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody RoleSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysRole role) {
public R add(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName())
|| role.getStatus() == null) {
return Result.fail("添加失败,参数错误");
return R.fail("添加失败,参数错误");
}
SysUser user = SessionUtil.get();
@ -45,20 +45,20 @@ public class RoleController {
}
@PostMapping("update")
public Result update(@RequestBody SysRole role) {
public R update(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName())
|| role.getId() == null
|| role.getStatus() == null) {
return Result.fail("修改失败,参数错误");
return R.fail("修改失败,参数错误");
}
return service.update(role);
}
@PostMapping("del")
public Result del(@RequestBody SysRole role) {
public R del(@RequestBody SysRole role) {
if (role.getId() == null) {
return Result.fail("删除失败,参数错误");
return R.fail("删除失败,参数错误");
}
return service.del(role);

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysSupplier;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.model.vo.SupplierSearch;
import cn.toesbieya.jxc.system.service.SupplierService;
import org.springframework.util.StringUtils;
@ -16,19 +16,19 @@ public class SupplierController {
private SupplierService service;
@GetMapping("getLimitRegion")
public Result getLimitRegion() {
return Result.success(service.getLimitRegion());
public R getLimitRegion() {
return R.success(service.getLimitRegion());
}
@PostMapping("search")
public Result search(@RequestBody SupplierSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody SupplierSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysSupplier supplier) {
public R add(@RequestBody SysSupplier supplier) {
String errMsg = validateCreateParam(supplier);
if (errMsg != null) return Result.fail("创建失败," + errMsg);
if (errMsg != null) return R.fail("创建失败," + errMsg);
supplier.setId(null);
supplier.setCtime(System.currentTimeMillis());
@ -36,14 +36,14 @@ public class SupplierController {
}
@PostMapping("update")
public Result update(@RequestBody SysSupplier supplier) {
public R update(@RequestBody SysSupplier supplier) {
String errMsg = validateUpdateParam(supplier);
return errMsg == null ? service.update(supplier) : Result.fail("修改失败," + errMsg);
return errMsg == null ? service.update(supplier) : R.fail("修改失败," + errMsg);
}
@PostMapping("del")
public Result del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return Result.fail("删除失败,参数错误");
public R del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return R.fail("删除失败,参数错误");
return service.del(supplier);
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.RecUserAction;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.model.vo.UserSearch;
import cn.toesbieya.jxc.system.service.UserService;
import cn.toesbieya.jxc.web.common.util.ThreadUtil;
@ -23,40 +23,40 @@ public class UserController {
private UserService service;
@PostMapping("search")
public Result search(@RequestBody UserSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody UserSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysUser user) {
public R add(@RequestBody SysUser user) {
String errMsg = validateUserCreateParam(user);
if (errMsg != null) {
return Result.fail(errMsg);
return R.fail(errMsg);
}
return service.add(user);
}
@PostMapping("update")
public Result update(@RequestBody SysUser user) {
public R update(@RequestBody SysUser user) {
String errMsg = validateUserUpdateParam(user);
if (errMsg != null) {
return Result.fail(errMsg);
return R.fail(errMsg);
}
return service.update(user);
}
@PostMapping("del")
public Result del(@RequestBody SysUser user) {
public R del(@RequestBody SysUser user) {
if (user.getId() == null) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
return service.del(user);
}
@PostMapping("kick")
public Result kick(@RequestBody List<SysUser> users) {
public R kick(@RequestBody List<SysUser> users) {
if (users == null || users.isEmpty()) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
RecUserAction action = ThreadUtil.getAction();
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
@ -66,9 +66,9 @@ public class UserController {
}
@PostMapping("resetPwd")
public Result resetPwd(@RequestBody SysUser user) {
public R resetPwd(@RequestBody SysUser user) {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
return service.resetPwd(user);
}

@ -2,6 +2,10 @@ package cn.toesbieya.jxc.system.mapper;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysResourceMapper extends BaseMapper<SysResource> {
List<SysResource> selectChildren(@Param("ids") String ids);
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.common.model.entity.SysCategory;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.system.model.vo.CategorySearch;
import cn.toesbieya.jxc.web.common.annoation.Lock;
@ -50,19 +50,19 @@ public class CategoryService {
@UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid")
public Result add(SysCategory category) {
public R add(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("添加失败," + err);
if (err != null) return R.fail("添加失败," + err);
int rows = mapper.insert(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id")
public Result update(SysCategory category) {
public R update(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("修改失败," + err);
if (err != null) return R.fail("修改失败," + err);
int rows = mapper.update(
null,
@ -72,21 +72,21 @@ public class CategoryService {
.set(SysCategory::getType, category.getType())
.eq(SysCategory::getId, category.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新后重试");
}
@UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id")
public Result del(SysCategory category) {
public R del(SysCategory category) {
Integer cid = category.getId();
if (hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点");
return R.fail("请先删除该分类下的子节点");
}
if (mapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除");
return R.fail("该分类已在业务中使用,不可删除");
}
int rows = mapper.deleteById(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
}
private String check(SysCategory category) {

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.common.model.entity.SysCustomer;
import cn.toesbieya.jxc.common.model.entity.SysRegion;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.system.mapper.SysCustomerMapper;
import cn.toesbieya.jxc.system.mapper.SysRegionMapper;
@ -86,21 +86,21 @@ public class CustomerService {
}
@UserAction("'添加客户:'+ #customer.name")
public Result add(SysCustomer customer) {
public R add(SysCustomer customer) {
if (isNameExist(customer.getName(), null)) {
return Result.fail("添加失败,客户【" + customer.getName() + "】已存在");
return R.fail("添加失败,客户【" + customer.getName() + "】已存在");
}
int rows = customerMapper.insert(customer);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改客户:'+ #customer.name")
public Result update(SysCustomer customer) {
public R update(SysCustomer customer) {
Integer id = customer.getId();
String name = customer.getName();
if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,客户【%s】已存在", name));
return R.fail(String.format("修改失败,客户【%s】已存在", name));
}
int rows = customerMapper.update(
@ -115,17 +115,17 @@ public class CustomerService {
.set(SysCustomer::getRemark, customer.getRemark())
.eq(SysCustomer::getId, id)
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
}
@UserAction("删除客户:'+ #customer.name")
public Result del(SysCustomer customer) {
public R del(SysCustomer customer) {
int rows = customerMapper.delete(
Wrappers.lambdaQuery(SysCustomer.class)
.eq(SysCustomer::getId, customer.getId())
.eq(SysCustomer::getStatus, 0)
);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
private boolean isNameExist(String name, Integer id) {

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.common.model.entity.SysDepartment;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.system.mapper.SysDepartmentMapper;
import cn.toesbieya.jxc.web.common.annoation.UserAction;
@ -87,27 +87,27 @@ public class DepartmentService implements DepartmentApi {
}
@UserAction("'添加部门:'+#department.name")
public Result add(SysDepartment department) {
public R add(SysDepartment department) {
if (isNameExist(null, department.getPid(), department.getName())) {
return Result.fail("添加失败,存在名称相同的同级部门");
return R.fail("添加失败,存在名称相同的同级部门");
}
int rows = departmentMapper.insert(department);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改部门:'+#department.name")
public Result update(SysDepartment department) {
public R update(SysDepartment department) {
if (isNameExist(department.getId(), department.getPid(), department.getName())) {
return Result.fail("修改失败,存在名称相同的同级部门");
return R.fail("修改失败,存在名称相同的同级部门");
}
departmentMapper.updateById(department);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("'删除部门:'+#department.name")
public Result del(SysDepartment department) {
public R del(SysDepartment department) {
int rows = departmentMapper.deleteById(department.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
//判断同级节点中是否有相同的部门名称

@ -1,20 +1,20 @@
package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.api.system.ResourceApi;
import cn.toesbieya.jxc.common.enumeration.ResourceTypeEnum;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.vo.ResourceVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.mapper.SysResourceMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Service
@org.apache.dubbo.config.annotation.Service
@ -22,12 +22,17 @@ public class ResourceService implements ResourceApi {
@Resource
private SysResourceMapper mapper;
public List<ResourceVo> getAll() {
return completeNode(mapper.selectList(null));
public List<SysResource> getAll() {
return mapper.selectList(null);
}
@Override
public List<ResourceVo> getResourceByRole(SysRole role) {
public List<SysResource> getEnableApi() {
return getEnableResourceTree(null, i -> i.getType().equals(ResourceTypeEnum.API.getCode()));
}
@Override
public List<SysResource> getResourceByRole(SysRole role) {
if (role == null) {
return Collections.emptyList();
}
@ -38,59 +43,124 @@ public class ResourceService implements ResourceApi {
return Collections.emptyList();
}
List<SysResource> list = mapper.selectList(
Wrappers.lambdaQuery(SysResource.class)
.inSql(SysResource::getId, ids)
);
return completeNode(list);
return getEnableResourceTree(ids, i -> !i.getType().equals(ResourceTypeEnum.FOLDER.getCode()));
}
public Result update(SysResource resource) {
int rows = mapper.updateById(resource);
return Result.success("修改成功");
public R add(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("添加失败," + error);
}
entity.setId(null);
transform(entity);
mapper.insert(entity);
return R.success("添加成功");
}
private List<ResourceVo> completeNode(List<SysResource> list) {
List<ResourceVo> result = new ArrayList<>(list.size());
HashMap<Integer, String> urlMap = new HashMap<>(128);
HashMap<Integer, String> nameMap = new HashMap<>(128);
public R update(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("修改失败," + error);
}
for (SysResource resource : list) {
ResourceVo vo = new ResourceVo(resource);
transform(entity);
Integer id = resource.getId();
String url = resource.getUrl();
String name = resource.getName();
mapper.updateById(entity);
//跳过顶级节点
if (resource.getPid() == 0) {
vo.setFullname(name);
return R.success("修改成功");
}
urlMap.put(id, url);
nameMap.put(id, name);
}
else {
Integer pid = resource.getPid();
public R del(int id) {
Integer childrenNum = mapper.selectCount(
Wrappers.lambdaQuery(SysResource.class)
.eq(SysResource::getPid, id)
);
if (childrenNum != null && childrenNum > 0) {
return R.fail("删除失败,该节点下已有其他子节点存在");
}
int row = mapper.deleteById(id);
return row > 0 ? R.success("删除成功") : R.fail("删除失败");
}
//获取父节点进行拼接
String parentUrl = urlMap.get(pid);
String parentName = nameMap.get(pid);
/**
* 获取路径经过叠加且以启用的resource列表
* @param ids resource的id集合逗号隔开传入null则返回全部
* @param predicate 额外的过滤条件传入null则不进行额外判断
*/
private List<SysResource> getEnableResourceTree(String ids, Predicate<SysResource> predicate) {
return mapper
.selectChildren(ids)
.stream()
.filter(r -> {
if (!r.isEnable() || predicate != null && !predicate.test(r)) {
return false;
}
String path = r.getPath();
int index = path.indexOf("//");
if (index != -1 && !path.startsWith("http")) {
//去掉'//'前拼接的父节点的path
r.setPath(path.substring(index + 1));
}
return true;
})
.collect(Collectors.toList());
}
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName);
//判断节点是否合法,不合法则返回错误信息
private String check(SysResource entity) {
Integer pid = entity.getPid();
Integer type = entity.getType();
String fullname = parentName + " - " + name;
boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
vo.setUrl(parentUrl + url);
vo.setFullname(fullname);
//根节点不能为数据接口
if (pid.equals(0)) {
return isApi ? "数据接口不能作为根节点" : null;
}
urlMap.put(id, url);
nameMap.put(id, fullname);
//校验父节点
SysResource parent = mapper.selectById(pid);
if (parent == null) {
return "父节点不存在,请刷新后重试";
}
Integer parentType = parent.getType();
//1.待添加的节点为数据接口且父节点必须为叶子菜单
if (isApi) {
if (!parentType.equals(ResourceTypeEnum.LEAF.getCode())) {
return "数据接口只能以页面菜单为父节点";
}
result.add(vo);
}
//2.非数据接口的节点,其父节点必须为聚合菜单
else if (!parentType.equals(ResourceTypeEnum.FOLDER.getCode())) {
return "菜单只能以聚合菜单为父节点";
}
return null;
}
return result;
//数据转换
private void transform(SysResource entity) {
Integer pid = entity.getPid();
Integer type = entity.getType();
boolean isFolder = type.equals(ResourceTypeEnum.FOLDER.getCode());
//能自定义component的只有叶子菜单
if (!type.equals(ResourceTypeEnum.LEAF.getCode())) {
//根节点的聚合菜单的组件只能为'Layout'
boolean isRootFolder = isFolder && pid.equals(0);
entity.setComponent(isRootFolder ? "Layout" : null);
}
//聚合菜单不能设置name
if (isFolder) {
entity.setName(null);
}
//数据接口不能设置meta
if (type.equals(ResourceTypeEnum.API.getCode())) {
entity.setMeta(null);
}
}
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.api.system.RoleApi;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.system.mapper.SysRoleMapper;
import cn.toesbieya.jxc.system.model.vo.RoleSearch;
import cn.toesbieya.jxc.web.common.annoation.UserAction;
@ -60,22 +60,22 @@ public class RoleService implements RoleApi {
}
@UserAction("'添加角色:'+#role.name")
public Result add(SysRole role) {
public R add(SysRole role) {
if (isNameExist(role.getName(), null)) {
return Result.fail("添加失败,角色名称重复");
return R.fail("添加失败,角色名称重复");
}
int rows = mapper.insert(role);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改角色:'+#role.name")
public Result update(SysRole role) {
public R update(SysRole role) {
Integer id = role.getId();
String name = role.getName();
if (isNameExist(name, id)) {
return Result.fail("修改失败,角色名称重复");
return R.fail("修改失败,角色名称重复");
}
mapper.update(
@ -88,17 +88,17 @@ public class RoleService implements RoleApi {
.set(SysRole::getResourceId, role.getResourceId())
.eq(SysRole::getId, id)
);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("'删除角色:'+#role.name")
public Result del(SysRole role) {
public R del(SysRole role) {
int rows = mapper.delete(
Wrappers.lambdaQuery(SysRole.class)
.eq(SysRole::getId, role.getId())
.eq(SysRole::getStatus, 0)
);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
private boolean isNameExist(String name, Integer id) {

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.SysRegion;
import cn.toesbieya.jxc.common.model.entity.SysSupplier;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.system.mapper.SysRegionMapper;
import cn.toesbieya.jxc.system.mapper.SysSupplierMapper;
@ -86,21 +86,21 @@ public class SupplierService {
}
@UserAction("'添加供应商:'+ #supplier.name")
public Result add(SysSupplier supplier) {
public R add(SysSupplier supplier) {
if (isNameExist(supplier.getName(), null)) {
return Result.fail(String.format("添加失败,供应商【%s】已存在", supplier.getName()));
return R.fail(String.format("添加失败,供应商【%s】已存在", supplier.getName()));
}
int rows = supplierMapper.insert(supplier);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改供应商:'+ #supplier.name")
public Result update(SysSupplier supplier) {
public R update(SysSupplier supplier) {
Integer id = supplier.getId();
String name = supplier.getName();
if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,供应商【%s】已存在", name));
return R.fail(String.format("修改失败,供应商【%s】已存在", name));
}
supplierMapper.update(
@ -115,17 +115,17 @@ public class SupplierService {
.set(SysSupplier::getRemark, supplier.getRemark())
.eq(SysSupplier::getId, id)
);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("删除供应商:'+ #supplier.name")
public Result del(SysSupplier supplier) {
public R del(SysSupplier supplier) {
int rows = supplierMapper.delete(
Wrappers.lambdaQuery(SysSupplier.class)
.eq(SysSupplier::getId, supplier.getId())
.eq(SysSupplier::getStatus, GeneralStatusEnum.DISABLED.getCode())
);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
private boolean isNameExist(String name, Integer id) {

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.common.util.WebSocketUtil;
@ -108,9 +108,9 @@ public class UserService {
}
@UserAction("'添加用户:'+#user.name")
public Result add(SysUser user) {
public R add(SysUser user) {
if (isNameExist(user.getName(), null)) {
return Result.fail("该用户名称已存在");
return R.fail("该用户名称已存在");
}
user.setId(null);
@ -118,16 +118,16 @@ public class UserService {
user.setPwd(DEFAULT_PWD);
userMapper.insert(user);
return Result.success("添加成功");
return R.success("添加成功");
}
@UserAction("'修改用户:'+#user.name")
public Result update(SysUser user) {
public R update(SysUser user) {
Integer id = user.getId();
String name = user.getName();
if (isNameExist(name, id)) {
return Result.fail("该用户名称已存在");
return R.fail("该用户名称已存在");
}
userMapper.update(
@ -140,23 +140,23 @@ public class UserService {
.eq(SysUser::getId, id)
);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("'删除用户:'+#user.name")
@Transactional(rollbackFor = Exception.class)
public Result del(SysUser user) {
public R del(SysUser user) {
int rows = userMapper.delete(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getId, user.getId())
.eq(SysUser::isAdmin, 0)
);
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
}
@UserAction
public Result kick(List<SysUser> users) {
public R kick(List<SysUser> users) {
WebSocketUtil.sendLogoutEvent(
users
.stream()
@ -165,18 +165,18 @@ public class UserService {
"你已被强制下线,请重新登陆"
);
return Result.success("踢出成功");
return R.success("踢出成功");
}
@UserAction("'重置用户密码:'+#user.name")
public Result resetPwd(SysUser user) {
public R resetPwd(SysUser user) {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, DEFAULT_PWD)
.eq(SysUser::getId, user.getId())
);
return rows > 0 ? Result.success() : Result.fail("重置失败,未匹配到用户");
return rows > 0 ? R.success() : R.fail("重置失败,未匹配到用户");
}
//用户名重复时返回true

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.toesbieya.jxc.system.mapper.SysResourceMapper">
<select id="selectChildren" resultType="cn.toesbieya.jxc.common.model.entity.SysResource">
with recursive t as (
select id,
pid,
type,
name,
path,
component,
meta,
admin,
enable
from sys_resource
where pid = 0
union all
select c.id,
c.pid,
c.type,
c.name,
concat(t.path, '/', c.path) as path,
c.component,
c.meta,
c.admin,
if(t.enable = false, false, c.enable) enable
from sys_resource c,
t
where c.pid = t.id
)
select *
from t
<if test="ids != null and ids != ''">
where id in (${ids})
</if>
</select>
</mapper>

@ -1,7 +1,10 @@
package cn.toesbieya.jxc.socket.config;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner;
import com.corundumstudio.socketio.listener.ExceptionListener;
import io.netty.channel.ChannelHandlerContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@ -14,6 +17,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
@Configuration
@EnableConfigurationProperties(SocketProperty.class)
@ -31,6 +35,28 @@ public class SocketConfig {
config.setMaxFramePayloadLength(property.getMaxFramePayloadLength());
config.setMaxHttpContentLength(property.getMaxHttpContentLength());
config.setAddVersionHeader(false);
config.setExceptionListener(new ExceptionListener() {
@Override
public void onEventException(Exception e, List<Object> args, SocketIOClient client) {
}
@Override
public void onDisconnectException(Exception e, SocketIOClient client) {
}
@Override
public void onConnectException(Exception e, SocketIOClient client) {
}
@Override
public void onPingException(Exception e, SocketIOClient client) {
}
@Override
public boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
return false;
}
});
return new SocketIOServer(config);
}

Binary file not shown.

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.aspect;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.util.RedisUtil;
import cn.toesbieya.jxc.util.SpringUtil;
import lombok.extern.slf4j.Slf4j;
@ -22,7 +22,7 @@ import java.util.ArrayList;
public class LockAspect {
private final ThreadLocal<ArrayList<RedisUtil.Locker>> lockerThreadLocal = new ThreadLocal<>();
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.Lock)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))")
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.Lock)&&execution(cn.toesbieya.jxc.model.vo.R cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
}
@ -47,7 +47,7 @@ public class LockAspect {
RedisUtil.Locker locker = new RedisUtil.Locker(lockKey);
if (!locker.lock()) {
locks.forEach(RedisUtil.Locker::close);
return Result.fail("操作失败,请刷新后重试");
return R.fail("操作失败,请刷新后重试");
}
locks.add(locker);
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.aspect;
import cn.toesbieya.jxc.enumeration.UserActionEnum;
import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.util.ThreadUtil;
import cn.toesbieya.jxc.util.Util;
@ -27,45 +27,45 @@ public class RestExceptionAspect {
//抛出异常时希望返回给前台
@ExceptionHandler(JsonResultException.class)
public Result handleJsonResultException(JsonResultException e) {
public R handleJsonResultException(JsonResultException e) {
recordUserAction(e);
return Result.fail(e.getMessage());
return R.fail(e.getMessage());
}
//请求方法有误
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public Result handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
return Result.fail("请求方法有误");
public R handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
return R.fail("请求方法有误");
}
//@RequestParam没有匹配到值
@ExceptionHandler(MissingServletRequestParameterException.class)
public Result handle(MissingServletRequestParameterException e) {
public R handle(MissingServletRequestParameterException e) {
log.error(e.getMessage(), e);
return Result.fail("get参数有误");
return R.fail("get参数有误");
}
//@RequestBody没有匹配到值
@ExceptionHandler(HttpMessageNotReadableException.class)
public Result handle(HttpMessageNotReadableException e) {
public R handle(HttpMessageNotReadableException e) {
log.error(e.getMessage(), e);
return Result.fail("post参数有误");
return R.fail("post参数有误");
}
//上传文件过大
@ExceptionHandler(MaxUploadSizeExceededException.class)
public Result handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
public R handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
log.error("上传的文件超出限定大小,{}", e.getMessage());
recordUserAction(e);
return Result.fail("上传的文件过大");
return R.fail("上传的文件过大");
}
//最终捕获
@ExceptionHandler(Exception.class)
public Result handleException(Exception e) {
public R handleException(Exception e) {
log.error(String.format("服务运行异常,访问路径:%s", WebUtil.getRequest().getServletPath()), e);
recordUserAction(e);
return Result.fail("服务运行异常");
return R.fail("服务运行异常");
}
private void recordUserAction(Exception e) {

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.UserActionEnum;
import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.util.SpringUtil;
import cn.toesbieya.jxc.util.ThreadUtil;
import lombok.extern.slf4j.Slf4j;
@ -28,7 +28,7 @@ public class UserActionAspect {
@Resource
private RecService service;
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))")
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.model.vo.R cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
}
@ -57,7 +57,7 @@ public class UserActionAspect {
}
}
Result result = (Result) pjp.proceed();
R result = (R) pjp.proceed();
if (result.isSuccess()) {
action.setType(UserActionEnum.SUCCESS.getCode());

@ -1,7 +1,10 @@
package cn.toesbieya.jxc.config;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner;
import com.corundumstudio.socketio.listener.ExceptionListener;
import io.netty.channel.ChannelHandlerContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@ -11,6 +14,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.util.StringUtils;
import java.io.*;
import java.util.List;
@Configuration
@EnableConfigurationProperties(SocketProperty.class)
@ -28,6 +32,28 @@ public class SocketConfig {
config.setMaxFramePayloadLength(property.getMaxFramePayloadLength());
config.setMaxHttpContentLength(property.getMaxHttpContentLength());
config.setAddVersionHeader(false);
config.setExceptionListener(new ExceptionListener() {
@Override
public void onEventException(Exception e, List<Object> args, SocketIOClient client) {
}
@Override
public void onDisconnectException(Exception e, SocketIOClient client) {
}
@Override
public void onConnectException(Exception e, SocketIOClient client) {
}
@Override
public void onPingException(Exception e, SocketIOClient client) {
}
@Override
public boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
return false;
}
});
return new SocketIOServer(config);
}

@ -7,7 +7,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.service.AccountService;
import cn.toesbieya.jxc.util.SessionUtil;
import cn.toesbieya.jxc.util.IpUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -24,58 +24,58 @@ public class AccountController {
private AccountService service;
@PostMapping("login")
public Result login(HttpServletRequest request, @Valid @RequestBody LoginParam param) {
public R login(HttpServletRequest request, @Valid @RequestBody LoginParam param) {
return service.login(param, IpUtil.getIp(request));
}
@GetMapping("logout")
public Result logout(HttpServletRequest request) {
public R logout(HttpServletRequest request) {
UserVo user = SessionUtil.get();
return service.logout(user, IpUtil.getIp(request));
}
@PostMapping("register")
public Result register(@Valid @RequestBody RegisterParam param) {
public R register(@Valid @RequestBody RegisterParam param) {
return service.register(param);
}
@PostMapping("updatePwd")
public Result updatePwd(@RequestBody PasswordUpdateParam param) {
public R updatePwd(@RequestBody PasswordUpdateParam param) {
UserVo user = SessionUtil.get();
param.setId(user.getId());
String errMsg = validateUpdatePwdParam(param);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.updatePwd(param);
}
@GetMapping("updateAvatar")
public Result updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(key)) return Result.fail("参数错误");
public R updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(key)) return R.fail("参数错误");
UserVo user = SessionUtil.get();
return service.updateAvatar(user, URLDecoder.decode(key, "utf-8"));
}
@GetMapping("validate")
public Result validate(@RequestParam String pwd) {
public R validate(@RequestParam String pwd) {
UserVo current = SessionUtil.get();
if (!pwd.equals(current.getPwd())) {
return Result.fail("校验失败");
return R.fail("校验失败");
}
return Result.success("校验通过");
return R.success("校验通过");
}
@GetMapping("checkName")
public Result checkName(@RequestParam(required = false) Integer id, @RequestParam String name) {
public R checkName(@RequestParam(required = false) Integer id, @RequestParam String name) {
if (StringUtils.isEmpty(name)) {
return Result.success();
return R.success();
}
return Result.success(service.checkName(name, id) ? "该用户名已存在" : null);
return R.success(service.checkName(name, id) ? "该用户名已存在" : null);
}
private String validateUpdatePwdParam(PasswordUpdateParam vo) {

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -16,20 +16,20 @@ public class BizStockController {
private BizStockService service;
@PostMapping("search")
public Result search(@RequestBody StockSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody StockSearch vo) {
return R.success(service.search(vo));
}
@GetMapping("getDetail")
public Result getDetail(@RequestParam String cids) {
if (StringUtils.isEmpty(cids)) return Result.fail("参数错误");
return Result.success(service.getDetail(cids));
public R getDetail(@RequestParam String cids) {
if (StringUtils.isEmpty(cids)) return R.fail("参数错误");
return R.success(service.getDetail(cids));
}
@GetMapping("getDetailById")
public Result getDetailById(@RequestParam String ids) {
if (StringUtils.isEmpty(ids)) return Result.fail("参数错误");
return Result.success(service.getDetailById(ids));
public R getDetailById(@RequestParam String ids) {
if (StringUtils.isEmpty(ids)) return R.fail("参数错误");
return R.success(service.getDetailById(ids));
}
@PostMapping("export")

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.service.FileService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
@ -20,13 +20,13 @@ public class FileController {
private FileService service;
@GetMapping("delete")
public Result delete(@RequestParam String url) throws UnsupportedEncodingException {
public R delete(@RequestParam String url) throws UnsupportedEncodingException {
service.delete(URLDecoder.decode(url, "utf-8"));
return Result.success("删除成功");
return R.success("删除成功");
}
@GetMapping("getToken")
public Result getToken() {
return Result.success(null, service.getToken());
public R getToken() {
return R.success(null, service.getToken());
}
}

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.model.vo.search.UserActionSearch;
import cn.toesbieya.jxc.util.SessionUtil;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.util.DateUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -21,22 +21,22 @@ public class RecController {
private RecService service;
@PostMapping("searchLoginHistory")
public Result searchLoginHistory(@RequestBody LoginHistorySearch vo) {
public R searchLoginHistory(@RequestBody LoginHistorySearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(service.searchLoginHistory(vo));
return R.success(service.searchLoginHistory(vo));
}
@PostMapping("searchUserAction")
public Result searchUserAction(@RequestBody UserActionSearch vo) {
public R searchUserAction(@RequestBody UserActionSearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(service.searchUserAction(vo));
return R.success(service.searchUserAction(vo));
}
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.service.StatisticService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -15,22 +15,22 @@ public class StatisticController {
private StatisticService service;
@GetMapping("getFourBlock")
public Result getFourBlock() {
return Result.success(service.getFourBlock());
public R getFourBlock() {
return R.success(service.getFourBlock());
}
@GetMapping("getDailyProfitStat")
public Result getDailyProfitStat() {
return Result.success(service.getDailyProfitStat());
public R getDailyProfitStat() {
return R.success(service.getDailyProfitStat());
}
@GetMapping("getDailyFinishOrder")
public Result getDailyFinishOrder() {
return Result.success(service.getDailyFinishOrder());
public R getDailyFinishOrder() {
return R.success(service.getDailyFinishOrder());
}
@GetMapping("getTotalProfitGoods")
public Result getTotalProfitGoods() {
return Result.success(service.getTotalProfitGoods());
public R getTotalProfitGoods() {
return R.success(service.getTotalProfitGoods());
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@ -31,19 +31,19 @@ public class TestController {
@PostMapping("test")
@ResponseBody
public Result test() {
return Result.success();
public R test() {
return R.success();
}
@PostMapping("upload")
@ResponseBody
public Result upload(MultipartFile file, @RequestParam(required = false) String extraParam1, @RequestParam(required = false) String extraParam2) throws IOException {
public R upload(MultipartFile file, @RequestParam(required = false) String extraParam1, @RequestParam(required = false) String extraParam2) throws IOException {
/*System.out.println("extraParam1:" + extraParam1);
System.out.println("extraParam2:" + extraParam2);
System.out.println("文件名称:" + file.getOriginalFilename());
String tempPath = "C:/static/" + file.getOriginalFilename();
file.transferTo(Paths.get(tempPath));*/
System.out.println("文件名称:" + file.getOriginalFilename());
return Result.success("ok");
return R.success("ok");
}
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.model.vo.search.DocHistorySearch;
import cn.toesbieya.jxc.service.doc.BizDocHistoryService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -14,7 +14,7 @@ public class HistoryController {
private BizDocHistoryService service;
@PostMapping("search")
public Result search(@RequestBody DocHistorySearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody DocHistorySearch vo) {
return R.success(service.search(vo));
}
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
@ -26,21 +26,21 @@ public class PurchaseInboundController {
private BizPurchaseInboundService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
PurchaseInboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody PurchaseInboundSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody PurchaseInboundSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,9 +49,9 @@ public class PurchaseInboundController {
}
@PostMapping("add")
public Result add(@RequestBody PurchaseInboundVo vo) {
public R add(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
@ -63,21 +63,21 @@ public class PurchaseInboundController {
}
@PostMapping("update")
public Result update(@RequestBody PurchaseInboundVo vo) {
public R update(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody PurchaseInboundVo vo) {
public R commit(@RequestBody PurchaseInboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) {
@ -90,24 +90,24 @@ public class PurchaseInboundController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return R.fail("参数错误");
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
@ -26,21 +26,21 @@ public class PurchaseOrderController {
private BizPurchaseOrderService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
PurchaseOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody PurchaseOrderSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody PurchaseOrderSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,14 +49,14 @@ public class PurchaseOrderController {
}
@PostMapping("add")
public Result add(@RequestBody PurchaseOrderVo vo) {
public R add(@RequestBody PurchaseOrderVo vo) {
if (vo.getSid() == null
|| StringUtils.isEmpty(vo.getSname())
|| vo.getTotal() == null) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
@ -68,21 +68,21 @@ public class PurchaseOrderController {
}
@PostMapping("update")
public Result update(@RequestBody PurchaseOrderVo vo) {
public R update(@RequestBody PurchaseOrderVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody PurchaseOrderVo vo) {
public R commit(@RequestBody PurchaseOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -97,23 +97,23 @@ public class PurchaseOrderController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
@ -26,21 +26,21 @@ public class SellOrderController {
private BizSellOrderService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
SellOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody SellOrderSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody SellOrderSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,14 +49,14 @@ public class SellOrderController {
}
@PostMapping("add")
public Result add(@RequestBody SellOrderVo vo) {
public R add(@RequestBody SellOrderVo vo) {
if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -69,21 +69,21 @@ public class SellOrderController {
}
@PostMapping("update")
public Result update(@RequestBody SellOrderVo vo) {
public R update(@RequestBody SellOrderVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody SellOrderVo vo) {
public R commit(@RequestBody SellOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -99,23 +99,23 @@ public class SellOrderController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
@ -26,21 +26,21 @@ public class SellOutboundController {
private BizSellOutboundService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
SellOutboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
}
@GetMapping("getSubById")
public Result getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
return Result.success(service.getSubById(id));
public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return R.success(service.getSubById(id));
}
@PostMapping("search")
public Result search(@RequestBody SellOutboundSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody SellOutboundSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("export")
@ -49,9 +49,9 @@ public class SellOutboundController {
}
@PostMapping("add")
public Result add(@RequestBody SellOutboundVo vo) {
public R add(@RequestBody SellOutboundVo vo) {
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -64,21 +64,21 @@ public class SellOutboundController {
}
@PostMapping("update")
public Result update(@RequestBody SellOutboundVo vo) {
public R update(@RequestBody SellOutboundVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(vo);
}
@PostMapping("commit")
public Result commit(@RequestBody SellOutboundVo vo) {
public R commit(@RequestBody SellOutboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) {
@ -92,24 +92,24 @@ public class SellOutboundController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) {
public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return R.fail("参数错误");
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) {
public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}
@GetMapping("del")
public Result del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id);
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.controller.msg;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import cn.toesbieya.jxc.service.msg.MsgService;
@ -19,14 +19,14 @@ public class ManageController {
private MsgService service;
@PostMapping("search")
public Result search(@RequestBody MsgSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody MsgSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody Msg msg) {
public R add(@RequestBody Msg msg) {
String errMsg = validateAdd(msg);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -36,21 +36,21 @@ public class ManageController {
}
@PostMapping("update")
public Result update(@RequestBody Msg msg) {
public R update(@RequestBody Msg msg) {
String errMsg = validateAdd(msg);
if (errMsg == null) errMsg = validateUpdate(msg);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(msg);
}
@PostMapping("publish")
public Result publish(@RequestBody Msg msg) {
public R publish(@RequestBody Msg msg) {
boolean isFirstCreate = msg.getId() == null;
String errMsg = validateAdd(msg);
if (errMsg == null && !isFirstCreate) errMsg = validateUpdate(msg);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get();
@ -65,8 +65,8 @@ public class ManageController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return Result.fail("参数错误");
public R withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return R.fail("参数错误");
UserVo user = SessionUtil.get();
@ -78,7 +78,7 @@ public class ManageController {
}
@GetMapping("del")
public Result del(@RequestParam Integer id, @RequestParam String title) {
public R del(@RequestParam Integer id, @RequestParam String title) {
return service.del(id, title);
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller.msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.service.msg.MsgUserService;
@ -16,20 +16,20 @@ public class UserController {
private MsgUserService service;
@PostMapping("search")
public Result searchPersonal(@RequestBody MsgPersonalSearch vo) {
public R searchPersonal(@RequestBody MsgPersonalSearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
return Result.success(service.search(vo));
return R.success(service.search(vo));
}
@GetMapping("read")
public Result read(@RequestParam Integer id) {
public R read(@RequestParam Integer id) {
return service.read(SessionUtil.get(), id);
}
@GetMapping("readAll")
public Result readAll() {
public R readAll() {
return service.readAll(SessionUtil.get());
}
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.service.sys.SysCategoryService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -16,35 +16,35 @@ public class CategoryController {
private SysCategoryService service;
@GetMapping("getAll")
public Result getAll() {
return Result.success(service.getAll());
public R getAll() {
return R.success(service.getAll());
}
@PostMapping("search")
public Result search(@RequestBody CategorySearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody CategorySearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysCategory category) {
public R add(@RequestBody SysCategory category) {
String errMsg = validateCategoryCreateParam(category);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
category.setCtime(System.currentTimeMillis());
return service.add(category);
}
@PostMapping("update")
public Result update(@RequestBody SysCategory category) {
public R update(@RequestBody SysCategory category) {
String errMsg = validateCategoryUpdateParam(category);
if (errMsg != null) return Result.fail(errMsg);
if (errMsg != null) return R.fail(errMsg);
return service.update(category);
}
@PostMapping("del")
public Result del(@RequestBody SysCategory category) {
if (category.getId() == null) return Result.fail("删除失败,参数错误");
public R del(@RequestBody SysCategory category) {
if (category.getId() == null) return R.fail("删除失败,参数错误");
return service.del(category);
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import cn.toesbieya.jxc.service.sys.SysCustomerService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -16,35 +16,36 @@ public class CustomerController {
private SysCustomerService service;
@GetMapping("getLimitRegion")
public Result getLimitRegion() {
return Result.success(service.getLimitRegion());
public R getLimitRegion() {
return R.success(service.getLimitRegion());
}
@PostMapping("search")
public Result search(@RequestBody CustomerSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody CustomerSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysCustomer customer) {
public R add(@RequestBody SysCustomer customer) {
String errMsg = validateCreateParam(customer);
if (errMsg != null) return Result.fail("创建失败," + errMsg);
if (errMsg != null) return R.fail("创建失败," + errMsg);
customer.setId(null);
customer.setCtime(System.currentTimeMillis());
return service.add(customer);
}
@PostMapping("update")
public Result update(@RequestBody SysCustomer customer) {
public R update(@RequestBody SysCustomer customer) {
String errMsg = validateUpdateParam(customer);
if (errMsg != null) return Result.fail("修改失败," + errMsg);
if (errMsg != null) return R.fail("修改失败," + errMsg);
return service.update(customer);
}
@PostMapping("del")
public Result del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return Result.fail("删除失败,参数错误");
public R del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return R.fail("删除失败,参数错误");
return service.del(customer);
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.service.sys.SysDepartmentService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -19,7 +19,7 @@ public class DepartmentController {
private SysDepartmentService service;
@GetMapping("get")
public Result get(boolean all) {
public R get(boolean all) {
List<DepartmentVo> list = service.getAll();
if (!all) {
list = list
@ -27,34 +27,34 @@ public class DepartmentController {
.filter(i -> i.getStatus().equals(GeneralStatusEnum.ENABLED.getCode()))
.collect(Collectors.toList());
}
return Result.success(list);
return R.success(list);
}
@PostMapping("add")
public Result add(@RequestBody SysDepartment department) {
public R add(@RequestBody SysDepartment department) {
if (null == department.getPid()
|| StringUtils.isEmpty(department.getName())
|| null == department.getStatus()) {
return Result.fail("添加失败,参数错误");
return R.fail("添加失败,参数错误");
}
return service.add(department);
}
@PostMapping("update")
public Result update(@RequestBody SysDepartment department) {
public R update(@RequestBody SysDepartment department) {
if (null == department.getId()
|| null == department.getPid()
|| StringUtils.isEmpty(department.getName())
|| null == department.getStatus()) {
return Result.fail("修改失败,参数错误");
return R.fail("修改失败,参数错误");
}
return service.update(department);
}
@PostMapping("del")
public Result del(@RequestBody SysDepartment department) {
public R del(@RequestBody SysDepartment department) {
if (null == department.getId() || StringUtils.isEmpty(department.getName())) {
return Result.fail("删除失败,参数错误");
return R.fail("删除失败,参数错误");
}
return service.del(department);
}

@ -1,10 +1,9 @@
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -15,7 +14,22 @@ public class ResourceController {
private SysResourceService service;
@GetMapping("getAll")
public Result getAll() {
return Result.success(service.getAll());
public R getAll() {
return R.success(service.getAll());
}
@PostMapping("add")
public R add(@RequestBody SysResource entity) {
return service.add(entity);
}
@PostMapping("update")
public R update(@RequestBody SysResource entity) {
return service.update(entity);
}
@GetMapping("del")
public R del(@RequestParam int id) {
return service.del(id);
}
}

@ -5,7 +5,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import cn.toesbieya.jxc.util.SessionUtil;
import cn.toesbieya.jxc.service.sys.SysRoleService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -18,20 +18,20 @@ public class RoleController {
private SysRoleService service;
@GetMapping("get")
public Result get() {
return Result.success(service.get());
public R get() {
return R.success(service.get());
}
@PostMapping("search")
public Result search(@RequestBody RoleSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody RoleSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysRole role) {
public R add(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName())
|| role.getStatus() == null) {
return Result.fail("添加失败,参数错误");
return R.fail("添加失败,参数错误");
}
UserVo user = SessionUtil.get();
@ -44,18 +44,18 @@ public class RoleController {
}
@PostMapping("update")
public Result update(@RequestBody SysRole role) {
public R update(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName())
|| role.getId() == null
|| role.getStatus() == null) {
return Result.fail("修改失败,参数错误");
return R.fail("修改失败,参数错误");
}
return service.update(role);
}
@PostMapping("del")
public Result del(@RequestBody SysRole role) {
if (role.getId() == null) return Result.fail("删除失败,参数错误");
public R del(@RequestBody SysRole role) {
if (role.getId() == null) return R.fail("删除失败,参数错误");
return service.del(role);
}
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import cn.toesbieya.jxc.service.sys.SysSupplierService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -16,19 +16,19 @@ public class SupplierController {
private SysSupplierService service;
@GetMapping("getLimitRegion")
public Result getLimitRegion() {
return Result.success(service.getLimitRegion());
public R getLimitRegion() {
return R.success(service.getLimitRegion());
}
@PostMapping("search")
public Result search(@RequestBody SupplierSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody SupplierSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysSupplier supplier) {
public R add(@RequestBody SysSupplier supplier) {
String errMsg = validateCreateParam(supplier);
if (errMsg != null) return Result.fail("添加失败," + errMsg);
if (errMsg != null) return R.fail("添加失败," + errMsg);
supplier.setId(null);
supplier.setCtime(System.currentTimeMillis());
@ -36,14 +36,14 @@ public class SupplierController {
}
@PostMapping("update")
public Result update(@RequestBody SysSupplier supplier) {
public R update(@RequestBody SysSupplier supplier) {
String errMsg = validateUpdateParam(supplier);
return errMsg == null ? service.update(supplier) : Result.fail("修改失败," + errMsg);
return errMsg == null ? service.update(supplier) : R.fail("修改失败," + errMsg);
}
@PostMapping("del")
public Result del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return Result.fail("删除失败,参数错误");
public R del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return R.fail("删除失败,参数错误");
return service.del(supplier);
}

@ -5,7 +5,7 @@ import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.util.ThreadUtil;
import cn.toesbieya.jxc.service.sys.SysUserService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -23,40 +23,40 @@ public class UserController {
private SysUserService service;
@PostMapping("search")
public Result search(@RequestBody UserSearch vo) {
return Result.success(service.search(vo));
public R search(@RequestBody UserSearch vo) {
return R.success(service.search(vo));
}
@PostMapping("add")
public Result add(@RequestBody SysUser user) {
public R add(@RequestBody SysUser user) {
String errMsg = validateUserCreateParam(user);
if (errMsg != null) {
return Result.fail(errMsg);
return R.fail(errMsg);
}
return service.add(user);
}
@PostMapping("update")
public Result update(@RequestBody SysUser user) {
public R update(@RequestBody SysUser user) {
String errMsg = validateUserUpdateParam(user);
if (errMsg != null) {
return Result.fail(errMsg);
return R.fail(errMsg);
}
return service.update(user);
}
@PostMapping("del")
public Result del(@RequestBody SysUser user) {
public R del(@RequestBody SysUser user) {
if (user.getId() == null) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
return service.del(user);
}
@PostMapping("kick")
public Result kick(@RequestBody List<SysUser> users) {
public R kick(@RequestBody List<SysUser> users) {
if (users == null || users.isEmpty()) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
RecUserAction action = ThreadUtil.getAction();
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
@ -66,9 +66,9 @@ public class UserController {
}
@PostMapping("resetPwd")
public Result resetPwd(@RequestBody SysUser user) {
public R resetPwd(@RequestBody SysUser user) {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
return Result.fail("参数错误");
return R.fail("参数错误");
}
return service.resetPwd(user);
}

@ -0,0 +1,15 @@
package cn.toesbieya.jxc.enumeration;
public enum ResourceTypeEnum {
FOLDER(1), LEAF(2), API(3);
private final int code;
ResourceTypeEnum(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.interceptor;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.module.PermissionModule;
import cn.toesbieya.jxc.util.*;
@ -19,13 +19,13 @@ public class SecurityInterceptor implements HandlerInterceptor {
UserVo user = SessionUtil.get(request);
if (user == null) {
WebUtil.responseJson(response, Result.requireLogin());
WebUtil.responseJson(response, R.requireLogin());
ThreadUtil.clearAll();
return false;
}
if (!PermissionModule.authority(user, url)) {
WebUtil.responseJson(response, Result.noPermission());
WebUtil.responseJson(response, R.noPermission());
log.warn("权限拦截,访问路径:{},用户:{},IP:{}", url, user.getName(), ip);
ThreadUtil.clearAll();
return false;

@ -2,6 +2,10 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysResource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysResourceMapper extends BaseMapper<SysResource> {
List<SysResource> selectChildren(@Param("ids") String ids);
}

@ -10,9 +10,11 @@ import lombok.NoArgsConstructor;
public class SysResource {
private Integer id;
private Integer pid;
private Integer type;
private String name;
private String url;
private String path;
private String component;
private String meta;
private boolean admin = false;
private Long totalRate;
private Long ipRate;
private boolean enable = true;
}

@ -0,0 +1,81 @@
package cn.toesbieya.jxc.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Data
@AllArgsConstructor
@Builder
public class R {
/**
* 返回的代码200表示成功其他表示失败
*/
private int status;
/**
* 成功或失败时返回的错误信息
*/
private String msg;
/**
* 成功时返回的数据信息
*/
private Object data;
public R(int status) {
this.status = status;
}
public R(int status, String msg) {
this.status = status;
this.msg = msg;
}
public R(int status, Object data) {
this.status = status;
this.data = data;
}
public static R success() {
return new R(200);
}
public static R success(String msg) {
return new R(200, msg);
}
public static R success(Object data) {
return new R(200, data);
}
public static R success(String msg, Object data) {
return new R(200, msg, data);
}
public static R fail(String msg) {
return new R(500, msg);
}
public static R notfound() {
return new R(404, "请求地址不存在");
}
public static R requireLogin() {
return new R(401, "请登录后重试");
}
public static R noPermission() {
return new R(403, "没有权限进行该操作");
}
public static R overload() {
return new R(503, "当前请求的人数过多,请稍后重试");
}
public static R tooManyRequest() {
return new R(429, "操作过于频繁,请稍后重试");
}
public boolean isSuccess() {
return this.status == 200;
}
}

@ -1,20 +0,0 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysResource;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ResourceVo extends SysResource {
private String fullname;
public ResourceVo(SysResource parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -1,81 +0,0 @@
package cn.toesbieya.jxc.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Data
@AllArgsConstructor
@Builder
public class Result {
/**
* 返回的代码200表示成功其他表示失败
*/
private int status;
/**
* 成功或失败时返回的错误信息
*/
private String msg;
/**
* 成功时返回的数据信息
*/
private Object data;
public Result(int status) {
this.status = status;
}
public Result(int status, String msg) {
this.status = status;
this.msg = msg;
}
public Result(int status, Object data) {
this.status = status;
this.data = data;
}
public static Result success() {
return new Result(200);
}
public static Result success(String msg) {
return new Result(200, msg);
}
public static Result success(Object data) {
return new Result(200, data);
}
public static Result success(String msg, Object data) {
return new Result(200, msg, data);
}
public static Result fail(String msg) {
return new Result(500, msg);
}
public static Result notfound() {
return new Result(404, "请求地址不存在");
}
public static Result requireLogin() {
return new Result(401, "请登录后重试");
}
public static Result noPermission() {
return new Result(403, "没有权限进行该操作");
}
public static Result overload() {
return new Result(503, "当前请求的人数过多,请稍后重试");
}
public static Result tooManyRequest() {
return new Result(429, "操作过于频繁,请稍后重试");
}
public boolean isSuccess() {
return this.status == 200;
}
}

@ -1,12 +1,12 @@
package cn.toesbieya.jxc.module;
import cn.toesbieya.jxc.model.vo.ResourceVo;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
@ -16,47 +16,51 @@ import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@Component
public class PermissionModule {
private final static ConcurrentHashMap<String, Integer> urlMap = new ConcurrentHashMap<>(128);
private final static ConcurrentHashMap<String, Integer> adminUrlMap = new ConcurrentHashMap<>(128);
public class PermissionModule implements CommandLineRunner {
private final static ConcurrentHashMap<String, SysResource> urlMap = new ConcurrentHashMap<>(256);
private final static ConcurrentHashMap<String, SysResource> adminUrlMap = new ConcurrentHashMap<>(16);
@Resource
private SysResourceService service;
public static boolean authority(UserVo user, String url) {
if (user.isAdmin() || !needAuthority(url)) {
return true;
boolean isAdmin = user.isAdmin();
SysResource r = adminUrlMap.get(url);
//访问admin权限的资源时,需要用户是admin并且该权限已启用
if (r != null) {
return r.isEnable() && isAdmin;
}
if (adminUrlMap.containsKey(url)) return false;
if (isAdmin) return true;
Set<Integer> ids = user.getResourceIds();
r = urlMap.get(url);
if (ids == null) return false;
//权限表中无记录的资源放行
if (r == null) return true;
return ids.contains(urlMap.get(url));
}
//未启用时拦截
if (!r.isEnable()) return false;
private static boolean needAuthority(String url) {
return urlMap.containsKey(url) || adminUrlMap.containsKey(url);
//根据用户权限判断
Set<Integer> ids = user.getResourceIds();
return ids != null && ids.contains(r.getId());
}
@PostConstruct
public void init() {
@Override
public void run(String... args) {
Instant start = Instant.now();
List<ResourceVo> resources = service.getAll();
List<SysResource> resources = service.getEnableApi();
if (resources != null) {
for (ResourceVo p : resources) {
if (p.isAdmin()) {
adminUrlMap.put(p.getUrl(), p.getId());
}
else urlMap.put(p.getUrl(), p.getId());
for (SysResource p : resources) {
String path = p.getPath();
if (p.isAdmin()) {
adminUrlMap.put(path, p);
}
else urlMap.put(path, p);
}
Instant end = Instant.now();
log.info("权限模块启动成功,耗时:{}毫秒", ChronoUnit.MILLIS.between(start, end));
log.info("权限资源加载完成,耗时:{}毫秒", ChronoUnit.MILLIS.between(start, end));
}
}

@ -4,8 +4,10 @@ import cn.toesbieya.jxc.annoation.TimeCost;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.enumeration.RecLoginHistoryEnum;
import cn.toesbieya.jxc.enumeration.ResourceTypeEnum;
import cn.toesbieya.jxc.mapper.SysUserMapper;
import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.*;
@ -36,7 +38,7 @@ public class AccountService {
private FileService fileService;
@TimeCost
public Result login(LoginParam param, String ip) {
public R login(LoginParam param, String ip) {
long now = System.currentTimeMillis();
SysUser user = userMapper.selectOne(
@ -46,14 +48,14 @@ public class AccountService {
);
if (user == null) {
return Result.fail("用户名或密码错误");
return R.fail("用户名或密码错误");
}
if (user.getStatus() == GeneralStatusEnum.DISABLED.getCode()) {
return Result.fail("该用户已被禁用,请联系管理员");
if (user.getStatus().equals(GeneralStatusEnum.DISABLED.getCode())) {
return R.fail("该用户已被禁用,请联系管理员");
}
Integer roleId = user.getRole();
if (!user.isAdmin() && roleId == null) {
return Result.fail("该用户尚未被分配角色,请联系管理员");
return R.fail("该用户尚未被分配角色,请联系管理员");
}
//设置token
@ -67,10 +69,11 @@ public class AccountService {
LoginSuccessInfo info = new LoginSuccessInfo(user);
info.setToken(token);
Map<String, Integer> userResourcesUrlMap = null;
Map<String, Integer> userResources = null;
Set<Integer> userResourcesIdSet = null;
if (roleId != null) {
//为非admin的用户设置权限
if (!user.isAdmin()) {
//获取用户的角色
SysRole role = roleService.getRoleById(roleId);
@ -81,15 +84,18 @@ public class AccountService {
info.setRoleName(roleName);
//获取用户的权限列表
List<ResourceVo> resources = resourceService.getResourceByRole(role);
userResourcesUrlMap = new HashMap<>(128);
userResourcesIdSet = new HashSet<>(128);
for (ResourceVo resource : resources) {
Integer resourceId = resource.getId();
userResourcesUrlMap.put(resource.getUrl(), resourceId);
userResourcesIdSet.add(resourceId);
List<SysResource> resources = resourceService.getResourceByRole(role);
userResources = new HashMap<>(resources.size());
userResourcesIdSet = new HashSet<>(resources.size());
for (SysResource r : resources) {
if (r.isAdmin()) continue;
Integer resourceId = r.getId();
userResources.put(r.getPath(), r.getId());
if (r.getType().equals(ResourceTypeEnum.API.getCode())) {
userResourcesIdSet.add(resourceId);
}
}
}
}
@ -113,7 +119,7 @@ public class AccountService {
userVo.setResourceIds(userResourcesIdSet);
//返回给前端的用户权限表
info.setResources(userResourcesUrlMap);
info.setResources(userResources);
//用户信息插入redis
SessionUtil.save(userVo);
@ -130,10 +136,10 @@ public class AccountService {
.build()
);
return Result.success(info);
return R.success(info);
}
public Result logout(UserVo user, String ip) {
public R logout(UserVo user, String ip) {
if (user != null) {
recService.insertLoginHistory(
RecLoginHistory
@ -148,14 +154,14 @@ public class AccountService {
SessionUtil.remove(user.getToken());
}
return Result.success("登出成功");
return R.success("登出成功");
}
public Result register(RegisterParam param) {
public R register(RegisterParam param) {
String name = param.getUsername();
if (checkName(name, null)) {
return Result.fail("该用户名称已存在");
return R.fail("该用户名称已存在");
}
SysUser user = new SysUser();
@ -168,11 +174,11 @@ public class AccountService {
userMapper.insert(user);
return Result.success("注册成功");
return R.success("注册成功");
}
@UserAction("'修改密码'")
public Result updatePwd(PasswordUpdateParam param) {
public R updatePwd(PasswordUpdateParam param) {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
@ -180,11 +186,11 @@ public class AccountService {
.eq(SysUser::getId, param.getId())
.eq(SysUser::getPwd, param.getOldPwd())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请检查原密码是否正确");
}
@UserAction("'修改头像'")
public Result updateAvatar(UserVo user, String avatar) {
public R updateAvatar(UserVo user, String avatar) {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
@ -200,13 +206,13 @@ public class AccountService {
}
user.setAvatar(avatar);
SessionUtil.save(user);
return Result.success("上传头像成功");
return R.success("上传头像成功");
}
//否则删除此次上传至云的头像
fileService.delete(avatar);
return Result.fail("上传头像失败");
return R.fail("上传头像失败");
}
//用户名重复时返回true

@ -9,7 +9,7 @@ import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
@ -86,23 +86,23 @@ public class BizPurchaseInboundService {
@UserAction("'添加采购入库单'")
@Transactional(rollbackFor = Exception.class)
public Result add(PurchaseInboundVo doc) {
public R add(PurchaseInboundVo doc) {
return addMain(doc);
}
@UserAction("'修改采购入库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(PurchaseInboundVo doc) {
public R update(PurchaseInboundVo doc) {
return updateMain(doc);
}
@UserAction("'提交采购入库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseInboundVo doc) {
public R commit(PurchaseInboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -123,12 +123,12 @@ public class BizPurchaseInboundService {
@UserAction("'撤回采购入库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -144,13 +144,13 @@ public class BizPurchaseInboundService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过采购入库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
String pid = vo.getPid();
@ -159,7 +159,7 @@ public class BizPurchaseInboundService {
//检查采购订单状态、入库商品是否符合订单要求
List<BizPurchaseInboundSub> subList = getSubById(id);
String err = checkOrder(pid, subList);
if (err != null) return Result.fail("通过失败," + err);
if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update(
null,
@ -171,7 +171,7 @@ public class BizPurchaseInboundService {
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
//修改采购订单完成情况、子表的未入库数量
@ -240,18 +240,18 @@ public class BizPurchaseInboundService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回采购入库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -267,34 +267,34 @@ public class BizPurchaseInboundService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除采购入库单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(PurchaseInboundVo doc) {
private R addMain(PurchaseInboundVo doc) {
List<BizPurchaseInboundSub> subList = doc.getData();
String err = checkOrder(doc.getPid(), subList);
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
String id = DocUtil.getDocId("CGRK");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -314,15 +314,15 @@ public class BizPurchaseInboundService {
}
recService.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(PurchaseInboundVo doc) {
private R updateMain(PurchaseInboundVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = checkOrder(doc.getPid(), doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -349,7 +349,7 @@ public class BizPurchaseInboundService {
}
recService.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -12,7 +12,7 @@ import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
@ -79,23 +79,23 @@ public class BizPurchaseOrderService {
@UserAction("'添加采购订单'")
@Transactional(rollbackFor = Exception.class)
public Result add(PurchaseOrderVo doc) {
public R add(PurchaseOrderVo doc) {
return addMain(doc);
}
@UserAction("'修改采购订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(PurchaseOrderVo doc) {
public R update(PurchaseOrderVo doc) {
return updateMain(doc);
}
@UserAction("'提交采购订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseOrderVo doc) {
public R commit(PurchaseOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -116,12 +116,12 @@ public class BizPurchaseOrderService {
@UserAction("'撤回采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -137,13 +137,13 @@ public class BizPurchaseOrderService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
long now = System.currentTimeMillis();
@ -158,7 +158,7 @@ public class BizPurchaseOrderService {
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
historyMapper.insert(
@ -174,18 +174,18 @@ public class BizPurchaseOrderService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -201,29 +201,29 @@ public class BizPurchaseOrderService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除采购订单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(PurchaseOrderVo doc) {
private R addMain(PurchaseOrderVo doc) {
String id = DocUtil.getDocId("CGDD");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -249,14 +249,14 @@ public class BizPurchaseOrderService {
}
recService.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(PurchaseOrderVo doc) {
private R updateMain(PurchaseOrderVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -287,7 +287,7 @@ public class BizPurchaseOrderService {
}
recService.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -8,7 +8,7 @@ import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderSubMapper;
import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOrderExport;
@ -83,23 +83,23 @@ public class BizSellOrderService {
@UserAction("'添加销售订单'")
@Transactional(rollbackFor = Exception.class)
public Result add(SellOrderVo doc) {
public R add(SellOrderVo doc) {
return addMain(doc);
}
@UserAction("'修改销售订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(SellOrderVo doc) {
public R update(SellOrderVo doc) {
return updateMain(doc);
}
@UserAction("'提交销售订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(SellOrderVo doc) {
public R commit(SellOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -120,12 +120,12 @@ public class BizSellOrderService {
@UserAction("'撤回销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -141,13 +141,13 @@ public class BizSellOrderService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
long now = System.currentTimeMillis();
@ -162,7 +162,7 @@ public class BizSellOrderService {
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
historyMapper.insert(
@ -178,18 +178,18 @@ public class BizSellOrderService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -205,32 +205,32 @@ public class BizSellOrderService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除销售订单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(SellOrderVo doc) {
private R addMain(SellOrderVo doc) {
String err = checkStock(doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
String id = DocUtil.getDocId("XSDD");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -255,15 +255,15 @@ public class BizSellOrderService {
}
recService.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(SellOrderVo doc) {
private R updateMain(SellOrderVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = checkStock(doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -294,7 +294,7 @@ public class BizSellOrderService {
}
recService.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -8,7 +8,7 @@ import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOutboundExport;
@ -91,23 +91,23 @@ public class BizSellOutboundService {
@UserAction("'添加销售出库单'")
@Transactional(rollbackFor = Exception.class)
public Result add(SellOutboundVo doc) {
public R add(SellOutboundVo doc) {
return addMain(doc);
}
@UserAction("'修改销售出库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(SellOutboundVo doc) {
public R update(SellOutboundVo doc) {
return updateMain(doc);
}
@UserAction("'提交销售出库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(SellOutboundVo doc) {
public R commit(SellOutboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocHistory.builder()
@ -128,12 +128,12 @@ public class BizSellOutboundService {
@UserAction("'撤回销售出库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) {
public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
return R.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
@ -149,13 +149,13 @@ public class BizSellOutboundService {
.build()
);
return Result.success("撤回成功");
return R.success("撤回成功");
}
@UserAction("'通过销售出库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) {
public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
String pid = vo.getPid();
@ -163,7 +163,7 @@ public class BizSellOutboundService {
List<BizSellOutboundSub> subList = getSubById(vo.getId());
String err = check(vo.getPid(), subList);
if (err != null) return Result.fail("通过失败," + err);
if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update(
null,
@ -175,7 +175,7 @@ public class BizSellOutboundService {
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
return R.fail("通过失败,请刷新重试");
}
//按分类分组统计出库数量,并出库
@ -245,18 +245,18 @@ public class BizSellOutboundService {
.build()
);
return Result.success("通过成功");
return R.success("通过成功");
}
@UserAction("'驳回销售出库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) {
public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
return R.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
@ -272,34 +272,34 @@ public class BizSellOutboundService {
.build()
);
return Result.success("驳回成功");
return R.success("驳回成功");
}
@UserAction("'删除销售出库单'+#id")
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
public R del(String id) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
return R.fail("删除失败");
}
//同时删除子表和附件
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
return R.success("删除成功");
}
private Result addMain(SellOutboundVo doc) {
private R addMain(SellOutboundVo doc) {
List<BizSellOutboundSub> subList = doc.getData();
String err = check(doc.getPid(), subList);
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
String id = DocUtil.getDocId("XSCK");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
return R.fail("获取单号失败");
}
doc.setId(id);
@ -319,15 +319,15 @@ public class BizSellOutboundService {
}
recService.handleAttachment(uploadImageList, null);
return Result.success("添加成功", id);
return R.success("添加成功", id);
}
private Result updateMain(SellOutboundVo doc) {
private R updateMain(SellOutboundVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = check(doc.getPid(), doc.getData());
if (err != null) return Result.fail(err);
if (err != null) return R.fail(err);
//更新主表
mainMapper.update(
@ -354,7 +354,7 @@ public class BizSellOutboundService {
}
recService.handleAttachment(uploadImageList, doc.getDeleteImageList());
return Result.success("修改成功");
return R.success("修改成功");
}
//只有拟定状态的单据才能修改

@ -5,7 +5,7 @@ import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.constant.SocketConstant;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.SocketEventVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgSearch;
@ -45,13 +45,13 @@ public class MsgService {
}
@UserAction("'添加消息:'+#msg.title")
public Result add(Msg msg) {
public R add(Msg msg) {
mapper.insert(msg);
return Result.success("添加成功", msg);
return R.success("添加成功", msg);
}
@UserAction("'修改消息:'+#msg.title")
public Result update(Msg msg) {
public R update(Msg msg) {
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
@ -69,13 +69,13 @@ public class MsgService {
.set(Msg::getRecipient, msg.getRecipient())
.eq(Msg::getId, msg.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
}
@UserAction("'发布消息:'+#msg.title")
public Result publish(Msg msg) {
public R publish(Msg msg) {
boolean isFirstCreate = msg.getId() == null;
Result result = isFirstCreate ? add(msg) : update(msg);
R result = isFirstCreate ? add(msg) : update(msg);
if (result.isSuccess()) {
result.setMsg("提交成功");
@ -109,7 +109,7 @@ public class MsgService {
}
@UserAction("'撤回消息:'+#msg.title")
public Result withdraw(Msg msg) {
public R withdraw(Msg msg) {
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
@ -120,12 +120,12 @@ public class MsgService {
.eq(Msg::getId, msg.getId())
.eq(Msg::getStatus, MsgConstant.STATUS_PUBLISHED)
);
return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试");
return rows > 0 ? R.success("撤回成功", msg) : R.fail("撤回失败,请刷新重试");
}
@UserAction("'删除消息:'+#title")
public Result del(int id, String title) {
public R del(int id, String title) {
int rows = mapper.deleteById(id);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
}

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.mapper.MsgStateMapper;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -29,7 +29,7 @@ public class MsgUserService {
return new PageResult<>(list);
}
public Result read(SysUser user, int id) {
public R read(SysUser user, int id) {
//如果该消息已读,直接返回
if (!msgStateMapper
.selectCount(
@ -38,7 +38,7 @@ public class MsgUserService {
.eq(MsgState::getMid, user.getId())
)
.equals(0)) {
return Result.success();
return R.success();
}
MsgState state = new MsgState();
@ -46,11 +46,11 @@ public class MsgUserService {
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
return Result.success(msgStateMapper.insert(state));
return R.success(msgStateMapper.insert(state));
}
@UserAction("'清空所有未读消息'")
public Result readAll(SysUser user) {
public R readAll(SysUser user) {
MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
@ -66,6 +66,6 @@ public class MsgUserService {
msgStateMapper.insert(state);
}
return Result.success();
return R.success();
}
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
@ -48,19 +48,19 @@ public class SysCategoryService {
@UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid")
public Result add(SysCategory category) {
public R add(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("添加失败," + err);
if (err != null) return R.fail("添加失败," + err);
int rows = mapper.insert(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id")
public Result update(SysCategory category) {
public R update(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("修改失败," + err);
if (err != null) return R.fail("修改失败," + err);
int rows = mapper.update(
null,
@ -70,21 +70,21 @@ public class SysCategoryService {
.set(SysCategory::getType, category.getType())
.eq(SysCategory::getId, category.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新后重试");
}
@UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id")
public Result del(SysCategory category) {
public R del(SysCategory category) {
Integer cid = category.getId();
if (hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点");
return R.fail("请先删除该分类下的子节点");
}
if (mapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除");
return R.fail("该分类已在业务中使用,不可删除");
}
int rows = mapper.deleteById(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
}
private String check(SysCategory category) {

@ -7,7 +7,7 @@ import cn.toesbieya.jxc.mapper.SysRegionMapper;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.entity.SysRegion;
import cn.toesbieya.jxc.model.vo.CustomerVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
@ -87,21 +87,21 @@ public class SysCustomerService {
}
@UserAction("'添加客户:'+ #customer.name")
public Result add(SysCustomer customer) {
public R add(SysCustomer customer) {
if (isNameExist(customer.getName(), null)) {
return Result.fail(String.format("添加失败,客户【%s】已存在", customer.getName()));
return R.fail(String.format("添加失败,客户【%s】已存在", customer.getName()));
}
int rows = customerMapper.insert(customer);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改客户:'+ #customer.name")
public Result update(SysCustomer customer) {
public R update(SysCustomer customer) {
Integer id = customer.getId();
String name = customer.getName();
if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,客户【%s】已存在", name));
return R.fail(String.format("修改失败,客户【%s】已存在", name));
}
int rows = customerMapper.update(
@ -116,17 +116,17 @@ public class SysCustomerService {
.set(SysCustomer::getRemark, customer.getRemark())
.eq(SysCustomer::getId, id)
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
}
@UserAction("删除客户:'+ #customer.name")
public Result del(SysCustomer customer) {
public R del(SysCustomer customer) {
int rows = customerMapper.delete(
Wrappers.lambdaQuery(SysCustomer.class)
.eq(SysCustomer::getId, customer.getId())
.eq(SysCustomer::getStatus, GeneralStatusEnum.DISABLED.getCode())
);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
private boolean isNameExist(String name, Integer id) {

@ -7,7 +7,7 @@ import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.util.Util;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
@ -86,27 +86,27 @@ public class SysDepartmentService {
}
@UserAction("'添加部门:'+#department.name")
public Result add(SysDepartment department) {
public R add(SysDepartment department) {
if (isNameExist(null, department.getPid(), department.getName())) {
return Result.fail("添加失败,存在名称相同的同级部门");
return R.fail("添加失败,存在名称相同的同级部门");
}
int rows = departmentMapper.insert(department);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改部门:'+#department.name")
public Result update(SysDepartment department) {
public R update(SysDepartment department) {
if (isNameExist(department.getId(), department.getPid(), department.getName())) {
return Result.fail("修改失败,存在名称相同的同级部门");
return R.fail("修改失败,存在名称相同的同级部门");
}
departmentMapper.updateById(department);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("'删除部门:'+#department.name")
public Result del(SysDepartment department) {
public R del(SysDepartment department) {
int rows = departmentMapper.deleteById(department.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
//判断同级节点中是否有相同的部门名称

@ -1,19 +1,20 @@
package cn.toesbieya.jxc.service.sys;
import cn.toesbieya.jxc.enumeration.ResourceTypeEnum;
import cn.toesbieya.jxc.mapper.SysResourceMapper;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.ResourceVo;
import cn.toesbieya.jxc.model.vo.R;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -21,11 +22,15 @@ public class SysResourceService {
@Resource
private SysResourceMapper mapper;
public List<ResourceVo> getAll() {
return completeNode(mapper.selectList(null));
public List<SysResource> getAll() {
return mapper.selectList(null);
}
public List<ResourceVo> getResourceByRole(SysRole role) {
public List<SysResource> getEnableApi() {
return getEnableResourceTree(null, i -> i.getType().equals(ResourceTypeEnum.API.getCode()));
}
public List<SysResource> getResourceByRole(SysRole role) {
if (role == null) {
return Collections.emptyList();
}
@ -36,54 +41,125 @@ public class SysResourceService {
return Collections.emptyList();
}
List<SysResource> list = mapper.selectList(
Wrappers.lambdaQuery(SysResource.class)
.inSql(SysResource::getId, ids)
);
return getEnableResourceTree(ids, i -> !i.getType().equals(ResourceTypeEnum.FOLDER.getCode()));
}
public R add(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("添加失败," + error);
}
return completeNode(list);
entity.setId(null);
transform(entity);
mapper.insert(entity);
return R.success("添加成功");
}
private List<ResourceVo> completeNode(List<SysResource> list) {
List<ResourceVo> result = new ArrayList<>(list.size());
HashMap<Integer, String> urlMap = new HashMap<>(128);
HashMap<Integer, String> nameMap = new HashMap<>(128);
public R update(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("修改失败," + error);
}
for (SysResource resource : list) {
ResourceVo vo = new ResourceVo(resource);
transform(entity);
Integer id = resource.getId();
String url = resource.getUrl();
String name = resource.getName();
mapper.updateById(entity);
//跳过顶级节点
if (resource.getPid().equals(0)) {
vo.setFullname(name);
return R.success("修改成功");
}
urlMap.put(id, url);
nameMap.put(id, name);
}
else {
Integer pid = resource.getPid();
public R del(int id) {
Integer childrenNum = mapper.selectCount(
Wrappers.lambdaQuery(SysResource.class)
.eq(SysResource::getPid, id)
);
if (childrenNum != null && childrenNum > 0) {
return R.fail("删除失败,该节点下已有其他子节点存在");
}
int row = mapper.deleteById(id);
return row > 0 ? R.success("删除成功") : R.fail("删除失败");
}
//获取父节点进行拼接
String parentUrl = urlMap.get(pid);
String parentName = nameMap.get(pid);
/**
* 获取路径经过叠加且以启用的resource列表
*
* @param ids resource的id集合逗号隔开传入null则返回全部
* @param predicate 额外的过滤条件传入null则不进行额外判断
*/
private List<SysResource> getEnableResourceTree(String ids, Predicate<SysResource> predicate) {
return mapper
.selectChildren(ids)
.stream()
.filter(r -> {
if (!r.isEnable() || predicate != null && !predicate.test(r)) {
return false;
}
String path = r.getPath();
int index = path.indexOf("//");
if (index != -1 && !path.startsWith("http")) {
//去掉'//'前拼接的父节点的path
r.setPath(path.substring(index + 1));
}
return true;
})
.collect(Collectors.toList());
}
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName);
//判断节点是否合法,不合法则返回错误信息
private String check(SysResource entity) {
Integer pid = entity.getPid();
Integer type = entity.getType();
String fullname = parentName + " - " + name;
boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
vo.setUrl(parentUrl + url);
vo.setFullname(fullname);
//根节点不能为数据接口
if (pid.equals(0)) {
return isApi ? "数据接口不能作为根节点" : null;
}
urlMap.put(id, vo.getUrl());
nameMap.put(id, fullname);
//校验父节点
SysResource parent = mapper.selectById(pid);
if (parent == null) {
return "父节点不存在,请刷新后重试";
}
Integer parentType = parent.getType();
//1.待添加的节点为数据接口且父节点必须为叶子菜单
if (isApi) {
if (!parentType.equals(ResourceTypeEnum.LEAF.getCode())) {
return "数据接口只能以页面菜单为父节点";
}
result.add(vo);
}
//2.非数据接口的节点,其父节点必须为聚合菜单
else if (!parentType.equals(ResourceTypeEnum.FOLDER.getCode())) {
return "菜单只能以聚合菜单为父节点";
}
return null;
}
return result;
//数据转换
private void transform(SysResource entity) {
Integer pid = entity.getPid();
Integer type = entity.getType();
boolean isFolder = type.equals(ResourceTypeEnum.FOLDER.getCode());
//能自定义component的只有叶子菜单
if (!type.equals(ResourceTypeEnum.LEAF.getCode())) {
//根节点的聚合菜单的组件只能为'Layout'
boolean isRootFolder = isFolder && pid.equals(0);
entity.setComponent(isRootFolder ? "Layout" : null);
}
//聚合菜单不能设置name
if (isFolder) {
entity.setName(null);
}
//数据接口不能设置meta
if (type.equals(ResourceTypeEnum.API.getCode())) {
entity.setMeta(null);
}
}
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.mapper.SysRoleMapper;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -57,21 +57,21 @@ public class SysRoleService {
}
@UserAction("'添加角色:'+#role.name")
public Result add(SysRole role) {
public R add(SysRole role) {
if (isNameExist(role.getName(), null)) {
return Result.fail("添加失败,角色名称重复");
return R.fail("添加失败,角色名称重复");
}
int rows = mapper.insert(role);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改角色:'+#role.name")
public Result update(SysRole role) {
public R update(SysRole role) {
Integer id = role.getId();
String name = role.getName();
if (isNameExist(name, id)) {
return Result.fail("修改失败,角色名称重复");
return R.fail("修改失败,角色名称重复");
}
mapper.update(
@ -84,17 +84,17 @@ public class SysRoleService {
.set(SysRole::getResourceId, role.getResourceId())
.eq(SysRole::getId, id)
);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("'删除角色:'+#role.name")
public Result del(SysRole role) {
public R del(SysRole role) {
int rows = mapper.delete(
Wrappers.lambdaQuery(SysRole.class)
.eq(SysRole::getId, role.getId())
.eq(SysRole::getStatus, GeneralStatusEnum.DISABLED.getCode())
);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
private boolean isNameExist(String name, Integer id) {

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.mapper.SysRegionMapper;
import cn.toesbieya.jxc.mapper.SysSupplierMapper;
import cn.toesbieya.jxc.model.entity.SysRegion;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.SupplierVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
@ -86,21 +86,21 @@ public class SysSupplierService {
}
@UserAction("'添加供应商:'+ #supplier.name")
public Result add(SysSupplier supplier) {
public R add(SysSupplier supplier) {
if (isNameExist(supplier.getName(), null)) {
return Result.fail(String.format("添加失败,供应商【%s】已存在", supplier.getName()));
return R.fail(String.format("添加失败,供应商【%s】已存在", supplier.getName()));
}
int rows = supplierMapper.insert(supplier);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
}
@UserAction("'修改供应商:'+ #supplier.name")
public Result update(SysSupplier supplier) {
public R update(SysSupplier supplier) {
Integer id = supplier.getId();
String name = supplier.getName();
if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,供应商【%s】已存在", name));
return R.fail(String.format("修改失败,供应商【%s】已存在", name));
}
supplierMapper.update(
@ -115,17 +115,17 @@ public class SysSupplierService {
.set(SysSupplier::getRemark, supplier.getRemark())
.eq(SysSupplier::getId, id)
);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("删除供应商:'+ #supplier.name")
public Result del(SysSupplier supplier) {
public R del(SysSupplier supplier) {
int rows = supplierMapper.delete(
Wrappers.lambdaQuery(SysSupplier.class)
.eq(SysSupplier::getId, supplier.getId())
.eq(SysSupplier::getStatus, GeneralStatusEnum.DISABLED.getCode())
);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新重试");
}
private boolean isNameExist(String name, Integer id) {

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.mapper.SysUserMapper;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
@ -108,9 +108,9 @@ public class SysUserService {
}
@UserAction("'添加用户:'+#user.name")
public Result add(SysUser user) {
public R add(SysUser user) {
if (isNameExist(user.getName(), null)) {
return Result.fail("该用户名称已存在");
return R.fail("该用户名称已存在");
}
user.setId(null);
@ -118,16 +118,16 @@ public class SysUserService {
user.setPwd(DEFAULT_PWD);
userMapper.insert(user);
return Result.success("添加成功");
return R.success("添加成功");
}
@UserAction("'修改用户:'+#user.name")
public Result update(SysUser user) {
public R update(SysUser user) {
Integer id = user.getId();
String name = user.getName();
if (isNameExist(name, id)) {
return Result.fail("该用户名称已存在");
return R.fail("该用户名称已存在");
}
userMapper.update(
@ -140,23 +140,23 @@ public class SysUserService {
.eq(SysUser::getId, id)
);
return Result.success("修改成功");
return R.success("修改成功");
}
@UserAction("'删除用户:'+#user.name")
@Transactional(rollbackFor = Exception.class)
public Result del(SysUser user) {
public R del(SysUser user) {
int rows = userMapper.delete(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getId, user.getId())
.eq(SysUser::isAdmin, 0)
);
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
}
@UserAction
public Result kick(List<SysUser> users) {
public R kick(List<SysUser> users) {
WebSocketUtil.sendLogoutEvent(
users
.stream()
@ -165,18 +165,18 @@ public class SysUserService {
"你已被强制下线,请重新登陆"
);
return Result.success("踢出成功");
return R.success("踢出成功");
}
@UserAction("'重置用户密码:'+#user.name")
public Result resetPwd(SysUser user) {
public R resetPwd(SysUser user) {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, DEFAULT_PWD)
.eq(SysUser::getId, user.getId())
);
return rows > 0 ? Result.success() : Result.fail("重置失败,未匹配到用户");
return rows > 0 ? R.success() : R.fail("重置失败,未匹配到用户");
}
//用户名重复时返回true

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.util;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.R;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.Head;
@ -49,11 +49,11 @@ public class ExcelUtil {
int size = list.size();
if (size == 0) {
WebUtil.responseJson(response, Result.fail("当前没有能导出的数据"));
WebUtil.responseJson(response, R.fail("当前没有能导出的数据"));
return;
}
else if (size < 10000) {
WebUtil.responseJson(response, Result.success(list));
WebUtil.responseJson(response, R.success(list));
return;
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save