Merge branch 'dev' into dev
This commit is contained in:
commit
1ed143cd37
141
build.sh
141
build.sh
@ -5,7 +5,7 @@
|
||||
#
|
||||
# id : AL1009
|
||||
#
|
||||
# Last modified: 2021-04-07 21:45
|
||||
# Last modified: 2021-04-12 21:18
|
||||
#
|
||||
# Filename: build.sh
|
||||
#
|
||||
@ -35,7 +35,6 @@ function echo_done() {
|
||||
}
|
||||
|
||||
function get_db_config() {
|
||||
cwd=$(pwd)
|
||||
key=$1
|
||||
|
||||
value=$(sed -n '/database/,/domain/p' "${CONFIG_FILE}" |awk -F : /^[[:space:]]*${key}/'{print $2}')
|
||||
@ -81,7 +80,7 @@ EOF
|
||||
function check_soft {
|
||||
local _soft_name=$1
|
||||
command -v ${_soft_name} > /dev/null || {
|
||||
echo_red "请安装 ${_soft_name} 后再执行本脚本安装ferry。"
|
||||
echo_red "请安装 ${_soft_name} 后再执行本脚本安装ferry。"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
@ -123,14 +122,20 @@ function mk_ferry_dir {
|
||||
}
|
||||
|
||||
function test_mysql_connect() {
|
||||
host=$1
|
||||
port=$2
|
||||
user=$3
|
||||
password=$4
|
||||
db=$5
|
||||
command="CREATE TABLE IF NOT EXISTS test(id INT); DROP TABLE test;"
|
||||
echo_green "\n>>> $(gettext '拉取mysql docker 镜像如果是首次需要耗时,请稍等...')"
|
||||
docker run -it --rm mysql:5 mysql -h${host} -P${port} -u${user} -p${password} ${db} -e "${command}" 2>/dev/null
|
||||
host=$1
|
||||
port=$2
|
||||
user=$3
|
||||
password=$4
|
||||
db=$5
|
||||
sql_command="CREATE TABLE IF NOT EXISTS test(id INT); DROP TABLE test;"
|
||||
command -v mysql > /dev/null
|
||||
if [ "$?" -eq 0 ];then
|
||||
mysql -h${host} -P${port} -u${user} -p${password} ${db} -e "${sql_command}" 2>/dev/null
|
||||
else
|
||||
[ "${host}" == "127.0.0.1" ] && return 0
|
||||
echo_green "\n>>> $(gettext '拉取mysql docker 镜像如果是首次需要耗时,请稍等...')"
|
||||
docker run -it --rm mysql:5 mysql -h${host} -P${port} -u${user} -p${password} ${db} -e "${sql_command}" 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
function init(){
|
||||
@ -148,41 +153,57 @@ function init(){
|
||||
if [ -f "${BASE_DIR}/build/config/settings.yml" ];then
|
||||
CONFIG_FILE=${BASE_DIR}/build/config/settings.yml
|
||||
else
|
||||
echo_red "配置文件不存在,请检查配置文件是否存在。"
|
||||
echo_red "配置文件: ${BASE_DIR}/build/config/settings.yml 不存在,请检查。"
|
||||
exit 1
|
||||
fi
|
||||
echo_done
|
||||
}
|
||||
|
||||
function set_external_redis() {
|
||||
redis_host=$(awk --re-interval '/url: redis/{match($0,/([0-9]{1,3}\.){3}[0-9]{1,3}/,a); print a[0]}' ${CONFIG_FILE})
|
||||
read_from_input redis_host "$(gettext 'Please enter Redis server IP')" "" "${redis_host}"
|
||||
|
||||
redis_port=$(awk -F : '/url: redis/{print $NF}' ${CONFIG_FILE})
|
||||
read_from_input redis_port "$(gettext 'Please enter Redis server port')" "" "${redis_port}"
|
||||
|
||||
redis_pass=$(awk -F '/' '/url: redis/{if($0~"@")print $3}' ${CONFIG_FILE} |cut -f 1 -d '@')
|
||||
read_from_input redis_pass "$(gettext 'Please enter Redis password, 密码里面不能带@ /, 密码为空请务必修改配置文件!!')" "" "${redis_pass}"
|
||||
|
||||
# 设置redis账号密码到配置文件
|
||||
if [ "${redis_pass}" == "" ];then
|
||||
sed -i "s/url: redis:\/\/.*/url: redis:\/\/${redis_host}:${redis_port}/g" ${CONFIG_FILE}
|
||||
else
|
||||
sed -i "s/url: redis:\/\/.*/url: redis:\/\/${redis_pass}@${redis_host}:${redis_port}/g" ${CONFIG_FILE}
|
||||
fi
|
||||
}
|
||||
|
||||
function set_external_mysql() {
|
||||
mysql_host=$(get_db_config host)
|
||||
read_from_input mysql_host "$(gettext 'Please enter MySQL server IP')" "" "${mysql_host}"
|
||||
mysql_host=$(get_db_config host)
|
||||
read_from_input mysql_host "$(gettext 'Please enter MySQL server IP')" "" "${mysql_host}"
|
||||
|
||||
mysql_port=$(get_db_config port)
|
||||
read_from_input mysql_port "$(gettext 'Please enter MySQL server port')" "" "${mysql_port}"
|
||||
mysql_port=$(get_db_config port)
|
||||
read_from_input mysql_port "$(gettext 'Please enter MySQL server port')" "" "${mysql_port}"
|
||||
|
||||
mysql_db=$(get_db_config name)
|
||||
read_from_input mysql_db "$(gettext 'Please enter MySQL database name')" "" "${mysql_db}"
|
||||
mysql_db=$(get_db_config name)
|
||||
read_from_input mysql_db "$(gettext 'Please enter MySQL database name')" "" "${mysql_db}"
|
||||
|
||||
mysql_user=$(get_db_config username)
|
||||
read_from_input mysql_user "$(gettext 'Please enter MySQL username')" "" "${mysql_user}"
|
||||
mysql_user=$(get_db_config username)
|
||||
read_from_input mysql_user "$(gettext 'Please enter MySQL username')" "" "${mysql_user}"
|
||||
|
||||
mysql_pass=$(get_db_config password)
|
||||
read_from_input mysql_pass "$(gettext 'Please enter MySQL password')" "" "${mysql_pass}"
|
||||
mysql_pass=$(get_db_config password)
|
||||
read_from_input mysql_pass "$(gettext 'Please enter MySQL password')" "" "${mysql_pass}"
|
||||
|
||||
test_mysql_connect ${mysql_host} ${mysql_port} ${mysql_user} ${mysql_pass} ${mysql_db}
|
||||
if [[ "$?" != "0" ]]; then
|
||||
echo_red "测试连接数据库失败, 请重新设置"
|
||||
echo
|
||||
set_external_mysql
|
||||
fi
|
||||
test_mysql_connect ${mysql_host} ${mysql_port} ${mysql_user} ${mysql_pass} ${mysql_db}
|
||||
if [[ "$?" != "0" ]]; then
|
||||
echo_red "测试连接数据库失败, 请重新设置"
|
||||
echo
|
||||
set_external_mysql
|
||||
fi
|
||||
|
||||
set_db_config "host" ${mysql_host}
|
||||
set_db_config "port" ${mysql_port}
|
||||
set_db_config "username" ${mysql_user}
|
||||
set_db_config "password" ${mysql_pass}
|
||||
set_db_config "name" ${mysql_db}
|
||||
set_db_config "host" ${mysql_host}
|
||||
set_db_config "port" ${mysql_port}
|
||||
set_db_config "username" ${mysql_user}
|
||||
set_db_config "password" ${mysql_pass}
|
||||
set_db_config "name" ${mysql_db}
|
||||
}
|
||||
|
||||
function config_mysql {
|
||||
@ -197,8 +218,20 @@ function config_mysql {
|
||||
fi
|
||||
}
|
||||
|
||||
function config_redis {
|
||||
echo_green "\n>>> $(gettext '回车前请确保你已经安装了Redis,且启动服务')"
|
||||
read_from_input confirm "$(gettext 'Do you have been installed Redis')?" "y/n" "y"
|
||||
|
||||
if [[ "${confirm}" == "y" ]]; then
|
||||
set_external_redis
|
||||
else
|
||||
echo_red "未安装Redis结束此次编译"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function get_variables {
|
||||
read_from_input front_url "$(gettext '请输入您的程序访问地址: ')" "" "https://fdevops.com:8001"
|
||||
read_from_input front_url "$(gettext '请输入您的程序访问地址: ')" "" "https://fdevops.com:8002"
|
||||
read_from_input front_clone_from "$(gettext '请选择从哪里拉取前端代码,默认是gitee: 1:gitee, 2: github, 3:自定义地址')" "" "1"
|
||||
|
||||
if [ $front_clone_from == 1 ]; then
|
||||
@ -210,15 +243,23 @@ function get_variables {
|
||||
fi
|
||||
|
||||
config_mysql
|
||||
read_from_input confirm "$(gettext '请确认是否创建配置文件中的redis库')?" "y/n[y]" "y"
|
||||
if [[ "${confirm}" != "y" ]]; then
|
||||
echo_red "结束此次编译"
|
||||
exit 1
|
||||
fi
|
||||
config_redis
|
||||
echo_done
|
||||
|
||||
}
|
||||
|
||||
function config_front {
|
||||
echo_green "\n>>> $(gettext '替换程序访问地址...')"
|
||||
cat > ${BASE_DIR}/ferry_web/.env.production << EOF
|
||||
# just a flag
|
||||
ENV = 'production'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = '$front_url'
|
||||
EOF
|
||||
|
||||
}
|
||||
|
||||
function install_front {
|
||||
echo_green "\n>>> $(gettext '开始拉取前端程序...')"
|
||||
read_from_input confirm "$(gettext '此处会执行 rm -rf ./ferry_web 的命令,若此命令不会造成当前环境的损伤则请继续')?" "y/n[y]" "y"
|
||||
@ -238,7 +279,7 @@ function install_front {
|
||||
echo_red "克隆代码失败,请检查git地址: ${ui_address}或者网络质量"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
config_front
|
||||
echo_green "\n>>> $(gettext '开始安装前端依赖...')"
|
||||
cnpm_base_dir=$(dirname $(dirname $(which npm)))
|
||||
npm install -g cnpm --registry=https://registry.npm.taobao.org --prefix ${cnpm_base_dir}
|
||||
@ -246,19 +287,6 @@ function install_front {
|
||||
|
||||
}
|
||||
|
||||
function config_front {
|
||||
echo_green "\n>>> $(gettext '替换程序访问地址...')"
|
||||
cat > ${BASE_DIR}/ferry_web/.env.production << EOF
|
||||
# just a flag
|
||||
ENV = 'production'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = '$front_url'
|
||||
EOF
|
||||
|
||||
}
|
||||
|
||||
|
||||
function install_backend {
|
||||
echo_green "\n>>> $(gettext '开始编译后端程序...')"
|
||||
|
||||
@ -282,7 +310,7 @@ function install_backend {
|
||||
fi
|
||||
cp -r ${BASE_DIR}/ferry ${BASE_DIR}/build/
|
||||
cd ${BASE_DIR}/build
|
||||
${BASE_DIR}/ferry init -c=config/settings.yml
|
||||
${BASE_DIR}/build/ferry init -c=config/settings.yml
|
||||
cd - &>/dev/null
|
||||
}
|
||||
|
||||
@ -291,13 +319,12 @@ function install_app() {
|
||||
init
|
||||
get_variables
|
||||
install_front
|
||||
config_front
|
||||
install_backend
|
||||
}
|
||||
|
||||
function start_backend {
|
||||
cd ${BASE_DIR}/build
|
||||
${BASE_DIR}/ferry server -c=config/settings.yml
|
||||
./ferry server -c=config/settings.yml
|
||||
}
|
||||
|
||||
function main {
|
||||
|
@ -34,38 +34,40 @@ func ProcessStructure(c *gin.Context, processId int, workOrderId int) (result ma
|
||||
)
|
||||
|
||||
err = orm.Eloquent.Model(&processValue).Where("id = ?", processId).Find(&processValue).Error
|
||||
if err != nil {
|
||||
err = fmt.Errorf("查询流程失败,%v", err.Error())
|
||||
return
|
||||
}
|
||||
//if err != nil {
|
||||
// err = fmt.Errorf("查询流程失败,%v", err.Error())
|
||||
// return
|
||||
//}
|
||||
|
||||
err = json.Unmarshal([]byte(processValue.Structure), &processStructureDetails)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("json转map失败,%v", err.Error())
|
||||
return
|
||||
}
|
||||
if processValue.Structure != nil && len(processValue.Structure) > 0 {
|
||||
err = json.Unmarshal([]byte(processValue.Structure), &processStructureDetails)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("json转map失败,%v", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// 排序,使用冒泡
|
||||
p := processStructureDetails["nodes"].([]interface{})
|
||||
if len(p) > 1 {
|
||||
for i := 0; i < len(p); i++ {
|
||||
for j := 1; j < len(p)-i; j++ {
|
||||
if p[j].(map[string]interface{})["sort"] == nil || p[j-1].(map[string]interface{})["sort"] == nil {
|
||||
return nil, errors.New("流程未定义顺序属性,请确认")
|
||||
}
|
||||
leftInt, _ := strconv.Atoi(p[j].(map[string]interface{})["sort"].(string))
|
||||
rightInt, _ := strconv.Atoi(p[j-1].(map[string]interface{})["sort"].(string))
|
||||
if leftInt < rightInt {
|
||||
//交换
|
||||
p[j], p[j-1] = p[j-1], p[j]
|
||||
// 排序,使用冒泡
|
||||
p := processStructureDetails["nodes"].([]interface{})
|
||||
if len(p) > 1 {
|
||||
for i := 0; i < len(p); i++ {
|
||||
for j := 1; j < len(p)-i; j++ {
|
||||
if p[j].(map[string]interface{})["sort"] == nil || p[j-1].(map[string]interface{})["sort"] == nil {
|
||||
return nil, errors.New("流程未定义顺序属性,请确认")
|
||||
}
|
||||
leftInt, _ := strconv.Atoi(p[j].(map[string]interface{})["sort"].(string))
|
||||
rightInt, _ := strconv.Atoi(p[j-1].(map[string]interface{})["sort"].(string))
|
||||
if leftInt < rightInt {
|
||||
//交换
|
||||
p[j], p[j-1] = p[j-1], p[j]
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, node := range processStructureDetails["nodes"].([]interface{}) {
|
||||
processNode = append(processNode, node.(map[string]interface{}))
|
||||
}
|
||||
} else {
|
||||
processNode = processStructureDetails["nodes"].([]map[string]interface{})
|
||||
}
|
||||
for _, node := range processStructureDetails["nodes"].([]interface{}) {
|
||||
processNode = append(processNode, node.(map[string]interface{}))
|
||||
}
|
||||
} else {
|
||||
processNode = processStructureDetails["nodes"].([]map[string]interface{})
|
||||
}
|
||||
|
||||
processValue.Structure = nil
|
||||
@ -141,18 +143,20 @@ func ProcessStructure(c *gin.Context, processId int, workOrderId int) (result ma
|
||||
if len(stateList) > 0 {
|
||||
breakStateTag:
|
||||
for _, stateValue := range stateList {
|
||||
for _, processNodeValue := range processStructureDetails["nodes"].([]interface{}) {
|
||||
if stateValue["id"].(string) == processNodeValue.(map[string]interface{})["id"] {
|
||||
if _, ok := stateValue["processor"]; ok {
|
||||
for _, userId := range stateValue["processor"].([]interface{}) {
|
||||
if int(userId.(float64)) == tools.GetUserId(c) {
|
||||
workOrderInfo.CurrentState = stateValue["id"].(string)
|
||||
break breakStateTag
|
||||
if processStructureDetails["nodes"] != nil {
|
||||
for _, processNodeValue := range processStructureDetails["nodes"].([]interface{}) {
|
||||
if stateValue["id"].(string) == processNodeValue.(map[string]interface{})["id"] {
|
||||
if _, ok := stateValue["processor"]; ok {
|
||||
for _, userId := range stateValue["processor"].([]interface{}) {
|
||||
if int(userId.(float64)) == tools.GetUserId(c) {
|
||||
workOrderInfo.CurrentState = stateValue["id"].(string)
|
||||
break breakStateTag
|
||||
}
|
||||
}
|
||||
} else {
|
||||
err = errors.New("未查询到对应的处理人字段,请确认。")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = errors.New("未查询到对应的处理人字段,请确认。")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,12 +44,15 @@ func JudgeUserAuthority(c *gin.Context, workOrderId int, currentState string) (s
|
||||
|
||||
// 获取流程信息
|
||||
err = orm.Eloquent.Model(&process.Info{}).Where("id = ?", workOrderInfo.Process).Find(&processInfo).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = json.Unmarshal(processInfo.Structure, &processState.Structure)
|
||||
if err != nil {
|
||||
return
|
||||
//if err != nil {
|
||||
// return
|
||||
//}
|
||||
|
||||
if processInfo.Structure != nil && len(processInfo.Structure) > 0 {
|
||||
err = json.Unmarshal(processInfo.Structure, &processState.Structure)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
stateValue, err = processState.GetNode(currentState)
|
||||
|
Loading…
x
Reference in New Issue
Block a user