下划线变量改为驼峰形式

数据隔离初步
master
toesbieya 6 years ago
parent 0e8f4dc504
commit f450f31300
  1. 14
      java/cloud/api/src/main/java/cn/toesbieya/jxc/api/service/system/DepartmentApi.java
  2. 8
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/constant/DocumentConstant.java
  3. 12
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/constant/SessionConstant.java
  4. 18
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/constant/SocketConstant.java
  5. 15
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/DataScopeEnum.java
  6. 4
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizDocHistory.java
  7. 2
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizPurchaseOrderSub.java
  8. 8
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizSellOrder.java
  9. 2
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizSellOrderSub.java
  10. 6
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysResource.java
  11. 5
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysRole.java
  12. 3
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysUser.java
  13. 22
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/DepartmentVo.java
  14. 4
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/ResourceVo.java
  15. 4
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/StockSearchResult.java
  16. 8
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/UserVo.java
  17. 10
      java/cloud/gateway/pom.xml
  18. 6
      java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/config/ResourceConfig.java
  19. 33
      java/cloud/pom.xml
  20. 1
      java/cloud/schedule/pom.xml
  21. 1
      java/cloud/web/pom.xml
  22. 1
      java/cloud/web/web-common/pom.xml
  23. 2
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/config/WebConfig.java
  24. 30
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/interceptor/SecurityInterceptor.java
  25. 3
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/interceptor/UserActionInterceptor.java
  26. 17
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/utils/SecurityUtil.java
  27. 6
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/utils/ThreadUtil.java
  28. 8
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/controller/AccountController.java
  29. 39
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/service/AccountService.java
  30. 7
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/LoginSuccessInfo.java
  31. 4
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/PasswordUpdateParam.java
  32. 8
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/controller/SellOrderController.java
  33. 2
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/model/vo/DocSearch.java
  34. 2
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/model/vo/PurchaseInboundSearch.java
  35. 2
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/model/vo/SellOrderExport.java
  36. 4
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/model/vo/SellOrderSearch.java
  37. 2
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/model/vo/SellOutboundSearch.java
  38. 34
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/service/PurchaseInboundService.java
  39. 20
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/service/PurchaseOrderService.java
  40. 34
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/service/SellOrderService.java
  41. 34
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/service/SellOutboundService.java
  42. 4
      java/cloud/web/web-modules/document/src/main/java/cn/toesbieya/jxc/document/util/DocUtil.java
  43. 2
      java/cloud/web/web-modules/document/src/main/resources/mapper/BizPurchaseOrderSub.xml
  44. 2
      java/cloud/web/web-modules/document/src/main/resources/mapper/BizSellOrderSub.xml
  45. 16
      java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/constant/MsgConstant.java
  46. 1
      java/cloud/web/web-modules/pom.xml
  47. 10
      java/cloud/web/web-modules/stock/src/main/java/cn/toesbieya/jxc/stock/model/vo/StockExport.java
  48. 2
      java/cloud/web/web-modules/stock/src/main/java/cn/toesbieya/jxc/stock/service/StockService.java
  49. 19
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/SysDepartmentController.java
  50. 7
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysDepartmentMapper.java
  51. 2
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/CustomerVo.java
  52. 2
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/SupplierVo.java
  53. 2
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SysCustomerService.java
  54. 76
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SysDepartmentService.java
  55. 12
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SysResourceService.java
  56. 4
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SysRoleService.java
  57. 2
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SysSupplierService.java
  58. 7
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/SysUserService.java
  59. 37
      java/cloud/web/web-modules/system/src/main/resources/mapper/SysDepartment.xml
  60. 60
      java/local/pom.xml
  61. 4
      java/local/src/main/java/cn/toesbieya/jxc/MyApplication.java
  62. 4
      java/local/src/main/java/cn/toesbieya/jxc/aspect/LockAspect.java
  63. 4
      java/local/src/main/java/cn/toesbieya/jxc/aspect/UserActionAspect.java
  64. 8
      java/local/src/main/java/cn/toesbieya/jxc/constant/DocumentConstant.java
  65. 16
      java/local/src/main/java/cn/toesbieya/jxc/constant/MsgConstant.java
  66. 12
      java/local/src/main/java/cn/toesbieya/jxc/constant/SessionConstant.java
  67. 18
      java/local/src/main/java/cn/toesbieya/jxc/constant/SocketConstant.java
  68. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/AccountController.java
  69. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizDocumentHistoryController.java
  70. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizPurchaseInboundController.java
  71. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizPurchaseOrderController.java
  72. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizSellOrderController.java
  73. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizSellOutboundController.java
  74. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizStockController.java
  75. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/FileController.java
  76. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/MsgController.java
  77. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/RecController.java
  78. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/StatisticController.java
  79. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysCategoryController.java
  80. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysCustomerController.java
  81. 22
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysDepartmentController.java
  82. 6
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysResourceController.java
  83. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysRoleController.java
  84. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysSupplierController.java
  85. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/SysUserController.java
  86. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/TestController.java
  87. 15
      java/local/src/main/java/cn/toesbieya/jxc/enumeration/DataScopeEnum.java
  88. 2
      java/local/src/main/java/cn/toesbieya/jxc/handler/GlobalExceptionHandler.java
  89. 3
      java/local/src/main/java/cn/toesbieya/jxc/interceptor/RateControlInterceptor.java
  90. 8
      java/local/src/main/java/cn/toesbieya/jxc/interceptor/SecurityInterceptor.java
  91. 2
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOrderMapper.java
  92. 7
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysDepartmentMapper.java
  93. 4
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRoleMapper.java
  94. 4
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysUserMapper.java
  95. 4
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocumentHistory.java
  96. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrderSub.java
  97. 4
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrder.java
  98. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrderSub.java
  99. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysCustomer.java
  100. 8
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysResource.java
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,14 @@
package cn.toesbieya.jxc.api.service.system;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import java.util.Set;
public interface DepartmentApi {
//获取用户的数据范围(部门ID集合),返回null说明无需限制
Set<Integer> getUserDataScope(SysUser user);
//获取带有全名的部门
DepartmentVo getById(int id);
}

