huahaiyan 6 years ago
parent
commit
b6b17e2aa3

+ 55 - 0
src/dashoo.cn/backend/api/business/company/basecompany.go

@@ -0,0 +1,55 @@
+package company
+
+import (
+	"time"
+)
+
+type Base_Company struct {
+	Id             int       `xorm:"not null pk autoincr INT(10)"`
+	Fullname       string    `xorm:"VARCHAR(50)"`
+	ShortName      string    `xorm:"VARCHAR(50)"`
+	AccCode        string    `xorm:"VARCHAR(10)"`
+	TableCode      string    `xorm:"VARCHAR(50)"`
+	Enabled        int       `xorm:"INT(11)"`
+	SortCode       int       `xorm:"INT(11)"`
+	CreateUserId   int       `xorm:"INT(11)"`
+	Address        string    `xorm:"VARCHAR(50)"`
+	CreateBy       string    `xorm:"VARCHAR(255)"`
+	CreateOn       time.Time `xorm:"DATETIME created"`
+	ModifiedUserId int       `xorm:"INT(11)"`
+	ModifiedBy     string    `xorm:"VARCHAR(255)"`
+	ModifiedOn     time.Time `xorm:"DATETIME updated"`
+}
+type Base_Companytree struct {
+	Id       string `json:"id"`
+	ParentId string `json:"pId"`
+	Fullname string `json:"name"`
+	IsParent string `json:"isParent"`
+	Nocheck  string `json:"nocheck"`
+}
+
+type Base_Indextree struct {
+	Id          string `json:"id"`
+	ParentId    string `json:"pId"`
+	Fullname    string `json:"name"`
+	IsParent    string `json:"isParent"`
+	Nocheck     string `json:"nocheck"`
+	Longitude   string `json:"lng"`
+	Latitude    string `json:"lat"`
+	DeviceState string `json:"devicestate"`
+}
+
+type Base_Indextree1 struct {
+	Id       string `json:"id"`
+	ParentId string `json:"pId"`
+	Fullname string `json:"name"`
+}
+
+type UserCompany struct {
+	Companyname string
+	Username    string
+	Realname    string
+	Mobile      string
+	Telephone   string
+	Email       string
+}

+ 245 - 0
src/dashoo.cn/backend/api/business/company/basecompanyService.go

