diff --git a/erp_web/css/css.css b/erp_web/css/css.css
index 27148e1f..8e01aa8c 100644
--- a/erp_web/css/css.css
+++ b/erp_web/css/css.css
@@ -651,6 +651,18 @@ input.inputstyle:hover{
position:relative;
background:url(../images/bg_loginmain.jpg) no-repeat;
}
+#login .login_btn{
+ float:left;
+ width:230px;
+ height:50px;
+ margin:160px auto 0 120px;
+}
+#login .register_btn{
+ float:left;
+ width:230px;
+ height:50px;
+ margin:218px auto 0 120px;
+}
#login_signal{
position:absolute;
left: 63px;
@@ -668,6 +680,18 @@ input.inputstyle:hover{
top: 119px;
width: 54px;
}
+#txt_userpwd_repeat{
+ position:absolute;
+ left: 65px;
+ top: 154px;
+ width: 54px;
+}
+#txt_captcha{
+ position:absolute;
+ left: 65px;
+ top: 189px;
+ width: 54px;
+}
#txt_vcode{
position:absolute;
left: 66px;
@@ -698,6 +722,40 @@ input.inputstyle:hover{
left: 118px;
top: 118px;
}
+#user_pwd_repeat{
+ position:absolute;
+ width:132px;
+ padding:0 4px;
+ height:23px;
+ line-height:23px;
+ border:none;
+ font-family:Arial, Helvetica, sans-serif;
+ background:url(../images/bg_logininout.jpg) no-repeat;
+ left: 118px;
+ top: 152px;
+}
+#user_captcha{
+ position:absolute;
+ width:132px;
+ padding:0 4px;
+ height:23px;
+ line-height:23px;
+ border:none;
+ font-family:Arial, Helvetica, sans-serif;
+ background:url(../images/bg_logininout.jpg) no-repeat;
+ left: 118px;
+ top: 186px;
+}
+#imgCaptcha{
+ position:absolute;
+ width:132px;
+ padding:0 4px;
+ height:40px;
+ line-height:23px;
+ border:none;
+ left: 270px;
+ top: 170px;
+}
#vcode{
position:absolute;
width:67px;
@@ -716,17 +774,32 @@ input.inputstyle:hover{
top: 151px;
}
#btn_login{
- position:absolute;
- width:81px;
+ width:100px;
height:30px;
border:none;
cursor:pointer;
- background:url(../images/btn_login.jpg) no-repeat;
+ color: white;
+ background:#318dff;
left: 120px;
top: 170px;
+ margin-right: 10px;
}
#btn_login:hover{
- background:url(../images/btn_loginon.jpg) no-repeat;
+ background:#54a0ff;
+}
+#btn_register{
+ width:100px;
+ height:30px;
+ border:none;
+ cursor:pointer;
+ color: white;
+ background:#318dff;
+ left: 120px;
+ top: 170px;
+ margin-right: 10px;
+}
+#btn_register:hover{
+ background:#54a0ff;
}
#tip_username{
position:absolute;
diff --git a/erp_web/images/login_tip.jpg b/erp_web/images/login_tip.jpg
index a41eb2d1..c6bb5a3d 100644
Binary files a/erp_web/images/login_tip.jpg and b/erp_web/images/login_tip.jpg differ
diff --git a/erp_web/images/register_tip.jpg b/erp_web/images/register_tip.jpg
new file mode 100644
index 00000000..23b7eb82
Binary files /dev/null and b/erp_web/images/register_tip.jpg differ
diff --git a/erp_web/js/gVerify.js b/erp_web/js/gVerify.js
new file mode 100644
index 00000000..c94c50bb
--- /dev/null
+++ b/erp_web/js/gVerify.js
@@ -0,0 +1,138 @@
+!(function(window, document) {
+ var size = 4;//设置验证码长度
+ function GVerify(options) { //创建一个图形验证码对象,接收options对象为参数
+ this.options = { //默认options参数值
+ id: "", //容器Id
+ canvasId: "verifyCanvas", //canvas的ID
+ width: "100", //默认canvas宽度
+ height: "30", //默认canvas高度
+ type: "letter", //图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母
+ code: "",
+ }
+ if(Object.prototype.toString.call(options) == "[object Object]"){//判断传入参数类型
+ for(var i in options) { //根据传入的参数,修改默认参数值
+ this.options[i] = options[i];
+ }
+ }else{
+ this.options.id = options;
+ }
+
+ this.options.numArr = "0,1,2,3,4,5,6,7,8,9".split(",");
+ this.options.letterArr = getAllLetter();
+
+ this._init();
+ this.refresh();
+ }
+
+ GVerify.prototype = {
+ /**版本号**/
+ version: '1.0.0',
+
+ /**初始化方法**/
+ _init: function() {
+ var con = document.getElementById(this.options.id);
+ var canvas = document.createElement("canvas");
+ this.options.width = con.offsetWidth > 0 ? con.offsetWidth : "100";
+ this.options.height = con.offsetHeight > 0 ? con.offsetHeight : "30";
+ canvas.id = this.options.canvasId;
+ canvas.width = this.options.width;
+ canvas.height = this.options.height;
+ canvas.style.cursor = "pointer";
+ canvas.innerHTML = "您的浏览器版本不支持canvas";
+ con.appendChild(canvas);
+ var parent = this;
+ canvas.onclick = function(){
+ parent.refresh();
+ }
+ },
+
+ /**生成验证码**/
+ refresh: function() {
+ this.options.code = "";
+ var canvas = document.getElementById(this.options.canvasId);
+ if(canvas.getContext) {
+ var ctx = canvas.getContext('2d');
+ }else{
+ return;
+ }
+
+ ctx.textBaseline = "middle";
+
+ ctx.fillStyle = randomColor(180, 240);
+ ctx.fillRect(0, 0, this.options.width, this.options.height);
+
+ if(this.options.type == "blend") { //判断验证码类型
+ var txtArr = this.options.numArr.concat(this.options.letterArr);
+ } else if(this.options.type == "number") {
+ var txtArr = this.options.numArr;
+ } else {
+ var txtArr = this.options.letterArr;
+ }
+
+ for(var i = 1; i <=size; i++) {
+ var txt = txtArr[randomNum(0, txtArr.length)];
+ this.options.code += txt;
+ ctx.font = randomNum(this.options.height/2, this.options.height) + 'px SimHei'; //随机生成字体大小
+ ctx.fillStyle = randomColor(50, 160); //随机生成字体颜色
+ ctx.shadowOffsetX = randomNum(-3, 3);
+ ctx.shadowOffsetY = randomNum(-3, 3);
+ ctx.shadowBlur = randomNum(-3, 3);
+ ctx.shadowColor = "rgba(0, 0, 0, 0.3)";
+ var x = this.options.width / (size+1) * i;
+ var y = this.options.height / 2;
+ var deg = randomNum(-30, 30);
+ /**设置旋转角度和坐标原点**/
+ ctx.translate(x, y);
+ ctx.rotate(deg * Math.PI / 180);
+ ctx.fillText(txt, 0, 0);
+ /**恢复旋转角度和坐标原点**/
+ ctx.rotate(-deg * Math.PI / 180);
+ ctx.translate(-x, -y);
+ }
+ /**绘制干扰线**/
+ for(var i = 0; i < 4; i++) {
+ ctx.strokeStyle = randomColor(40, 180);
+ ctx.beginPath();
+ ctx.moveTo(randomNum(0, this.options.width), randomNum(0, this.options.height));
+ ctx.lineTo(randomNum(0, this.options.width), randomNum(0, this.options.height));
+ ctx.stroke();
+ }
+ /**绘制干扰点**/
+ for(var i = 0; i < this.options.width/4; i++) {
+ ctx.fillStyle = randomColor(0, 255);
+ ctx.beginPath();
+ ctx.arc(randomNum(0, this.options.width), randomNum(0, this.options.height), 1, 0, 2 * Math.PI);
+ ctx.fill();
+ }
+ },
+
+ /**验证验证码**/
+ validate: function(code){
+ var code = code.toLowerCase();
+ var v_code = this.options.code.toLowerCase();
+ if(code == v_code){
+ return true;
+ }else{
+ this.refresh();
+ return false;
+ }
+ }
+ }
+ /**生成字母数组**/
+ function getAllLetter() {
+ var letterStr = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
+ return letterStr.split(",");
+ }
+ /**生成一个随机数**/
+ function randomNum(min, max) {
+ return Math.floor(Math.random() * (max - min) + min);
+ }
+ /**生成一个随机色**/
+ function randomColor(min, max) {
+ var r = randomNum(min, max);
+ var g = randomNum(min, max);
+ var b = randomNum(min, max);
+ return "rgb(" + r + "," + g + "," + b + ")";
+ }
+ window.GVerify = GVerify;
+})(window, document);
\ No newline at end of file
diff --git a/erp_web/login.html b/erp_web/login.html
index 7a7fe7e5..20b3de32 100644
--- a/erp_web/login.html
+++ b/erp_web/login.html
@@ -26,7 +26,10 @@
用户名不正确
密码不能为空
-
+
+
+
+
Copyright © 2017-2020 季圣华(jishenghua)
@@ -40,6 +43,7 @@
//进入页面聚焦在username输入框,方便 用户输入
$("#user_name").focus();
browserFit();
+ checkTenantStatus();
});
//浏览器适配
@@ -50,6 +54,32 @@
$("#user_vcodepwd").empty().append("密 码:");
}
+ //判断是否开启多租户
+ function checkTenantStatus(){
+ $("#btn_register").hide();
+ $.ajax({
+ type: "get",
+ url: "/user/getTenantStatus",
+ dataType: "json",
+ success: function (res) {
+ if(res && res.code === 200) {
+ if(res.data) {
+ if(res.data.status == "open") {
+ $("#btn_register").show();
+ } else if(res.data.status == "close") {
+ $("#btn_register").hide();
+ }
+ }
+ } else {
+ $("#btn_register").hide();
+ }
+ },
+ error: function () {
+ $("#btn_register").hide();
+ }
+ });
+ }
+
//初始化键盘enter事件
$(document).keydown(function (event) {
//兼容 IE和firefox 事件
@@ -66,6 +96,10 @@
$('#btn_login').off("click").on("click", function () {
checkUserInput();
});
+
+ $("#btn_register").off("click").on("click", function () {
+ location.href = "register.html";
+ });
//检测用户输入数据
function checkUserInput() {
diff --git a/erp_web/pages/manage/depot.html b/erp_web/pages/manage/depot.html
index baebe71b..1e76e3c4 100644
--- a/erp_web/pages/manage/depot.html
+++ b/erp_web/pages/manage/depot.html
@@ -356,6 +356,7 @@
//加载完以后重新初始化
var opts = $("#tableData").datagrid('options');
showDepotDetails(opts.pageNumber, opts.pageSize);
+ $.messager.alert('提示', '保存成功,请给用户分配该仓库才能使用!', 'info');
}
},
//此处添加错误处理
diff --git a/erp_web/pages/materials/purchase_back_list.html b/erp_web/pages/materials/purchase_back_list.html
index 1349e78a..03984a42 100644
--- a/erp_web/pages/materials/purchase_back_list.html
+++ b/erp_web/pages/materials/purchase_back_list.html
@@ -257,7 +257,7 @@
|
- 结算账户 |
+ 支出项目 |
金额 |
diff --git a/erp_web/pages/materials/purchase_in_list.html b/erp_web/pages/materials/purchase_in_list.html
index 5b0bc979..76f00421 100644
--- a/erp_web/pages/materials/purchase_in_list.html
+++ b/erp_web/pages/materials/purchase_in_list.html
@@ -259,7 +259,7 @@
|
- 结算账户 |
+ 支出项目 |
金额 |
diff --git a/erp_web/pages/materials/purchase_orders_list.html b/erp_web/pages/materials/purchase_orders_list.html
index e7b8507c..06d0038a 100644
--- a/erp_web/pages/materials/purchase_orders_list.html
+++ b/erp_web/pages/materials/purchase_orders_list.html
@@ -178,7 +178,7 @@
|
- 结算账户 |
+ 支出项目 |
金额 |
diff --git a/erp_web/pages/materials/sale_back_list.html b/erp_web/pages/materials/sale_back_list.html
index f56eb9e7..27655db8 100644
--- a/erp_web/pages/materials/sale_back_list.html
+++ b/erp_web/pages/materials/sale_back_list.html
@@ -251,7 +251,7 @@
|
- 结算账户 |
+ 支出项目 |
金额 |
diff --git a/erp_web/pages/materials/sale_orders_list.html b/erp_web/pages/materials/sale_orders_list.html
index 61f67174..64c4297e 100644
--- a/erp_web/pages/materials/sale_orders_list.html
+++ b/erp_web/pages/materials/sale_orders_list.html
@@ -174,7 +174,7 @@
|
- 结算账户 |
+ 支出项目 |
金额 |
diff --git a/erp_web/pages/materials/sale_out_list.html b/erp_web/pages/materials/sale_out_list.html
index 431f80f5..6af991d1 100644
--- a/erp_web/pages/materials/sale_out_list.html
+++ b/erp_web/pages/materials/sale_out_list.html
@@ -255,7 +255,7 @@
|
- 结算账户 |
+ 支出项目 |
金额 |
diff --git a/erp_web/register.html b/erp_web/register.html
new file mode 100644
index 00000000..08517044
--- /dev/null
+++ b/erp_web/register.html
@@ -0,0 +1,100 @@
+
+
+
+ ERP系统
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
用户名不正确
+
密码不能为空
+
+
+
+
+
+
+ Copyright © 2017-2020 季圣华(jishenghua)
+ 华夏ERP_v2.0
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/jsh/erp/config/TenantConfig.java b/src/main/java/com/jsh/erp/config/TenantConfig.java
index 0d182b2b..64ad1727 100644
--- a/src/main/java/com/jsh/erp/config/TenantConfig.java
+++ b/src/main/java/com/jsh/erp/config/TenantConfig.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
+import com.jsh.erp.datasource.entities.User;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
@@ -42,16 +43,27 @@ public class TenantConfig {
@Override
public boolean doTableFilter(String tableName) {
- //从session中获取租户id
+ //获取开启状态
Object mybatisPlusStatus = request.getSession().getAttribute("mybatisPlusStatus");
if(mybatisPlusStatus !=null && mybatisPlusStatus.toString().equals("open")) {
- // 这里可以判断是否过滤表
- if ("databasechangelog".equals(tableName) || "databasechangeloglock".equals(tableName)
- || "jsh_materialproperty".equals(tableName) || "tbl_sequence".equals(tableName) || "dual".equals(tableName)
- || "jsh_userbusiness".equals(tableName) || "jsh_app".equals(tableName) || "jsh_functions".equals(tableName)) {
+ //从session中获取租户id
+ String loginName = null;
+ Object userInfo = request.getSession().getAttribute("user");
+ if(userInfo != null) {
+ User user = (User) userInfo;
+ loginName = user.getLoginame();
+ }
+ if(("admin").equals(loginName)) {
return true;
} else {
- return false;
+ // 这里可以判断是否过滤表
+ if ("databasechangelog".equals(tableName) || "databasechangeloglock".equals(tableName)
+ || "jsh_materialproperty".equals(tableName) || "tbl_sequence".equals(tableName) || "dual".equals(tableName)
+ || "jsh_userbusiness".equals(tableName) || "jsh_app".equals(tableName) || "jsh_functions".equals(tableName)) {
+ return true;
+ } else {
+ return false;
+ }
}
} else {
return true;
diff --git a/src/main/java/com/jsh/erp/controller/AppController.java b/src/main/java/com/jsh/erp/controller/AppController.java
index 4228b907..c79a7da0 100644
--- a/src/main/java/com/jsh/erp/controller/AppController.java
+++ b/src/main/java/com/jsh/erp/controller/AppController.java
@@ -165,21 +165,23 @@ public class AppController {
JSONArray dataArray = new JSONArray();
if (null != dataList) {
for (App app : dataList) {
- JSONObject item = new JSONObject();
- item.put("id", app.getId());
- item.put("text", app.getName());
- //勾选判断1
- Boolean flag = false;
- try {
- flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + app.getId().toString() + "]");
- } catch (Exception e) {
- logger.error(">>>>>>>>>>>>>>>>>设置角色对应的应用:类型" + type + " KeyId为: " + keyId + " 存在异常!");
+ if(!("系统管理").equals(app.getName())) {
+ JSONObject item = new JSONObject();
+ item.put("id", app.getId());
+ item.put("text", app.getName());
+ //勾选判断1
+ Boolean flag = false;
+ try {
+ flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + app.getId().toString() + "]");
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>>>>>>>>设置角色对应的应用:类型" + type + " KeyId为: " + keyId + " 存在异常!");
+ }
+ if (flag == true) {
+ item.put("checked", true);
+ }
+ //结束
+ dataArray.add(item);
}
- if (flag == true) {
- item.put("checked", true);
- }
- //结束
- dataArray.add(item);
}
}
outer.put("children", dataArray);
diff --git a/src/main/java/com/jsh/erp/controller/FunctionsController.java b/src/main/java/com/jsh/erp/controller/FunctionsController.java
index 81091efe..c0f01ebd 100644
--- a/src/main/java/com/jsh/erp/controller/FunctionsController.java
+++ b/src/main/java/com/jsh/erp/controller/FunctionsController.java
@@ -129,104 +129,106 @@ public class FunctionsController {
JSONArray dataArray = new JSONArray();
if (null != dataList) {
for (Functions functions : dataList) {
- JSONObject item = new JSONObject();
- item.put("id", functions.getId());
- item.put("text", functions.getName());
+ if(!("系统管理").equals(functions.getName())) {
+ JSONObject item = new JSONObject();
+ item.put("id", functions.getId());
+ item.put("text", functions.getName());
- //勾选判断1
- Boolean flag = false;
- try {
- flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions.getId().toString() + "]");
- } catch (Exception e) {
- logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
- }
- if (flag == true) {
- item.put("checked", true);
- }
- //结束
-
- List dataList1 = functionsService.findRoleFunctions(functions.getNumber());
- JSONArray dataArray1 = new JSONArray();
- if (null != dataList1) {
-
- for (Functions functions1 : dataList1) {
- item.put("state", "open"); //如果不为空,节点不展开
- JSONObject item1 = new JSONObject();
- item1.put("id", functions1.getId());
- item1.put("text", functions1.getName());
-
- //勾选判断2
- //Boolean flag = false;
- try {
- flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions1.getId().toString() + "]");
- } catch (Exception e) {
- logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
- }
- if (flag == true) {
- item1.put("checked", true);
- }
- //结束
-
- List dataList2 = functionsService.findRoleFunctions(functions1.getNumber());
- JSONArray dataArray2 = new JSONArray();
- if (null != dataList2) {
-
- for (Functions functions2 : dataList2) {
- item1.put("state", "closed"); //如果不为空,节点不展开
- JSONObject item2 = new JSONObject();
- item2.put("id", functions2.getId());
- item2.put("text", functions2.getName());
-
- //勾选判断3
- //Boolean flag = false;
- try {
- flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions2.getId().toString() + "]");
- } catch (Exception e) {
- logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
- }
- if (flag == true) {
- item2.put("checked", true);
- }
- //结束
-
- List dataList3 = functionsService.findRoleFunctions(functions2.getNumber());
- JSONArray dataArray3 = new JSONArray();
- if (null != dataList3) {
-
- for (Functions functions3 : dataList3) {
- item2.put("state", "closed"); //如果不为空,节点不展开
- JSONObject item3 = new JSONObject();
- item3.put("id", functions3.getId());
- item3.put("text", functions3.getName());
-
- //勾选判断4
- //Boolean flag = false;
- try {
- flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions3.getId().toString() + "]");
- } catch (Exception e) {
- logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
- }
- if (flag == true) {
- item3.put("checked", true);
- }
- //结束
-
- dataArray3.add(item3);
- item2.put("children", dataArray3);
- }
- }
-
- dataArray2.add(item2);
- item1.put("children", dataArray2);
- }
- }
-
- dataArray1.add(item1);
- item.put("children", dataArray1);
+ //勾选判断1
+ Boolean flag = false;
+ try {
+ flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions.getId().toString() + "]");
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
}
+ if (flag == true) {
+ item.put("checked", true);
+ }
+ //结束
+ List dataList1 = functionsService.findRoleFunctions(functions.getNumber());
+ JSONArray dataArray1 = new JSONArray();
+ if (null != dataList1) {
+
+ for (Functions functions1 : dataList1) {
+ item.put("state", "open"); //如果不为空,节点不展开
+ JSONObject item1 = new JSONObject();
+ item1.put("id", functions1.getId());
+ item1.put("text", functions1.getName());
+
+ //勾选判断2
+ //Boolean flag = false;
+ try {
+ flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions1.getId().toString() + "]");
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
+ }
+ if (flag == true) {
+ item1.put("checked", true);
+ }
+ //结束
+
+ List dataList2 = functionsService.findRoleFunctions(functions1.getNumber());
+ JSONArray dataArray2 = new JSONArray();
+ if (null != dataList2) {
+
+ for (Functions functions2 : dataList2) {
+ item1.put("state", "closed"); //如果不为空,节点不展开
+ JSONObject item2 = new JSONObject();
+ item2.put("id", functions2.getId());
+ item2.put("text", functions2.getName());
+
+ //勾选判断3
+ //Boolean flag = false;
+ try {
+ flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions2.getId().toString() + "]");
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
+ }
+ if (flag == true) {
+ item2.put("checked", true);
+ }
+ //结束
+
+ List dataList3 = functionsService.findRoleFunctions(functions2.getNumber());
+ JSONArray dataArray3 = new JSONArray();
+ if (null != dataList3) {
+
+ for (Functions functions3 : dataList3) {
+ item2.put("state", "closed"); //如果不为空,节点不展开
+ JSONObject item3 = new JSONObject();
+ item3.put("id", functions3.getId());
+ item3.put("text", functions3.getName());
+
+ //勾选判断4
+ //Boolean flag = false;
+ try {
+ flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions3.getId().toString() + "]");
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!");
+ }
+ if (flag == true) {
+ item3.put("checked", true);
+ }
+ //结束
+
+ dataArray3.add(item3);
+ item2.put("children", dataArray3);
+ }
+ }
+
+ dataArray2.add(item2);
+ item1.put("children", dataArray2);
+ }
+ }
+
+ dataArray1.add(item1);
+ item.put("children", dataArray1);
+ }
+
+ }
+ dataArray.add(item);
}
- dataArray.add(item);
}
outer.put("children", dataArray);
arr.add(outer);
diff --git a/src/main/java/com/jsh/erp/controller/UserController.java b/src/main/java/com/jsh/erp/controller/UserController.java
index 2d6361d0..ca65d07f 100644
--- a/src/main/java/com/jsh/erp/controller/UserController.java
+++ b/src/main/java/com/jsh/erp/controller/UserController.java
@@ -14,6 +14,7 @@ import com.jsh.erp.datasource.entities.UserEx;
import com.jsh.erp.datasource.vo.TreeNode;
import com.jsh.erp.datasource.vo.TreeNodeEx;
import com.jsh.erp.service.user.UserService;
+import com.jsh.erp.service.userBusiness.UserBusinessService;
import com.jsh.erp.utils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,6 +26,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
+import java.net.URLEncoder;
import java.security.NoSuchAlgorithmException;
import java.util.*;
@@ -41,10 +43,24 @@ public class UserController {
@Value("${mybatis-plus.status}")
private String mybatisPlusStatus;
+ @Value("${manage.ip}")
+ private String manageIp;
+
+ @Value("${manage.port}")
+ private Integer managePort;
+
+ @Value("${manage.roleId}")
+ private Integer manageRoleId;
+
@Resource
private UserService userService;
+ @Resource
+ private UserBusinessService userBusinessService;
+
private static String message = "成功";
+ private static final String HTTP = "http://";
+ private static final String CODE_OK = "200";
@PostMapping(value = "/login")
public BaseResponseInfo login(@RequestParam(value = "loginame", required = false) String loginame,
@@ -96,7 +112,17 @@ public class UserController {
// new Timestamp(System.currentTimeMillis()), (short) 0, "管理用户:" + username + " 登录系统", username + " 登录系统"));
msgTip = "user can login";
request.getSession().setAttribute("user",user);
- request.getSession().setAttribute("tenantId",1L); //租户id
+ String url = HTTP + manageIp + ":" + managePort + "/tenant/getTenant?tenantId=" + user.getId();
+ JSONObject obj = HttpClient.httpGet(url);
+ if(obj!=null && obj.getString("code").equals(CODE_OK)) {
+ JSONObject dataObj = obj.getJSONObject("data");
+ if(dataObj!=null) {
+ String id = dataObj.getString("tenantId");
+ if(id!=null) {
+ request.getSession().setAttribute("tenantId",id); //租户id
+ }
+ }
+ }
request.getSession().setAttribute("mybatisPlusStatus",mybatisPlusStatus); //开启状态
} catch (Exception e) {
logger.error(">>>>>>>>>>>>>>>查询用户名为:" + username + " ,用户信息异常", e);
@@ -149,6 +175,8 @@ public class UserController {
BaseResponseInfo res = new BaseResponseInfo();
try {
request.getSession().removeAttribute("user");
+ request.getSession().removeAttribute("tenantId");
+ request.getSession().removeAttribute("mybatisPlusStatus");
response.sendRedirect("/login.html");
} catch(Exception e){
e.printStackTrace();
@@ -283,12 +311,55 @@ public class UserController {
@PostMapping("/addUser")
@ResponseBody
public Object addUser(@RequestParam("info") String beanJson)throws Exception{
-
JSONObject result = ExceptionConstants.standardSuccess();
UserEx ue= JSON.parseObject(beanJson, UserEx.class);
userService.addUserAndOrgUserRel(ue);
return result;
+ }
+
+ /**
+ * 注册用户
+ * @param loginame
+ * @param password
+ * @return
+ * @throws Exception
+ */
+ @PostMapping(value = "/registerUser")
+ public Object registerUser(@RequestParam(value = "loginame", required = false) String loginame,
+ @RequestParam(value = "password", required = false) String password,
+ HttpServletRequest request)throws Exception{
+ JSONObject result = ExceptionConstants.standardSuccess();
+ UserEx ue= new UserEx();
+ ue.setUsername(loginame);
+ ue.setLoginame(loginame);
+ ue.setPassword(password);
+ ue = userService.registerUser(ue);
+
+ //调第三方接口创建租户管理信息
+ String url = HTTP + manageIp + ":" + managePort + "/tenant/add";
+ JSONObject tenantObj = new JSONObject();
+ tenantObj.put("tenantId", ue.getId());
+ tenantObj.put("loginName",ue.getLoginame());
+ String param = URLEncoder.encode(tenantObj.toString());
+ HttpClient.httpPost(url + "?info=" + param, param);
+ logger.info("===============创建租户信息完成===============");
+
+ //更新租户id
+ User user = new User();
+ user.setId(ue.getId());
+ user.setTenantId(ue.getId());
+ userService.updateUserTenant(user);
+
+ //新增用户与角色的关系
+ JSONObject ubObj = new JSONObject();
+ ubObj.put("type", "UserRole");
+ ubObj.put("keyid", ue.getId());
+ JSONArray ubArr = new JSONArray();
+ ubArr.add(manageRoleId);
+ ubObj.put("value", ubArr.toString());
+ userBusinessService.insertUserBusiness(ubObj.toString(), request);
+ return result;
}
/**
* create by: cjl
@@ -335,4 +406,19 @@ public class UserController {
return arr;
}
+ @GetMapping("/getTenantStatus")
+ public BaseResponseInfo getTenantStatus(HttpServletRequest request) {
+ BaseResponseInfo res = new BaseResponseInfo();
+ try {
+ Map data = new HashMap();
+ data.put("status", mybatisPlusStatus);
+ res.code = 200;
+ res.data = data;
+ } catch(Exception e){
+ e.printStackTrace();
+ res.code = 500;
+ res.data = "获取失败";
+ }
+ return res;
+ }
}
diff --git a/src/main/java/com/jsh/erp/filter/LogCostFilter.java b/src/main/java/com/jsh/erp/filter/LogCostFilter.java
index 160de0c9..c2b5dbe4 100644
--- a/src/main/java/com/jsh/erp/filter/LogCostFilter.java
+++ b/src/main/java/com/jsh/erp/filter/LogCostFilter.java
@@ -1,8 +1,6 @@
package com.jsh.erp.filter;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;
-
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
@@ -16,7 +14,8 @@ import java.util.regex.Pattern;
@WebFilter(filterName = "LogCostFilter", urlPatterns = {"/*"},
initParams = {@WebInitParam(name = "ignoredUrl", value = ".css#.js#.jpg#.png#.gif#.ico"),
- @WebInitParam(name = "filterPath", value = "/user/login")})
+ @WebInitParam(name = "filterPath",
+ value = "/user/login#/user/registerUser#/user/getTenantStatus")})
public class LogCostFilter implements Filter {
private static final String FILTER_PATH = "filterPath";
@@ -53,7 +52,7 @@ public class LogCostFilter implements Filter {
chain.doFilter(request, response);
return;
}
- if (requestUrl != null && requestUrl.contains("/login.html")) {
+ if (requestUrl != null && (requestUrl.contains("/login.html") || requestUrl.contains("/register.html"))) {
chain.doFilter(request, response);
return;
}
diff --git a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java
index 4ef8d3f0..8f51410e 100644
--- a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java
+++ b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java
@@ -189,7 +189,7 @@ public class DepotHeadService {
public List findByMonth(String monthTime) {
DepotHeadExample example = new DepotHeadExample();
- monthTime = monthTime + "-31 00:00:00";
+ monthTime = monthTime + "-31 23:59:59";
Date month = StringUtil.getDateByString(monthTime, null);
example.createCriteria().andOpertimeLessThanOrEqualTo(month);
return depotHeadMapper.selectByExample(example);
diff --git a/src/main/java/com/jsh/erp/service/user/UserService.java b/src/main/java/com/jsh/erp/service/user/UserService.java
index 7e99aa3f..740bf6e0 100644
--- a/src/main/java/com/jsh/erp/service/user/UserService.java
+++ b/src/main/java/com/jsh/erp/service/user/UserService.java
@@ -15,10 +15,7 @@ import com.jsh.erp.datasource.vo.TreeNodeEx;
import com.jsh.erp.exception.BusinessRunTimeException;
import com.jsh.erp.service.log.LogService;
import com.jsh.erp.service.orgaUserRel.OrgaUserRelService;
-import com.jsh.erp.utils.ExceptionCodeConstants;
-import com.jsh.erp.utils.JshException;
-import com.jsh.erp.utils.StringUtil;
-import com.jsh.erp.utils.Tools;
+import com.jsh.erp.utils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +26,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.net.URLEncoder;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.List;
@@ -272,6 +270,29 @@ public class UserService {
}
return null;
}
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public UserEx registerUser(UserEx ue) throws Exception{
+ ue.setPassword(Tools.md5Encryp(ue.getPassword()));
+ ue.setIsystem(BusinessConstants.USER_NOT_SYSTEM);
+ if(ue.getIsmanager()==null){
+ ue.setIsmanager(BusinessConstants.USER_NOT_MANAGER);
+ }
+ ue.setStatus(BusinessConstants.USER_STATUS_NORMAL);
+ int i=userMapperEx.addUser(ue);
+ if(i>0){
+ return ue;
+ }
+ return null;
+ }
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public void updateUserTenant(User user) throws Exception{
+ UserExample example = new UserExample();
+ example.createCriteria().andIdEqualTo(user.getId());
+ userMapper.updateByPrimaryKeySelective(user);
+ }
+
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public void updateUserAndOrgUserRel(UserEx ue) throws Exception{
logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_USER,
diff --git a/src/main/java/com/jsh/erp/utils/HttpClient.java b/src/main/java/com/jsh/erp/utils/HttpClient.java
new file mode 100644
index 00000000..03047d07
--- /dev/null
+++ b/src/main/java/com/jsh/erp/utils/HttpClient.java
@@ -0,0 +1,88 @@
+package com.jsh.erp.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.entity.EntityBuilder;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+import static org.apache.http.HttpStatus.SC_OK;
+
+public final class HttpClient {
+ private static Logger logger = LoggerFactory.getLogger(HttpClient.class);
+
+ private static final RequestConfig REQUEST_CONFIG = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(10000).build();
+
+ /**
+ * 采用Get方式发送请求,获取响应数据
+ * @param url
+ * @return
+ */
+ public static JSONObject httpGet(String url){
+ CloseableHttpClient client = HttpClientBuilder.create().build();
+ HttpGet httpGet = new HttpGet(url);
+ httpGet.setConfig(REQUEST_CONFIG);
+ try {
+ CloseableHttpResponse chr = client.execute(httpGet);
+ int statusCode = chr.getStatusLine().getStatusCode();
+ if (SC_OK != statusCode) {
+ throw new RuntimeException(String.format("%s查询出现异常", url));
+ }
+ String entity = EntityUtils.toString(chr.getEntity(), StandardCharsets.UTF_8);
+ JSONObject object = JSONObject.parseObject(entity);
+ return object;
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException(String.format("%s", url) + "查询出现异常");
+ } finally {
+ try {
+ client.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 采用Post方式发送请求,获取响应数据
+ *
+ * @param url url地址
+ * @param param 参数值键值对的字符串
+ * @return
+ */
+ public static String httpPost(String url, String param) {
+ CloseableHttpClient client = HttpClientBuilder.create().build();
+ try {
+ HttpPost post = new HttpPost(url);
+ EntityBuilder builder = EntityBuilder.create();
+ builder.setContentType(ContentType.APPLICATION_JSON);
+ builder.setText(param);
+ post.setEntity(builder.build());
+
+ CloseableHttpResponse response = client.execute(post);
+ int statusCode = response.getStatusLine().getStatusCode();
+
+ HttpEntity entity = response.getEntity();
+ String data = EntityUtils.toString(entity, StandardCharsets.UTF_8);
+ logger.info("状态:"+statusCode+"数据:"+data);
+ return data;
+ } catch(Exception e){
+ throw new RuntimeException(e.getMessage());
+ } finally {
+ try{
+ client.close();
+ }catch(Exception ex){ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 9e592d6b..1aa60414 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -27,7 +27,10 @@ pagehelper.supportMethodsArguments=false
#open开启 close关闭
mybatis-plus.status=close
mybatis-plus.mapper-locations=classpath:./mapper_xml/*.xml
-
+#获取管理系统信息
+manage.ip=127.0.0.1
+manage.port=8090
+manage.roleId=10