@ -1,12 +1,12 @@
package cn.toesbieya.jxc.common.constant;
public class DocumentConstant {
public interface DocumentConstant {
//更新单据ID时的redis锁的键
public static final String UPDATE_DOCUMENTS_LOCK_KEY = "UPDATE_DOCUMENTS";
String UPDATE_DOCUMENTS_LOCK_KEY = "UPDATE_DOCUMENTS";
//单据ID的redis缓存的键
public static final String DOCUMENT_TYPE_REDIS_KEY = "documentsID";
String DOCUMENT_TYPE_REDIS_KEY = "documentsID";
//单据类型
public static final String[] DOCUMENT_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
String[] DOCUMENT_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
}

@ -1,18 +1,18 @@
package cn.toesbieya.jxc.common.constant;
public class SessionConstant {
public interface SessionConstant {
//session过期时间,单位秒
public static long EXPIRE = 3600 * 8;
long EXPIRE = 3600 * 8;
//存储用户信息的键的前缀
public static String REDIS_NAMESPACE = "sessions:";
String REDIS_NAMESPACE = "sessions:";
//key过期事件的前缀
public static String REDIS_EXPIRE_TOPIC_PREFIX = "__keyspace@0__:";
String REDIS_EXPIRE_TOPIC_PREFIX = "__keyspace@0__:";
//http headers中token的字段名
public static String TOKEN_KEY = "X-Token";
String TOKEN_KEY = "X-Token";
//区别无活动用户的时间间隔,单位秒
public static long NO_ACTION_INTERVAL = 1800;
long NO_ACTION_INTERVAL = 1800;
}

@ -1,23 +1,23 @@
package cn.toesbieya.jxc.common.constant;
public class SocketConstant {
public interface SocketConstant {
//web-socket服务端订阅的redis主题名称
public static String REDIS_EVENT_TOPIC_SEND = "socket-event-send";
String REDIS_EVENT_TOPIC_SEND = "socket-event-send";
//指定用户
public static int REDIS_EVENT_SPECIFIC = 0;
int REDIS_EVENT_SPECIFIC = 0;
//广播
public static int REDIS_EVENT_BROADCAST = 1;
int REDIS_EVENT_BROADCAST = 1;
//登出
public static int REDIS_EVENT_LOGOUT = 2;
int REDIS_EVENT_LOGOUT = 2;
//存放于redis中的在线用户的ID集合的键
public static String REDIS_ONLINE_USER = "socket:online-user";
String REDIS_ONLINE_USER = "socket:online-user";
//存放于redis中的离线用户的离线时间的键
public static String REDIS_OFFLINE_USER = "socket:offline-user";
String REDIS_OFFLINE_USER = "socket:offline-user";
//登出事件
public static final String EVENT_LOGOUT = "logout";
String EVENT_LOGOUT = "logout";
//新消息事件
public static final String EVENT_NEW_MESSAGE = "new-message";
String EVENT_NEW_MESSAGE = "new-message";
}

@ -0,0 +1,15 @@
package cn.toesbieya.jxc.common.enumeration;
public enum DataScopeEnum {
ALL(1), SELF(2), SPECIFIC(3);
private final int code;
DataScopeEnum(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}

@ -18,8 +18,8 @@ public class BizDocHistory implements Serializable {
private Integer type;
private Integer uid;
private String uname;
private Integer status_before;
private Integer status_after;
private Integer statusBefore;
private Integer statusAfter;
private Long time;
private String info;
}

@ -11,5 +11,5 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = true)
public class BizPurchaseOrderSub extends BizDocSub {
private BigDecimal price;
private BigDecimal remain_num;
private BigDecimal remainNum;
}

@ -12,16 +12,16 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class BizSellOrder extends BizDoc {
private Integer customer_id;
private String customer_name;
private Integer customerId;
private String customerName;
private Integer finish;
private Long ftime;
private BigDecimal total;
public BizSellOrder(BizSellOrder obj) {
super(obj);
this.customer_id = obj.getCustomer_id();
this.customer_name = obj.getCustomer_name();
this.customerId = obj.getCustomerId();
this.customerName = obj.getCustomerName();
this.finish = obj.getFinish();
this.ftime = obj.getFtime();
this.total = obj.getTotal();

@ -11,5 +11,5 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = true)
public class BizSellOrderSub extends BizDocSub {
private BigDecimal price;
private BigDecimal remain_num;
private BigDecimal remainNum;
}

@ -11,7 +11,7 @@ public class SysResource implements Serializable {
private Integer pid;
private String name;
private String url;
private Integer admin;
private Long total_rate;
private Long ip_rate;
private boolean admin = false;
private Long totalRate;
private Long ipRate;
}

@ -1,5 +1,6 @@
package cn.toesbieya.jxc.common.model.entity;
import cn.toesbieya.jxc.common.enumeration.DataScopeEnum;
import lombok.Data;
import java.io.Serializable;
@ -9,9 +10,11 @@ public class SysRole implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String resource_id;
private Integer cid;
private String cname;
private Long ctime;
private Integer status;
private int scope = DataScopeEnum.ALL.getCode();
private String departmentId;
private String resourceId;
}

@ -17,6 +17,7 @@ public class SysUser implements Serializable {
private Integer role;
private String avatar;
private Long ctime;
private Integer admin;
private boolean admin = false;
private Integer status;
private Integer dept;
}

@ -0,0 +1,22 @@
package cn.toesbieya.jxc.common.model.vo;
import cn.toesbieya.jxc.common.model.entity.SysDepartment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class DepartmentVo extends SysDepartment {
String fullname;
public DepartmentVo(SysDepartment parent) {
this.setId(parent.getId());
this.setPid(parent.getPid());
this.setName(parent.getName());
this.setStatus(parent.getStatus());
}
}

@ -11,13 +11,13 @@ import lombok.ToString;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ResourceVo extends SysResource {
private String fullName;
private String fullname;
public ResourceVo(SysResource parent) {
this.setId(parent.getId());
this.setPid(parent.getPid());
this.setName(parent.getName());
this.setUrl(parent.getUrl());
this.setAdmin(parent.getAdmin());
this.setAdmin(parent.isAdmin());
}
}

@ -10,6 +10,6 @@ public class StockSearchResult implements Serializable {
private static final long serialVersionUID = 1L;
private Integer cid;
private String cname;
private BigDecimal total_num;
private BigDecimal total_price;
private BigDecimal totalNum;
private BigDecimal totalPrice;
}

@ -14,9 +14,11 @@ import java.util.Set;
@EqualsAndHashCode(callSuper = true)
public class UserVo extends SysUser {
private String token;
private String role_name;
private String roleName;
private String deptName;
private boolean online = false;
private Set<Integer> resource_ids;
private Set<Integer> departmentIds;
private Set<Integer> resourceIds;
public UserVo(SysUser parent) {
this.setId(parent.getId());
@ -25,7 +27,7 @@ public class UserVo extends SysUser {
this.setRole(parent.getRole());
this.setAvatar(parent.getAvatar());
this.setCtime(parent.getCtime());
this.setAdmin(parent.getAdmin());
this.setAdmin(parent.isAdmin());
this.setStatus(parent.getStatus());
}
}

@ -21,22 +21,20 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>

@ -25,7 +25,7 @@ public class ResourceConfig implements CommandLineRunner {
public static boolean authority(UserVo user, String url) {
//超级管理员放行
if (user.getAdmin() == 1) {
if (user.isAdmin()) {
return true;
}
//普通用户访问admin权限的资源时拦截
@ -37,7 +37,7 @@ public class ResourceConfig implements CommandLineRunner {
return true;
}
Set<Integer> ids = user.getResource_ids();
Set<Integer> ids = user.getResourceIds();
return ids != null && ids.contains(urlMap.get(url));
}
@ -62,7 +62,7 @@ public class ResourceConfig implements CommandLineRunner {
completeNode(resources);
for (SysResource p : resources) {
if (p.getAdmin().equals(1)) {
if (p.isAdmin()) {
adminUrlMap.put(p.getUrl(), p.getId());
}
else urlMap.put(p.getUrl(), p.getId());

@ -25,34 +25,29 @@
<properties>
<java.version>1.8</java.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<mybatis-plus.version>3.3.2</mybatis-plus.version>
<pagehelper.version>1.2.12</pagehelper.version>
<socketio.version>1.7.18</socketio.version>
<guava.version>28.1-jre</guava.version>
<fastjson.version>1.2.60</fastjson.version>
<!--七牛云-->
<qiniu.version>[7.2.0, 7.2.99]</qiniu.version>
<!--三方工具-->
<easyexcel.version>2.2.5</easyexcel.version>
</properties>
<dependencies>
<!--nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
@ -61,18 +56,17 @@
<dependencyManagement>
<dependencies>
<!--基础模块-->
<dependency>
<groupId>cn.toesbieya</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.toesbieya</groupId>
<artifactId>web-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.toesbieya</groupId>
<artifactId>api</artifactId>
@ -87,6 +81,7 @@
<scope>import</scope>
</dependency>-->
<!--SpringCloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
@ -94,7 +89,6 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
@ -103,42 +97,41 @@
<scope>import</scope>
</dependency>
<!--mybatis-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!--websocket-->
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>${socketio.version}</version>
</dependency>
<!--工具类-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>${qiniu.version}</version>
</dependency>
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>${socketio.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>

@ -26,7 +26,6 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>

@ -21,7 +21,6 @@
<groupId>cn.toesbieya</groupId>
<artifactId>common</artifactId>
</dependency>
<dependency>
<groupId>cn.toesbieya</groupId>
<artifactId>api</artifactId>

@ -21,7 +21,6 @@
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>

@ -1,6 +1,7 @@
package cn.toesbieya.jxc.web.common.config;
import cn.toesbieya.jxc.common.config.FastJsonConfigFactory;
import cn.toesbieya.jxc.web.common.interceptor.SecurityInterceptor;
import cn.toesbieya.jxc.web.common.interceptor.UserActionInterceptor;
import cn.toesbieya.jxc.web.common.interceptor.predicate.UserActionPredicate;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
@ -37,6 +38,7 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/**");
registry.addInterceptor(new UserActionInterceptor(userActionPredicate)).addPathPatterns("/**");
}

@ -0,0 +1,30 @@
package cn.toesbieya.jxc.web.common.interceptor;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import cn.toesbieya.jxc.common.utils.SessionUtil;
import cn.toesbieya.jxc.web.common.utils.ThreadUtil;
import cn.toesbieya.jxc.web.common.utils.WebUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Slf4j
public class SecurityInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
UserVo user = SessionUtil.get(request);
if (user == null) {
WebUtil.responseJson(response, Result.requireLogin());
ThreadUtil.clearAll();
return false;
}
ThreadUtil.setUser(user);
return true;
}
}

@ -6,12 +6,13 @@ import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class UserActionInterceptor implements HandlerInterceptor {
private final UserActionPredicate predicate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
if (predicate.allowed(request)) {
ThreadUtil.quicklySetAction(request);
}

@ -0,0 +1,17 @@
package cn.toesbieya.jxc.web.common.utils;
import cn.toesbieya.jxc.common.model.vo.UserVo;
import java.util.Set;
import java.util.stream.Collectors;
public class SecurityUtil {
//获取字符串形式的数据范围,sql中使用 in (${param}) 拼接
public static String getScopeParam() {
UserVo user = ThreadUtil.getUser();
if (user == null) return "''";
Set<Integer> deptIds = user.getDepartmentIds();
if (deptIds == null) return null;
return deptIds.isEmpty() ? "''" : deptIds.stream().map(String::valueOf).collect(Collectors.joining(","));
}
}

@ -11,9 +11,9 @@ public class ThreadUtil {
private static final ThreadLocal<UserVo> THREAD_LOCAL_USER = new ThreadLocal<>();
public static void quicklySetAction(HttpServletRequest request) {
UserVo user = SessionUtil.get(request);
if (null == user) return;
UserVo user = getUser();
if (user == null) user = SessionUtil.get(request);
if (user == null) return;
RecUserAction userAction = RecUserAction.builder()
.uid(user.getId())

@ -81,10 +81,10 @@ public class AccountController {
private String validateUpdatePwdParam(PasswordUpdateParam vo) {
if (vo.getId() == null) return "修改失败,参数错误";
if (StringUtils.isEmpty(vo.getOld_pwd())) return "修改失败,原密码不能为空";
if (StringUtils.isEmpty(vo.getNew_pwd())) return "修改失败,新密码不能为空";
if (vo.getOld_pwd().equals(vo.getNew_pwd())) return "修改失败,新密码不得与旧密码相同";
if (vo.getNew_pwd().length() != 32) return "修改失败,密码参数有误";
if (StringUtils.isEmpty(vo.getOldPwd())) return "修改失败,原密码不能为空";
if (StringUtils.isEmpty(vo.getNewPwd())) return "修改失败,新密码不能为空";
if (vo.getOldPwd().equals(vo.getNewPwd())) return "修改失败,新密码不得与旧密码相同";
if (vo.getNewPwd().length() != 32) return "修改失败,密码参数有误";
return null;
}
}

@ -7,12 +7,14 @@ import cn.toesbieya.jxc.account.vo.LoginSuccessInfo;
import cn.toesbieya.jxc.account.vo.PasswordUpdateParam;
import cn.toesbieya.jxc.account.vo.RegisterParam;
import cn.toesbieya.jxc.api.service.RecordApi;
import cn.toesbieya.jxc.api.service.system.DepartmentApi;
import cn.toesbieya.jxc.api.service.system.ResourceApi;
import cn.toesbieya.jxc.api.service.system.RoleApi;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.ResourceVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.model.vo.UserVo;
@ -43,6 +45,8 @@ public class AccountService {
private ResourceApi resourceApi;
@Reference
private RoleApi roleApi;
@Reference
public DepartmentApi departmentApi;
@TimeCost
public Result login(LoginParam param, String ip) {
@ -60,10 +64,11 @@ public class AccountService {
return Result.fail("该用户已被禁用,请联系管理员");
}
Integer roleId = user.getRole();
if (user.getAdmin() != 1 && roleId == null) {
if (!user.isAdmin() && roleId == null) {
return Result.fail("该用户尚未被分配角色,请联系管理员");
}
//设置token
String token = SessionUtil.generateToken(user);
//存入redis的数据
@ -75,18 +80,17 @@ public class AccountService {
info.setToken(token);
Map<String, Integer> userResourcesUrlMap = null;
Set<Integer> userResourcesIdSet = null;
//获取用户的所有权限url
if (roleId != null) {
//获取用户的角色
SysRole role = roleApi.getRoleById(roleId);
if (role != null) {
String role_name = role.getName();
userVo.setRole_name(role_name);
info.setRole_name(role_name);
//设置角色名称
String roleName = role.getName();
userVo.setRoleName(roleName);
info.setRoleName(roleName);
//获取用户的权限列表
List<ResourceVo> resources = resourceApi.getResourceByRole(role);
@ -102,8 +106,25 @@ public class AccountService {
}
}
userVo.setResource_ids(userResourcesIdSet);
//获取用户部门
Integer deptId = user.getDept();
if (deptId != null) {
DepartmentVo dept = departmentApi.getById(deptId);
if (dept != null) {
//设置用户的部门名称
String deptName = dept.getFullname();
userVo.setDeptName(deptName);
info.setDeptName(deptName);
}
}
//用户的数据范围
userVo.setDepartmentIds(departmentApi.getUserDataScope(user));
//用户的权限ID集合
userVo.setResourceIds(userResourcesIdSet);
//返回给前端的用户权限表
info.setResources(userResourcesUrlMap);
//用户信息插入redis
@ -164,9 +185,9 @@ public class AccountService {
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, param.getNew_pwd())
.set(SysUser::getPwd, param.getNewPwd())
.eq(SysUser::getId, param.getId())
.eq(SysUser::getPwd, param.getOld_pwd())
.eq(SysUser::getPwd, param.getOldPwd())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确");
}

@ -11,9 +11,10 @@ import java.util.Map;
public class LoginSuccessInfo {
private Integer id;
private String name;
private String role_name;
private String roleName;
private String deptName;
private String avatar;
private Integer admin;
private boolean admin;
private String token;
private Map<String, Integer> resources;
@ -21,6 +22,6 @@ public class LoginSuccessInfo {
this.id = user.getId();
this.name = user.getName();
this.avatar = user.getAvatar();
this.admin = user.getAdmin();
this.admin = user.isAdmin();
}
}

@ -5,6 +5,6 @@ import lombok.Data;
@Data
public class PasswordUpdateParam {
private Integer id;
private String new_pwd;
private String old_pwd;
private String newPwd;
private String oldPwd;
}

@ -51,8 +51,8 @@ public class SellOrderController {
@PostMapping("add")
public Result add(HttpServletRequest request, @RequestBody SellOrderVo vo) {
if (vo.getCustomer_id() == null
|| StringUtils.isEmpty(vo.getCustomer_name())
if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) {
return Result.fail("参数错误");
}
@ -122,8 +122,8 @@ public class SellOrderController {
private String validateUpdate(BizSellOrder main) {
if (StringUtils.isEmpty(main.getId())
|| StringUtils.isEmpty(main.getCustomer_id())
|| StringUtils.isEmpty(main.getCustomer_name())
|| StringUtils.isEmpty(main.getCustomerId())
|| StringUtils.isEmpty(main.getCustomerName())
|| StringUtils.isEmpty(main.getCid())
|| StringUtils.isEmpty(main.getCname())
|| StringUtils.isEmpty(main.getCtime())

@ -10,7 +10,7 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
public class DocSearch extends BaseSearch {
private String id;
private String id_fuzzy;
private String idFuzzy;
private Integer cid;
private String cname;
private Integer vid;

@ -9,5 +9,5 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
public class PurchaseInboundSearch extends DocSearch {
private String pid;
private String pid_fuzzy;
private String pidFuzzy;
}

@ -12,7 +12,7 @@ public class SellOrderExport {
@ExcelProperty(value = "客户", index = 1)
@ColumnWidth(30)
private String customer_name;
private String customerName;
@ExcelProperty(value = "创建人", index = 2)
@ColumnWidth(20)

@ -8,8 +8,8 @@ import lombok.ToString;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SellOrderSearch extends DocSearch {
private Integer customer_id;
private String customer_name;
private Integer customerId;
private String customerName;
private String finish;
private Long ftimeStart;
private Long ftimeEnd;

@ -9,5 +9,5 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
public class SellOutboundSearch extends DocSearch {
private String pid;
private String pid_fuzzy;
private String pidFuzzy;
}

@ -111,8 +111,8 @@ public class PurchaseInboundService {
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
.uname(doc.getCname())
.status_before(DocStatusEnum.DRAFT.getCode())
.status_after(DocStatusEnum.WAIT_VERIFY.getCode())
.statusBefore(DocStatusEnum.DRAFT.getCode())
.statusAfter(DocStatusEnum.WAIT_VERIFY.getCode())
.time(System.currentTimeMillis())
.build()
);
@ -138,8 +138,8 @@ public class PurchaseInboundService {
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -183,7 +183,7 @@ public class PurchaseInboundService {
//生成需要入库的商品列表
for (BizPurchaseOrderSub orderSub : orderSubList) {
if (orderSub.getRemain_num().equals(BigDecimal.ZERO)) {
if (orderSub.getRemainNum().equals(BigDecimal.ZERO)) {
continue;
}
@ -198,18 +198,18 @@ public class PurchaseInboundService {
.build()
);
BigDecimal gap = orderSub.getRemain_num().subtract(inboundSub.getNum());
BigDecimal gap = orderSub.getRemainNum().subtract(inboundSub.getNum());
//如果有任意一个采购商品的remain_num大于采购商品的num,则完成情况为进行中,否则为已完成
//如果有任意一个采购商品的remainNum大于采购商品的num,则完成情况为进行中,否则为已完成
if (gap.compareTo(BigDecimal.ZERO) > 0) {
finish = DocFinishEnum.UNDERWAY;
}
//更新采购订单子表的remain_num
//更新采购订单子表的remainNum
orderSubMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrderSub.class)
.set(BizPurchaseOrderSub::getRemain_num, gap)
.set(BizPurchaseOrderSub::getRemainNum, gap)
.eq(BizPurchaseOrderSub::getId, orderSub.getId())
);
}
@ -234,8 +234,8 @@ public class PurchaseInboundService {
.builder()
.pid(id).type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()).uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.VERIFIED.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now).info(info)
.build()
);
@ -260,8 +260,8 @@ public class PurchaseInboundService {
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -383,10 +383,10 @@ public class PurchaseInboundService {
if (orderSub == null) {
return String.format("入库商品【%s】不在采购订单中", inboundSub.getCname());
}
if (orderSub.getRemain_num().compareTo(BigDecimal.ZERO) <= 0) {
if (orderSub.getRemainNum().compareTo(BigDecimal.ZERO) <= 0) {
return String.format("入库商品【%s】已全部入库", inboundSub.getCname());
}
if (orderSub.getRemain_num().compareTo(inboundSub.getNum()) < 0) {
if (orderSub.getRemainNum().compareTo(inboundSub.getNum()) < 0) {
return String.format("入库商品【%s】的数量超出订单数量", inboundSub.getCname());
}
}
@ -422,10 +422,10 @@ public class PurchaseInboundService {
private Wrapper<BizPurchaseInbound> getSearchCondition(PurchaseInboundSearch vo) {
String pid = vo.getPid();
String pid_fuzzy = vo.getPid_fuzzy();
String pidFuzzy = vo.getPidFuzzy();
return DocUtil.baseCondition(BizPurchaseInbound.class, vo)
.eq(pid != null, BizPurchaseInbound::getPid, pid)
.like(!StringUtils.isEmpty(pid_fuzzy), BizPurchaseInbound::getPid, pid_fuzzy);
.like(!StringUtils.isEmpty(pidFuzzy), BizPurchaseInbound::getPid, pidFuzzy);
}
}

@ -103,8 +103,8 @@ public class PurchaseOrderService {
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
.uname(doc.getCname())
.status_before(DocStatusEnum.DRAFT.getCode())
.status_after(DocStatusEnum.WAIT_VERIFY.getCode())
.statusBefore(DocStatusEnum.DRAFT.getCode())
.statusAfter(DocStatusEnum.WAIT_VERIFY.getCode())
.time(System.currentTimeMillis())
.build()
);
@ -131,8 +131,8 @@ public class PurchaseOrderService {
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -168,8 +168,8 @@ public class PurchaseOrderService {
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.VERIFIED.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
.info(info)
.build()
@ -195,8 +195,8 @@ public class PurchaseOrderService {
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -234,7 +234,7 @@ public class PurchaseOrderService {
//设置子表的pid、剩余未出库数量
for (BizPurchaseOrderSub sub : subList) {
sub.setPid(id);
sub.setRemain_num(sub.getNum());
sub.setRemainNum(sub.getNum());
}
//插入主表和子表
@ -276,7 +276,7 @@ public class PurchaseOrderService {
//插入新的子表
List<BizPurchaseOrderSub> subList = doc.getData();
subList.forEach(sub -> sub.setRemain_num(sub.getNum()));
subList.forEach(sub -> sub.setRemainNum(sub.getNum()));
subMapper.insertBatch(subList);
//附件增删

@ -106,8 +106,8 @@ public class SellOrderService {
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
.uname(doc.getCname())
.status_before(DocStatusEnum.DRAFT.getCode())
.status_after(DocStatusEnum.WAIT_VERIFY.getCode())
.statusBefore(DocStatusEnum.DRAFT.getCode())
.statusAfter(DocStatusEnum.WAIT_VERIFY.getCode())
.time(System.currentTimeMillis())
.build()
);
@ -133,8 +133,8 @@ public class SellOrderService {
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -170,8 +170,8 @@ public class SellOrderService {
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.VERIFIED.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
.info(info)
.build()
@ -197,8 +197,8 @@ public class SellOrderService {
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -238,7 +238,7 @@ public class SellOrderService {
for (BizSellOrderSub sub : subList) {
sub.setPid(id);
sub.setRemain_num(sub.getNum());
sub.setRemainNum(sub.getNum());
}
//插入主表和子表
@ -268,8 +268,8 @@ public class SellOrderService {
mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getCustomer_id, doc.getCustomer_id())
.set(BizSellOrder::getCustomer_name, doc.getCustomer_name())
.set(BizSellOrder::getCustomerId, doc.getCustomerId())
.set(BizSellOrder::getCustomerName, doc.getCustomerName())
.set(BizSellOrder::getStatus, doc.getStatus())
.set(BizSellOrder::getTotal, doc.getTotal())
.set(BizSellOrder::getRemark, doc.getRemark())
@ -281,7 +281,7 @@ public class SellOrderService {
//插入新的子表
List<BizSellOrderSub> subList = doc.getData();
subList.forEach(sub->sub.setRemain_num(sub.getNum()));
subList.forEach(sub->sub.setRemainNum(sub.getNum()));
subMapper.insertBatch(subList);
//附件增删
@ -344,7 +344,7 @@ public class SellOrderService {
for (int i = 0; i < subListLength; i++) {
BizSellOrderSub sub = list.get(i);
StockSearchResult stock = stockList.get(i);
if (sub.getNum().compareTo(stock.getTotal_num()) > 0) {
if (sub.getNum().compareTo(stock.getTotalNum()) > 0) {
return String.format("商品【%s】库存不足", sub.getCname());
}
}
@ -353,15 +353,15 @@ public class SellOrderService {
}
private Wrapper<BizSellOrder> getSearchCondition(SellOrderSearch vo) {
Integer customer_id = vo.getCustomer_id();
String customer_name = vo.getCustomer_name();
Integer customerId = vo.getCustomerId();
String customerName = vo.getCustomerName();
String finish = vo.getFinish();
Long ftimeStart = vo.getFtimeStart();
Long ftimeEnd = vo.getFtimeEnd();
return DocUtil.baseCondition(BizSellOrder.class, vo)
.eq(customer_id != null, BizSellOrder::getCustomer_id, customer_id)
.like(!StringUtils.isEmpty(customer_name), BizSellOrder::getCustomer_name, customer_name)
.eq(customerId != null, BizSellOrder::getCustomerId, customerId)
.like(!StringUtils.isEmpty(customerName), BizSellOrder::getCustomerName, customerName)
.inSql(!StringUtils.isEmpty(finish), BizSellOrder::getFinish, finish)
.ge(ftimeStart != null, BizSellOrder::getCtime, ftimeStart)
.le(ftimeEnd != null, BizSellOrder::getCtime, ftimeEnd);

@ -114,8 +114,8 @@ public class SellOutboundService {
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
.uname(doc.getCname())
.status_before(DocStatusEnum.DRAFT.getCode())
.status_after(DocStatusEnum.WAIT_VERIFY.getCode())
.statusBefore(DocStatusEnum.DRAFT.getCode())
.statusAfter(DocStatusEnum.WAIT_VERIFY.getCode())
.time(System.currentTimeMillis())
.build()
);
@ -141,8 +141,8 @@ public class SellOutboundService {
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -193,7 +193,7 @@ public class SellOutboundService {
List<BizSellOrderSub> orderSubList = this.getOrderSubListByPid(pid);
for (BizSellOrderSub orderSub : orderSubList) {
if (orderSub.getRemain_num().equals(BigDecimal.ZERO)) {
if (orderSub.getRemainNum().equals(BigDecimal.ZERO)) {
continue;
}
@ -201,18 +201,18 @@ public class SellOutboundService {
if (outboundNum == null) continue;
BigDecimal gap = orderSub.getRemain_num().subtract(outboundNum);
BigDecimal gap = orderSub.getRemainNum().subtract(outboundNum);
//如果有任意一个采购商品的remain_num大于采购商品的num,则完成情况为进行中,否则为已完成
//如果有任意一个采购商品的remainNum大于采购商品的num,则完成情况为进行中,否则为已完成
if (gap.compareTo(BigDecimal.ZERO) > 0) {
finish = DocFinishEnum.UNDERWAY;
}
//更新采购订单子表的remain_num
//更新采购订单子表的remainNum
orderSubMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrderSub.class)
.set(BizSellOrderSub::getRemain_num, gap)
.set(BizSellOrderSub::getRemainNum, gap)
.eq(BizSellOrderSub::getId, orderSub.getId())
);
}
@ -238,8 +238,8 @@ public class SellOutboundService {
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.VERIFIED.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
.info(info)
.build()
@ -265,8 +265,8 @@ public class SellOutboundService {
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.status_before(DocStatusEnum.WAIT_VERIFY.getCode())
.status_after(DocStatusEnum.DRAFT.getCode())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
.info(info)
.build()
@ -395,10 +395,10 @@ public class SellOutboundService {
if (orderSub == null) {
return "未在销售订单中找到对应的出库商品";
}
if (orderSub.getRemain_num().equals(BigDecimal.ZERO)) {
if (orderSub.getRemainNum().equals(BigDecimal.ZERO)) {
return String.format("出库商品【%s】已全部出库", orderSub.getCname());
}
if (orderSub.getRemain_num().compareTo(outboundCount.get(cid)) < 0) {
if (orderSub.getRemainNum().compareTo(outboundCount.get(cid)) < 0) {
return String.format("出库商品【%s】的数量超出订单数量", orderSub.getCname());
}
cids[index] = String.valueOf(cid);
@ -445,11 +445,11 @@ public class SellOutboundService {
private Wrapper<BizSellOutbound> getSearchCondition(SellOutboundSearch vo) {
String pid = vo.getPid();
String pid_fuzzy = vo.getPid_fuzzy();
String pidFuzzy = vo.getPidFuzzy();
return DocUtil.baseCondition(BizSellOutbound.class, vo)
.eq(pid != null, BizSellOutbound::getPid, pid)
.like(!StringUtils.isEmpty(pid_fuzzy), BizSellOutbound::getPid, pid_fuzzy);
.like(!StringUtils.isEmpty(pidFuzzy), BizSellOutbound::getPid, pidFuzzy);
}
private Map<Integer, BigDecimal> getOutboundCount(List<BizSellOutboundSub> list) {

@ -54,7 +54,7 @@ public class DocUtil {
public static <T extends BizDoc> LambdaQueryWrapper<T> baseCondition(Class<T> c, DocSearch vo) {
String id = vo.getId();
String id_fuzzy = vo.getId_fuzzy();
String idFuzzy = vo.getIdFuzzy();
Integer cid = vo.getCid();
String cname = vo.getCname();
Integer vid = vo.getVid();
@ -67,7 +67,7 @@ public class DocUtil {
return Wrappers.lambdaQuery(c)
.eq(!StringUtils.isEmpty(id), BizDoc::getId, id)
.like(!StringUtils.isEmpty(id_fuzzy), BizDoc::getId, id_fuzzy)
.like(!StringUtils.isEmpty(idFuzzy), BizDoc::getId, idFuzzy)
.eq(cid != null, BizDoc::getCid, cid)
.like(!StringUtils.isEmpty(cname), BizDoc::getCname, cname)
.eq(vid != null, BizDoc::getVid, vid)

@ -4,7 +4,7 @@
<insert id="insertBatch" parameterType="cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub">
INSERT INTO biz_purchase_order_sub(pid, cid, cname, num, price, remain_num) VALUES
<foreach collection="list" item="i" separator=",">
(#{i.pid}, #{i.cid}, #{i.cname}, #{i.num}, #{i.price}, #{i.remain_num})
(#{i.pid}, #{i.cid}, #{i.cname}, #{i.num}, #{i.price}, #{i.remainNum})
</foreach>
</insert>
</mapper>

@ -4,7 +4,7 @@
<insert id="insertBatch" parameterType="cn.toesbieya.jxc.common.model.entity.BizSellOrderSub">
INSERT INTO biz_sell_order_sub(pid, cid, cname, num, price, remain_num) VALUES
<foreach collection="list" item="i" separator=",">
(#{i.pid}, #{i.cid}, #{i.cname}, #{i.num}, #{i.price}, #{i.remain_num})
(#{i.pid}, #{i.cid}, #{i.cname}, #{i.num}, #{i.price}, #{i.remainNum})
</foreach>
</insert>
</mapper>

@ -1,11 +1,11 @@
package cn.toesbieya.jxc.message.constant;
public class MsgConstant {
public static final Integer TYPE_NOTICE = 0; //通知提醒
public static final Integer TYPE_ANNOUNCEMENT = 1; //系统公告
public static final Integer STATUS_DRAFT = 0; //拟定
public static final Integer STATUS_PUBLISHED = 1; //已发布
public static final Integer STATUS_WITHDREW = 2; //已撤回
public static final Integer TO_ALL = 1; //发送给全体用户
public static final Integer TO_RANGE = 0; //已发送给指定用户
public interface MsgConstant {
Integer TYPE_NOTICE = 0; //通知提醒
Integer TYPE_ANNOUNCEMENT = 1; //系统公告
Integer STATUS_DRAFT = 0; //拟定
Integer STATUS_PUBLISHED = 1; //已发布
Integer STATUS_WITHDREW = 2; //已撤回
Integer TO_ALL = 1; //发送给全体用户
Integer TO_RANGE = 0; //已发送给指定用户
}

@ -36,7 +36,6 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>

@ -22,11 +22,11 @@ public class StockExport {
@ExcelProperty(value = "库存总数", index = 2)
@ColumnWidth(20)
private BigDecimal total_num;
private BigDecimal totalNum;
@ExcelProperty(value = "库存总值", index = 3)
@ColumnWidth(20)
private BigDecimal total_price;
private BigDecimal totalPrice;
@ExcelProperty(value = "采购订单号", index = 4)
@ColumnWidth(20)
@ -34,11 +34,11 @@ public class StockExport {
@ExcelProperty(value = "采购单价", index = 5)
@ColumnWidth(20)
private BigDecimal cg_price;
private BigDecimal cgPrice;
@ExcelProperty(value = "采购数量", index = 6)
@ColumnWidth(20)
private BigDecimal cg_num;
private BigDecimal cgNum;
@ExcelProperty(value = "采购入库单号", index = 7)
@ColumnWidth(20)
@ -50,5 +50,5 @@ public class StockExport {
@ExcelProperty(value = "入库数量", index = 9)
@ColumnWidth(20)
private BigDecimal rk_num;
private BigDecimal rkNum;
}

@ -32,7 +32,7 @@ public class StockService implements StockApi {
private final ExcelUtil.CommonMergeOptions mergeOptions =
new ExcelUtil.CommonMergeOptions(
new String[]{"id", "cname", "total_num", "total_price", "cgddid", "cg_price", "cg_num"},
new String[]{"id", "cname", "totalNum", "totalPrice", "cgddid", "cgPrice", "cgNum"},
"cid",
"id"
);

@ -1,5 +1,6 @@
package cn.toesbieya.jxc.system.controller;
import cn.toesbieya.jxc.common.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.common.model.entity.SysDepartment;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.system.service.SysDepartmentService;
@ -7,6 +8,8 @@ import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("department")
@ -15,13 +18,15 @@ public class SysDepartmentController {
private SysDepartmentService departmentService;
@GetMapping("get")
public Result get() {
return Result.success(departmentService.get());
}
@GetMapping("getAll")
public Result getAll() {
return Result.success(departmentService.getAll());
public Result get(boolean all) {
List<SysDepartment> list = departmentService.getAll();
if (!all) {
list = list
.stream()
.filter(i -> i.getStatus().equals(GeneralStatusEnum.ENABLED.getCode()))
.collect(Collectors.toList());
}
return Result.success(list);
}
@PostMapping("add")

@ -1,7 +1,14 @@
package cn.toesbieya.jxc.system.mapper;
import cn.toesbieya.jxc.common.model.entity.SysDepartment;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysDepartmentMapper extends BaseMapper<SysDepartment> {
List<DepartmentVo> selectChildrenById(@Param("id") int id);
List<DepartmentVo> selectParentsById(@Param("id") int id);
}

@ -11,7 +11,7 @@ import lombok.ToString;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class CustomerVo extends SysCustomer {
private String region_name;
private String regionName;
public CustomerVo(SysCustomer parent) {
this.setId(parent.getId());

@ -11,7 +11,7 @@ import lombok.ToString;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SupplierVo extends SysSupplier {
private String region_name;
private String regionName;
public SupplierVo(SysSupplier parent) {
this.setId(parent.getId());

@ -78,7 +78,7 @@ public class SysCustomerService {
SysRegion matched = Util.find(regions, item -> customerVo.getRegion().equals(item.getId()));
if (matched != null) {
customerVo.setRegion_name(matched.getName());
customerVo.setRegionName(matched.getName());
}
});

@ -1,29 +1,89 @@
package cn.toesbieya.jxc.system.service;
import cn.toesbieya.jxc.api.service.system.DepartmentApi;
import cn.toesbieya.jxc.common.enumeration.DataScopeEnum;
import cn.toesbieya.jxc.common.model.entity.SysDepartment;
import cn.toesbieya.jxc.common.model.entity.SysRole;
import cn.toesbieya.jxc.common.model.entity.SysUser;
import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
import cn.toesbieya.jxc.common.model.vo.Result;
import cn.toesbieya.jxc.common.utils.Util;
import cn.toesbieya.jxc.system.mapper.SysDepartmentMapper;
import cn.toesbieya.jxc.web.common.annoation.UserAction;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SysDepartmentService {
@org.apache.dubbo.config.annotation.Service
public class SysDepartmentService implements DepartmentApi {
@Resource
private SysDepartmentMapper departmentMapper;
@Resource
private SysRoleService roleService;
public List<SysDepartment> get() {
return departmentMapper.selectList(
Wrappers.lambdaQuery(SysDepartment.class)
.eq(SysDepartment::getStatus, 1)
);
public List<DepartmentVo> getAll() {
return departmentMapper.selectChildrenById(1);
}
@Override
public DepartmentVo getById(int id) {
List<DepartmentVo> list = departmentMapper.selectParentsById(id);
DepartmentVo parent = Util.find(list, i -> i.getPid().equals(0));
DepartmentVo child = Util.find(list, i -> i.getId().equals(id));
if (parent == null || child == null) {
return null;
}
child.setFullname(parent.getFullname());
return child;
}
public List<SysDepartment> getAll() {
return departmentMapper.selectList(null);
@Override
public Set<Integer> getUserDataScope(SysUser user) {
if (user.isAdmin()) return null;
SysRole role = roleService.getRoleById(user.getRole());
if (role == null) return Collections.emptySet();
int scope = role.getScope();
//全部
if (scope == DataScopeEnum.ALL.getCode()) {
return null;
}
//本部门
if (scope == DataScopeEnum.SELF.getCode()) {
Integer dept = user.getDept();
if (dept == null) return Collections.emptySet();
return departmentMapper
.selectChildrenById(dept)
.stream()
.map(DepartmentVo::getId)
.collect(Collectors.toSet());
}
//指定部门
if (scope == DataScopeEnum.SPECIFIC.getCode()) {
String deptIds = role.getDepartmentId();
if (StringUtils.isEmpty(deptIds)) {
return Collections.emptySet();
}
return Arrays
.stream(deptIds.split(","))
.map(Integer::valueOf)
.collect(Collectors.toSet());
}
return Collections.emptySet();
}
@UserAction("'添加部门:'+#department.name")

@ -24,7 +24,7 @@ public class SysResourceService implements ResourceApi {
public List<ResourceVo> get() {
List<SysResource> list = resourceMapper.selectList(
Wrappers.lambdaQuery(SysResource.class)
.eq(SysResource::getAdmin, 0)
.eq(SysResource::isAdmin, false)
);
return completeNode(list);
@ -41,7 +41,7 @@ public class SysResourceService implements ResourceApi {
return Collections.emptyList();
}
String ids = role.getResource_id();
String ids = role.getResourceId();
if (StringUtils.isEmpty(ids)) {
return Collections.emptyList();
@ -69,7 +69,7 @@ public class SysResourceService implements ResourceApi {
//跳过顶级节点
if (resource.getPid() == 0) {
vo.setFullName(name);
vo.setFullname(name);
urlMap.put(id, url);
nameMap.put(id, name);
@ -83,13 +83,13 @@ public class SysResourceService implements ResourceApi {
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName);
String fullName = parentName + " - " + name;
String fullname = parentName + " - " + name;
vo.setUrl(parentUrl + url);
vo.setFullName(fullName);
vo.setFullname(fullname);
urlMap.put(id, url);
nameMap.put(id, fullName);
nameMap.put(id, fullname);
}
result.add(vo);

@ -83,8 +83,10 @@ public class SysRoleService implements RoleApi {
null,
Wrappers.lambdaUpdate(SysRole.class)
.set(SysRole::getName, name)
.set(SysRole::getResource_id, role.getResource_id())
.set(SysRole::getStatus, role.getStatus())
.set(SysRole::getScope, role.getScope())
.set(SysRole::getDepartmentId, role.getDepartmentId())
.set(SysRole::getResourceId, role.getResourceId())
.eq(SysRole::getId, id)
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");

@ -77,7 +77,7 @@ public class SysSupplierService {
list.forEach(supplierVo -> {
SysRegion matched = Util.find(regions, item -> supplierVo.getRegion().equals(item.getId()));
if (matched != null) {
supplierVo.setRegion_name(matched.getName());
supplierVo.setRegionName(matched.getName());
}
});

@ -41,7 +41,7 @@ public class SysUserService {
Wrapper<SysUser> wrapper =
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getAdmin, 0)
.eq(SysUser::isAdmin, false)
.eq(id != null, SysUser::getId, id)
.like(!StringUtils.isEmpty(name), SysUser::getName, name)
.inSql(!StringUtils.isEmpty(roleIds), SysUser::getRole, roleIds)
@ -84,7 +84,7 @@ public class SysUserService {
//设置用户的角色名称
SysRole matched = Util.find(roles, i -> i.getId().equals(userRoleId));
if (matched != null) {
userVo.setRole_name(matched.getName());
userVo.setRoleName(matched.getName());
}
}
});
@ -120,6 +120,7 @@ public class SysUserService {
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getName, name)
.set(SysUser::getRole, user.getRole())
.set(SysUser::getDept, user.getDept())
.set(SysUser::getStatus, user.getStatus())
.eq(SysUser::getId, id)
);
@ -133,7 +134,7 @@ public class SysUserService {
int rows = userMapper.delete(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getId, user.getId())
.eq(SysUser::getAdmin, 0)
.eq(SysUser::isAdmin, false)
);
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");

@ -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.SysDepartmentMapper">
<select id="selectChildrenById" resultType="cn.toesbieya.jxc.common.model.vo.DepartmentVo">
with recursive t as (
select *,
name as fullname
from sys_department
where id = #{id}
union all
select c.*,
concat(t.fullname, ' > ', c.name) as fullname
from sys_department c,
t
where c.pid = t.id
)
select *
from t;
</select>
<select id="selectParentsById" resultType="cn.toesbieya.jxc.common.model.vo.DepartmentVo">
with recursive t as (
select *,
name as fullname
from sys_department
where id = #{id}
union all
select c.*,
concat(c.name, ' > ', t.fullname) as fullname
from sys_department c,
t
where c.id = t.pid
)
select *
from t;
</select>
</mapper>

@ -21,39 +21,35 @@
<socketio.version>1.7.18</socketio.version>
<guava.version>28.1-jre</guava.version>
<fastjson.version>1.2.60</fastjson.version>
<!--系统监控-->
<jna.version>5.5.0</jna.version>
<oshi.version>4.3.0</oshi.version>
<!--七牛云-->
<qiniu.version>[7.2.0, 7.2.99]</qiniu.version>
<!--三方工具-->
<easyexcel.version>2.2.5</easyexcel.version>
</properties>
<dependencies>
<!--SpringBoot基础-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
@ -75,35 +71,13 @@
<version>${pagehelper.version}</version>
</dependency>
<!--websocket-->
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>${socketio.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--七牛云-->
<dependency>
<groupId>com.qiniu</groupId>
@ -121,12 +95,28 @@
<scope>compile</scope>
</dependency>
<!-- 三方工具类 -->
<!-- 工具类 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>

@ -5,9 +5,9 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@MapperScan("cn.toesbieya.jxc.mapper")
@EnableScheduling
@MapperScan("cn.toesbieya.jxc.mapper")
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.aspect;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.RedisUtil;
import cn.toesbieya.jxc.utils.SpringUtil;
import lombok.extern.slf4j.Slf4j;
@ -22,7 +22,7 @@ import java.util.ArrayList;
public class LockAspect {
private final ThreadLocal<ArrayList<RedisUtil.Locker>> lockerThreadLocal = new ThreadLocal<>();
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.Lock)&&execution(cn.toesbieya.jxc.utils.Result cn.toesbieya.jxc..*.*(..))")
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.Lock)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
}

@ -4,7 +4,7 @@ import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.UserActionEnum;
import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.SpringUtil;
import cn.toesbieya.jxc.utils.ThreadUtil;
import lombok.extern.slf4j.Slf4j;
@ -28,7 +28,7 @@ public class UserActionAspect {
@Resource
private RecService recService;
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.utils.Result cn.toesbieya.jxc..*.*(..))")
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.constant;
public class DocumentConstant {
public static final String UPDATE_DOCUMENTS_LOCK_KEY = "UPDATE_DOCUMENTS";
public static final String[] DOCUMENT_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
public static final String DOCUMENT_TYPE_REDIS_KEY = "documentsID";
public interface DocumentConstant {
String UPDATE_DOCUMENTS_LOCK_KEY = "UPDATE_DOCUMENTS";
String[] DOCUMENT_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
String DOCUMENT_TYPE_REDIS_KEY = "documentsID";
}

@ -1,11 +1,11 @@
package cn.toesbieya.jxc.constant;
public class MsgConstant {
public static final Integer TYPE_NOTICE = 0; //通知提醒
public static final Integer TYPE_ANNOUNCEMENT = 1; //系统公告
public static final Integer STATUS_DRAFT = 0; //拟定
public static final Integer STATUS_PUBLISHED = 1; //已发布
public static final Integer STATUS_WITHDREW = 2; //已撤回
public static final Integer TO_ALL = 1; //发送给全体用户
public static final Integer TO_RANGE = 0; //已发送给指定用户
public interface MsgConstant {
Integer TYPE_NOTICE = 0; //通知提醒
Integer TYPE_ANNOUNCEMENT = 1; //系统公告
Integer STATUS_DRAFT = 0; //拟定
Integer STATUS_PUBLISHED = 1; //已发布
Integer STATUS_WITHDREW = 2; //已撤回
Integer TO_ALL = 1; //发送给全体用户
Integer TO_RANGE = 0; //已发送给指定用户
}

@ -1,18 +1,18 @@
package cn.toesbieya.jxc.constant;
public class SessionConstant {
public interface SessionConstant {
//session过期时间,单位秒
public static long EXPIRE = 3600 * 8;
long EXPIRE = 3600 * 8;
//存储用户信息的键的前缀
public static String REDIS_NAMESPACE = "sessions:";
String REDIS_NAMESPACE = "sessions:";
//key过期事件的前缀
public static String REDIS_EXPIRE_TOPIC_PREFIX = "__keyspace@0__:";
String REDIS_EXPIRE_TOPIC_PREFIX = "__keyspace@0__:";
//http headers中token的字段名
public static String TOKEN_KEY = "X-Token";
String TOKEN_KEY = "X-Token";
//区别无活动用户的时间间隔,单位秒
public static long NO_ACTION_INTERVAL = 1800;
long NO_ACTION_INTERVAL = 1800;
}

@ -1,23 +1,23 @@
package cn.toesbieya.jxc.constant;
public class SocketConstant {
public interface SocketConstant {
//web-socket服务端订阅的redis主题名称
public static String REDIS_EVENT_TOPIC_SEND = "socket-event-send";
String REDIS_EVENT_TOPIC_SEND = "socket-event-send";
//指定用户
public static int REDIS_EVENT_SPECIFIC = 0;
int REDIS_EVENT_SPECIFIC = 0;
//广播
public static int REDIS_EVENT_BROADCAST = 1;
int REDIS_EVENT_BROADCAST = 1;
//登出
public static int REDIS_EVENT_LOGOUT = 2;
int REDIS_EVENT_LOGOUT = 2;
//存放于redis中的在线用户的ID集合的键
public static String REDIS_ONLINE_USER = "socket:online-user";
String REDIS_ONLINE_USER = "socket:online-user";
//存放于redis中的离线用户的离线时间的键
public static String REDIS_OFFLINE_USER = "socket:offline-user";
String REDIS_OFFLINE_USER = "socket:offline-user";
//登出事件
public static final String EVENT_LOGOUT = "logout";
String EVENT_LOGOUT = "logout";
//新消息事件
public static final String EVENT_NEW_MESSAGE = "new-message";
String EVENT_NEW_MESSAGE = "new-message";
}

@ -7,7 +7,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.service.AccountService;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.utils.IpUtil;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -80,10 +80,10 @@ public class AccountController {
private String validateUpdatePwdParam(PasswordUpdateParam vo) {
if (vo.getId() == null) return "修改失败,参数错误";
if (StringUtils.isEmpty(vo.getOld_pwd())) return "修改失败,原密码不能为空";
if (StringUtils.isEmpty(vo.getNew_pwd())) return "修改失败,新密码不能为空";
if (vo.getOld_pwd().equals(vo.getNew_pwd())) return "修改失败,新密码不得与旧密码相同";
if (vo.getNew_pwd().length() != 32) return "修改失败,密码参数有误";
if (StringUtils.isEmpty(vo.getOldPwd())) return "修改失败,原密码不能为空";
if (StringUtils.isEmpty(vo.getNewPwd())) return "修改失败,新密码不能为空";
if (vo.getOldPwd().equals(vo.getNewPwd())) return "修改失败,新密码不得与旧密码相同";
if (vo.getNewPwd().length() != 32) return "修改失败,密码参数有误";
return null;
}
}

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import cn.toesbieya.jxc.service.BizDocumentHistoryService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;

@ -8,7 +8,7 @@ import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.BizPurchaseInboundService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -7,7 +7,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.service.BizPurchaseOrderService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

@ -8,7 +8,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.service.BizSellOrderService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -49,8 +49,8 @@ public class BizSellOrderController {
@PostMapping("add")
public Result add(@RequestBody BizSellOrder vo) {
if (vo.getCustomer_id() == null
|| StringUtils.isEmpty(vo.getCustomer_name())
if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) {
return Result.fail("参数错误");
}
@ -120,8 +120,8 @@ public class BizSellOrderController {
private String validateUpdate(BizSellOrder main) {
if (StringUtils.isEmpty(main.getId())
|| StringUtils.isEmpty(main.getCustomer_id())
|| StringUtils.isEmpty(main.getCustomer_name())
|| StringUtils.isEmpty(main.getCustomerId())
|| StringUtils.isEmpty(main.getCustomerName())
|| StringUtils.isEmpty(main.getCid())
|| StringUtils.isEmpty(main.getCname())
|| StringUtils.isEmpty(main.getCtime())

@ -8,7 +8,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.service.BizSellOutboundService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.utils.QiniuUtil;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@ -7,7 +7,7 @@ import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.service.MsgService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.model.vo.search.UserActionSearch;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DateUtil;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.service.StatisticService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.service.SysCategoryService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import cn.toesbieya.jxc.service.SysCustomerService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -1,12 +1,16 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.service.SysDepartmentService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("system/department")
@ -15,13 +19,15 @@ public class SysDepartmentController {
private SysDepartmentService departmentService;
@GetMapping("get")
public Result get() {
return Result.success(departmentService.get());
}
@GetMapping("getAll")
public Result getAll() {
return Result.success(departmentService.getAll());
public Result get(boolean all) {
List<DepartmentVo> list = departmentService.getAll();
if (!all) {
list = list
.stream()
.filter(i -> i.getStatus().equals(GeneralStatusEnum.ENABLED.getCode()))
.collect(Collectors.toList());
}
return Result.success(list);
}
@PostMapping("add")

@ -2,7 +2,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.service.SysResourceService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -26,8 +26,8 @@ public class SysResourceController {
@PostMapping("update")
public Result update(@RequestBody SysResource resource) {
if (resource.getId() == null
|| resource.getTotal_rate() == null
|| resource.getIp_rate() == null) {
|| resource.getTotalRate() == null
|| resource.getIpRate() == null) {
return Result.fail("参数错误");
}
return resourceService.update(resource);

@ -5,7 +5,7 @@ import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.SysRoleService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import cn.toesbieya.jxc.service.SysSupplierService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

@ -5,7 +5,7 @@ import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.utils.ThreadUtil;
import cn.toesbieya.jxc.service.SysUserService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@ -0,0 +1,15 @@
package cn.toesbieya.jxc.enumeration;
public enum DataScopeEnum {
ALL(1), SELF(2), SPECIFIC(3);
private final int code;
DataScopeEnum(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}

@ -6,7 +6,7 @@ import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.utils.ThreadUtil;
import cn.toesbieya.jxc.utils.Util;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.Result;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.web.HttpRequestMethodNotSupportedException;

@ -1,5 +1,6 @@
package cn.toesbieya.jxc.interceptor;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.module.request.RequestModule;
import cn.toesbieya.jxc.utils.*;
@ -15,7 +16,7 @@ public class RateControlInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
UserVo user = SessionUtil.get(request);
if (user.getAdmin() == 1) return true;
if (user.isAdmin()) return true;
String url = request.getServletPath();
String ip = IpUtil.getIp(request);

@ -1,5 +1,6 @@
package cn.toesbieya.jxc.interceptor;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.module.PermissionModule;
import cn.toesbieya.jxc.utils.*;
@ -15,22 +16,23 @@ public class SecurityInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getServletPath();
String ip = IpUtil.getIp(request);
UserVo user = SessionUtil.get(request);
if (user == null) {
WebUtil.responseJson(response, Result.requireLogin());
ThreadUtil.clearUser();
ThreadUtil.clearAll();
return false;
}
if (!PermissionModule.authority(user, url)) {
WebUtil.responseJson(response, Result.noPermission());
log.warn("权限拦截,访问路径:{},用户:{},IP:{}", url, user.getName(), ip);
ThreadUtil.clearUser();
ThreadUtil.clearAll();
return false;
}
ThreadUtil.setUser(user);
return true;
}
}

@ -24,7 +24,7 @@ public interface BizSellOrderMapper {
int update(BizSellOrder param);
int updateSubRemainNum(@Param("id") Integer id, @Param("remain_num") BigDecimal remain_num);
int updateSubRemainNum(@Param("id") Integer id, @Param("remain_num") BigDecimal remainNum);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);

@ -1,16 +1,17 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysDepartmentMapper {
List<SysDepartment> get();
List<DepartmentVo> selectChildrenById(@Param("id") int id);
List<SysDepartment> getAll();
List<DepartmentVo> selectParentsById(@Param("id") int id);
int add(SysDepartment department);
int insert(SysDepartment department);
int update(SysDepartment department);

@ -7,13 +7,15 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysRoleMapper {
SysRole selectById(@Param("id") int id);
List<SysRole> get();
List<SysRole> getAll();
List<SysRole> search(RoleSearch vo);
int add(SysRole role);
int insert(SysRole role);
int update(SysRole role);

@ -15,11 +15,11 @@ public interface SysUserMapper {
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
int add(SysUser user);
int insert(SysUser user);
int update(SysUser user);
int del(@Param("id") Integer id);
int deleteById(@Param("id") Integer id);
int resetPwd(@Param("id") Integer id, @Param("pwd") String pwd);

@ -15,8 +15,8 @@ public class BizDocumentHistory {
private Integer type;
private Integer uid;
private String uname;
private Integer status_before;
private Integer status_after;
private Integer statusBefore;
private Integer statusAfter;
private Long time;
private String info;
}

@ -11,5 +11,5 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = true)
public class BizPurchaseOrderSub extends BizDocumentSub {
private BigDecimal price;
private BigDecimal remain_num;
private BigDecimal remainNum;
}

@ -10,8 +10,8 @@ import java.math.BigDecimal;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizSellOrder extends BizDocument<BizSellOrderSub> {
private Integer customer_id;
private String customer_name;
private Integer customerId;
private String customerName;
private Integer finish;
private Long ftime;
private BigDecimal total;

@ -11,5 +11,5 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = true)
public class BizSellOrderSub extends BizDocumentSub {
private BigDecimal price;
private BigDecimal remain_num;
private BigDecimal remainNum;
}

@ -16,7 +16,7 @@ public class SysCustomer {
private String linkman;
private String linkphone;
private String region;
private String region_name;
private String regionName;
private Integer status;
private Long ctime;
private String remark;

@ -11,9 +11,9 @@ public class SysResource {
private Integer id;
private Integer pid;
private String name;
private String fullName;
private String fullname;
private String url;
private Integer admin;
private Integer total_rate;
private Integer ip_rate;
private boolean admin = false;
private Long totalRate;
private Long ipRate;
}

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

Loading…
Cancel
Save