@@ -0,0 +1,245 @@
+package company
+
+import (
+	"fmt"
+	"strconv"
+
+	"dashoo.cn/utils"
+	. "dashoo.cn/utils/db"
+	"github.com/go-xorm/xorm"
+)
+
+type BaseCompanyService struct {
+	ServiceBase
+}
+
+func GetCompanyService(xormEngine *xorm.Engine) *BaseCompanyService {
+	s := new(BaseCompanyService)
+	s.DBE = xormEngine
+	return s
+}
+
+//提交   //传入f,s 两个参数 返回 comid
+func (s *BaseCompanyService) AddCompany(fullname, shortname string) (err error, comacccode string) {
+	model := Base_Company{Fullname: fullname, ShortName: shortname}
+	//model := Base_User{Username: user.Username}
+
+	has, _ := s.DBE.Get(&model)
+	if has {
+		err = utils.NewError("ErrorUserNameExist")
+		return
+	}
+
+	for i := 0; i < 10000; i++ {
+		acccode := "s" + utils.GetRandomString(4)
+		model1 := Base_Company{AccCode: acccode}
+		has1, _ := s.DBE.Get(&model1)
+		if has1 {
+			continue
+		} else {
+			model.AccCode = acccode
+			_, err = s.DBE.Insert(&model)
+			break
+		}
+	}
+
+	comacccode = model.AccCode
+	return
+}
+
+//根据Domain,ID查企业ID
+func (s *BaseCompanyService) GetCompanyid(where string) (ids []string) {
+	var idList []Id_Str
+	s.DBE.Sql(` select Id from Base_Company ` + where).Find(&idList)
+	ids = s.GetIdsFromId_StrList(idList)
+	if len(ids) == 0 {
+		ids = append(ids, "-1")
+	}
+	return
+}
+
+//判断是否存在短域名
+func (s *BaseCompanyService) IsexistComcode(code string) bool {
+	company := new(Base_Company)
+	has, _ := s.DBE.Where("ShortName=?", code).Get(company)
+	return has
+}
+
+//获取acccode
+func (s *BaseCompanyService) GetAcccodeByComcode(code string) int {
+	company := new(Base_Company)
+	s.DBE.Where("ShortName=?", code).Get(company)
+	return company.Id
+}
+func (s *BaseCompanyService) GetFullnameByAccode(Accode string) string {
+	var BaseCompany Base_Company
+	s.DBE.Where("Id=?", Accode).Get(&BaseCompany) //都得到的是整条语句
+	return BaseCompany.Fullname                   //取其中一个字段
+}
+
+//获取公司列表
+func (s *BaseCompanyService) GetCompanyTree(companytitle string) []Base_Companytree {
+	var tree []Base_Companytree
+	s.DBE.Sql(`select
+		0 Id,-1 ParentId,'` + companytitle + `' Fullname union all
+		select Id,0 ParentId,Fullname from Base_Company order by Id`).Find(&tree)
+	return tree
+}
+
+func (s *BaseCompanyService) GetPagingEntitiesWithOrderSearch(pageIndex, itemsPerPage int64, order string, where string) (int64, []UserCompany) {
+	var err error
+	var total int64
+	//获取总记录数
+	sqlCount := `select count(*)
+		from Base_User a left join
+		Base_Company b on a.AccCode=b.Id where` + where + ""
+	var sql string
+
+	sql = `select a.Realname Realname,a.UserName Username,b.Fullname Companyname,a.Mobile,a.Telephone,a.Email
+		from Base_User a left join
+		Base_Company b on a.AccCode=b.Id where ` + where + ` order by ` + order + ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
+
+	List := make([]UserCompany, 0)
+	utils.DBE.Sql(sql).Find(&List)
+	resultsSlice, err := s.DBE.Query(sqlCount)
+	LogError(err)
+
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			LogError(err)
+			break
+		}
+	}
+	return total, List
+}
+
+func (s *BaseCompanyService) GetBindingTree(whereorg, wherecompany string) (tree []Base_Companytree) {
+	s.DBE.Sql(`select concat('o',Id) Id,concat('o',ParentId) ParentId,Fullname, 'true' IsParent,'false' Nocheck from Base_Organize
+		where ` + whereorg + `
+		union all
+		select Id,concat('o',OrganizeId) ParentId,Fullname, 'false' IsParent ,'false' Nocheck
+		from Base_Company where
+		` + wherecompany).Find(&tree)
+	return
+
+}
+
+//撤销用户控制企业权限
+func (s *BaseCompanyService) GetEntityByUserid(userId string) (Base_Company, bool) {
+	var model Base_Company
+	sql := `select b.* from Base_User a
+		inner join Base_Company b on a.AccCode=b.Id
+		where a.Id=` + userId
+	has, _ := s.DBE.Sql(sql).Get(&model)
+	return model, has
+}
+
+func (s *BaseCompanyService) GetDevicesNumByOrg(whereorg, wherecompany string) int {
+	var num Id_Int
+	s.DBE.Sql(`select count(*) Id from Channels a
+		inner join Base_User b on a.CreateUserId=b.Id
+		inner join Base_Company c on b.AccCode=c.Id and ` + wherecompany + `
+		inner join Base_Organize d on c.OrganizeId=d.Id and
+		` + whereorg).Get(&num)
+	return num.Id
+
+}
+
+func (s *BaseCompanyService) GetDevicesNumByCompany(wherecompany string) int {
+	var num Id_Int
+	s.DBE.Sql(`select count(*) Id from Channels a
+		inner join Base_User b on a.CreateUserId=b.Id
+		inner join Base_Company c on b.AccCode=c.Id and ` + wherecompany).Get(&num)
+	return num.Id
+
+}
+
+func (s *BaseCompanyService) GetIndexTree(whereorg, wherecompany string) (tree []Base_Indextree) {
+	s.DBE.Sql(`select concat('o',Id) Id,concat('o',ParentId) ParentId,Fullname, 'true' IsParent,'true' Nocheck,0 Longitude,0 Latitude,0 DeviceState from Base_Organize
+		where ` + whereorg + `
+		union all
+		select Id,concat('o',OrganizeId) ParentId,Fullname, 'false' IsParent ,'false' Nocheck,Longitude,Latitude,DeviceState
+		from Base_Company where
+		` + wherecompany).Find(&tree)
+	return
+
+}
+
+func (s *BaseCompanyService) GetIndexTree1(whereorg, wherecompany string) (tree []Base_Indextree1) {
+	s.DBE.Sql(`select concat('o',Id) Id,concat('o',ParentId) ParentId,Fullname from Base_Organize
+		where ` + whereorg + `
+		union all
+		select Id,concat('o',OrganizeId) ParentId,Fullname
+		from Base_Company where
+		` + wherecompany).Find(&tree)
+	return
+
+}
+
+func (s *BaseCompanyService) GetUidByCompanyid(companyid string) int {
+	var uid Id_Int
+	s.DBE.Sql("select Id from Base_User where CreateUserId='0' and AccCode=" + companyid + " limit 1").Get(&uid)
+	return uid.Id
+
+}
+
+// 表
+var (
+	biobank = []string{"DonorsInfo", "DonorsLog", "SamplesMain", "SamplesDetail",
+		"SamplesBusiness", "SamplesFileDetail", "SamplesLog", "SamplesAttachment",
+		"SampleSearchTemplate", "MaterialInfo", "MaterialBatchKC",
+		"MaterialStoreHouse", "MaterialCKDetail", "MaterialCKHead", "MaterialPDDetail",
+		"MaterialPDHead", "MaterialRKDetail", "MaterialRKHead", "DonorsInfoAttachment",
+		"DocumentInfo", "DocumentHistory"}
+	cellbank = []string{"DonorsInfo", "DonorsLog", "SamplesMain", "SamplesDetail",
+		"SamplesBusiness", "SamplesFileDetail", "SamplesLog", "SamplesAttachment",
+		"SampleSearchTemplate", "MaterialInfo", "MaterialBatchKC",
+		"MaterialStoreHouse", "MaterialCKDetail", "MaterialCKHead", "MaterialPDDetail",
+		"MaterialPDHead", "MaterialRKDetail", "MaterialRKHead", "Instrument",
+		"InstrumenMaintainLog", "InstrumenRunRecord", "Customer", "CellsContract", "CellsContractDetail",
+		"CellsCollection", "CellsCollectionDetail", "CellsCollectionSensors", "CellsPrepareTemplate",
+		"CellsPrepareTemplateStep", "CellsPrepareTemplateStepDetail",
+		"CellsPreparation", "CellsPreparationInfo", "CellsPreparationInfoDetail",
+		"DonorsInfoAttachment", "InstrumenMaintainLogAttachment", "CellsContractAttachment", "TestTemplate",
+		"CellsProductDelivery", "CellsProductDeliveryAttachment", "CellsProductDeliverySample", "CellsPreparationInfoDetailAttachment",
+		"CellsPreparationTrace", "DocumentInfo", "DocumentHistory"}
+	lims = []string{"TestSample", "TestSampleDetail", "TestSampleInfo",
+		"TestSampleRelation", "TestTransferOrders", "TestInfo", "TestInfoDetail",
+		"TestItemsList", "TestList", "TestListDetail", "TestLaboratory",
+		"TestQualityControl", "TestControlParameters", "TestControlParametersDetail", "TestApplication",
+		"TestPackageCategory", "TestPrintTemplate", "TestPackage", "TestPackageItems",
+		"Instrument", "InstrumenMaintainLog", "Instrumenstate", "DocumentInfo", "DocumentHistory"}
+)
+
+func (s *BaseCompanyService) CreateSampleDonorTable(acccode, source string) error {
+	var err error
+	switch source {
+	case "biobank":
+		for _, v := range biobank {
+			if v != "" {
+				table := acccode + v
+				sql := fmt.Sprintf("CREATE TABLE %v LIKE AAtemplate%v", table, v)
+				_, err = s.DBE.Exec(sql)
+			}
+		}
+	case "cellbank":
+		for _, v := range cellbank {
+			if v != "" {
+				table := acccode + v
+				sql := fmt.Sprintf("CREATE TABLE %v LIKE AAtemplate%v", table, v)
+				_, err = s.DBE.Exec(sql)
+			}
+		}
+	case "lims":
+		for _, v := range lims {
+			if v != "" {
+				table := acccode + v
+				sql := fmt.Sprintf("CREATE TABLE %v LIKE AAtemplate%v", table, v)
+				_, err = s.DBE.Exec(sql)
+			}
+		}
+	}
+	return err
+}

