123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- package services
- import (
- "fmt"
- "hongze/hongze_cygx/models"
- "hongze/hongze_cygx/utils"
- "strconv"
- "strings"
- "time"
- )
- func CheckHtgj(companyCodeHt, companyNameHt, email, sign string) (errMsg string, errHt error, user *models.WxUser, companyName string) {
- errMsg = CheckSign(companyCodeHt+companyNameHt+email, sign)
- if errMsg != "" {
- if errMsg == "机构下账号个数已达上限" {
- return
- }
- errMsg = "签名方式错误!"
- return
- }
- var wxuUserName, tripartiteCompanyCode string
- var startDate, endDate string
- var companyId int64
- companyName = companyCodeHt[0:4] + "_" + companyNameHt
- tripartiteCompanyCode = companyCodeHt + "_" + companyNameHt
- wxUser := new(models.WxUser)
- productId := 2
- productName := "权益"
- itemCompany := new(models.Company)
- sellerInfo, err := models.GetSellerByName(utils.HtgjDefaultSaleName)
- if err != nil {
- errHt = err
- return
- }
- wxuUserName = email
- countCompay, err := models.GetCompanyCountByThirdName(tripartiteCompanyCode)
- if err != nil {
- errHt = err
- return
- }
- if countCompay == 0 {
- defaultPermissionIds, err := models.GetCompanyPermissionIdWithHtgj()
- if err != nil {
- errHt = err
- return
- }
- companySourceInfo, err := models.GetCompanySourceByName(utils.HtgjName)
- if err != nil {
- errHt = err
- return
- }
- companyCode, err := models.GetCompanyCode()
- if err != nil {
- errHt = err
- return
- }
- startDate = time.Now().Format(utils.FormatDate)
- endDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
- itemCompany.TripartiteCompanyCode = tripartiteCompanyCode
- itemCompany.CompanyName = companyName
- itemCompany.CreditCode = "HZ" + strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
- itemCompany.CompanyCode = companyCode
- itemCompany.StartDate = startDate
- itemCompany.EndDate = endDate
- itemCompany.CreatedTime = time.Now()
- itemCompany.LastUpdatedTime = time.Now()
- itemCompany.Enabled = 1
- itemCompany.CompanyType = 2
- itemCompany.RegionType = "海外"
- companyId, err = models.AddCompany(itemCompany)
- if err != nil {
- errHt = err
- return
- }
- //更新三方Code
- itemCompany.OpenCompanyCode = GenerateOpenCompanyCode(int(companyId))
- itemCompany.CompanyId = int(companyId)
- itemCompany.Update([]string{"OpenCompanyCode"})
- companyProduct := new(models.CompanyProduct)
- companyProduct.CompanyId = int(companyId)
- companyProduct.ProductId = productId
- companyProduct.ProductName = productName
- companyProduct.CompanyName = companyName
- companyProduct.Source = companySourceInfo.SourceName
- companyProduct.Reasons = ""
- companyProduct.Status = "试用"
- companyProduct.StartDate = startDate
- companyProduct.EndDate = endDate
- companyProduct.IndustryId = 11 //11是海通国际的ID
- companyProduct.IndustryName = "其他类型"
- companyProduct.SellerId = sellerInfo.AdminId
- companyProduct.SellerName = sellerInfo.RealName
- companyProduct.GroupId = sellerInfo.GroupId
- companyProduct.DepartmentId = sellerInfo.DepartmentId
- companyProduct.IsSuspend = 0
- companyProduct.CreateTime = time.Now()
- companyProduct.ModifyTime = time.Now()
- companyProduct.CompanyType = "权益"
- companyProduct.OpenCode = GenerateOpenCompanyProductCode(int(companyId), productId)
- companyProductId, err := models.AddCompanyProduct(companyProduct)
- if err != nil {
- errHt = err
- return
- }
- err = AddCompanyPermission(int(companyId), sellerInfo.AdminId, productId, productName, sellerInfo.RealName, defaultPermissionIds, startDate, endDate)
- if err != nil {
- errHt = err
- return
- }
- {
- record := new(models.CompanyOperationRecord)
- record.CompanyId = int(companyId)
- record.CompanyName = companyName
- record.SellerId = sellerInfo.AdminId
- record.SysUserId = sellerInfo.AdminId
- record.SysRealName = sellerInfo.RealName
- record.Remark = "新增客户"
- record.Operation = "add"
- record.CreateTime = time.Now()
- record.ProductId = productId
- record.ProductName = productName
- record.Status = "试用"
- _, err = models.AddCompanyOperationRecord(record)
- if err != nil {
- errHt = err
- go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "海通国际添加客户失败"+err.Error(), utils.EmailSendToUsers)
- }
- }
- //新增客户日志
- {
- companyLog := new(models.CompanyLog)
- companyLog.CompanyId = int(companyId)
- companyLog.CompanyName = companyName
- companyLog.CreditCode = ""
- companyLog.CompanyCode = companyCode
- companyLog.Sort = itemCompany.Sort
- companyLog.IsFeeCustomer = itemCompany.IsFeeCustomer
- companyLog.Country = itemCompany.Country
- companyLog.Address = itemCompany.Address
- companyLog.City = itemCompany.City
- companyLog.Province = itemCompany.Province
- companyLog.Enabled = itemCompany.Enabled
- companyLog.CreatedTime = itemCompany.CreatedTime
- companyLog.LastUpdatedTime = itemCompany.LastUpdatedTime
- companyLog.Seller = itemCompany.Seller
- companyLog.SellsId = itemCompany.SellsId
- companyLog.CompanyBelong = itemCompany.CompanyBelong
- companyLog.StartDate = itemCompany.StartDate
- companyLog.EndDate = itemCompany.EndDate
- companyLog.FirstStartDate = itemCompany.FirstStartDate
- companyLog.FirstEndDate = itemCompany.FirstEndDate
- companyLog.DateType = itemCompany.DateType
- companyLog.AdminId = sellerInfo.AdminId
- companyLog.LogType = "add"
- companyLog.LogCreateTime = time.Now()
- go models.AddCompanyLog(companyLog)
- }
- //新增客户产品日志
- {
- productLog := new(models.CompanyProductLog)
- productLog.CompanyProductId = int(companyProductId)
- productLog.CompanyId = companyProduct.CompanyId
- productLog.ProductId = companyProduct.ProductId
- productLog.ProductName = companyProduct.ProductName
- productLog.CompanyName = companyProduct.CompanyName
- productLog.CompanyName = companyProduct.CompanyName
- productLog.Source = companyProduct.Source
- productLog.Reasons = companyProduct.Reasons
- productLog.Status = companyProduct.Status
- productLog.IndustryId = companyProduct.IndustryId
- productLog.IndustryName = companyProduct.IndustryName
- productLog.SellerId = companyProduct.SellerId
- productLog.SellerName = companyProduct.SellerName
- productLog.GroupId = companyProduct.GroupId
- productLog.DepartmentId = companyProduct.DepartmentId
- productLog.IsSuspend = companyProduct.IsSuspend
- productLog.SuspendTime = companyProduct.SuspendTime
- productLog.ApproveStatus = companyProduct.ApproveStatus
- productLog.FreezeTime = companyProduct.FreezeTime
- productLog.Remark = companyProduct.Remark
- productLog.StartDate = companyProduct.StartDate
- productLog.EndDate = companyProduct.EndDate
- productLog.CreateTime = companyProduct.CreateTime
- productLog.ModifyTime = companyProduct.ModifyTime
- productLog.LoseReason = companyProduct.LoseReason
- productLog.LossTime = companyProduct.LossTime
- productLog.LogType = "add"
- productLog.LogCreateTime = time.Now()
- productLog.AdminId = sellerInfo.AdminId
- go models.AddCompanyProductLog(productLog)
- }
- } else {
- companyInfo, err := models.GetCompanyByThirdName(tripartiteCompanyCode)
- if err != nil {
- errHt = err
- return
- }
- companyId = int64(companyInfo.CompanyId)
- }
- countUser, err := models.GetUserCountByThirdName(int(companyId), wxuUserName)
- if countUser == 0 {
- countCompanyUser, err := models.GetUserCountByCompanyId(int(companyId))
- if err != nil {
- errHt = err
- return
- }
- if countCompanyUser >= 15 {
- errMsg = "机构下账号个数已达上限"
- return
- }
- wxUser.CompanyId = int(companyId)
- wxUser.RealName = wxuUserName
- wxUser.Email = wxuUserName
- wxUser.TripartiteCode = wxuUserName
- wxUser.Source = 7
- wxUser.CreatedTime = time.Now()
- newUserId, err := models.AddWxUser(wxUser)
- if err != nil {
- errHt = err
- return
- }
- md5Mobile := utils.Get16MD5Encode(strconv.Itoa(int(newUserId)))
- wxUser.Mobile = md5Mobile
- wxUser.UserId = int(newUserId)
- err = models.UpdateUserMobile(int(newUserId), md5Mobile)
- if err != nil {
- errHt = err
- return
- }
- models.AddUserSellerRelation(newUserId, int(companyId), sellerInfo.AdminId, productId, sellerInfo.RealName, wxUser.Mobile, wxuUserName)
- } else {
- wxUser, err = models.GetUserByThirdName(int(companyId), wxuUserName)
- if err != nil {
- errHt = err
- return
- }
- }
- user = wxUser
- return
- }
- // GenerateOpenCompanyCode 生成第三方code编号
- func GenerateOpenCompanyCode(companyId int) (openCode string) {
- openCode = utils.MD5(fmt.Sprint(companyId, "hzyj20210902"))
- return
- }
- // GenerateOpenCompanyProductCode 生成客户产品第三方code编号
- func GenerateOpenCompanyProductCode(companyId, productId int) (openCode string) {
- openCode = utils.MD5(fmt.Sprint(companyId, "_", productId, "hzyj20210902"))
- return
- }
- //新增客户权限
- func AddCompanyPermission(companyId, sysUserId, productId int, productName, sysUserName, permissionStr, startDate, endDate string) (err error) {
- if permissionStr == "" {
- return
- }
- permissionArr := strings.Split(permissionStr, ",")
- count, _ := models.GetCompanyReportPermissionCount(companyId, productId)
- //删除权限
- if count > 0 {
- err = models.DeleteCompanyReportPermission(companyId, productId)
- if err != nil {
- return
- }
- }
- for _, pv := range permissionArr {
- permissionId, err := strconv.Atoi(pv)
- if err != nil {
- return err
- }
- permission := new(models.CompanyReportPermission)
- permission.CompanyId = companyId
- permission.ReportPermissionId = permissionId
- permission.CreatedTime = time.Now()
- permission.LastUpdatedTime = time.Now()
- permission.ChartPermissionId = permissionId
- permission.StartDate = startDate
- permission.EndDate = endDate
- permission.ProductId = productId
- permission.ProductName = productName
- permission.ModifyTime = time.Now().Format(utils.FormatDateTime)
- permission.Status = "试用"
- err = models.AddCompanyReportPermission(permission)
- if err != nil {
- return err
- }
- cpLog := new(models.CompanyPermissionLog)
- cpLog.CompanyId = companyId
- cpLog.ChartPermissionId = permissionId
- cpLog.CreateTime = time.Now()
- cpLog.SysUserId = sysUserId
- cpLog.SysUserName = sysUserName
- cpLog.StartDate = startDate
- cpLog.EndDate = endDate
- cpLog.ProductId = productId
- cpLog.ProductName = productName
- go models.AddCompanyPermissionLog(cpLog)
- }
- return
- }
- func CheckSign(userName, sign string) (errMsg string) {
- var pwdSign string
- pwdSign = userName + utils.HtgjSalt
- fmt.Println("pwdSign", pwdSign)
- pwdSign = strings.ToUpper(utils.MD5(pwdSign))
- fmt.Println(pwdSign)
- if sign != pwdSign {
- errMsg = "签名错误"
- }
- return
- }
|