예제 #1
0
파일: web.go 프로젝트: hjqhezgh/lessgo
//处理实体的保存页请求
func dealEntitySave(_entity Entity, w http.ResponseWriter, r *http.Request) {

	m := make(map[string]interface{})

	employee := GetCurrentEmployee(r)

	if employee.UserId == "" {
		Log.Warn("用户未登陆")
		m["success"] = false
		m["code"] = 100
		m["msg"] = "用户未登陆"
		commonlib.OutputJson(w, m, " ")
		return
	}

	Log.Debug("路径:", r.URL.Path, "访问实体", _entity.Id, "的保存ajax请求")

	err := r.ParseForm()

	//异步请求绑定的组件Id
	componentId := r.FormValue("componentId")
	formpanel := runtimeComponentContain[componentId].(formPanel)

	if err != nil {
		m["success"] = false
		m["code"] = 100
		m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
		Log.Warn(err.Error())
		commonlib.OutputJson(w, m, " ")
		return
	}

	idString := r.FormValue(_entity.Pk)

	_model := new(Model)
	_model.Props = []*Prop{}

	imgElements := []element{}

	for _, formElement := range formpanel.Elements {
		_prop := new(Prop)

		if formElement.Type == "image" { //图片类型需要做多表处理
			imgElements = append(imgElements, formElement)
		} else if formElement.Type == "currentTime" { //当前时间,一般用于createTime
			_prop.Name = formElement.Field
			if formElement.Char14 == "true" {
				_prop.Value = time.Now().Format("20060102150405")
			} else {
				_prop.Value = time.Now().Format("2006-01-02 15:04:05")
			}
			_model.Props = append(_model.Props, _prop)
		} else {
			_prop.Name = formElement.Field
			_prop.Value = r.FormValue(formElement.Field)
			_model.Props = append(_model.Props, _prop)
		}
	}

	if idString != "" { //修改的情况
		id, err := strconv.Atoi(idString)

		if err != nil {
			m["success"] = false
			m["code"] = 100
			m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
			Log.Warn(err.Error())
			commonlib.OutputJson(w, m, " ")
			return
		}

		_model.Id = fmt.Sprint(id)

		err = modify(_entity, _model, formpanel.Elements)

		if err != nil {
			m["success"] = false
			m["code"] = 100
			m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
			commonlib.OutputJson(w, m, " ")
			return
		}

		m["success"] = true
		m["code"] = 200
		commonlib.OutputJson(w, m, " ")
		return
	} else {
		id, err := insert(_entity, _model, formpanel.Elements)

		for _, imgElment := range imgElements {

			filePath := r.FormValue(imgElment.Field)
			tmpFileName := ""

			if filePath != "" {
				imgEntity := getEntity(imgElment.ImageEntity)
				imageModel := new(Model)
				imageModel.Props = []*Prop{}

				fileNameProp := new(Prop)
				fileNameProp.Name = "filename"
				fileNameProp.Value = commonlib.SubstrByStEd(filePath, strings.LastIndex(filePath, "/")+1, strings.LastIndex(filePath, "."))
				tmpFileName = commonlib.Substr(filePath, strings.LastIndex(filePath, "/")+1, len(filePath))

				suffixProp := new(Prop)
				suffixProp.Name = "suffix"
				suffixProp.Value = commonlib.Substr(filePath, strings.LastIndex(filePath, ".")+1, len(filePath))

				refProp := new(Prop)
				refProp.Name = imgElment.Field
				refProp.Value = fmt.Sprint(id)

				imageModel.Props = append(imageModel.Props, fileNameProp)
				imageModel.Props = append(imageModel.Props, suffixProp)
				imageModel.Props = append(imageModel.Props, refProp)

				_, err := insert(imgEntity, imageModel, []element{
					element{
						Field: "filename",
					},
					element{
						Field: "suffix",
					},
					element{
						Field: imgElment.Field,
					},
				})

				if err != nil {
					m["success"] = false
					m["code"] = 100
					m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
					Log.Warn(err.Error())
					commonlib.OutputJson(w, m, " ")
					return
				}

				tmpFile, err := os.OpenFile("../tmp/"+tmpFileName, os.O_RDWR, 0777)

				if err != nil {
					m["success"] = false
					m["code"] = 100
					m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
					Log.Warn(err.Error())
					commonlib.OutputJson(w, m, " ")
					return
				}

				_, err = os.Stat(imgElment.ImagePath)

				if err != nil && os.IsNotExist(err) {
					Log.Info(imgElment.ImagePath, "文件夹不存在,创建")
					os.MkdirAll(imgElment.ImagePath, 0777)
				}

				disFile, err := os.Create(imgElment.ImagePath + "/" + tmpFileName)

				if err != nil {
					m["success"] = false
					m["code"] = 100
					m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
					Log.Warn(err.Error())
					commonlib.OutputJson(w, m, " ")
					return
				}

				io.Copy(disFile, tmpFile)

				os.Remove("../tmp/" + tmpFileName)
			}
		}

		if err != nil {
			m["success"] = false
			m["code"] = 100
			m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
			commonlib.OutputJson(w, m, " ")
			return
		}

		m["success"] = true
		m["code"] = 200
		commonlib.OutputJson(w, m, " ")
		return
	}

}
예제 #2
0
파일: web.go 프로젝트: huangjq/lessgo
//处理实体的保存页请求
func dealEntitySave(entity Entity, w http.ResponseWriter, r *http.Request) {

	Log.Debug("路径:", r.URL.Path, "访问实体", entity.Id, "的保存ajax请求")

	err := r.ParseForm()

	//异步请求绑定的组件Id
	componentId := r.FormValue("componentId")
	formpanel := runtimeComponentContain[componentId].(FormPanel)

	m := make(map[string]interface{})

	if err != nil {
		m["success"] = false
		m["code"] = 100
		m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
		Log.Warn(err.Error())
		commonlib.OutputJson(w, m, " ")
		return
	}

	idString := r.FormValue(entity.Pk)

	model := new(Model)
	model.Props = []*Prop{}

	for _, element := range formpanel.Elements {
		prop := new(Prop)

		if element.Type == "image" { //图片类型需要做多表处理

			filePath := r.FormValue(element.Field)
			tmpFileName := ""

			if filePath != "" {
				imgEntity := GetEntity(element.ImageEntity)
				imageModel := new(Model)
				imageModel.Props = []*Prop{}

				fileNameProp := new(Prop)
				fileNameProp.Name = "filename"
				fileNameProp.Value = commonlib.SubstrByStEd(filePath, strings.LastIndex(filePath, "/")+1, strings.LastIndex(filePath, "."))
				tmpFileName = commonlib.Substr(filePath, strings.LastIndex(filePath, "/")+1, len(filePath))

				suffixProp := new(Prop)
				suffixProp.Name = "suffix"
				suffixProp.Value = commonlib.Substr(filePath, strings.LastIndex(filePath, ".")+1, len(filePath))

				imageModel.Props = append(imageModel.Props, fileNameProp)
				imageModel.Props = append(imageModel.Props, suffixProp)

				imgId, err := Insert(imgEntity, imageModel, []Element{
					Element{
						Field: "filename",
					},
					Element{
						Field: "suffix",
					},
				})

				if err != nil {
					m["success"] = false
					m["code"] = 100
					m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
					Log.Warn(err.Error())
					commonlib.OutputJson(w, m, " ")
					return
				}

				prop.Name = element.Field
				prop.Value = fmt.Sprint(imgId)
				model.Props = append(model.Props, prop)

				tmpFile, err := os.OpenFile("../tmp/"+tmpFileName, os.O_RDWR, 0777)

				if err != nil {
					m["success"] = false
					m["code"] = 100
					m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
					Log.Warn(err.Error())
					commonlib.OutputJson(w, m, " ")
					return
				}

				_, err = os.Stat(element.ImagePath)

				if err != nil && os.IsNotExist(err) {
					Log.Info(element.ImagePath, "文件夹不存在,创建")
					os.Mkdir(element.ImagePath, 0777)
				}

				disFile, err := os.Create(element.ImagePath + "/" + tmpFileName)

				if err != nil {
					m["success"] = false
					m["code"] = 100
					m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
					Log.Warn(err.Error())
					commonlib.OutputJson(w, m, " ")
					return
				}

				io.Copy(disFile, tmpFile)

				os.Remove("../tmp/" + tmpFileName)
			} else {
				prop.Name = element.Field
				prop.Value = fmt.Sprint(0)
				model.Props = append(model.Props, prop)
			}

		} else {
			prop.Name = element.Field
			prop.Value = r.FormValue(element.Field)
			model.Props = append(model.Props, prop)
		}
	}

	if idString != "" { //修改的情况
		id, err := strconv.Atoi(idString)

		if err != nil {
			m["success"] = false
			m["code"] = 100
			m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
			Log.Warn(err.Error())
			commonlib.OutputJson(w, m, " ")
			return
		}

		model.Id = id

		err = Modify(entity, model, formpanel.Elements)

		if err != nil {
			m["success"] = false
			m["code"] = 100
			m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
			commonlib.OutputJson(w, m, " ")
			return
		}

		m["success"] = true
		m["code"] = 200
		commonlib.OutputJson(w, m, " ")
		return
	} else {
		_, err = Insert(entity, model, formpanel.Elements)

		if err != nil {
			m["success"] = false
			m["code"] = 100
			m["msg"] = "出现错误,请联系IT部门,错误信息:" + err.Error()
			commonlib.OutputJson(w, m, " ")
			return
		}

		m["success"] = true
		m["code"] = 200
		commonlib.OutputJson(w, m, " ")
		return
	}

}