htgj.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_cygx/models"
  5. "hongze/hongze_cygx/utils"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. func CheckHtgj(companyCodeHt, companyNameHt, email, sign string) (errMsg string, errHt error, user *models.WxUser, companyName string) {
  11. errMsg = CheckSign(companyCodeHt+companyNameHt+email, sign)
  12. if errMsg != "" {
  13. errMsg = "签名方式错误!"
  14. return
  15. }
  16. var wxuUserName, tripartiteCompanyCode string
  17. var startDate, endDate string
  18. var companyId int64
  19. companyName = companyCodeHt[0:4] + "_" + companyNameHt
  20. tripartiteCompanyCode = companyCodeHt + "_" + companyNameHt
  21. wxUser := new(models.WxUser)
  22. productId := 2
  23. productName := "权益"
  24. itemCompany := new(models.Company)
  25. sellerInfo, err := models.GetSellerByName(utils.HtgjDefaultSaleName)
  26. if err != nil {
  27. errHt = err
  28. return
  29. }
  30. wxuUserName = email
  31. countCompay, err := models.GetCompanyCountByThirdName(tripartiteCompanyCode)
  32. if err != nil {
  33. errHt = err
  34. return
  35. }
  36. if countCompay == 0 {
  37. defaultPermissionIds, err := models.GetCompanyPermissionIdWithHtgj()
  38. if err != nil {
  39. errHt = err
  40. return
  41. }
  42. companySourceInfo, err := models.GetCompanySourceByName(utils.HtgjName)
  43. if err != nil {
  44. errHt = err
  45. return
  46. }
  47. companyCode, err := models.GetCompanyCode()
  48. if err != nil {
  49. errHt = err
  50. return
  51. }
  52. startDate = time.Now().Format(utils.FormatDate)
  53. endDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
  54. itemCompany.TripartiteCompanyCode = tripartiteCompanyCode
  55. itemCompany.CompanyName = companyName
  56. itemCompany.CreditCode = "HZ" + strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
  57. itemCompany.CompanyCode = companyCode
  58. itemCompany.StartDate = startDate
  59. itemCompany.EndDate = endDate
  60. itemCompany.CreatedTime = time.Now()
  61. itemCompany.LastUpdatedTime = time.Now()
  62. itemCompany.Enabled = 1
  63. itemCompany.CompanyType = 2
  64. itemCompany.RegionType = "海外"
  65. companyId, err = models.AddCompany(itemCompany)
  66. if err != nil {
  67. errHt = err
  68. return
  69. }
  70. //更新三方Code
  71. itemCompany.OpenCompanyCode = GenerateOpenCompanyCode(int(companyId))
  72. itemCompany.CompanyId = int(companyId)
  73. itemCompany.Update([]string{"OpenCompanyCode"})
  74. companyProduct := new(models.CompanyProduct)
  75. companyProduct.CompanyId = int(companyId)
  76. companyProduct.ProductId = productId
  77. companyProduct.ProductName = productName
  78. companyProduct.CompanyName = companyName
  79. companyProduct.Source = companySourceInfo.SourceName
  80. companyProduct.Reasons = ""
  81. companyProduct.Status = "试用"
  82. companyProduct.StartDate = startDate
  83. companyProduct.EndDate = endDate
  84. companyProduct.IndustryId = 11 //11是海通国际的ID
  85. companyProduct.IndustryName = "其他类型"
  86. companyProduct.SellerId = sellerInfo.AdminId
  87. companyProduct.SellerName = sellerInfo.RealName
  88. companyProduct.GroupId = sellerInfo.GroupId
  89. companyProduct.DepartmentId = sellerInfo.DepartmentId
  90. companyProduct.IsSuspend = 0
  91. companyProduct.CreateTime = time.Now()
  92. companyProduct.ModifyTime = time.Now()
  93. companyProduct.CompanyType = "权益"
  94. companyProduct.OpenCode = GenerateOpenCompanyProductCode(int(companyId), productId)
  95. companyProductId, err := models.AddCompanyProduct(companyProduct)
  96. if err != nil {
  97. errHt = err
  98. return
  99. }
  100. err = AddCompanyPermission(int(companyId), sellerInfo.AdminId, productId, productName, sellerInfo.RealName, defaultPermissionIds, startDate, endDate)
  101. if err != nil {
  102. errHt = err
  103. return
  104. }
  105. {
  106. record := new(models.CompanyOperationRecord)
  107. record.CompanyId = int(companyId)
  108. record.CompanyName = companyName
  109. record.SellerId = sellerInfo.AdminId
  110. record.SysUserId = sellerInfo.AdminId
  111. record.SysRealName = sellerInfo.RealName
  112. record.Remark = "新增客户"
  113. record.Operation = "add"
  114. record.CreateTime = time.Now()
  115. record.ProductId = productId
  116. record.ProductName = productName
  117. record.Status = "试用"
  118. _, err = models.AddCompanyOperationRecord(record)
  119. if err != nil {
  120. errHt = err
  121. go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "海通国际添加客户失败"+err.Error(), utils.EmailSendToUsers)
  122. }
  123. }
  124. //新增客户日志
  125. {
  126. companyLog := new(models.CompanyLog)
  127. companyLog.CompanyId = int(companyId)
  128. companyLog.CompanyName = companyName
  129. companyLog.CreditCode = ""
  130. companyLog.CompanyCode = companyCode
  131. companyLog.Sort = itemCompany.Sort
  132. companyLog.IsFeeCustomer = itemCompany.IsFeeCustomer
  133. companyLog.Country = itemCompany.Country
  134. companyLog.Address = itemCompany.Address
  135. companyLog.City = itemCompany.City
  136. companyLog.Province = itemCompany.Province
  137. companyLog.Enabled = itemCompany.Enabled
  138. companyLog.CreatedTime = itemCompany.CreatedTime
  139. companyLog.LastUpdatedTime = itemCompany.LastUpdatedTime
  140. companyLog.Seller = itemCompany.Seller
  141. companyLog.SellsId = itemCompany.SellsId
  142. companyLog.CompanyBelong = itemCompany.CompanyBelong
  143. companyLog.StartDate = itemCompany.StartDate
  144. companyLog.EndDate = itemCompany.EndDate
  145. companyLog.FirstStartDate = itemCompany.FirstStartDate
  146. companyLog.FirstEndDate = itemCompany.FirstEndDate
  147. companyLog.DateType = itemCompany.DateType
  148. companyLog.AdminId = sellerInfo.AdminId
  149. companyLog.LogType = "add"
  150. companyLog.LogCreateTime = time.Now()
  151. go models.AddCompanyLog(companyLog)
  152. }
  153. //新增客户产品日志
  154. {
  155. productLog := new(models.CompanyProductLog)
  156. productLog.CompanyProductId = int(companyProductId)
  157. productLog.CompanyId = companyProduct.CompanyId
  158. productLog.ProductId = companyProduct.ProductId
  159. productLog.ProductName = companyProduct.ProductName
  160. productLog.CompanyName = companyProduct.CompanyName
  161. productLog.CompanyName = companyProduct.CompanyName
  162. productLog.Source = companyProduct.Source
  163. productLog.Reasons = companyProduct.Reasons
  164. productLog.Status = companyProduct.Status
  165. productLog.IndustryId = companyProduct.IndustryId
  166. productLog.IndustryName = companyProduct.IndustryName
  167. productLog.SellerId = companyProduct.SellerId
  168. productLog.SellerName = companyProduct.SellerName
  169. productLog.GroupId = companyProduct.GroupId
  170. productLog.DepartmentId = companyProduct.DepartmentId
  171. productLog.IsSuspend = companyProduct.IsSuspend
  172. productLog.SuspendTime = companyProduct.SuspendTime
  173. productLog.ApproveStatus = companyProduct.ApproveStatus
  174. productLog.FreezeTime = companyProduct.FreezeTime
  175. productLog.Remark = companyProduct.Remark
  176. productLog.StartDate = companyProduct.StartDate
  177. productLog.EndDate = companyProduct.EndDate
  178. productLog.CreateTime = companyProduct.CreateTime
  179. productLog.ModifyTime = companyProduct.ModifyTime
  180. productLog.LoseReason = companyProduct.LoseReason
  181. productLog.LossTime = companyProduct.LossTime
  182. productLog.LogType = "add"
  183. productLog.LogCreateTime = time.Now()
  184. productLog.AdminId = sellerInfo.AdminId
  185. go models.AddCompanyProductLog(productLog)
  186. }
  187. } else {
  188. companyInfo, err := models.GetCompanyByThirdName(tripartiteCompanyCode)
  189. if err != nil {
  190. errHt = err
  191. return
  192. }
  193. companyId = int64(companyInfo.CompanyId)
  194. }
  195. countUser, err := models.GetUserCountByThirdName(int(companyId), wxuUserName)
  196. if countUser == 0 {
  197. wxUser.CompanyId = int(companyId)
  198. wxUser.RealName = wxuUserName
  199. wxUser.Email = wxuUserName
  200. wxUser.TripartiteCode = wxuUserName
  201. wxUser.Source = 7
  202. wxUser.CreatedTime = time.Now()
  203. newUserId, err := models.AddWxUser(wxUser)
  204. if err != nil {
  205. errHt = err
  206. return
  207. }
  208. md5Mobile := utils.Get16MD5Encode(strconv.Itoa(int(newUserId)))
  209. wxUser.Mobile = md5Mobile
  210. wxUser.UserId = int(newUserId)
  211. err = models.UpdateUserMobile(int(newUserId), md5Mobile)
  212. if err != nil {
  213. errHt = err
  214. return
  215. }
  216. models.AddUserSellerRelation(newUserId, int(companyId), sellerInfo.AdminId, productId, sellerInfo.RealName, wxUser.Mobile, wxuUserName)
  217. } else {
  218. wxUser, err = models.GetUserByThirdName(int(companyId), wxuUserName)
  219. if err != nil {
  220. errHt = err
  221. return
  222. }
  223. }
  224. user = wxUser
  225. return
  226. }
  227. // GenerateOpenCompanyCode 生成第三方code编号
  228. func GenerateOpenCompanyCode(companyId int) (openCode string) {
  229. openCode = utils.MD5(fmt.Sprint(companyId, "hzyj20210902"))
  230. return
  231. }
  232. // GenerateOpenCompanyProductCode 生成客户产品第三方code编号
  233. func GenerateOpenCompanyProductCode(companyId, productId int) (openCode string) {
  234. openCode = utils.MD5(fmt.Sprint(companyId, "_", productId, "hzyj20210902"))
  235. return
  236. }
  237. //新增客户权限
  238. func AddCompanyPermission(companyId, sysUserId, productId int, productName, sysUserName, permissionStr, startDate, endDate string) (err error) {
  239. if permissionStr == "" {
  240. return
  241. }
  242. permissionArr := strings.Split(permissionStr, ",")
  243. count, _ := models.GetCompanyReportPermissionCount(companyId, productId)
  244. //删除权限
  245. if count > 0 {
  246. err = models.DeleteCompanyReportPermission(companyId, productId)
  247. if err != nil {
  248. return
  249. }
  250. }
  251. for _, pv := range permissionArr {
  252. permissionId, err := strconv.Atoi(pv)
  253. if err != nil {
  254. return err
  255. }
  256. permission := new(models.CompanyReportPermission)
  257. permission.CompanyId = companyId
  258. permission.ReportPermissionId = permissionId
  259. permission.CreatedTime = time.Now()
  260. permission.LastUpdatedTime = time.Now()
  261. permission.ChartPermissionId = permissionId
  262. permission.StartDate = startDate
  263. permission.EndDate = endDate
  264. permission.ProductId = productId
  265. permission.ProductName = productName
  266. permission.ModifyTime = time.Now().Format(utils.FormatDateTime)
  267. permission.Status = "试用"
  268. err = models.AddCompanyReportPermission(permission)
  269. if err != nil {
  270. return err
  271. }
  272. cpLog := new(models.CompanyPermissionLog)
  273. cpLog.CompanyId = companyId
  274. cpLog.ChartPermissionId = permissionId
  275. cpLog.CreateTime = time.Now()
  276. cpLog.SysUserId = sysUserId
  277. cpLog.SysUserName = sysUserName
  278. cpLog.StartDate = startDate
  279. cpLog.EndDate = endDate
  280. cpLog.ProductId = productId
  281. cpLog.ProductName = productName
  282. go models.AddCompanyPermissionLog(cpLog)
  283. }
  284. return
  285. }
  286. func CheckSign(userName, sign string) (errMsg string) {
  287. var pwdSign string
  288. pwdSign = userName + utils.HtgjSalt
  289. fmt.Println("pwdSign", pwdSign)
  290. pwdSign = strings.ToUpper(utils.MD5(pwdSign))
  291. fmt.Println(pwdSign)
  292. if sign != pwdSign {
  293. errMsg = "签名错误"
  294. }
  295. return
  296. }