增加菜单管理功能

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. 7
      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. 59
      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. 23
      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. 154
      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. 52
      java/local/src/main/java/cn/toesbieya/jxc/module/PermissionModule.java
  86. 56
      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. 152
      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; 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.entity.SysRole;
import cn.toesbieya.jxc.common.model.vo.ResourceVo;
import java.util.List; import java.util.List;
public interface ResourceApi { public interface ResourceApi {
//获取已启用的数据接口列表
List<SysResource> getEnableApi();
//获取角色的权限列表,包含admin权限 //获取角色的权限列表,包含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 static final long serialVersionUID = 1L;
private Integer id; private Integer id;
private Integer pid; private Integer pid;
private Integer type;
private String name; private String name;
private String url; private String path;
private String component;
private String meta;
private boolean admin = false; private boolean admin = false;
private Long totalRate; private boolean enable = true;
private Long ipRate;
} }

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

@ -1,17 +1,15 @@
package cn.toesbieya.jxc.gateway.config; 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.entity.SysResource;
import cn.toesbieya.jxc.common.model.vo.UserVo; import cn.toesbieya.jxc.common.model.vo.UserVo;
import lombok.extern.slf4j.Slf4j; 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.boot.CommandLineRunner;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -19,79 +17,50 @@ import java.util.concurrent.ConcurrentHashMap;
@Component @Component
@Slf4j @Slf4j
public class ResourceConfig implements CommandLineRunner { public class ResourceConfig implements CommandLineRunner {
private final static ConcurrentHashMap<String, Integer> urlMap = new ConcurrentHashMap<>(256); private final static ConcurrentHashMap<String, SysResource> urlMap = new ConcurrentHashMap<>(256);
private final static ConcurrentHashMap<String, Integer> adminUrlMap = new ConcurrentHashMap<>(16); private final static ConcurrentHashMap<String, SysResource> adminUrlMap = new ConcurrentHashMap<>(16);
private static JdbcTemplate jdbcTemplate; @Reference
private ResourceApi resourceApi;
public static boolean authority(UserVo user, String url) { public static boolean authority(UserVo user, String url) {
//超级管理员放行 boolean isAdmin = user.isAdmin();
if (user.isAdmin()) { SysResource r = adminUrlMap.get(url);
return true;
} //访问admin权限的资源时,需要用户是admin并且该权限已启用
//普通用户访问admin权限的资源时拦截 if (r != null) {
if (adminUrlMap.containsKey(url)) { return r.isEnable() && isAdmin;
return false;
}
//权限表中无记录的资源放行
if (!urlMap.containsKey(url)) {
return true;
} }
Set<Integer> ids = user.getResourceIds(); if (isAdmin) return true;
return ids != null && ids.contains(urlMap.get(url)); r = urlMap.get(url);
}
@Override //权限表中无记录的资源放行
public void run(String... args) throws Exception { if (r == null) return true;
init(false);
}
public static void init(boolean clear) { //未启用时拦截
Instant start = Instant.now(); if (!r.isEnable()) return false;
if (clear) { //根据用户权限判断
urlMap.clear(); Set<Integer> ids = user.getResourceIds();
adminUrlMap.clear(); return ids != null && ids.contains(r.getId());
} }
String sql = "select id,pid,url,admin from sys_resource"; @Override
public void run(String... args) {
List<SysResource> resources = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SysResource.class)); Instant start = Instant.now();
completeNode(resources); List<SysResource> resources = resourceApi.getEnableApi();
for (SysResource p : resources) { for (SysResource p : resources) {
String path = p.getPath();
if (p.isAdmin()) { 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(); Instant end = Instant.now();
log.info("权限资源加载完成,耗时:{}毫秒", ChronoUnit.MILLIS.between(start, end)); 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; 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.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
public class FallbackController { public class FallbackController {
@RequestMapping("fallback") @RequestMapping("fallback")
@ResponseBody @ResponseBody
public Result fallback() { public R fallback() {
return Result.fail("服务异常"); return R.fail("服务异常");
} }
} }

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

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

@ -7,9 +7,14 @@ spring:
config: config:
server-addr: 127.0.0.1:8848 server-addr: 127.0.0.1:8848
shared-configs: shared-configs:
- data-id: jxc-common-database.yml
- data-id: jxc-common-redis.yml - data-id: jxc-common-redis.yml
file-extension: yml file-extension: yml
discovery: 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; 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 cn.toesbieya.jxc.file.service.FileService;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -20,14 +20,14 @@ public class FileController {
@GetMapping("delete") @GetMapping("delete")
@ResponseBody @ResponseBody
public Result delete(@RequestParam String url) throws UnsupportedEncodingException { public R delete(@RequestParam String url) throws UnsupportedEncodingException {
service.delete(URLDecoder.decode(url, "utf-8")); service.delete(URLDecoder.decode(url, "utf-8"));
return Result.success("删除成功"); return R.success("删除成功");
} }
@GetMapping("getToken") @GetMapping("getToken")
@ResponseBody @ResponseBody
public Result getToken() { public R getToken() {
return Result.success(null, service.getToken()); return R.success(null, service.getToken());
} }
} }

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

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

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

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.web.common.util; 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 com.alibaba.fastjson.JSON;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
@ -11,7 +11,7 @@ import java.io.IOException;
import java.util.Objects; import java.util.Objects;
public class WebUtil { 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.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8"); response.setContentType("application/json; charset=utf-8");
response.getWriter().print(JSON.toJSONString(result)); 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.PasswordUpdateParam;
import cn.toesbieya.jxc.account.vo.RegisterParam; import cn.toesbieya.jxc.account.vo.RegisterParam;
import cn.toesbieya.jxc.common.model.entity.SysUser; 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.UserVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.web.common.util.IpUtil; import cn.toesbieya.jxc.web.common.util.IpUtil;
import cn.toesbieya.jxc.web.common.util.SessionUtil; import cn.toesbieya.jxc.web.common.util.SessionUtil;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -25,58 +25,58 @@ public class AccountController {
private AccountService service; private AccountService service;
@PostMapping("login") @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)); return service.login(param, IpUtil.getIp(request));
} }
@GetMapping("logout") @GetMapping("logout")
public Result logout(HttpServletRequest request) { public R logout(HttpServletRequest request) {
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
return service.logout(user, IpUtil.getIp(request)); return service.logout(user, IpUtil.getIp(request));
} }
@PostMapping("register") @PostMapping("register")
public Result register(@Valid @RequestBody RegisterParam param) { public R register(@Valid @RequestBody RegisterParam param) {
return service.register(param); return service.register(param);
} }
@PostMapping("updatePwd") @PostMapping("updatePwd")
public Result updatePwd(@RequestBody PasswordUpdateParam param) { public R updatePwd(@RequestBody PasswordUpdateParam param) {
SysUser user = SessionUtil.get(); SysUser user = SessionUtil.get();
param.setId(user.getId()); param.setId(user.getId());
String errMsg = validateUpdatePwdParam(param); String errMsg = validateUpdatePwdParam(param);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
return service.updatePwd(param); return service.updatePwd(param);
} }
@GetMapping("updateAvatar") @GetMapping("updateAvatar")
public Result updateAvatar(@RequestParam String key) throws UnsupportedEncodingException { public R updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(key)) return Result.fail("参数错误"); if (StringUtils.isEmpty(key)) return R.fail("参数错误");
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
return service.updateAvatar(user, URLDecoder.decode(key, "utf-8")); return service.updateAvatar(user, URLDecoder.decode(key, "utf-8"));
} }
@GetMapping("validate") @GetMapping("validate")
public Result validate(@RequestParam String pwd) { public R validate(@RequestParam String pwd) {
SysUser current = SessionUtil.get(); SysUser current = SessionUtil.get();
if (!pwd.equals(current.getPwd())) { if (!pwd.equals(current.getPwd())) {
return Result.fail("校验失败"); return R.fail("校验失败");
} }
return Result.success("校验通过"); return R.success("校验通过");
} }
@GetMapping("checkName") @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)) { 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) { 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.ResourceApi;
import cn.toesbieya.jxc.api.system.RoleApi; import cn.toesbieya.jxc.api.system.RoleApi;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum; 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.RecLoginHistory;
import cn.toesbieya.jxc.common.model.entity.SysResource;
import cn.toesbieya.jxc.common.model.entity.SysRole; import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser; import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo; import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.ResourceVo; import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.UserVo; import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.SessionUtil; import cn.toesbieya.jxc.common.util.SessionUtil;
import cn.toesbieya.jxc.web.common.annoation.TimeCost; import cn.toesbieya.jxc.web.common.annoation.TimeCost;
@ -48,7 +49,7 @@ public class AccountService {
public DepartmentApi departmentApi; public DepartmentApi departmentApi;
@TimeCost @TimeCost
public Result login(LoginParam param, String ip) { public R login(LoginParam param, String ip) {
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
SysUser user = userMapper.selectOne( SysUser user = userMapper.selectOne(
@ -58,14 +59,14 @@ public class AccountService {
); );
if (user == null) { if (user == null) {
return Result.fail("用户名或密码错误"); return R.fail("用户名或密码错误");
} }
if (user.getStatus() == GeneralStatusEnum.DISABLED.getCode()) { if (user.getStatus().equals(GeneralStatusEnum.DISABLED.getCode())) {
return Result.fail("该用户已被禁用,请联系管理员"); return R.fail("该用户已被禁用,请联系管理员");
} }
Integer roleId = user.getRole(); Integer roleId = user.getRole();
if (!user.isAdmin() && roleId == null) { if (!user.isAdmin() && roleId == null) {
return Result.fail("该用户尚未被分配角色,请联系管理员"); return R.fail("该用户尚未被分配角色,请联系管理员");
} }
//设置token //设置token
@ -79,10 +80,11 @@ public class AccountService {
LoginSuccessInfo info = new LoginSuccessInfo(user); LoginSuccessInfo info = new LoginSuccessInfo(user);
info.setToken(token); info.setToken(token);
Map<String, Integer> userResourcesUrlMap = null; Map<String, Integer> userResources = null;
Set<Integer> userResourcesIdSet = null; Set<Integer> userResourcesIdSet = null;
if (roleId != null) { //为非admin的用户设置权限
if (!user.isAdmin()) {
//获取用户的角色 //获取用户的角色
SysRole role = roleApi.getRoleById(roleId); SysRole role = roleApi.getRoleById(roleId);
@ -93,18 +95,21 @@ public class AccountService {
info.setRoleName(roleName); info.setRoleName(roleName);
//获取用户的权限列表 //获取用户的权限列表
List<ResourceVo> resources = resourceApi.getResourceByRole(role); List<SysResource> resources = resourceApi.getResourceByRole(role);
userResourcesUrlMap = new HashMap<>(128); userResources = new HashMap<>(resources.size());
userResourcesIdSet = new HashSet<>(128); userResourcesIdSet = new HashSet<>(resources.size());
for (ResourceVo resource : resources) { for (SysResource r : resources) {
Integer resourceId = resource.getId(); if (r.isAdmin()) continue;
userResourcesUrlMap.put(resource.getUrl(), resourceId); Integer resourceId = r.getId();
userResources.put(r.getPath(), r.getId());
if (r.getType().equals(ResourceTypeEnum.API.getCode())) {
userResourcesIdSet.add(resourceId); userResourcesIdSet.add(resourceId);
} }
} }
} }
}
//获取用户部门 //获取用户部门
Integer deptId = user.getDept(); Integer deptId = user.getDept();
@ -125,7 +130,7 @@ public class AccountService {
userVo.setResourceIds(userResourcesIdSet); userVo.setResourceIds(userResourcesIdSet);
//返回给前端的用户权限表 //返回给前端的用户权限表
info.setResources(userResourcesUrlMap); info.setResources(userResources);
//用户信息插入redis //用户信息插入redis
SessionUtil.save(userVo); SessionUtil.save(userVo);
@ -142,10 +147,10 @@ public class AccountService {
.build() .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) { if (user != null) {
recordApi.insertLoginHistory( recordApi.insertLoginHistory(
RecLoginHistory RecLoginHistory
@ -160,14 +165,14 @@ public class AccountService {
SessionUtil.remove(user.getToken()); SessionUtil.remove(user.getToken());
} }
return Result.success("登出成功"); return R.success("登出成功");
} }
public Result register(RegisterParam param) { public R register(RegisterParam param) {
String name = param.getUsername(); String name = param.getUsername();
if (checkName(name, null)) { if (checkName(name, null)) {
return Result.fail("该用户名称已存在"); return R.fail("该用户名称已存在");
} }
SysUser user = new SysUser(); SysUser user = new SysUser();
@ -180,11 +185,11 @@ public class AccountService {
userMapper.insert(user); userMapper.insert(user);
return Result.success("注册成功"); return R.success("注册成功");
} }
@UserAction("'修改密码'") @UserAction("'修改密码'")
public Result updatePwd(PasswordUpdateParam param) { public R updatePwd(PasswordUpdateParam param) {
int rows = userMapper.update( int rows = userMapper.update(
null, null,
Wrappers.lambdaUpdate(SysUser.class) Wrappers.lambdaUpdate(SysUser.class)
@ -192,11 +197,11 @@ public class AccountService {
.eq(SysUser::getId, param.getId()) .eq(SysUser::getId, param.getId())
.eq(SysUser::getPwd, param.getOldPwd()) .eq(SysUser::getPwd, param.getOldPwd())
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请检查原密码是否正确");
} }
@UserAction("'修改头像'") @UserAction("'修改头像'")
public Result updateAvatar(UserVo user, String avatar) { public R updateAvatar(UserVo user, String avatar) {
int rows = userMapper.update( int rows = userMapper.update(
null, null,
Wrappers.lambdaUpdate(SysUser.class) Wrappers.lambdaUpdate(SysUser.class)
@ -212,13 +217,13 @@ public class AccountService {
} }
user.setAvatar(avatar); user.setAvatar(avatar);
SessionUtil.save(user); SessionUtil.save(user);
return Result.success("上传头像成功"); return R.success("上传头像成功");
} }
//否则删除此次上传至云的头像 //否则删除此次上传至云的头像
fileApi.delete(avatar); fileApi.delete(avatar);
return Result.fail("上传头像失败"); return R.fail("上传头像失败");
} }
//用户名重复时返回true //用户名重复时返回true

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.doc.controller; 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.model.vo.DocHistorySearch;
import cn.toesbieya.jxc.doc.service.DocHistoryService; import cn.toesbieya.jxc.doc.service.DocHistoryService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -14,7 +14,7 @@ public class DocHistoryController {
private DocHistoryService service; private DocHistoryService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody DocHistorySearch vo) { public R search(@RequestBody DocHistorySearch vo) {
return Result.success(service.search(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.BizPurchaseInbound;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseInboundSub; 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.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate; import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate;
@ -26,21 +26,21 @@ public class PurchaseInboundController {
private PurchaseInboundService service; private PurchaseInboundService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
PurchaseInboundVo inbound = service.getById(id); PurchaseInboundVo inbound = service.getById(id);
return inbound == null ? Result.fail("获取单据信息失败") : Result.success(inbound); return inbound == null ? R.fail("获取单据信息失败") : R.success(inbound);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
public Result getSubById(@RequestParam String id) { public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return Result.success(service.getSubById(id)); return R.success(service.getSubById(id));
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody PurchaseInboundSearch vo) { public R search(@RequestBody PurchaseInboundSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("export") @PostMapping("export")
@ -49,9 +49,9 @@ public class PurchaseInboundController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody PurchaseInboundVo vo) { public R add(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
@ -64,21 +64,21 @@ public class PurchaseInboundController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody PurchaseInboundVo vo) { public R update(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); 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); return service.update(vo);
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody PurchaseInboundVo vo) { public R commit(@RequestBody PurchaseInboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo); 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()); vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) { if (isFirst) {
@ -91,24 +91,24 @@ public class PurchaseInboundController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) { public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) { public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误"); if (StringUtils.isEmpty(vo.getPid())) return R.fail("参数错误");
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) { public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }
@GetMapping("del") @GetMapping("del")
public Result del(@RequestParam String id) { public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id); 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.BizPurchaseOrder;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub; 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.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocFinishEnum; import cn.toesbieya.jxc.doc.enumeration.DocFinishEnum;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
@ -27,25 +27,25 @@ public class PurchaseOrderController {
private PurchaseOrderService service; private PurchaseOrderService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
PurchaseOrderVo vo = service.getById(id); PurchaseOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo); return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
public Result getSubById(@RequestParam String id) { public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(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") @PostMapping("search")
public Result search(@RequestBody PurchaseOrderSearch vo) { public R search(@RequestBody PurchaseOrderSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("export") @PostMapping("export")
@ -54,15 +54,15 @@ public class PurchaseOrderController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody PurchaseOrderVo vo) { public R add(@RequestBody PurchaseOrderVo vo) {
if (vo.getSid() == null if (vo.getSid() == null
|| StringUtils.isEmpty(vo.getSname()) || StringUtils.isEmpty(vo.getSname())
|| vo.getTotal() == null) { || vo.getTotal() == null) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
@ -76,21 +76,21 @@ public class PurchaseOrderController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody PurchaseOrderVo vo) { public R update(@RequestBody PurchaseOrderVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); 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); return service.update(vo);
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody PurchaseOrderVo vo) { public R commit(@RequestBody PurchaseOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo); 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()); vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -105,23 +105,23 @@ public class PurchaseOrderController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) { public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) { public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) { public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }
@GetMapping("del") @GetMapping("del")
public Result del(@RequestParam String id) { public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id); 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.BizSellOrder;
import cn.toesbieya.jxc.common.model.entity.BizSellOrderSub; 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.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate; import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate;
@ -26,21 +26,21 @@ public class SellOrderController {
private SellOrderService service; private SellOrderService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
SellOrderVo vo = service.getById(id); SellOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo); return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
public Result getSubById(@RequestParam String id) { public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return Result.success(service.getSubById(id)); return R.success(service.getSubById(id));
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody SellOrderSearch vo) { public R search(@RequestBody SellOrderSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("export") @PostMapping("export")
@ -49,14 +49,14 @@ public class SellOrderController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SellOrderVo vo) { public R add(@RequestBody SellOrderVo vo) {
if (vo.getCustomerId() == null if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName()) || StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) { || vo.getTotal() == null) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
@ -69,21 +69,21 @@ public class SellOrderController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SellOrderVo vo) { public R update(@RequestBody SellOrderVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); 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); return service.update(vo);
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody SellOrderVo vo) { public R commit(@RequestBody SellOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo); 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()); vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -99,23 +99,23 @@ public class SellOrderController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) { public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) { public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) { public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }
@GetMapping("del") @GetMapping("del")
public Result del(@RequestParam String id) { public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id); 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.BizSellOutbound;
import cn.toesbieya.jxc.common.model.entity.BizSellOutboundSub; 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.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate; import cn.toesbieya.jxc.doc.model.vo.DocStatusUpdate;
@ -26,21 +26,21 @@ public class SellOutboundController {
private SellOutboundService service; private SellOutboundService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
SellOutboundVo vo = service.getById(id); SellOutboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo); return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
public Result getSubById(@RequestParam String id) { public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return Result.success(service.getSubById(id)); return R.success(service.getSubById(id));
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody SellOutboundSearch vo) { public R search(@RequestBody SellOutboundSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("export") @PostMapping("export")
@ -49,9 +49,9 @@ public class SellOutboundController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SellOutboundVo vo) { public R add(@RequestBody SellOutboundVo vo) {
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
@ -64,21 +64,21 @@ public class SellOutboundController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SellOutboundVo vo) { public R update(@RequestBody SellOutboundVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); 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); return service.update(vo);
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody SellOutboundVo vo) { public R commit(@RequestBody SellOutboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo); 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()); vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) { if (isFirst) {
@ -92,26 +92,26 @@ public class SellOutboundController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) { public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) { public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) { if (StringUtils.isEmpty(vo.getPid())) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) { public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }
@GetMapping("del") @GetMapping("del")
public Result del(@RequestParam String id) { public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id); return service.del(id);
} }

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.api.RecordApi;
import cn.toesbieya.jxc.api.StockApi; import cn.toesbieya.jxc.api.StockApi;
import cn.toesbieya.jxc.common.exception.JsonResultException; import cn.toesbieya.jxc.common.exception.JsonResultException;
import cn.toesbieya.jxc.common.model.entity.*; 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.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.Util; import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.doc.enumeration.DocFinishEnum; import cn.toesbieya.jxc.doc.enumeration.DocFinishEnum;
@ -86,23 +86,23 @@ public class PurchaseInboundService {
@UserAction("'添加采购入库单'") @UserAction("'添加采购入库单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(PurchaseInboundVo doc) { public R add(PurchaseInboundVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改采购入库单'+#doc.id") @UserAction("'修改采购入库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(PurchaseInboundVo doc) { public R update(PurchaseInboundVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交采购入库单'+#doc.id") @UserAction("'提交采购入库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseInboundVo doc) { public R commit(PurchaseInboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -123,12 +123,12 @@ public class PurchaseInboundService {
@UserAction("'撤回采购入库单'+#vo.id") @UserAction("'撤回采购入库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -144,13 +144,13 @@ public class PurchaseInboundService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过采购入库单'+#vo.id") @UserAction("'通过采购入库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"}) @Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
String pid = vo.getPid(); String pid = vo.getPid();
@ -159,7 +159,7 @@ public class PurchaseInboundService {
//检查采购订单状态、入库商品是否符合订单要求 //检查采购订单状态、入库商品是否符合订单要求
List<BizPurchaseInboundSub> subList = getSubById(id); List<BizPurchaseInboundSub> subList = getSubById(id);
String err = checkOrder(pid, subList); String err = checkOrder(pid, subList);
if (err != null) return Result.fail("通过失败," + err); if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update( if (1 > mainMapper.update(
null, null,
@ -171,7 +171,7 @@ public class PurchaseInboundService {
.eq(BizPurchaseInbound::getId, id) .eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
//修改采购订单完成情况、子表的未入库数量 //修改采购订单完成情况、子表的未入库数量
@ -239,18 +239,18 @@ public class PurchaseInboundService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回采购入库单'+#vo.id") @UserAction("'驳回采购入库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -266,34 +266,34 @@ public class PurchaseInboundService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除采购入库单'+#id") @UserAction("'删除采购入库单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recordApi.delAttachmentByPid(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(); List<BizPurchaseInboundSub> subList = doc.getData();
String err = checkOrder(doc.getPid(), subList); 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"); String id = DocUtil.getDocId("CGRK");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -313,15 +313,15 @@ public class PurchaseInboundService {
} }
recordApi.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = checkOrder(doc.getPid(), doc.getData()); 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( mainMapper.update(
@ -348,7 +348,7 @@ public class PurchaseInboundService {
} }
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.BizPurchaseOrder;
import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub; import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.common.model.entity.RecAttachment; 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.common.model.vo.UserVo;
import cn.toesbieya.jxc.doc.enumeration.DocHistoryEnum; import cn.toesbieya.jxc.doc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum; import cn.toesbieya.jxc.doc.enumeration.DocStatusEnum;
@ -78,23 +78,23 @@ public class PurchaseOrderService {
@UserAction("'添加采购订单'") @UserAction("'添加采购订单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(PurchaseOrderVo doc) { public R add(PurchaseOrderVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改采购订单'+#doc.id") @UserAction("'修改采购订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(PurchaseOrderVo doc) { public R update(PurchaseOrderVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交采购订单'+#doc.id") @UserAction("'提交采购订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseOrderVo doc) { public R commit(PurchaseOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -115,12 +115,12 @@ public class PurchaseOrderService {
@UserAction("'撤回采购订单'+#vo.id") @UserAction("'撤回采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -136,13 +136,13 @@ public class PurchaseOrderService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过采购订单'+#vo.id") @UserAction("'通过采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
@ -157,7 +157,7 @@ public class PurchaseOrderService {
.eq(BizPurchaseOrder::getId, id) .eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -173,18 +173,18 @@ public class PurchaseOrderService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回采购订单'+#vo.id") @UserAction("'驳回采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -200,29 +200,29 @@ public class PurchaseOrderService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除采购订单'+#id") @UserAction("'删除采购订单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recordApi.delAttachmentByPid(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"); String id = DocUtil.getDocId("CGDD");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -248,14 +248,14 @@ public class PurchaseOrderService {
} }
recordApi.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err != null) return Result.fail(err); if (err != null) return R.fail(err);
//更新主表 //更新主表
mainMapper.update( mainMapper.update(
@ -286,7 +286,7 @@ public class PurchaseOrderService {
} }
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.RecordApi;
import cn.toesbieya.jxc.api.StockApi; import cn.toesbieya.jxc.api.StockApi;
import cn.toesbieya.jxc.common.model.entity.*; 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.StockSearch;
import cn.toesbieya.jxc.common.model.vo.StockSearchResult; import cn.toesbieya.jxc.common.model.vo.StockSearchResult;
import cn.toesbieya.jxc.common.model.vo.UserVo; import cn.toesbieya.jxc.common.model.vo.UserVo;
@ -81,23 +81,23 @@ public class SellOrderService {
@UserAction("'添加销售订单'") @UserAction("'添加销售订单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(SellOrderVo doc) { public R add(SellOrderVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改销售订单'+#doc.id") @UserAction("'修改销售订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(SellOrderVo doc) { public R update(SellOrderVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交销售订单'+#doc.id") @UserAction("'提交销售订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(SellOrderVo doc) { public R commit(SellOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -118,12 +118,12 @@ public class SellOrderService {
@UserAction("'撤回销售订单'+#vo.id") @UserAction("'撤回销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -139,13 +139,13 @@ public class SellOrderService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过销售订单'+#vo.id") @UserAction("'通过销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
@ -160,7 +160,7 @@ public class SellOrderService {
.eq(BizSellOrder::getId, id) .eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -176,18 +176,18 @@ public class SellOrderService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回销售订单'+#vo.id") @UserAction("'驳回销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -203,32 +203,32 @@ public class SellOrderService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除销售订单'+#id") @UserAction("'删除销售订单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recordApi.delAttachmentByPid(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()); String err = checkStock(doc.getData());
if (err != null) return Result.fail(err); if (err != null) return R.fail(err);
String id = DocUtil.getDocId("XSDD"); String id = DocUtil.getDocId("XSDD");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -253,15 +253,15 @@ public class SellOrderService {
} }
recordApi.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = checkStock(doc.getData()); if (err == null) err = checkStock(doc.getData());
if (err != null) return Result.fail(err); if (err != null) return R.fail(err);
//更新主表 //更新主表
mainMapper.update( mainMapper.update(
@ -292,7 +292,7 @@ public class SellOrderService {
} }
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.api.StockApi;
import cn.toesbieya.jxc.common.exception.JsonResultException; import cn.toesbieya.jxc.common.exception.JsonResultException;
import cn.toesbieya.jxc.common.model.entity.*; 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.StockOutboundVo;
import cn.toesbieya.jxc.common.model.vo.UserVo; import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.Util; import cn.toesbieya.jxc.common.util.Util;
@ -89,23 +89,23 @@ public class SellOutboundService {
@UserAction("'添加销售出库单'") @UserAction("'添加销售出库单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(SellOutboundVo doc) { public R add(SellOutboundVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改销售出库单'+#doc.id") @UserAction("'修改销售出库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(SellOutboundVo doc) { public R update(SellOutboundVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交销售出库单'+#doc.id") @UserAction("'提交销售出库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(SellOutboundVo doc) { public R commit(SellOutboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -126,12 +126,12 @@ public class SellOutboundService {
@UserAction("'撤回销售出库单'+#vo.id") @UserAction("'撤回销售出库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -147,13 +147,13 @@ public class SellOutboundService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过销售出库单'+#vo.id") @UserAction("'通过销售出库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"}) @Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
String pid = vo.getPid(); String pid = vo.getPid();
@ -161,7 +161,7 @@ public class SellOutboundService {
List<BizSellOutboundSub> subList = getSubById(vo.getId()); List<BizSellOutboundSub> subList = getSubById(vo.getId());
String err = check(vo.getPid(), subList); String err = check(vo.getPid(), subList);
if (err != null) return Result.fail("通过失败," + err); if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update( if (1 > mainMapper.update(
null, null,
@ -173,7 +173,7 @@ public class SellOutboundService {
.eq(BizSellOutbound::getId, id) .eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
//按分类分组统计出库数量 //按分类分组统计出库数量
@ -244,18 +244,18 @@ public class SellOutboundService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回销售出库单'+#vo.id") @UserAction("'驳回销售出库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -271,33 +271,33 @@ public class SellOutboundService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除销售出库单'+#id") @UserAction("'删除销售出库单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recordApi.delAttachmentByPid(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(); List<BizSellOutboundSub> subList = doc.getData();
String err = check(doc.getPid(), subList); 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"); String id = DocUtil.getDocId("XSCK");
if (StringUtils.isEmpty(id)) return Result.fail("获取单号失败"); if (StringUtils.isEmpty(id)) return R.fail("获取单号失败");
doc.setId(id); doc.setId(id);
@ -316,15 +316,15 @@ public class SellOutboundService {
} }
recordApi.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = check(doc.getPid(), doc.getData()); 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( mainMapper.update(
@ -351,7 +351,7 @@ public class SellOutboundService {
} }
recordApi.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.Msg;
import cn.toesbieya.jxc.common.model.entity.SysUser; 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.common.model.vo.UserVo;
import cn.toesbieya.jxc.message.constant.MsgConstant; import cn.toesbieya.jxc.message.constant.MsgConstant;
import cn.toesbieya.jxc.message.model.vo.MsgSearch; import cn.toesbieya.jxc.message.model.vo.MsgSearch;
@ -20,14 +20,14 @@ public class ManageController {
private ManageService service; private ManageService service;
@RequestMapping("search") @RequestMapping("search")
public Result search(@RequestBody MsgSearch vo) { public R search(@RequestBody MsgSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody Msg msg) { public R add(@RequestBody Msg msg) {
String errMsg = validateAdd(msg); String errMsg = validateAdd(msg);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
msg.setId(null); msg.setId(null);
SysUser user = SessionUtil.get(); SysUser user = SessionUtil.get();
@ -37,23 +37,23 @@ public class ManageController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody Msg msg) { public R update(@RequestBody Msg msg) {
String errMsg = validateAdd(msg); String errMsg = validateAdd(msg);
if (errMsg == null) errMsg = validateUpdate(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); return service.update(msg);
} }
@PostMapping("publish") @PostMapping("publish")
public Result publish(@RequestBody Msg msg) { public R publish(@RequestBody Msg msg) {
boolean isFirstCreate = msg.getId() == null; boolean isFirstCreate = msg.getId() == null;
String errMsg = validateAdd(msg); String errMsg = validateAdd(msg);
if (errMsg == null && !isFirstCreate) { if (errMsg == null && !isFirstCreate) {
errMsg = validateUpdate(msg); errMsg = validateUpdate(msg);
} }
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
SysUser user = SessionUtil.get(); SysUser user = SessionUtil.get();
if (isFirstCreate) setAddInfo(user, msg); if (isFirstCreate) setAddInfo(user, msg);
@ -67,8 +67,8 @@ public class ManageController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody Msg msg) { public R withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return Result.fail("参数错误"); if (msg.getId() == null) return R.fail("参数错误");
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
@ -80,7 +80,7 @@ public class ManageController {
} }
@GetMapping("del") @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); return service.del(id, title);
} }

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.message.controller; package cn.toesbieya.jxc.message.controller;
import cn.toesbieya.jxc.common.model.entity.SysUser; 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.model.vo.MsgPersonalSearch;
import cn.toesbieya.jxc.message.service.UserService; import cn.toesbieya.jxc.message.service.UserService;
import cn.toesbieya.jxc.web.common.util.SessionUtil; import cn.toesbieya.jxc.web.common.util.SessionUtil;
@ -16,20 +16,20 @@ public class UserController {
private UserService service; private UserService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody MsgPersonalSearch vo) { public R search(@RequestBody MsgPersonalSearch vo) {
SysUser user = SessionUtil.get(); SysUser user = SessionUtil.get();
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setCtime(user.getCtime()); vo.setCtime(user.getCtime());
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@GetMapping("read") @GetMapping("read")
public Result read(@RequestParam Integer id) { public R read(@RequestParam Integer id) {
return service.read(SessionUtil.get(), id); return service.read(SessionUtil.get(), id);
} }
@GetMapping("readAll") @GetMapping("readAll")
public Result readAll() { public R readAll() {
return service.readAll(SessionUtil.get()); 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.constant.SocketConstant;
import cn.toesbieya.jxc.common.model.entity.Msg; 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.model.vo.SocketEventVo;
import cn.toesbieya.jxc.common.util.WebSocketUtil; import cn.toesbieya.jxc.common.util.WebSocketUtil;
import cn.toesbieya.jxc.message.constant.MsgConstant; import cn.toesbieya.jxc.message.constant.MsgConstant;
@ -43,13 +43,13 @@ public class ManageService {
} }
@UserAction("'添加消息:'+#msg.title") @UserAction("'添加消息:'+#msg.title")
public Result add(Msg msg) { public R add(Msg msg) {
mapper.insert(msg); mapper.insert(msg);
return Result.success("添加成功", msg); return R.success("添加成功", msg);
} }
@UserAction("'修改消息:'+#msg.title") @UserAction("'修改消息:'+#msg.title")
public Result update(Msg msg) { public R update(Msg msg) {
int rows = mapper.update( int rows = mapper.update(
null, null,
Wrappers.lambdaUpdate(Msg.class) Wrappers.lambdaUpdate(Msg.class)
@ -67,13 +67,13 @@ public class ManageService {
.set(Msg::getRecipient, msg.getRecipient()) .set(Msg::getRecipient, msg.getRecipient())
.eq(Msg::getId, msg.getId()) .eq(Msg::getId, msg.getId())
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
} }
@UserAction("'发布消息:'+#msg.title") @UserAction("'发布消息:'+#msg.title")
public Result publish(Msg msg) { public R publish(Msg msg) {
boolean isFirstCreate = msg.getId() == null; boolean isFirstCreate = msg.getId() == null;
Result result = isFirstCreate ? add(msg) : update(msg); R result = isFirstCreate ? add(msg) : update(msg);
if (result.isSuccess()) { if (result.isSuccess()) {
result.setMsg("提交成功"); result.setMsg("提交成功");
@ -107,7 +107,7 @@ public class ManageService {
} }
@UserAction("'撤回消息:'+#msg.title") @UserAction("'撤回消息:'+#msg.title")
public Result withdraw(Msg msg) { public R withdraw(Msg msg) {
int rows = mapper.update( int rows = mapper.update(
null, null,
Wrappers.lambdaUpdate(Msg.class) Wrappers.lambdaUpdate(Msg.class)
@ -118,12 +118,12 @@ public class ManageService {
.eq(Msg::getId, msg.getId()) .eq(Msg::getId, msg.getId())
.eq(Msg::getStatus, MsgConstant.STATUS_PUBLISHED) .eq(Msg::getStatus, MsgConstant.STATUS_PUBLISHED)
); );
return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试"); return rows > 0 ? R.success("撤回成功", msg) : R.fail("撤回失败,请刷新重试");
} }
@UserAction("'删除消息:'+#title") @UserAction("'删除消息:'+#title")
public Result del(int id, String title) { public R del(int id, String title) {
int rows = mapper.deleteById(id); 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.Msg;
import cn.toesbieya.jxc.common.model.entity.MsgState; import cn.toesbieya.jxc.common.model.entity.MsgState;
import cn.toesbieya.jxc.common.model.entity.SysUser; 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.MsgMapper;
import cn.toesbieya.jxc.message.mapper.MsgStateMapper; import cn.toesbieya.jxc.message.mapper.MsgStateMapper;
import cn.toesbieya.jxc.message.model.vo.MsgPersonalSearch; import cn.toesbieya.jxc.message.model.vo.MsgPersonalSearch;
@ -29,7 +29,7 @@ public class UserService {
return new PageResult<>(list); return new PageResult<>(list);
} }
public Result read(SysUser user, int id) { public R read(SysUser user, int id) {
//如果该消息已读,直接返回 //如果该消息已读,直接返回
if (!msgStateMapper if (!msgStateMapper
.selectCount( .selectCount(
@ -38,7 +38,7 @@ public class UserService {
.eq(MsgState::getMid, user.getId()) .eq(MsgState::getMid, user.getId())
) )
.equals(0)) { .equals(0)) {
return Result.success(); return R.success();
} }
MsgState state = new MsgState(); MsgState state = new MsgState();
@ -46,11 +46,11 @@ public class UserService {
state.setUid(user.getId()); state.setUid(user.getId());
state.setTime(System.currentTimeMillis()); state.setTime(System.currentTimeMillis());
return Result.success(msgStateMapper.insert(state)); return R.success(msgStateMapper.insert(state));
} }
@UserAction("'清空所有未读消息'") @UserAction("'清空所有未读消息'")
public Result readAll(SysUser user) { public R readAll(SysUser user) {
MsgPersonalSearch vo = new MsgPersonalSearch(); MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setCtime(user.getCtime()); vo.setCtime(user.getCtime());
@ -66,6 +66,6 @@ public class UserService {
msgStateMapper.insert(state); msgStateMapper.insert(state);
} }
return Result.success(); return R.success();
} }
} }

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

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

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

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

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

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.controller; package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysResource; 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 cn.toesbieya.jxc.system.service.ResourceService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -14,17 +14,22 @@ public class ResourceController {
private ResourceService service; private ResourceService service;
@GetMapping("getAll") @GetMapping("getAll")
public Result getAll() { public R getAll() {
return Result.success(service.getAll()); return R.success(service.getAll());
}
@PostMapping("add")
public R add(@RequestBody SysResource entity) {
return service.add(entity);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysResource resource) { public R update(@RequestBody SysResource entity) {
if (resource.getId() == null return service.update(entity);
|| resource.getTotalRate() == null
|| resource.getIpRate() == null) {
return Result.fail("参数错误");
} }
return service.update(resource);
@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.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser; 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.model.vo.RoleSearch;
import cn.toesbieya.jxc.system.service.RoleService; import cn.toesbieya.jxc.system.service.RoleService;
import cn.toesbieya.jxc.web.common.util.SessionUtil; import cn.toesbieya.jxc.web.common.util.SessionUtil;
@ -18,20 +18,20 @@ public class RoleController {
private RoleService service; private RoleService service;
@GetMapping("get") @GetMapping("get")
public Result get() { public R get() {
return Result.success(service.get()); return R.success(service.get());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody RoleSearch vo) { public R search(@RequestBody RoleSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysRole role) { public R add(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName()) if (StringUtils.isEmpty(role.getName())
|| role.getStatus() == null) { || role.getStatus() == null) {
return Result.fail("添加失败,参数错误"); return R.fail("添加失败,参数错误");
} }
SysUser user = SessionUtil.get(); SysUser user = SessionUtil.get();
@ -45,20 +45,20 @@ public class RoleController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysRole role) { public R update(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName()) if (StringUtils.isEmpty(role.getName())
|| role.getId() == null || role.getId() == null
|| role.getStatus() == null) { || role.getStatus() == null) {
return Result.fail("修改失败,参数错误"); return R.fail("修改失败,参数错误");
} }
return service.update(role); return service.update(role);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysRole role) { public R del(@RequestBody SysRole role) {
if (role.getId() == null) { if (role.getId() == null) {
return Result.fail("删除失败,参数错误"); return R.fail("删除失败,参数错误");
} }
return service.del(role); return service.del(role);

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.controller; package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.model.entity.SysSupplier; 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.model.vo.SupplierSearch;
import cn.toesbieya.jxc.system.service.SupplierService; import cn.toesbieya.jxc.system.service.SupplierService;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -16,19 +16,19 @@ public class SupplierController {
private SupplierService service; private SupplierService service;
@GetMapping("getLimitRegion") @GetMapping("getLimitRegion")
public Result getLimitRegion() { public R getLimitRegion() {
return Result.success(service.getLimitRegion()); return R.success(service.getLimitRegion());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody SupplierSearch vo) { public R search(@RequestBody SupplierSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysSupplier supplier) { public R add(@RequestBody SysSupplier supplier) {
String errMsg = validateCreateParam(supplier); String errMsg = validateCreateParam(supplier);
if (errMsg != null) return Result.fail("创建失败," + errMsg); if (errMsg != null) return R.fail("创建失败," + errMsg);
supplier.setId(null); supplier.setId(null);
supplier.setCtime(System.currentTimeMillis()); supplier.setCtime(System.currentTimeMillis());
@ -36,14 +36,14 @@ public class SupplierController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysSupplier supplier) { public R update(@RequestBody SysSupplier supplier) {
String errMsg = validateUpdateParam(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") @PostMapping("del")
public Result del(@RequestBody SysSupplier supplier) { public R del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return Result.fail("删除失败,参数错误"); if (supplier.getId() == null) return R.fail("删除失败,参数错误");
return service.del(supplier); 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.RecUserAction;
import cn.toesbieya.jxc.common.model.entity.SysUser; 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.model.vo.UserSearch;
import cn.toesbieya.jxc.system.service.UserService; import cn.toesbieya.jxc.system.service.UserService;
import cn.toesbieya.jxc.web.common.util.ThreadUtil; import cn.toesbieya.jxc.web.common.util.ThreadUtil;
@ -23,40 +23,40 @@ public class UserController {
private UserService service; private UserService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody UserSearch vo) { public R search(@RequestBody UserSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysUser user) { public R add(@RequestBody SysUser user) {
String errMsg = validateUserCreateParam(user); String errMsg = validateUserCreateParam(user);
if (errMsg != null) { if (errMsg != null) {
return Result.fail(errMsg); return R.fail(errMsg);
} }
return service.add(user); return service.add(user);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysUser user) { public R update(@RequestBody SysUser user) {
String errMsg = validateUserUpdateParam(user); String errMsg = validateUserUpdateParam(user);
if (errMsg != null) { if (errMsg != null) {
return Result.fail(errMsg); return R.fail(errMsg);
} }
return service.update(user); return service.update(user);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysUser user) { public R del(@RequestBody SysUser user) {
if (user.getId() == null) { if (user.getId() == null) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
return service.del(user); return service.del(user);
} }
@PostMapping("kick") @PostMapping("kick")
public Result kick(@RequestBody List<SysUser> users) { public R kick(@RequestBody List<SysUser> users) {
if (users == null || users.isEmpty()) { if (users == null || users.isEmpty()) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
RecUserAction action = ThreadUtil.getAction(); RecUserAction action = ThreadUtil.getAction();
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList()); List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
@ -66,9 +66,9 @@ public class UserController {
} }
@PostMapping("resetPwd") @PostMapping("resetPwd")
public Result resetPwd(@RequestBody SysUser user) { public R resetPwd(@RequestBody SysUser user) {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) { if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
return service.resetPwd(user); return service.resetPwd(user);
} }

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

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.system.service; package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.common.model.entity.SysCategory; 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.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.system.model.vo.CategorySearch; import cn.toesbieya.jxc.system.model.vo.CategorySearch;
import cn.toesbieya.jxc.web.common.annoation.Lock; import cn.toesbieya.jxc.web.common.annoation.Lock;
@ -50,19 +50,19 @@ public class CategoryService {
@UserAction("'添加分类:'+#category.name") @UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid") @Lock("'category'+#category.pid")
public Result add(SysCategory category) { public R add(SysCategory category) {
String err = check(category); String err = check(category);
if (err != null) return Result.fail("添加失败," + err); if (err != null) return R.fail("添加失败," + err);
int rows = mapper.insert(category); int rows = mapper.insert(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改分类:'+#category.name") @UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id") @Lock("'category'+#category.id")
public Result update(SysCategory category) { public R update(SysCategory category) {
String err = check(category); String err = check(category);
if (err != null) return Result.fail("修改失败," + err); if (err != null) return R.fail("修改失败," + err);
int rows = mapper.update( int rows = mapper.update(
null, null,
@ -72,21 +72,21 @@ public class CategoryService {
.set(SysCategory::getType, category.getType()) .set(SysCategory::getType, category.getType())
.eq(SysCategory::getId, category.getId()) .eq(SysCategory::getId, category.getId())
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新后重试");
} }
@UserAction("'删除分类:'+#category.name") @UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id") @Lock("'category'+#category.id")
public Result del(SysCategory category) { public R del(SysCategory category) {
Integer cid = category.getId(); Integer cid = category.getId();
if (hasChildren(cid)) { if (hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点"); return R.fail("请先删除该分类下的子节点");
} }
if (mapper.checkIsUse(cid)) { if (mapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除"); return R.fail("该分类已在业务中使用,不可删除");
} }
int rows = mapper.deleteById(cid); int rows = mapper.deleteById(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试"); return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
} }
private String check(SysCategory category) { 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.SysCustomer;
import cn.toesbieya.jxc.common.model.entity.SysRegion; 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.common.util.Util;
import cn.toesbieya.jxc.system.mapper.SysCustomerMapper; import cn.toesbieya.jxc.system.mapper.SysCustomerMapper;
import cn.toesbieya.jxc.system.mapper.SysRegionMapper; import cn.toesbieya.jxc.system.mapper.SysRegionMapper;
@ -86,21 +86,21 @@ public class CustomerService {
} }
@UserAction("'添加客户:'+ #customer.name") @UserAction("'添加客户:'+ #customer.name")
public Result add(SysCustomer customer) { public R add(SysCustomer customer) {
if (isNameExist(customer.getName(), null)) { if (isNameExist(customer.getName(), null)) {
return Result.fail("添加失败,客户【" + customer.getName() + "】已存在"); return R.fail("添加失败,客户【" + customer.getName() + "】已存在");
} }
int rows = customerMapper.insert(customer); int rows = customerMapper.insert(customer);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改客户:'+ #customer.name") @UserAction("'修改客户:'+ #customer.name")
public Result update(SysCustomer customer) { public R update(SysCustomer customer) {
Integer id = customer.getId(); Integer id = customer.getId();
String name = customer.getName(); String name = customer.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,客户【%s】已存在", name)); return R.fail(String.format("修改失败,客户【%s】已存在", name));
} }
int rows = customerMapper.update( int rows = customerMapper.update(
@ -115,17 +115,17 @@ public class CustomerService {
.set(SysCustomer::getRemark, customer.getRemark()) .set(SysCustomer::getRemark, customer.getRemark())
.eq(SysCustomer::getId, id) .eq(SysCustomer::getId, id)
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
} }
@UserAction("删除客户:'+ #customer.name") @UserAction("删除客户:'+ #customer.name")
public Result del(SysCustomer customer) { public R del(SysCustomer customer) {
int rows = customerMapper.delete( int rows = customerMapper.delete(
Wrappers.lambdaQuery(SysCustomer.class) Wrappers.lambdaQuery(SysCustomer.class)
.eq(SysCustomer::getId, customer.getId()) .eq(SysCustomer::getId, customer.getId())
.eq(SysCustomer::getStatus, 0) .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) { 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.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser; import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo; 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.common.util.Util;
import cn.toesbieya.jxc.system.mapper.SysDepartmentMapper; import cn.toesbieya.jxc.system.mapper.SysDepartmentMapper;
import cn.toesbieya.jxc.web.common.annoation.UserAction; import cn.toesbieya.jxc.web.common.annoation.UserAction;
@ -87,27 +87,27 @@ public class DepartmentService implements DepartmentApi {
} }
@UserAction("'添加部门:'+#department.name") @UserAction("'添加部门:'+#department.name")
public Result add(SysDepartment department) { public R add(SysDepartment department) {
if (isNameExist(null, department.getPid(), department.getName())) { if (isNameExist(null, department.getPid(), department.getName())) {
return Result.fail("添加失败,存在名称相同的同级部门"); return R.fail("添加失败,存在名称相同的同级部门");
} }
int rows = departmentMapper.insert(department); int rows = departmentMapper.insert(department);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改部门:'+#department.name") @UserAction("'修改部门:'+#department.name")
public Result update(SysDepartment department) { public R update(SysDepartment department) {
if (isNameExist(department.getId(), department.getPid(), department.getName())) { if (isNameExist(department.getId(), department.getPid(), department.getName())) {
return Result.fail("修改失败,存在名称相同的同级部门"); return R.fail("修改失败,存在名称相同的同级部门");
} }
departmentMapper.updateById(department); departmentMapper.updateById(department);
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("'删除部门:'+#department.name") @UserAction("'删除部门:'+#department.name")
public Result del(SysDepartment department) { public R del(SysDepartment department) {
int rows = departmentMapper.deleteById(department.getId()); 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; package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.api.system.ResourceApi; 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.SysResource;
import cn.toesbieya.jxc.common.model.entity.SysRole; import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.vo.ResourceVo; import cn.toesbieya.jxc.common.model.vo.R;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.system.mapper.SysResourceMapper; import cn.toesbieya.jxc.system.mapper.SysResourceMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Service @Service
@org.apache.dubbo.config.annotation.Service @org.apache.dubbo.config.annotation.Service
@ -22,12 +22,17 @@ public class ResourceService implements ResourceApi {
@Resource @Resource
private SysResourceMapper mapper; private SysResourceMapper mapper;
public List<ResourceVo> getAll() { public List<SysResource> getAll() {
return completeNode(mapper.selectList(null)); return mapper.selectList(null);
} }
@Override @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) { if (role == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
@ -38,59 +43,124 @@ public class ResourceService implements ResourceApi {
return Collections.emptyList(); return Collections.emptyList();
} }
List<SysResource> list = mapper.selectList( return getEnableResourceTree(ids, i -> !i.getType().equals(ResourceTypeEnum.FOLDER.getCode()));
Wrappers.lambdaQuery(SysResource.class) }
.inSql(SysResource::getId, ids)
);
return completeNode(list); public R add(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("添加失败," + error);
} }
public Result update(SysResource resource) { entity.setId(null);
int rows = mapper.updateById(resource); transform(entity);
return Result.success("修改成功");
mapper.insert(entity);
return R.success("添加成功");
}
public R update(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("修改失败," + error);
} }
private List<ResourceVo> completeNode(List<SysResource> list) { transform(entity);
List<ResourceVo> result = new ArrayList<>(list.size());
HashMap<Integer, String> urlMap = new HashMap<>(128);
HashMap<Integer, String> nameMap = new HashMap<>(128);
for (SysResource resource : list) { mapper.updateById(entity);
ResourceVo vo = new ResourceVo(resource);
Integer id = resource.getId(); return R.success("修改成功");
String url = resource.getUrl(); }
String name = resource.getName();
//跳过顶级节点 public R del(int id) {
if (resource.getPid() == 0) { Integer childrenNum = mapper.selectCount(
vo.setFullname(name); 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("删除失败");
}
urlMap.put(id, url); /**
nameMap.put(id, name); * 获取路径经过叠加且以启用的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;
} }
else {
Integer pid = resource.getPid();
//获取父节点进行拼接 String path = r.getPath();
String parentUrl = urlMap.get(pid); int index = path.indexOf("//");
String parentName = nameMap.get(pid); if (index != -1 && !path.startsWith("http")) {
//去掉'//'前拼接的父节点的path
r.setPath(path.substring(index + 1));
}
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName); return true;
})
.collect(Collectors.toList());
}
String fullname = parentName + " - " + name; //判断节点是否合法,不合法则返回错误信息
private String check(SysResource entity) {
Integer pid = entity.getPid();
Integer type = entity.getType();
vo.setUrl(parentUrl + url); boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
vo.setFullname(fullname);
urlMap.put(id, url); //根节点不能为数据接口
nameMap.put(id, fullname); if (pid.equals(0)) {
return isApi ? "数据接口不能作为根节点" : null;
} }
result.add(vo); //校验父节点
SysResource parent = mapper.selectById(pid);
if (parent == null) {
return "父节点不存在,请刷新后重试";
}
Integer parentType = parent.getType();
//1.待添加的节点为数据接口且父节点必须为叶子菜单
if (isApi) {
if (!parentType.equals(ResourceTypeEnum.LEAF.getCode())) {
return "数据接口只能以页面菜单为父节点";
}
}
//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.api.system.RoleApi;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum; import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.SysRole; 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.mapper.SysRoleMapper;
import cn.toesbieya.jxc.system.model.vo.RoleSearch; import cn.toesbieya.jxc.system.model.vo.RoleSearch;
import cn.toesbieya.jxc.web.common.annoation.UserAction; import cn.toesbieya.jxc.web.common.annoation.UserAction;
@ -60,22 +60,22 @@ public class RoleService implements RoleApi {
} }
@UserAction("'添加角色:'+#role.name") @UserAction("'添加角色:'+#role.name")
public Result add(SysRole role) { public R add(SysRole role) {
if (isNameExist(role.getName(), null)) { if (isNameExist(role.getName(), null)) {
return Result.fail("添加失败,角色名称重复"); return R.fail("添加失败,角色名称重复");
} }
int rows = mapper.insert(role); int rows = mapper.insert(role);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改角色:'+#role.name") @UserAction("'修改角色:'+#role.name")
public Result update(SysRole role) { public R update(SysRole role) {
Integer id = role.getId(); Integer id = role.getId();
String name = role.getName(); String name = role.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail("修改失败,角色名称重复"); return R.fail("修改失败,角色名称重复");
} }
mapper.update( mapper.update(
@ -88,17 +88,17 @@ public class RoleService implements RoleApi {
.set(SysRole::getResourceId, role.getResourceId()) .set(SysRole::getResourceId, role.getResourceId())
.eq(SysRole::getId, id) .eq(SysRole::getId, id)
); );
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("'删除角色:'+#role.name") @UserAction("'删除角色:'+#role.name")
public Result del(SysRole role) { public R del(SysRole role) {
int rows = mapper.delete( int rows = mapper.delete(
Wrappers.lambdaQuery(SysRole.class) Wrappers.lambdaQuery(SysRole.class)
.eq(SysRole::getId, role.getId()) .eq(SysRole::getId, role.getId())
.eq(SysRole::getStatus, 0) .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) { 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.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.SysRegion; import cn.toesbieya.jxc.common.model.entity.SysRegion;
import cn.toesbieya.jxc.common.model.entity.SysSupplier; 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.common.util.Util;
import cn.toesbieya.jxc.system.mapper.SysRegionMapper; import cn.toesbieya.jxc.system.mapper.SysRegionMapper;
import cn.toesbieya.jxc.system.mapper.SysSupplierMapper; import cn.toesbieya.jxc.system.mapper.SysSupplierMapper;
@ -86,21 +86,21 @@ public class SupplierService {
} }
@UserAction("'添加供应商:'+ #supplier.name") @UserAction("'添加供应商:'+ #supplier.name")
public Result add(SysSupplier supplier) { public R add(SysSupplier supplier) {
if (isNameExist(supplier.getName(), null)) { 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); int rows = supplierMapper.insert(supplier);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改供应商:'+ #supplier.name") @UserAction("'修改供应商:'+ #supplier.name")
public Result update(SysSupplier supplier) { public R update(SysSupplier supplier) {
Integer id = supplier.getId(); Integer id = supplier.getId();
String name = supplier.getName(); String name = supplier.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,供应商【%s】已存在", name)); return R.fail(String.format("修改失败,供应商【%s】已存在", name));
} }
supplierMapper.update( supplierMapper.update(
@ -115,17 +115,17 @@ public class SupplierService {
.set(SysSupplier::getRemark, supplier.getRemark()) .set(SysSupplier::getRemark, supplier.getRemark())
.eq(SysSupplier::getId, id) .eq(SysSupplier::getId, id)
); );
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("删除供应商:'+ #supplier.name") @UserAction("删除供应商:'+ #supplier.name")
public Result del(SysSupplier supplier) { public R del(SysSupplier supplier) {
int rows = supplierMapper.delete( int rows = supplierMapper.delete(
Wrappers.lambdaQuery(SysSupplier.class) Wrappers.lambdaQuery(SysSupplier.class)
.eq(SysSupplier::getId, supplier.getId()) .eq(SysSupplier::getId, supplier.getId())
.eq(SysSupplier::getStatus, GeneralStatusEnum.DISABLED.getCode()) .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) { 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.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser; import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo; 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.model.vo.UserVo;
import cn.toesbieya.jxc.common.util.Util; import cn.toesbieya.jxc.common.util.Util;
import cn.toesbieya.jxc.common.util.WebSocketUtil; import cn.toesbieya.jxc.common.util.WebSocketUtil;
@ -108,9 +108,9 @@ public class UserService {
} }
@UserAction("'添加用户:'+#user.name") @UserAction("'添加用户:'+#user.name")
public Result add(SysUser user) { public R add(SysUser user) {
if (isNameExist(user.getName(), null)) { if (isNameExist(user.getName(), null)) {
return Result.fail("该用户名称已存在"); return R.fail("该用户名称已存在");
} }
user.setId(null); user.setId(null);
@ -118,16 +118,16 @@ public class UserService {
user.setPwd(DEFAULT_PWD); user.setPwd(DEFAULT_PWD);
userMapper.insert(user); userMapper.insert(user);
return Result.success("添加成功"); return R.success("添加成功");
} }
@UserAction("'修改用户:'+#user.name") @UserAction("'修改用户:'+#user.name")
public Result update(SysUser user) { public R update(SysUser user) {
Integer id = user.getId(); Integer id = user.getId();
String name = user.getName(); String name = user.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail("该用户名称已存在"); return R.fail("该用户名称已存在");
} }
userMapper.update( userMapper.update(
@ -140,23 +140,23 @@ public class UserService {
.eq(SysUser::getId, id) .eq(SysUser::getId, id)
); );
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("'删除用户:'+#user.name") @UserAction("'删除用户:'+#user.name")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(SysUser user) { public R del(SysUser user) {
int rows = userMapper.delete( int rows = userMapper.delete(
Wrappers.lambdaQuery(SysUser.class) Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getId, user.getId()) .eq(SysUser::getId, user.getId())
.eq(SysUser::isAdmin, 0) .eq(SysUser::isAdmin, 0)
); );
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除"); WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试"); return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
} }
@UserAction @UserAction
public Result kick(List<SysUser> users) { public R kick(List<SysUser> users) {
WebSocketUtil.sendLogoutEvent( WebSocketUtil.sendLogoutEvent(
users users
.stream() .stream()
@ -165,18 +165,18 @@ public class UserService {
"你已被强制下线,请重新登陆" "你已被强制下线,请重新登陆"
); );
return Result.success("踢出成功"); return R.success("踢出成功");
} }
@UserAction("'重置用户密码:'+#user.name") @UserAction("'重置用户密码:'+#user.name")
public Result resetPwd(SysUser user) { public R resetPwd(SysUser user) {
int rows = userMapper.update( int rows = userMapper.update(
null, null,
Wrappers.lambdaUpdate(SysUser.class) Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, DEFAULT_PWD) .set(SysUser::getPwd, DEFAULT_PWD)
.eq(SysUser::getId, user.getId()) .eq(SysUser::getId, user.getId())
); );
return rows > 0 ? Result.success() : Result.fail("重置失败,未匹配到用户"); return rows > 0 ? R.success() : R.fail("重置失败,未匹配到用户");
} }
//用户名重复时返回true //用户名重复时返回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; package cn.toesbieya.jxc.socket.config;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner; 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.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -14,6 +17,7 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.List;
@Configuration @Configuration
@EnableConfigurationProperties(SocketProperty.class) @EnableConfigurationProperties(SocketProperty.class)
@ -31,6 +35,28 @@ public class SocketConfig {
config.setMaxFramePayloadLength(property.getMaxFramePayloadLength()); config.setMaxFramePayloadLength(property.getMaxFramePayloadLength());
config.setMaxHttpContentLength(property.getMaxHttpContentLength()); config.setMaxHttpContentLength(property.getMaxHttpContentLength());
config.setAddVersionHeader(false); 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); return new SocketIOServer(config);
} }

Binary file not shown.

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

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

@ -1,7 +1,10 @@
package cn.toesbieya.jxc.config; package cn.toesbieya.jxc.config;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner; 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.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -11,6 +14,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.*; import java.io.*;
import java.util.List;
@Configuration @Configuration
@EnableConfigurationProperties(SocketProperty.class) @EnableConfigurationProperties(SocketProperty.class)
@ -28,6 +32,28 @@ public class SocketConfig {
config.setMaxFramePayloadLength(property.getMaxFramePayloadLength()); config.setMaxFramePayloadLength(property.getMaxFramePayloadLength());
config.setMaxHttpContentLength(property.getMaxHttpContentLength()); config.setMaxHttpContentLength(property.getMaxHttpContentLength());
config.setAddVersionHeader(false); 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); 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.service.AccountService;
import cn.toesbieya.jxc.util.SessionUtil; import cn.toesbieya.jxc.util.SessionUtil;
import cn.toesbieya.jxc.util.IpUtil; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -24,58 +24,58 @@ public class AccountController {
private AccountService service; private AccountService service;
@PostMapping("login") @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)); return service.login(param, IpUtil.getIp(request));
} }
@GetMapping("logout") @GetMapping("logout")
public Result logout(HttpServletRequest request) { public R logout(HttpServletRequest request) {
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
return service.logout(user, IpUtil.getIp(request)); return service.logout(user, IpUtil.getIp(request));
} }
@PostMapping("register") @PostMapping("register")
public Result register(@Valid @RequestBody RegisterParam param) { public R register(@Valid @RequestBody RegisterParam param) {
return service.register(param); return service.register(param);
} }
@PostMapping("updatePwd") @PostMapping("updatePwd")
public Result updatePwd(@RequestBody PasswordUpdateParam param) { public R updatePwd(@RequestBody PasswordUpdateParam param) {
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
param.setId(user.getId()); param.setId(user.getId());
String errMsg = validateUpdatePwdParam(param); String errMsg = validateUpdatePwdParam(param);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
return service.updatePwd(param); return service.updatePwd(param);
} }
@GetMapping("updateAvatar") @GetMapping("updateAvatar")
public Result updateAvatar(@RequestParam String key) throws UnsupportedEncodingException { public R updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(key)) return Result.fail("参数错误"); if (StringUtils.isEmpty(key)) return R.fail("参数错误");
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
return service.updateAvatar(user, URLDecoder.decode(key, "utf-8")); return service.updateAvatar(user, URLDecoder.decode(key, "utf-8"));
} }
@GetMapping("validate") @GetMapping("validate")
public Result validate(@RequestParam String pwd) { public R validate(@RequestParam String pwd) {
UserVo current = SessionUtil.get(); UserVo current = SessionUtil.get();
if (!pwd.equals(current.getPwd())) { if (!pwd.equals(current.getPwd())) {
return Result.fail("校验失败"); return R.fail("校验失败");
} }
return Result.success("校验通过"); return R.success("校验通过");
} }
@GetMapping("checkName") @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)) { 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) { 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.model.vo.search.StockSearch;
import cn.toesbieya.jxc.service.BizStockService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -16,20 +16,20 @@ public class BizStockController {
private BizStockService service; private BizStockService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody StockSearch vo) { public R search(@RequestBody StockSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@GetMapping("getDetail") @GetMapping("getDetail")
public Result getDetail(@RequestParam String cids) { public R getDetail(@RequestParam String cids) {
if (StringUtils.isEmpty(cids)) return Result.fail("参数错误"); if (StringUtils.isEmpty(cids)) return R.fail("参数错误");
return Result.success(service.getDetail(cids)); return R.success(service.getDetail(cids));
} }
@GetMapping("getDetailById") @GetMapping("getDetailById")
public Result getDetailById(@RequestParam String ids) { public R getDetailById(@RequestParam String ids) {
if (StringUtils.isEmpty(ids)) return Result.fail("参数错误"); if (StringUtils.isEmpty(ids)) return R.fail("参数错误");
return Result.success(service.getDetailById(ids)); return R.success(service.getDetailById(ids));
} }
@PostMapping("export") @PostMapping("export")

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller; 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 cn.toesbieya.jxc.service.FileService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -20,13 +20,13 @@ public class FileController {
private FileService service; private FileService service;
@GetMapping("delete") @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")); service.delete(URLDecoder.decode(url, "utf-8"));
return Result.success("删除成功"); return R.success("删除成功");
} }
@GetMapping("getToken") @GetMapping("getToken")
public Result getToken() { public R getToken() {
return Result.success(null, service.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.util.SessionUtil;
import cn.toesbieya.jxc.service.RecService; import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.util.DateUtil; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -21,22 +21,22 @@ public class RecController {
private RecService service; private RecService service;
@PostMapping("searchLoginHistory") @PostMapping("searchLoginHistory")
public Result searchLoginHistory(@RequestBody LoginHistorySearch vo) { public R searchLoginHistory(@RequestBody LoginHistorySearch vo) {
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7)); vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(service.searchLoginHistory(vo)); return R.success(service.searchLoginHistory(vo));
} }
@PostMapping("searchUserAction") @PostMapping("searchUserAction")
public Result searchUserAction(@RequestBody UserActionSearch vo) { public R searchUserAction(@RequestBody UserActionSearch vo) {
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7)); 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; package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.service.StatisticService; 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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -15,22 +15,22 @@ public class StatisticController {
private StatisticService service; private StatisticService service;
@GetMapping("getFourBlock") @GetMapping("getFourBlock")
public Result getFourBlock() { public R getFourBlock() {
return Result.success(service.getFourBlock()); return R.success(service.getFourBlock());
} }
@GetMapping("getDailyProfitStat") @GetMapping("getDailyProfitStat")
public Result getDailyProfitStat() { public R getDailyProfitStat() {
return Result.success(service.getDailyProfitStat()); return R.success(service.getDailyProfitStat());
} }
@GetMapping("getDailyFinishOrder") @GetMapping("getDailyFinishOrder")
public Result getDailyFinishOrder() { public R getDailyFinishOrder() {
return Result.success(service.getDailyFinishOrder()); return R.success(service.getDailyFinishOrder());
} }
@GetMapping("getTotalProfitGoods") @GetMapping("getTotalProfitGoods")
public Result getTotalProfitGoods() { public R getTotalProfitGoods() {
return Result.success(service.getTotalProfitGoods()); return R.success(service.getTotalProfitGoods());
} }
} }

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -31,19 +31,19 @@ public class TestController {
@PostMapping("test") @PostMapping("test")
@ResponseBody @ResponseBody
public Result test() { public R test() {
return Result.success(); return R.success();
} }
@PostMapping("upload") @PostMapping("upload")
@ResponseBody @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("extraParam1:" + extraParam1);
System.out.println("extraParam2:" + extraParam2); System.out.println("extraParam2:" + extraParam2);
System.out.println("文件名称:" + file.getOriginalFilename()); System.out.println("文件名称:" + file.getOriginalFilename());
String tempPath = "C:/static/" + file.getOriginalFilename(); String tempPath = "C:/static/" + file.getOriginalFilename();
file.transferTo(Paths.get(tempPath));*/ file.transferTo(Paths.get(tempPath));*/
System.out.println("文件名称:" + file.getOriginalFilename()); 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.model.vo.search.DocHistorySearch;
import cn.toesbieya.jxc.service.doc.BizDocHistoryService; 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 org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -14,7 +14,7 @@ public class HistoryController {
private BizDocHistoryService service; private BizDocHistoryService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody DocHistorySearch vo) { public R search(@RequestBody DocHistorySearch vo) {
return Result.success(service.search(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.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub; import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo; 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.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch; import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
@ -26,21 +26,21 @@ public class PurchaseInboundController {
private BizPurchaseInboundService service; private BizPurchaseInboundService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
PurchaseInboundVo vo = service.getById(id); PurchaseInboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo); return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
public Result getSubById(@RequestParam String id) { public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return Result.success(service.getSubById(id)); return R.success(service.getSubById(id));
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody PurchaseInboundSearch vo) { public R search(@RequestBody PurchaseInboundSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("export") @PostMapping("export")
@ -49,9 +49,9 @@ public class PurchaseInboundController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody PurchaseInboundVo vo) { public R add(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
vo.setCid(user.getId()); vo.setCid(user.getId());
@ -63,21 +63,21 @@ public class PurchaseInboundController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody PurchaseInboundVo vo) { public R update(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); 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); return service.update(vo);
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody PurchaseInboundVo vo) { public R commit(@RequestBody PurchaseInboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo); 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()); vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
if (isFirst) { if (isFirst) {
@ -90,24 +90,24 @@ public class PurchaseInboundController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) { public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) { public R pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误"); if (StringUtils.isEmpty(vo.getPid())) return R.fail("参数错误");
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) { public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }
@GetMapping("del") @GetMapping("del")
public Result del(@RequestParam String id) { public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id); 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.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub; import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo; 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.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch; import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate; import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
@ -26,21 +26,21 @@ public class PurchaseOrderController {
private BizPurchaseOrderService service; private BizPurchaseOrderService service;
@GetMapping("getById") @GetMapping("getById")
public Result getById(@RequestParam String id) { public R getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
PurchaseOrderVo vo = service.getById(id); PurchaseOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo); return vo == null ? R.fail("获取单据信息失败") : R.success(vo);
} }
@GetMapping("getSubById") @GetMapping("getSubById")
public Result getSubById(@RequestParam String id) { public R getSubById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return Result.success(service.getSubById(id)); return R.success(service.getSubById(id));
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody PurchaseOrderSearch vo) { public R search(@RequestBody PurchaseOrderSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("export") @PostMapping("export")
@ -49,14 +49,14 @@ public class PurchaseOrderController {
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody PurchaseOrderVo vo) { public R add(@RequestBody PurchaseOrderVo vo) {
if (vo.getSid() == null if (vo.getSid() == null
|| StringUtils.isEmpty(vo.getSname()) || StringUtils.isEmpty(vo.getSname())
|| vo.getTotal() == null) { || vo.getTotal() == null) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
vo.setCid(user.getId()); vo.setCid(user.getId());
@ -68,21 +68,21 @@ public class PurchaseOrderController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody PurchaseOrderVo vo) { public R update(@RequestBody PurchaseOrderVo vo) {
String errMsg = validateUpdate(vo); String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData()); 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); return service.update(vo);
} }
@PostMapping("commit") @PostMapping("commit")
public Result commit(@RequestBody PurchaseOrderVo vo) { public R commit(@RequestBody PurchaseOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId()); boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData()); String errMsg = validateSub(vo.getData());
if (!isFirst && errMsg == null) errMsg = validateUpdate(vo); 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()); vo.setStatus(DocStatusEnum.WAIT_VERIFY.getCode());
@ -97,23 +97,23 @@ public class PurchaseOrderController {
} }
@PostMapping("withdraw") @PostMapping("withdraw")
public Result withdraw(@RequestBody DocStatusUpdate vo) { public R withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get()); return service.withdraw(vo, SessionUtil.get());
} }
@PostMapping("pass") @PostMapping("pass")
public Result pass(@RequestBody DocStatusUpdate vo) { public R pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get()); return service.pass(vo, SessionUtil.get());
} }
@PostMapping("reject") @PostMapping("reject")
public Result reject(@RequestBody DocStatusUpdate vo) { public R reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get()); return service.reject(vo, SessionUtil.get());
} }
@GetMapping("del") @GetMapping("del")
public Result del(@RequestParam String id) { public R del(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误"); if (StringUtils.isEmpty(id)) return R.fail("参数错误");
return service.del(id); return service.del(id);
} }

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

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

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

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller.msg; 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.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch; import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.service.msg.MsgUserService; import cn.toesbieya.jxc.service.msg.MsgUserService;
@ -16,20 +16,20 @@ public class UserController {
private MsgUserService service; private MsgUserService service;
@PostMapping("search") @PostMapping("search")
public Result searchPersonal(@RequestBody MsgPersonalSearch vo) { public R searchPersonal(@RequestBody MsgPersonalSearch vo) {
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setCtime(user.getCtime()); vo.setCtime(user.getCtime());
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@GetMapping("read") @GetMapping("read")
public Result read(@RequestParam Integer id) { public R read(@RequestParam Integer id) {
return service.read(SessionUtil.get(), id); return service.read(SessionUtil.get(), id);
} }
@GetMapping("readAll") @GetMapping("readAll")
public Result readAll() { public R readAll() {
return service.readAll(SessionUtil.get()); 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.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch; import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.service.sys.SysCategoryService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -16,35 +16,35 @@ public class CategoryController {
private SysCategoryService service; private SysCategoryService service;
@GetMapping("getAll") @GetMapping("getAll")
public Result getAll() { public R getAll() {
return Result.success(service.getAll()); return R.success(service.getAll());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody CategorySearch vo) { public R search(@RequestBody CategorySearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysCategory category) { public R add(@RequestBody SysCategory category) {
String errMsg = validateCategoryCreateParam(category); String errMsg = validateCategoryCreateParam(category);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
category.setCtime(System.currentTimeMillis()); category.setCtime(System.currentTimeMillis());
return service.add(category); return service.add(category);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysCategory category) { public R update(@RequestBody SysCategory category) {
String errMsg = validateCategoryUpdateParam(category); String errMsg = validateCategoryUpdateParam(category);
if (errMsg != null) return Result.fail(errMsg); if (errMsg != null) return R.fail(errMsg);
return service.update(category); return service.update(category);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysCategory category) { public R del(@RequestBody SysCategory category) {
if (category.getId() == null) return Result.fail("删除失败,参数错误"); if (category.getId() == null) return R.fail("删除失败,参数错误");
return service.del(category); 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.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch; import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import cn.toesbieya.jxc.service.sys.SysCustomerService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -16,35 +16,36 @@ public class CustomerController {
private SysCustomerService service; private SysCustomerService service;
@GetMapping("getLimitRegion") @GetMapping("getLimitRegion")
public Result getLimitRegion() { public R getLimitRegion() {
return Result.success(service.getLimitRegion()); return R.success(service.getLimitRegion());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody CustomerSearch vo) { public R search(@RequestBody CustomerSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysCustomer customer) { public R add(@RequestBody SysCustomer customer) {
String errMsg = validateCreateParam(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()); customer.setCtime(System.currentTimeMillis());
return service.add(customer); return service.add(customer);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysCustomer customer) { public R update(@RequestBody SysCustomer customer) {
String errMsg = validateUpdateParam(customer); String errMsg = validateUpdateParam(customer);
if (errMsg != null) return Result.fail("修改失败," + errMsg); if (errMsg != null) return R.fail("修改失败," + errMsg);
return service.update(customer); return service.update(customer);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysCustomer customer) { public R del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return Result.fail("删除失败,参数错误"); if (customer.getId() == null) return R.fail("删除失败,参数错误");
return service.del(customer); 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.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo; import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.service.sys.SysDepartmentService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -19,7 +19,7 @@ public class DepartmentController {
private SysDepartmentService service; private SysDepartmentService service;
@GetMapping("get") @GetMapping("get")
public Result get(boolean all) { public R get(boolean all) {
List<DepartmentVo> list = service.getAll(); List<DepartmentVo> list = service.getAll();
if (!all) { if (!all) {
list = list list = list
@ -27,34 +27,34 @@ public class DepartmentController {
.filter(i -> i.getStatus().equals(GeneralStatusEnum.ENABLED.getCode())) .filter(i -> i.getStatus().equals(GeneralStatusEnum.ENABLED.getCode()))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
return Result.success(list); return R.success(list);
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysDepartment department) { public R add(@RequestBody SysDepartment department) {
if (null == department.getPid() if (null == department.getPid()
|| StringUtils.isEmpty(department.getName()) || StringUtils.isEmpty(department.getName())
|| null == department.getStatus()) { || null == department.getStatus()) {
return Result.fail("添加失败,参数错误"); return R.fail("添加失败,参数错误");
} }
return service.add(department); return service.add(department);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysDepartment department) { public R update(@RequestBody SysDepartment department) {
if (null == department.getId() if (null == department.getId()
|| null == department.getPid() || null == department.getPid()
|| StringUtils.isEmpty(department.getName()) || StringUtils.isEmpty(department.getName())
|| null == department.getStatus()) { || null == department.getStatus()) {
return Result.fail("修改失败,参数错误"); return R.fail("修改失败,参数错误");
} }
return service.update(department); return service.update(department);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysDepartment department) { public R del(@RequestBody SysDepartment department) {
if (null == department.getId() || StringUtils.isEmpty(department.getName())) { if (null == department.getId() || StringUtils.isEmpty(department.getName())) {
return Result.fail("删除失败,参数错误"); return R.fail("删除失败,参数错误");
} }
return service.del(department); return service.del(department);
} }

@ -1,10 +1,9 @@
package cn.toesbieya.jxc.controller.sys; 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 cn.toesbieya.jxc.service.sys.SysResourceService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -15,7 +14,22 @@ public class ResourceController {
private SysResourceService service; private SysResourceService service;
@GetMapping("getAll") @GetMapping("getAll")
public Result getAll() { public R getAll() {
return Result.success(service.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.model.vo.search.RoleSearch;
import cn.toesbieya.jxc.util.SessionUtil; import cn.toesbieya.jxc.util.SessionUtil;
import cn.toesbieya.jxc.service.sys.SysRoleService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -18,20 +18,20 @@ public class RoleController {
private SysRoleService service; private SysRoleService service;
@GetMapping("get") @GetMapping("get")
public Result get() { public R get() {
return Result.success(service.get()); return R.success(service.get());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody RoleSearch vo) { public R search(@RequestBody RoleSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysRole role) { public R add(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName()) if (StringUtils.isEmpty(role.getName())
|| role.getStatus() == null) { || role.getStatus() == null) {
return Result.fail("添加失败,参数错误"); return R.fail("添加失败,参数错误");
} }
UserVo user = SessionUtil.get(); UserVo user = SessionUtil.get();
@ -44,18 +44,18 @@ public class RoleController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysRole role) { public R update(@RequestBody SysRole role) {
if (StringUtils.isEmpty(role.getName()) if (StringUtils.isEmpty(role.getName())
|| role.getId() == null || role.getId() == null
|| role.getStatus() == null) { || role.getStatus() == null) {
return Result.fail("修改失败,参数错误"); return R.fail("修改失败,参数错误");
} }
return service.update(role); return service.update(role);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysRole role) { public R del(@RequestBody SysRole role) {
if (role.getId() == null) return Result.fail("删除失败,参数错误"); if (role.getId() == null) return R.fail("删除失败,参数错误");
return service.del(role); 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.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch; import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import cn.toesbieya.jxc.service.sys.SysSupplierService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -16,19 +16,19 @@ public class SupplierController {
private SysSupplierService service; private SysSupplierService service;
@GetMapping("getLimitRegion") @GetMapping("getLimitRegion")
public Result getLimitRegion() { public R getLimitRegion() {
return Result.success(service.getLimitRegion()); return R.success(service.getLimitRegion());
} }
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody SupplierSearch vo) { public R search(@RequestBody SupplierSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysSupplier supplier) { public R add(@RequestBody SysSupplier supplier) {
String errMsg = validateCreateParam(supplier); String errMsg = validateCreateParam(supplier);
if (errMsg != null) return Result.fail("添加失败," + errMsg); if (errMsg != null) return R.fail("添加失败," + errMsg);
supplier.setId(null); supplier.setId(null);
supplier.setCtime(System.currentTimeMillis()); supplier.setCtime(System.currentTimeMillis());
@ -36,14 +36,14 @@ public class SupplierController {
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysSupplier supplier) { public R update(@RequestBody SysSupplier supplier) {
String errMsg = validateUpdateParam(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") @PostMapping("del")
public Result del(@RequestBody SysSupplier supplier) { public R del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return Result.fail("删除失败,参数错误"); if (supplier.getId() == null) return R.fail("删除失败,参数错误");
return service.del(supplier); 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.model.vo.search.UserSearch;
import cn.toesbieya.jxc.util.ThreadUtil; import cn.toesbieya.jxc.util.ThreadUtil;
import cn.toesbieya.jxc.service.sys.SysUserService; 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.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -23,40 +23,40 @@ public class UserController {
private SysUserService service; private SysUserService service;
@PostMapping("search") @PostMapping("search")
public Result search(@RequestBody UserSearch vo) { public R search(@RequestBody UserSearch vo) {
return Result.success(service.search(vo)); return R.success(service.search(vo));
} }
@PostMapping("add") @PostMapping("add")
public Result add(@RequestBody SysUser user) { public R add(@RequestBody SysUser user) {
String errMsg = validateUserCreateParam(user); String errMsg = validateUserCreateParam(user);
if (errMsg != null) { if (errMsg != null) {
return Result.fail(errMsg); return R.fail(errMsg);
} }
return service.add(user); return service.add(user);
} }
@PostMapping("update") @PostMapping("update")
public Result update(@RequestBody SysUser user) { public R update(@RequestBody SysUser user) {
String errMsg = validateUserUpdateParam(user); String errMsg = validateUserUpdateParam(user);
if (errMsg != null) { if (errMsg != null) {
return Result.fail(errMsg); return R.fail(errMsg);
} }
return service.update(user); return service.update(user);
} }
@PostMapping("del") @PostMapping("del")
public Result del(@RequestBody SysUser user) { public R del(@RequestBody SysUser user) {
if (user.getId() == null) { if (user.getId() == null) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
return service.del(user); return service.del(user);
} }
@PostMapping("kick") @PostMapping("kick")
public Result kick(@RequestBody List<SysUser> users) { public R kick(@RequestBody List<SysUser> users) {
if (users == null || users.isEmpty()) { if (users == null || users.isEmpty()) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
RecUserAction action = ThreadUtil.getAction(); RecUserAction action = ThreadUtil.getAction();
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList()); List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
@ -66,9 +66,9 @@ public class UserController {
} }
@PostMapping("resetPwd") @PostMapping("resetPwd")
public Result resetPwd(@RequestBody SysUser user) { public R resetPwd(@RequestBody SysUser user) {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) { if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
return Result.fail("参数错误"); return R.fail("参数错误");
} }
return service.resetPwd(user); 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; 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.model.vo.UserVo;
import cn.toesbieya.jxc.module.PermissionModule; import cn.toesbieya.jxc.module.PermissionModule;
import cn.toesbieya.jxc.util.*; import cn.toesbieya.jxc.util.*;
@ -19,13 +19,13 @@ public class SecurityInterceptor implements HandlerInterceptor {
UserVo user = SessionUtil.get(request); UserVo user = SessionUtil.get(request);
if (user == null) { if (user == null) {
WebUtil.responseJson(response, Result.requireLogin()); WebUtil.responseJson(response, R.requireLogin());
ThreadUtil.clearAll(); ThreadUtil.clearAll();
return false; return false;
} }
if (!PermissionModule.authority(user, url)) { if (!PermissionModule.authority(user, url)) {
WebUtil.responseJson(response, Result.noPermission()); WebUtil.responseJson(response, R.noPermission());
log.warn("权限拦截,访问路径:{},用户:{},IP:{}", url, user.getName(), ip); log.warn("权限拦截,访问路径:{},用户:{},IP:{}", url, user.getName(), ip);
ThreadUtil.clearAll(); ThreadUtil.clearAll();
return false; return false;

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

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

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

@ -9,7 +9,7 @@ import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.*; import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.model.entity.*; import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo; 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.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport; import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
@ -86,23 +86,23 @@ public class BizPurchaseInboundService {
@UserAction("'添加采购入库单'") @UserAction("'添加采购入库单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(PurchaseInboundVo doc) { public R add(PurchaseInboundVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改采购入库单'+#doc.id") @UserAction("'修改采购入库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(PurchaseInboundVo doc) { public R update(PurchaseInboundVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交采购入库单'+#doc.id") @UserAction("'提交采购入库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseInboundVo doc) { public R commit(PurchaseInboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -123,12 +123,12 @@ public class BizPurchaseInboundService {
@UserAction("'撤回采购入库单'+#vo.id") @UserAction("'撤回采购入库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -144,13 +144,13 @@ public class BizPurchaseInboundService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过采购入库单'+#vo.id") @UserAction("'通过采购入库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"}) @Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
String pid = vo.getPid(); String pid = vo.getPid();
@ -159,7 +159,7 @@ public class BizPurchaseInboundService {
//检查采购订单状态、入库商品是否符合订单要求 //检查采购订单状态、入库商品是否符合订单要求
List<BizPurchaseInboundSub> subList = getSubById(id); List<BizPurchaseInboundSub> subList = getSubById(id);
String err = checkOrder(pid, subList); String err = checkOrder(pid, subList);
if (err != null) return Result.fail("通过失败," + err); if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update( if (1 > mainMapper.update(
null, null,
@ -171,7 +171,7 @@ public class BizPurchaseInboundService {
.eq(BizPurchaseInbound::getId, id) .eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
//修改采购订单完成情况、子表的未入库数量 //修改采购订单完成情况、子表的未入库数量
@ -240,18 +240,18 @@ public class BizPurchaseInboundService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回采购入库单'+#vo.id") @UserAction("'驳回采购入库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -267,34 +267,34 @@ public class BizPurchaseInboundService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除采购入库单'+#id") @UserAction("'删除采购入库单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(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(); List<BizPurchaseInboundSub> subList = doc.getData();
String err = checkOrder(doc.getPid(), subList); 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"); String id = DocUtil.getDocId("CGRK");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -314,15 +314,15 @@ public class BizPurchaseInboundService {
} }
recService.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = checkOrder(doc.getPid(), doc.getData()); 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( mainMapper.update(
@ -349,7 +349,7 @@ public class BizPurchaseInboundService {
} }
recService.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment; import cn.toesbieya.jxc.model.entity.RecAttachment;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo; 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.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport; import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
@ -79,23 +79,23 @@ public class BizPurchaseOrderService {
@UserAction("'添加采购订单'") @UserAction("'添加采购订单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(PurchaseOrderVo doc) { public R add(PurchaseOrderVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改采购订单'+#doc.id") @UserAction("'修改采购订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(PurchaseOrderVo doc) { public R update(PurchaseOrderVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交采购订单'+#doc.id") @UserAction("'提交采购订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(PurchaseOrderVo doc) { public R commit(PurchaseOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -116,12 +116,12 @@ public class BizPurchaseOrderService {
@UserAction("'撤回采购订单'+#vo.id") @UserAction("'撤回采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -137,13 +137,13 @@ public class BizPurchaseOrderService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过采购订单'+#vo.id") @UserAction("'通过采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
@ -158,7 +158,7 @@ public class BizPurchaseOrderService {
.eq(BizPurchaseOrder::getId, id) .eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -174,18 +174,18 @@ public class BizPurchaseOrderService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回采购订单'+#vo.id") @UserAction("'驳回采购订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -201,29 +201,29 @@ public class BizPurchaseOrderService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除采购订单'+#id") @UserAction("'删除采购订单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(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"); String id = DocUtil.getDocId("CGDD");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -249,14 +249,14 @@ public class BizPurchaseOrderService {
} }
recService.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err != null) return Result.fail(err); if (err != null) return R.fail(err);
//更新主表 //更新主表
mainMapper.update( mainMapper.update(
@ -287,7 +287,7 @@ public class BizPurchaseOrderService {
} }
recService.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.BizSellOrderMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderSubMapper; import cn.toesbieya.jxc.mapper.BizSellOrderSubMapper;
import cn.toesbieya.jxc.model.entity.*; 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.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOrderExport; import cn.toesbieya.jxc.model.vo.export.SellOrderExport;
@ -83,23 +83,23 @@ public class BizSellOrderService {
@UserAction("'添加销售订单'") @UserAction("'添加销售订单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(SellOrderVo doc) { public R add(SellOrderVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改销售订单'+#doc.id") @UserAction("'修改销售订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(SellOrderVo doc) { public R update(SellOrderVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交销售订单'+#doc.id") @UserAction("'提交销售订单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(SellOrderVo doc) { public R commit(SellOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -120,12 +120,12 @@ public class BizSellOrderService {
@UserAction("'撤回销售订单'+#vo.id") @UserAction("'撤回销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -141,13 +141,13 @@ public class BizSellOrderService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过销售订单'+#vo.id") @UserAction("'通过销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
@ -162,7 +162,7 @@ public class BizSellOrderService {
.eq(BizSellOrder::getId, id) .eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -178,18 +178,18 @@ public class BizSellOrderService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回销售订单'+#vo.id") @UserAction("'驳回销售订单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -205,32 +205,32 @@ public class BizSellOrderService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除销售订单'+#id") @UserAction("'删除销售订单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(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()); String err = checkStock(doc.getData());
if (err != null) return Result.fail(err); if (err != null) return R.fail(err);
String id = DocUtil.getDocId("XSDD"); String id = DocUtil.getDocId("XSDD");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -255,15 +255,15 @@ public class BizSellOrderService {
} }
recService.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = checkStock(doc.getData()); if (err == null) err = checkStock(doc.getData());
if (err != null) return Result.fail(err); if (err != null) return R.fail(err);
//更新主表 //更新主表
mainMapper.update( mainMapper.update(
@ -294,7 +294,7 @@ public class BizSellOrderService {
} }
recService.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.*; import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.model.entity.*; 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.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo; import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOutboundExport; import cn.toesbieya.jxc.model.vo.export.SellOutboundExport;
@ -91,23 +91,23 @@ public class BizSellOutboundService {
@UserAction("'添加销售出库单'") @UserAction("'添加销售出库单'")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result add(SellOutboundVo doc) { public R add(SellOutboundVo doc) {
return addMain(doc); return addMain(doc);
} }
@UserAction("'修改销售出库单'+#doc.id") @UserAction("'修改销售出库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result update(SellOutboundVo doc) { public R update(SellOutboundVo doc) {
return updateMain(doc); return updateMain(doc);
} }
@UserAction("'提交销售出库单'+#doc.id") @UserAction("'提交销售出库单'+#doc.id")
@Lock("#doc.id") @Lock("#doc.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result commit(SellOutboundVo doc) { public R commit(SellOutboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId()); boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc); R result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert( historyMapper.insert(
BizDocHistory.builder() BizDocHistory.builder()
@ -128,12 +128,12 @@ public class BizSellOutboundService {
@UserAction("'撤回销售出库单'+#vo.id") @UserAction("'撤回销售出库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result withdraw(DocStatusUpdate vo, UserVo user) { public R withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试"); return R.fail("撤回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -149,13 +149,13 @@ public class BizSellOutboundService {
.build() .build()
); );
return Result.success("撤回成功"); return R.success("撤回成功");
} }
@UserAction("'通过销售出库单'+#vo.id") @UserAction("'通过销售出库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"}) @Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result pass(DocStatusUpdate vo, UserVo user) { public R pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
String pid = vo.getPid(); String pid = vo.getPid();
@ -163,7 +163,7 @@ public class BizSellOutboundService {
List<BizSellOutboundSub> subList = getSubById(vo.getId()); List<BizSellOutboundSub> subList = getSubById(vo.getId());
String err = check(vo.getPid(), subList); String err = check(vo.getPid(), subList);
if (err != null) return Result.fail("通过失败," + err); if (err != null) return R.fail("通过失败," + err);
if (1 > mainMapper.update( if (1 > mainMapper.update(
null, null,
@ -175,7 +175,7 @@ public class BizSellOutboundService {
.eq(BizSellOutbound::getId, id) .eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode()) .eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) { )) {
return Result.fail("通过失败,请刷新重试"); return R.fail("通过失败,请刷新重试");
} }
//按分类分组统计出库数量,并出库 //按分类分组统计出库数量,并出库
@ -245,18 +245,18 @@ public class BizSellOutboundService {
.build() .build()
); );
return Result.success("通过成功"); return R.success("通过成功");
} }
@UserAction("'驳回销售出库单'+#vo.id") @UserAction("'驳回销售出库单'+#vo.id")
@Lock("#vo.id") @Lock("#vo.id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result reject(DocStatusUpdate vo, UserVo user) { public R reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId(); String id = vo.getId();
String info = vo.getInfo(); String info = vo.getInfo();
if (rejectById(id) < 1) { if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试"); return R.fail("驳回失败,请刷新重试");
} }
historyMapper.insert( historyMapper.insert(
@ -272,34 +272,34 @@ public class BizSellOutboundService {
.build() .build()
); );
return Result.success("驳回成功"); return R.success("驳回成功");
} }
@UserAction("'删除销售出库单'+#id") @UserAction("'删除销售出库单'+#id")
@Lock("#id") @Lock("#id")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(String id) { public R del(String id) {
if (mainMapper.deleteById(id) < 1) { if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败"); return R.fail("删除失败");
} }
//同时删除子表和附件 //同时删除子表和附件
delSubByPid(id); delSubByPid(id);
recService.delAttachmentByPid(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(); List<BizSellOutboundSub> subList = doc.getData();
String err = check(doc.getPid(), subList); 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"); String id = DocUtil.getDocId("XSCK");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败"); return R.fail("获取单号失败");
} }
doc.setId(id); doc.setId(id);
@ -319,15 +319,15 @@ public class BizSellOutboundService {
} }
recService.handleAttachment(uploadImageList, null); 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 docId = doc.getId();
String err = checkUpdateStatus(docId); String err = checkUpdateStatus(docId);
if (err == null) err = check(doc.getPid(), doc.getData()); 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( mainMapper.update(
@ -354,7 +354,7 @@ public class BizSellOutboundService {
} }
recService.handleAttachment(uploadImageList, doc.getDeleteImageList()); 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.constant.SocketConstant;
import cn.toesbieya.jxc.mapper.MsgMapper; import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.model.entity.Msg; 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.SocketEventVo;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgSearch; import cn.toesbieya.jxc.model.vo.search.MsgSearch;
@ -45,13 +45,13 @@ public class MsgService {
} }
@UserAction("'添加消息:'+#msg.title") @UserAction("'添加消息:'+#msg.title")
public Result add(Msg msg) { public R add(Msg msg) {
mapper.insert(msg); mapper.insert(msg);
return Result.success("添加成功", msg); return R.success("添加成功", msg);
} }
@UserAction("'修改消息:'+#msg.title") @UserAction("'修改消息:'+#msg.title")
public Result update(Msg msg) { public R update(Msg msg) {
int rows = mapper.update( int rows = mapper.update(
null, null,
Wrappers.lambdaUpdate(Msg.class) Wrappers.lambdaUpdate(Msg.class)
@ -69,13 +69,13 @@ public class MsgService {
.set(Msg::getRecipient, msg.getRecipient()) .set(Msg::getRecipient, msg.getRecipient())
.eq(Msg::getId, msg.getId()) .eq(Msg::getId, msg.getId())
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
} }
@UserAction("'发布消息:'+#msg.title") @UserAction("'发布消息:'+#msg.title")
public Result publish(Msg msg) { public R publish(Msg msg) {
boolean isFirstCreate = msg.getId() == null; boolean isFirstCreate = msg.getId() == null;
Result result = isFirstCreate ? add(msg) : update(msg); R result = isFirstCreate ? add(msg) : update(msg);
if (result.isSuccess()) { if (result.isSuccess()) {
result.setMsg("提交成功"); result.setMsg("提交成功");
@ -109,7 +109,7 @@ public class MsgService {
} }
@UserAction("'撤回消息:'+#msg.title") @UserAction("'撤回消息:'+#msg.title")
public Result withdraw(Msg msg) { public R withdraw(Msg msg) {
int rows = mapper.update( int rows = mapper.update(
null, null,
Wrappers.lambdaUpdate(Msg.class) Wrappers.lambdaUpdate(Msg.class)
@ -120,12 +120,12 @@ public class MsgService {
.eq(Msg::getId, msg.getId()) .eq(Msg::getId, msg.getId())
.eq(Msg::getStatus, MsgConstant.STATUS_PUBLISHED) .eq(Msg::getStatus, MsgConstant.STATUS_PUBLISHED)
); );
return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试"); return rows > 0 ? R.success("撤回成功", msg) : R.fail("撤回失败,请刷新重试");
} }
@UserAction("'删除消息:'+#title") @UserAction("'删除消息:'+#title")
public Result del(int id, String title) { public R del(int id, String title) {
int rows = mapper.deleteById(id); 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.Msg;
import cn.toesbieya.jxc.model.entity.MsgState; import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.entity.SysUser; 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.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch; import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -29,7 +29,7 @@ public class MsgUserService {
return new PageResult<>(list); return new PageResult<>(list);
} }
public Result read(SysUser user, int id) { public R read(SysUser user, int id) {
//如果该消息已读,直接返回 //如果该消息已读,直接返回
if (!msgStateMapper if (!msgStateMapper
.selectCount( .selectCount(
@ -38,7 +38,7 @@ public class MsgUserService {
.eq(MsgState::getMid, user.getId()) .eq(MsgState::getMid, user.getId())
) )
.equals(0)) { .equals(0)) {
return Result.success(); return R.success();
} }
MsgState state = new MsgState(); MsgState state = new MsgState();
@ -46,11 +46,11 @@ public class MsgUserService {
state.setUid(user.getId()); state.setUid(user.getId());
state.setTime(System.currentTimeMillis()); state.setTime(System.currentTimeMillis());
return Result.success(msgStateMapper.insert(state)); return R.success(msgStateMapper.insert(state));
} }
@UserAction("'清空所有未读消息'") @UserAction("'清空所有未读消息'")
public Result readAll(SysUser user) { public R readAll(SysUser user) {
MsgPersonalSearch vo = new MsgPersonalSearch(); MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId()); vo.setUid(user.getId());
vo.setCtime(user.getCtime()); vo.setCtime(user.getCtime());
@ -66,6 +66,6 @@ public class MsgUserService {
msgStateMapper.insert(state); 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.annoation.UserAction;
import cn.toesbieya.jxc.mapper.SysCategoryMapper; import cn.toesbieya.jxc.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.model.entity.SysCategory; 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 cn.toesbieya.jxc.model.vo.search.CategorySearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -48,19 +48,19 @@ public class SysCategoryService {
@UserAction("'添加分类:'+#category.name") @UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid") @Lock("'category'+#category.pid")
public Result add(SysCategory category) { public R add(SysCategory category) {
String err = check(category); String err = check(category);
if (err != null) return Result.fail("添加失败," + err); if (err != null) return R.fail("添加失败," + err);
int rows = mapper.insert(category); int rows = mapper.insert(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改分类:'+#category.name") @UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id") @Lock("'category'+#category.id")
public Result update(SysCategory category) { public R update(SysCategory category) {
String err = check(category); String err = check(category);
if (err != null) return Result.fail("修改失败," + err); if (err != null) return R.fail("修改失败," + err);
int rows = mapper.update( int rows = mapper.update(
null, null,
@ -70,21 +70,21 @@ public class SysCategoryService {
.set(SysCategory::getType, category.getType()) .set(SysCategory::getType, category.getType())
.eq(SysCategory::getId, category.getId()) .eq(SysCategory::getId, category.getId())
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新后重试");
} }
@UserAction("'删除分类:'+#category.name") @UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id") @Lock("'category'+#category.id")
public Result del(SysCategory category) { public R del(SysCategory category) {
Integer cid = category.getId(); Integer cid = category.getId();
if (hasChildren(cid)) { if (hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点"); return R.fail("请先删除该分类下的子节点");
} }
if (mapper.checkIsUse(cid)) { if (mapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除"); return R.fail("该分类已在业务中使用,不可删除");
} }
int rows = mapper.deleteById(cid); int rows = mapper.deleteById(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试"); return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
} }
private String check(SysCategory category) { 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.SysCustomer;
import cn.toesbieya.jxc.model.entity.SysRegion; import cn.toesbieya.jxc.model.entity.SysRegion;
import cn.toesbieya.jxc.model.vo.CustomerVo; 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.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult; import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch; import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
@ -87,21 +87,21 @@ public class SysCustomerService {
} }
@UserAction("'添加客户:'+ #customer.name") @UserAction("'添加客户:'+ #customer.name")
public Result add(SysCustomer customer) { public R add(SysCustomer customer) {
if (isNameExist(customer.getName(), null)) { 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); int rows = customerMapper.insert(customer);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改客户:'+ #customer.name") @UserAction("'修改客户:'+ #customer.name")
public Result update(SysCustomer customer) { public R update(SysCustomer customer) {
Integer id = customer.getId(); Integer id = customer.getId();
String name = customer.getName(); String name = customer.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,客户【%s】已存在", name)); return R.fail(String.format("修改失败,客户【%s】已存在", name));
} }
int rows = customerMapper.update( int rows = customerMapper.update(
@ -116,17 +116,17 @@ public class SysCustomerService {
.set(SysCustomer::getRemark, customer.getRemark()) .set(SysCustomer::getRemark, customer.getRemark())
.eq(SysCustomer::getId, id) .eq(SysCustomer::getId, id)
); );
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试"); return rows > 0 ? R.success("修改成功") : R.fail("修改失败,请刷新重试");
} }
@UserAction("删除客户:'+ #customer.name") @UserAction("删除客户:'+ #customer.name")
public Result del(SysCustomer customer) { public R del(SysCustomer customer) {
int rows = customerMapper.delete( int rows = customerMapper.delete(
Wrappers.lambdaQuery(SysCustomer.class) Wrappers.lambdaQuery(SysCustomer.class)
.eq(SysCustomer::getId, customer.getId()) .eq(SysCustomer::getId, customer.getId())
.eq(SysCustomer::getStatus, GeneralStatusEnum.DISABLED.getCode()) .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) { 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.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser; import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.DepartmentVo; 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 cn.toesbieya.jxc.util.Util;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -86,27 +86,27 @@ public class SysDepartmentService {
} }
@UserAction("'添加部门:'+#department.name") @UserAction("'添加部门:'+#department.name")
public Result add(SysDepartment department) { public R add(SysDepartment department) {
if (isNameExist(null, department.getPid(), department.getName())) { if (isNameExist(null, department.getPid(), department.getName())) {
return Result.fail("添加失败,存在名称相同的同级部门"); return R.fail("添加失败,存在名称相同的同级部门");
} }
int rows = departmentMapper.insert(department); int rows = departmentMapper.insert(department);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改部门:'+#department.name") @UserAction("'修改部门:'+#department.name")
public Result update(SysDepartment department) { public R update(SysDepartment department) {
if (isNameExist(department.getId(), department.getPid(), department.getName())) { if (isNameExist(department.getId(), department.getPid(), department.getName())) {
return Result.fail("修改失败,存在名称相同的同级部门"); return R.fail("修改失败,存在名称相同的同级部门");
} }
departmentMapper.updateById(department); departmentMapper.updateById(department);
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("'删除部门:'+#department.name") @UserAction("'删除部门:'+#department.name")
public Result del(SysDepartment department) { public R del(SysDepartment department) {
int rows = departmentMapper.deleteById(department.getId()); 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; package cn.toesbieya.jxc.service.sys;
import cn.toesbieya.jxc.enumeration.ResourceTypeEnum;
import cn.toesbieya.jxc.mapper.SysResourceMapper; import cn.toesbieya.jxc.mapper.SysResourceMapper;
import cn.toesbieya.jxc.model.entity.SysResource; import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.entity.SysRole; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
@ -21,11 +22,15 @@ public class SysResourceService {
@Resource @Resource
private SysResourceMapper mapper; private SysResourceMapper mapper;
public List<ResourceVo> getAll() { public List<SysResource> getAll() {
return completeNode(mapper.selectList(null)); 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) { if (role == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
@ -36,54 +41,125 @@ public class SysResourceService {
return Collections.emptyList(); return Collections.emptyList();
} }
List<SysResource> list = mapper.selectList( return getEnableResourceTree(ids, i -> !i.getType().equals(ResourceTypeEnum.FOLDER.getCode()));
Wrappers.lambdaQuery(SysResource.class) }
.inSql(SysResource::getId, ids)
);
return completeNode(list); public R add(SysResource entity) {
String error = check(entity);
if (!StringUtils.isEmpty(error)) {
return R.fail("添加失败," + error);
} }
private List<ResourceVo> completeNode(List<SysResource> list) { entity.setId(null);
List<ResourceVo> result = new ArrayList<>(list.size()); transform(entity);
HashMap<Integer, String> urlMap = new HashMap<>(128);
HashMap<Integer, String> nameMap = new HashMap<>(128);
for (SysResource resource : list) { mapper.insert(entity);
ResourceVo vo = new ResourceVo(resource);
Integer id = resource.getId(); return R.success("添加成功");
String url = resource.getUrl(); }
String name = resource.getName();
//跳过顶级节点 public R update(SysResource entity) {
if (resource.getPid().equals(0)) { String error = check(entity);
vo.setFullname(name); if (!StringUtils.isEmpty(error)) {
return R.fail("修改失败," + error);
}
urlMap.put(id, url); transform(entity);
nameMap.put(id, name);
mapper.updateById(entity);
return R.success("修改成功");
} }
else {
Integer pid = resource.getPid();
//获取父节点进行拼接 public R del(int id) {
String parentUrl = urlMap.get(pid); Integer childrenNum = mapper.selectCount(
String parentName = nameMap.get(pid); 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("删除失败");
}
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName); /**
* 获取路径经过叠加且以启用的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));
}
String fullname = parentName + " - " + name; return true;
})
.collect(Collectors.toList());
}
//判断节点是否合法,不合法则返回错误信息
private String check(SysResource entity) {
Integer pid = entity.getPid();
Integer type = entity.getType();
vo.setUrl(parentUrl + url); boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
vo.setFullname(fullname);
urlMap.put(id, vo.getUrl()); //根节点不能为数据接口
nameMap.put(id, fullname); if (pid.equals(0)) {
return isApi ? "数据接口不能作为根节点" : null;
} }
result.add(vo); //校验父节点
SysResource parent = mapper.selectById(pid);
if (parent == null) {
return "父节点不存在,请刷新后重试";
}
Integer parentType = parent.getType();
//1.待添加的节点为数据接口且父节点必须为叶子菜单
if (isApi) {
if (!parentType.equals(ResourceTypeEnum.LEAF.getCode())) {
return "数据接口只能以页面菜单为父节点";
}
}
//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.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.mapper.SysRoleMapper; import cn.toesbieya.jxc.mapper.SysRoleMapper;
import cn.toesbieya.jxc.model.entity.SysRole; 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.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.RoleSearch; import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -57,21 +57,21 @@ public class SysRoleService {
} }
@UserAction("'添加角色:'+#role.name") @UserAction("'添加角色:'+#role.name")
public Result add(SysRole role) { public R add(SysRole role) {
if (isNameExist(role.getName(), null)) { if (isNameExist(role.getName(), null)) {
return Result.fail("添加失败,角色名称重复"); return R.fail("添加失败,角色名称重复");
} }
int rows = mapper.insert(role); int rows = mapper.insert(role);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改角色:'+#role.name") @UserAction("'修改角色:'+#role.name")
public Result update(SysRole role) { public R update(SysRole role) {
Integer id = role.getId(); Integer id = role.getId();
String name = role.getName(); String name = role.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail("修改失败,角色名称重复"); return R.fail("修改失败,角色名称重复");
} }
mapper.update( mapper.update(
@ -84,17 +84,17 @@ public class SysRoleService {
.set(SysRole::getResourceId, role.getResourceId()) .set(SysRole::getResourceId, role.getResourceId())
.eq(SysRole::getId, id) .eq(SysRole::getId, id)
); );
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("'删除角色:'+#role.name") @UserAction("'删除角色:'+#role.name")
public Result del(SysRole role) { public R del(SysRole role) {
int rows = mapper.delete( int rows = mapper.delete(
Wrappers.lambdaQuery(SysRole.class) Wrappers.lambdaQuery(SysRole.class)
.eq(SysRole::getId, role.getId()) .eq(SysRole::getId, role.getId())
.eq(SysRole::getStatus, GeneralStatusEnum.DISABLED.getCode()) .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) { 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.mapper.SysSupplierMapper;
import cn.toesbieya.jxc.model.entity.SysRegion; import cn.toesbieya.jxc.model.entity.SysRegion;
import cn.toesbieya.jxc.model.entity.SysSupplier; 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.SupplierVo;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult; import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
@ -86,21 +86,21 @@ public class SysSupplierService {
} }
@UserAction("'添加供应商:'+ #supplier.name") @UserAction("'添加供应商:'+ #supplier.name")
public Result add(SysSupplier supplier) { public R add(SysSupplier supplier) {
if (isNameExist(supplier.getName(), null)) { 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); int rows = supplierMapper.insert(supplier);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败"); return rows > 0 ? R.success("添加成功") : R.fail("添加失败");
} }
@UserAction("'修改供应商:'+ #supplier.name") @UserAction("'修改供应商:'+ #supplier.name")
public Result update(SysSupplier supplier) { public R update(SysSupplier supplier) {
Integer id = supplier.getId(); Integer id = supplier.getId();
String name = supplier.getName(); String name = supplier.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail(String.format("修改失败,供应商【%s】已存在", name)); return R.fail(String.format("修改失败,供应商【%s】已存在", name));
} }
supplierMapper.update( supplierMapper.update(
@ -115,17 +115,17 @@ public class SysSupplierService {
.set(SysSupplier::getRemark, supplier.getRemark()) .set(SysSupplier::getRemark, supplier.getRemark())
.eq(SysSupplier::getId, id) .eq(SysSupplier::getId, id)
); );
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("删除供应商:'+ #supplier.name") @UserAction("删除供应商:'+ #supplier.name")
public Result del(SysSupplier supplier) { public R del(SysSupplier supplier) {
int rows = supplierMapper.delete( int rows = supplierMapper.delete(
Wrappers.lambdaQuery(SysSupplier.class) Wrappers.lambdaQuery(SysSupplier.class)
.eq(SysSupplier::getId, supplier.getId()) .eq(SysSupplier::getId, supplier.getId())
.eq(SysSupplier::getStatus, GeneralStatusEnum.DISABLED.getCode()) .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) { 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.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser; import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.DepartmentVo; 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.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult; import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.UserSearch; import cn.toesbieya.jxc.model.vo.search.UserSearch;
@ -108,9 +108,9 @@ public class SysUserService {
} }
@UserAction("'添加用户:'+#user.name") @UserAction("'添加用户:'+#user.name")
public Result add(SysUser user) { public R add(SysUser user) {
if (isNameExist(user.getName(), null)) { if (isNameExist(user.getName(), null)) {
return Result.fail("该用户名称已存在"); return R.fail("该用户名称已存在");
} }
user.setId(null); user.setId(null);
@ -118,16 +118,16 @@ public class SysUserService {
user.setPwd(DEFAULT_PWD); user.setPwd(DEFAULT_PWD);
userMapper.insert(user); userMapper.insert(user);
return Result.success("添加成功"); return R.success("添加成功");
} }
@UserAction("'修改用户:'+#user.name") @UserAction("'修改用户:'+#user.name")
public Result update(SysUser user) { public R update(SysUser user) {
Integer id = user.getId(); Integer id = user.getId();
String name = user.getName(); String name = user.getName();
if (isNameExist(name, id)) { if (isNameExist(name, id)) {
return Result.fail("该用户名称已存在"); return R.fail("该用户名称已存在");
} }
userMapper.update( userMapper.update(
@ -140,23 +140,23 @@ public class SysUserService {
.eq(SysUser::getId, id) .eq(SysUser::getId, id)
); );
return Result.success("修改成功"); return R.success("修改成功");
} }
@UserAction("'删除用户:'+#user.name") @UserAction("'删除用户:'+#user.name")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result del(SysUser user) { public R del(SysUser user) {
int rows = userMapper.delete( int rows = userMapper.delete(
Wrappers.lambdaQuery(SysUser.class) Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getId, user.getId()) .eq(SysUser::getId, user.getId())
.eq(SysUser::isAdmin, 0) .eq(SysUser::isAdmin, 0)
); );
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除"); WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试"); return rows > 0 ? R.success("删除成功") : R.fail("删除失败,请刷新后重试");
} }
@UserAction @UserAction
public Result kick(List<SysUser> users) { public R kick(List<SysUser> users) {
WebSocketUtil.sendLogoutEvent( WebSocketUtil.sendLogoutEvent(
users users
.stream() .stream()
@ -165,18 +165,18 @@ public class SysUserService {
"你已被强制下线,请重新登陆" "你已被强制下线,请重新登陆"
); );
return Result.success("踢出成功"); return R.success("踢出成功");
} }
@UserAction("'重置用户密码:'+#user.name") @UserAction("'重置用户密码:'+#user.name")
public Result resetPwd(SysUser user) { public R resetPwd(SysUser user) {
int rows = userMapper.update( int rows = userMapper.update(
null, null,
Wrappers.lambdaUpdate(SysUser.class) Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, DEFAULT_PWD) .set(SysUser::getPwd, DEFAULT_PWD)
.eq(SysUser::getId, user.getId()) .eq(SysUser::getId, user.getId())
); );
return rows > 0 ? Result.success() : Result.fail("重置失败,未匹配到用户"); return rows > 0 ? R.success() : R.fail("重置失败,未匹配到用户");
} }
//用户名重复时返回true //用户名重复时返回true

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

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

Loading…
Cancel
Save