customer.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. package handlers
  2. import (
  3. "net/http"
  4. "easydo-echo_win7/middleware"
  5. "easydo-echo_win7/models"
  6. "easydo-echo_win7/services"
  7. "easydo-echo_win7/utils"
  8. "github.com/jmoiron/sqlx"
  9. "github.com/labstack/echo-contrib/session"
  10. "github.com/labstack/echo/v4"
  11. )
  12. func Add_customer_to_routes(e *echo.Echo) {
  13. group := e.Group("/customer")
  14. group.Use(middleware.AuthMiddleware)
  15. group.POST("/getPage", customerGetPage)
  16. group.POST("/getList", customerGetList)
  17. group.POST("/save", customerSave)
  18. group.POST("/update", customerUpdate)
  19. group.POST("/remove", customerRemove)
  20. }
  21. func customerGetPage(c echo.Context) error {
  22. var paramMap map[string]interface{}
  23. if err := c.Bind(&paramMap); err != nil {
  24. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  25. }
  26. result, err := services.JdbcClient.GetJdbcPage(paramMap, models.Customer{})
  27. if err != nil {
  28. utils.PrintSqlErr(err)
  29. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  30. }
  31. list := utils.ConvertInterface[[]models.Customer](result.Records)
  32. if len(list) == 0 {
  33. list = []models.Customer{}
  34. }
  35. for i := range list {
  36. model := list[i]
  37. minioList, err := services.JdbcClient.GetMinioFile(model)
  38. if err != nil {
  39. utils.PrintSearchFileErr(err)
  40. }
  41. model.FileList = &minioList
  42. list[i] = model
  43. }
  44. result.Records = list
  45. return c.JSON(http.StatusOK, result)
  46. }
  47. func customerGetList(c echo.Context) error {
  48. var paramMap map[string]interface{}
  49. if err := c.Bind(&paramMap); err != nil {
  50. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  51. }
  52. result, err := services.JdbcClient.GetJdbcList(paramMap, models.Customer{})
  53. if err != nil {
  54. utils.PrintSqlErr(err)
  55. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  56. }
  57. list := utils.ConvertInterface[[]models.Customer](result)
  58. if len(list) == 0 {
  59. return c.JSON(http.StatusOK, []models.Customer{})
  60. }
  61. return c.JSON(http.StatusOK, list)
  62. }
  63. func customerSave(c echo.Context) error {
  64. tx, _ := services.MYSQL_DB.Beginx()
  65. customer := new(models.Customer)
  66. if err := c.Bind(customer); err != nil {
  67. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  68. }
  69. status_enable := models.Status_Enable
  70. customer.Status = &status_enable
  71. sess, _ := session.Get("auth_session", c)
  72. err_msg := customer_generateCode(customer, tx)
  73. if err_msg != "" {
  74. tx.Rollback()
  75. return c.JSON(http.StatusBadRequest, utils.ErrorResponse(err_msg, ""))
  76. }
  77. user_id, ok := sess.Values["user_id"].(int64)
  78. if !ok {
  79. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
  80. }
  81. customer.CreateId = &user_id
  82. err := services.JdbcClient.JdbcInsert(customer, tx)
  83. if err != nil {
  84. utils.PrintSqlErr(err)
  85. tx.Rollback()
  86. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  87. }
  88. if customer.FileList == nil {
  89. tx.Commit()
  90. return c.JSON(http.StatusOK, customer)
  91. }
  92. fileList := *customer.FileList
  93. for _, file := range fileList {
  94. file.RefId = customer.ID
  95. refType := models.File_Ref_Type_Customer
  96. file.RefType = &refType
  97. err := services.JdbcClient.JdbcInsert(&file, tx)
  98. if err != nil {
  99. utils.PrintSqlErr(err)
  100. tx.Rollback()
  101. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  102. }
  103. }
  104. tx.Commit()
  105. return c.JSON(http.StatusOK, customer)
  106. }
  107. func customerUpdate(c echo.Context) error {
  108. tx, _ := services.MYSQL_DB.Beginx()
  109. customer := new(models.Customer)
  110. if err := c.Bind(customer); err != nil {
  111. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  112. }
  113. sess, _ := session.Get("auth_session", c)
  114. user_id, ok := sess.Values["user_id"].(int64)
  115. if !ok {
  116. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
  117. }
  118. customer.UpdateId = &user_id
  119. err := services.JdbcClient.JdbcUpdateById(customer, tx)
  120. if err != nil {
  121. utils.PrintSqlErr(err)
  122. tx.Rollback()
  123. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  124. }
  125. if customer.FileList == nil {
  126. tx.Commit()
  127. return c.JSON(http.StatusOK, customer)
  128. }
  129. fileList := *customer.FileList
  130. for _, file := range fileList {
  131. file.RefId = customer.ID
  132. refType := models.File_Ref_Type_Customer
  133. file.RefType = &refType
  134. err := services.JdbcClient.JdbcInsert(&file, tx)
  135. if err != nil {
  136. utils.PrintSqlErr(err)
  137. tx.Rollback()
  138. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  139. }
  140. }
  141. tx.Commit()
  142. return c.JSON(http.StatusOK, customer)
  143. }
  144. func customerRemove(c echo.Context) error {
  145. tx, _ := services.MYSQL_DB.Beginx()
  146. customer := new(models.Customer)
  147. if err := c.Bind(customer); err != nil {
  148. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  149. }
  150. err := services.JdbcClient.JdbcRemoveById(customer, tx)
  151. if err != nil {
  152. utils.PrintSqlErr(err)
  153. tx.Rollback()
  154. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  155. }
  156. minio_file := new(models.MinioFile)
  157. minio_file.RefId = customer.ID
  158. refType := models.File_Ref_Type_Customer
  159. minio_file.RefType = &refType
  160. err = services.JdbcClient.JdbcRemove(minio_file, tx)
  161. if err != nil {
  162. utils.PrintSqlErr(err)
  163. tx.Rollback()
  164. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  165. }
  166. tx.Commit()
  167. return c.JSON(http.StatusOK, customer)
  168. }
  169. func customer_generateCode(model *models.Customer, tx *sqlx.Tx) string {
  170. sync := new(models.Synchronized)
  171. sync.Sync.Lock()
  172. defer sync.Sync.Unlock()
  173. if model.Code != nil && len(*model.Code) > 0 {
  174. modelParam := new(models.Customer)
  175. modelParam.Code = model.Code
  176. modelParam.TenantId = model.TenantId
  177. count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
  178. if err != nil {
  179. utils.PrintSqlErr(err)
  180. return "SQL执行失败"
  181. }
  182. if count > 0 {
  183. return "编号已存在,请重新填写"
  184. }
  185. } else {
  186. for {
  187. code, err := services.GetFlowNo(models.Flow_No_Type_Customer, *model.TenantId, tx)
  188. if err != nil {
  189. return "自动生成编码失败"
  190. }
  191. modelParam := new(models.Customer)
  192. modelParam.Code = &code
  193. modelParam.TenantId = model.TenantId
  194. count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
  195. if err != nil {
  196. utils.PrintSqlErr(err)
  197. return "SQL执行失败"
  198. }
  199. if count == 0 {
  200. model.Code = &code
  201. break
  202. }
  203. }
  204. }
  205. return ""
  206. }