+ 126 - 0
src/dashoo.cn/backend/api/controllers/casbin/user.go

@@ -1,7 +1,11 @@
 package casbin
 
 import (
+	"dashoo.cn/backend/api/business/accountinfo"
+	"dashoo.cn/backend/api/business/company"
+	"dashoo.cn/backend/api/business/printscheme"
 	"encoding/json"
+	"fmt"
 	"strings"
 
 	"dashoo.cn/backend/api/business/logsinfo"
@@ -42,6 +46,13 @@ type ChangePwdModel struct {
 	NwePwd string `json:"newpass"`
 }
 
+type RegisteModel struct {
+	Companyname string `json:"companyname"`
+	Username    string `json:"username"`
+	Password    string `json:"password"`
+	Source      string `json:"source"`
+}
+
 // @Title get
 // @Description get user by token
 // @Param	uid		path 	string	true		"The key for staticblock"
@@ -401,3 +412,118 @@ func (this *UserController) UserChangePWD() {
 	}
 
 }
+
+// @Title 注册管理账号
+// @Description 注册管理账号
+// @Param	body	body	business.device.DeviceChannels	"传感器信息"
+// @Success	200	{object} controllers.Request
+// @router /registemanage [put]
+func (this *UserController) Registerput() {
+
+	var model RegisteModel
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	var errinfo ErrorInfo
+
+	var user userRole.Base_User
+	user.Username = model.Username
+	user.Realname = model.Companyname
+	//	this.ParseForm(&user) //去页面数值
+	svc := company.GetCompanyService(utils.DBE)
+	err, comacccode := svc.AddCompany(user.Realname, user.Username) //这两个参数传到company库,返回id
+	if err == nil {
+		svcuser := userRole.GetUserService(utils.DBE)
+		user.AccCode = comacccode //id传到 user库的acccode
+		pass := model.Password    //取到前台密码
+		//更改密码算法2014-11-21
+		pwd, key, errrk := utils.TripleDesEncrypt(pass)
+		if errrk != nil {
+			errinfo.Message = "添加失败!" + utils.AlertProcess(errrk.Error())
+			errinfo.Code = -2
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+			return
+		}
+		user.Roleid = 10000120 //企业用户
+		user.Auditstatus = 1
+		user.Userpassword = pwd
+		user.Publickey = key
+		user.Email = user.Username
+		err = svcuser.AddUser(&user)
+
+		//svcSampleOrgan := sampleorgan.GetSampleOrganService(utils.DBE)
+		//var entityOrgan sampleorgan.SampleOrgan
+		//entityOrgan.AccCode = comacccode
+		//entityOrgan.TNode = "SystemInner"
+		//entityOrgan.TNodeParent = "0"
+		//entityOrgan.Item = 1
+		//entityOrgan.Code = "ALL"
+		//entityOrgan.Name = "全部"
+		//entityOrgan.CreateBy = user.Username
+		//entityOrgan.CreateUserId = user.Id
+		//_, err = svcSampleOrgan.InsertEntity(&entityOrgan)
+		svcPrintScheme := printscheme.GetPrintSchemeService(utils.DBE)
+		var listPrintScheme []printscheme.PrintScheme
+		var listPrintScheme_new []printscheme.PrintScheme
+		listPrintScheme = svcPrintScheme.GetPrintSchemeList("IsSystem=2")
+		for i := 0; i < len(listPrintScheme); i++ {
+			listPrintScheme[i].IsSystem = 1
+			listPrintScheme[i].CreateBy = user.Username
+			listPrintScheme[i].CreateUserId = user.Id
+			listPrintScheme[i].AccCode = user.AccCode
+			listPrintScheme_new = append(listPrintScheme_new, listPrintScheme[i])
+		}
+		svc.InsertEntity(&listPrintScheme_new)
+		if err == nil {
+			//创建表结构
+			err := svc.CreateSampleDonorTable(user.AccCode, model.Source)
+			if err != nil {
+				fmt.Println(err.Error())
+			}
+			//写入账户信息,赠送短信
+			var accountinfo accountinfo.AccountInfo
+			accountinfo.ProjectSourse = "biobank"
+			accountinfo.ProjectAccount = user.AccCode
+			accountinfo.ProjectAccountName = user.Realname
+			accountinfo.SurplusCount = 50
+			accountinfo.ActionType = "sms"
+			u, p := this.GetuAndp()
+			strUrl := utils.Cfg.MustValue("server", "apiurl") + "/accountinfos/?u=" + u + "&p=" + p
+			Apipost(strUrl, "POST", accountinfo)
+
+			//添加一条组织根节点
+			var entityorg organize.Base_Organize
+			// 编辑后添加一条数据
+			entityorg.Fullname = model.Companyname
+			entityorg.Parentid = 0
+			entityorg.Createuserid = user.Id
+			entityorg.Createby = user.Realname
+			entityorg.AccCode = user.AccCode
+			svcuser.InsertEntity(&entityorg)
+
+			//修改用户的组织id
+			user.Departmentid = utils.ToStr(entityorg.Id)
+			user.Departmentname = entityorg.Fullname
+			var usercols []string = []string{"Departmentid", "Departmentname"}
+			svcuser.UpdateEntityByIdCols(user.Id, &user, usercols)
+
+			errinfo.Message = "注册用户成功!"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			errinfo.Message = "注册失败!" + utils.AlertProcess(err.Error())
+			errinfo.Code = -2
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+			return
+		}
+	} else {
+		errinfo.Message = "注册失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -3
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+
+}