|
@@ -7,18 +7,31 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
+ "errors"
|
|
|
+ "fmt"
|
|
|
+ "net/http"
|
|
|
+ "net/url"
|
|
|
+ "strconv"
|
|
|
+
|
|
|
+ "go.mod/comm"
|
|
|
+ "go.mod/conf"
|
|
|
"go.mod/dao"
|
|
|
"go.mod/datasource"
|
|
|
+ "go.mod/lib"
|
|
|
+ "go.mod/models"
|
|
|
+ "go.mod/web/viewmodels"
|
|
|
)
|
|
|
|
|
|
type JlService struct {
|
|
|
- dao *dao.ProjectDao
|
|
|
+ dao *dao.ProjectDao
|
|
|
+ accountDao *dao.ProjectAccountDao
|
|
|
}
|
|
|
|
|
|
// 创建项目用户service
|
|
|
func NewJlService() *JlService {
|
|
|
return &JlService{
|
|
|
- dao: dao.NewProjectDao(datasource.InstanceDbMaster()),
|
|
|
+ dao: dao.NewProjectDao(datasource.InstanceDbMaster()),
|
|
|
+ accountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -26,8 +39,8 @@ func NewJlService() *JlService {
|
|
|
func (s *JlService) IsCode(code string) map[string]interface{} {
|
|
|
exist := 0
|
|
|
if code != "" {
|
|
|
- projectData := s.dao.GetListByCode(code)
|
|
|
- if len(projectData) != 0 {
|
|
|
+ projectData := s.dao.GetCode(code)
|
|
|
+ if projectData.Id != 0 {
|
|
|
exist = 1
|
|
|
}
|
|
|
}
|
|
@@ -38,3 +51,129 @@ func (s *JlService) IsCode(code string) map[string]interface{} {
|
|
|
|
|
|
return data
|
|
|
}
|
|
|
+
|
|
|
+// 从计量来的项目和管理员账号,添加入项目管理
|
|
|
+func (s *JlService) ProjectAdd(claimsData *viewmodels.Jl) (map[string]interface{}, error) {
|
|
|
+
|
|
|
+ var (
|
|
|
+ err error
|
|
|
+ JlResultData map[string]interface{}
|
|
|
+ accountData *models.CmProjectAccount
|
|
|
+ )
|
|
|
+
|
|
|
+ Jlzf := lib.NewJlzf()
|
|
|
+ // 1.获得计量 账号和项目 信息
|
|
|
+ if JlResultData, err = Jlzf.GetProjectAndAccount(claimsData.Code, claimsData.Account); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ fmt.Println(JlResultData)
|
|
|
+
|
|
|
+ // 2.获得本地项目
|
|
|
+ projectData := s.dao.GetCode(claimsData.Code)
|
|
|
+ // 项目不存在
|
|
|
+ if projectData.Id == 0 {
|
|
|
+ // 2-1. 创建项目和账号 TODO
|
|
|
+ project := &models.CmProject{}
|
|
|
+
|
|
|
+ account := &models.CmProjectAccount{}
|
|
|
+ if err = s.dao.AddProjectAndAccount(project, account); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ // project := &models.CmProject{}
|
|
|
+ // project.Name = projectVM.Name
|
|
|
+ // project.Code = projectVM.Code
|
|
|
+ // project.CategoryId = projectVM.CategoryId
|
|
|
+ // project.Category = projectVM.Category
|
|
|
+ // project.InsideCategoryid = projectVM.InsideCategoryid
|
|
|
+ // project.InsideCategory = projectVM.InsideCategory
|
|
|
+ // project.StaffId = projectVM.StaffId
|
|
|
+ // project.StaffName = projectVM.StaffName
|
|
|
+ // project.CreateTime = time.Now()
|
|
|
+ // project.CreateName = projectVM.CreateName
|
|
|
+ // project.CreateCategory = projectVM.CreateCategory
|
|
|
+ // project.Remark = projectVM.Remark
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // 2-2. 是否有该账号
|
|
|
+ accountData = s.accountDao.GetAccountProjectId(claimsData.Account, projectData.Id)
|
|
|
+ // 2-2-1 账号不存在
|
|
|
+ if accountData.Id == 0 {
|
|
|
+ // 2-2-2. 创建 账号 TODO
|
|
|
+ account := &models.CmProjectAccount{}
|
|
|
+ if err = s.accountDao.Add(account); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ data := map[string]interface{}{
|
|
|
+ "sync": 1,
|
|
|
+ }
|
|
|
+ return data, nil
|
|
|
+}
|
|
|
+
|
|
|
+func (s *JlService) AuthLogin(claimsData *viewmodels.Jl, writer http.ResponseWriter) (*viewmodels.ProjectAccount, error) {
|
|
|
+ // 1-1.工程项目是否存在
|
|
|
+ projectInfo := s.dao.GetCode(claimsData.Code)
|
|
|
+
|
|
|
+ if projectInfo.Id == 0 {
|
|
|
+ return nil, errors.New("工程建设管理员还未创建项目,禁止登录")
|
|
|
+ }
|
|
|
+ // 1-2.获得项目管理员
|
|
|
+ projectAdminInfo := s.accountDao.Get(projectInfo.UserId, projectInfo.Id)
|
|
|
+ if projectAdminInfo.Id == 0 {
|
|
|
+ return nil, errors.New("工程建设管理员不存在,禁止登录")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2.验证登陆-临时
|
|
|
+ projectAccountInfo := s.accountDao.GetAccountProjectId(claimsData.Account, projectInfo.Id)
|
|
|
+ // 未账号改账号
|
|
|
+ if projectAccountInfo.Id == 0 {
|
|
|
+ // 到计量拉取普通账号 - TODO
|
|
|
+ // Jlzf := lib.NewJlzf()
|
|
|
+ // // 1.获得计量 账号和项目 信息
|
|
|
+ // if JlResultData, err := Jlzf.GetProjectAndAccount(claimsData.Code, claimsData.Account); err != nil {
|
|
|
+ // return nil, err
|
|
|
+ // }
|
|
|
+ // // 2-. 创建 账号 TODO
|
|
|
+ // account := &models.CmProjectAccount{}
|
|
|
+ // if err := s.accountDao.Add(account); err != nil {
|
|
|
+ // return nil, err
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ // 2-1.账号停用
|
|
|
+ if projectAccountInfo.Enable == 0 {
|
|
|
+ return nil, errors.New("该账号已被停用")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 加密用户标识
|
|
|
+ identity, err := comm.AesEncrypt(strconv.Itoa(projectAccountInfo.Id), conf.CookieSecret)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ // 加密项目标识
|
|
|
+ projectId, err := comm.AesEncrypt(strconv.Itoa(projectAccountInfo.ProjectId), conf.CookieSecret)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ digitalToken := comm.CreateSign(conf.CookieSecret + strconv.Itoa(projectAccountInfo.Id))
|
|
|
+
|
|
|
+ // 设置cookie
|
|
|
+ maxAge := 60 * 60 * 24 * 7
|
|
|
+ params := url.Values{}
|
|
|
+ params.Add("identity", identity)
|
|
|
+ params.Add("attachedIdentity", projectId)
|
|
|
+ params.Add("digitalToken", digitalToken)
|
|
|
+ c := &http.Cookie{
|
|
|
+ Name: "cm",
|
|
|
+ Value: params.Encode(),
|
|
|
+ Path: "/",
|
|
|
+ MaxAge: maxAge,
|
|
|
+ HttpOnly: true,
|
|
|
+ }
|
|
|
+ http.SetCookie(writer, c)
|
|
|
+
|
|
|
+ viewAccountData := comm.MakeProjectAccountVM(projectAccountInfo)
|
|
|
+ return &viewAccountData, nil
|
|
|
+}
|