business_conf.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "hongze/hz_eta_api/models"
  5. "html"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. // BusinessConfController 商家配置
  11. type BusinessConfController struct {
  12. BaseAuthController
  13. }
  14. // Save
  15. // @Title 保存配置
  16. // @Description 保存配置
  17. // @Param request body map[string]interface{} true "type json string"
  18. // @Success 200 Ret=200 操作成功
  19. // @router /save [post]
  20. func (this *BusinessConfController) Save() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. if br.ErrMsg == "" {
  24. br.IsSendEmail = false
  25. }
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. sysUser := this.SysUser
  30. if sysUser == nil {
  31. br.Msg = "请登录"
  32. br.ErrMsg = "请登录,SysUser Is Empty"
  33. br.Ret = 408
  34. return
  35. }
  36. var req map[string]interface{}
  37. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  38. br.Msg = "参数解析异常!"
  39. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  40. return
  41. }
  42. // 获取配置信息
  43. confOb := new(models.BusinessConf)
  44. list, e := confOb.GetItemsByCondition("", make([]interface{}, 0), []string{}, "")
  45. if e != nil {
  46. br.Msg = "保存失败"
  47. br.ErrMsg = "获取配置列表失败, Err: " + e.Error()
  48. return
  49. }
  50. confMap := make(map[string]*models.BusinessConf)
  51. for _, c := range list {
  52. confMap[c.ConfKey] = c
  53. }
  54. // 根据配置类型取值
  55. updates := make([]models.BusinessConfUpdate, 0)
  56. for k, v := range req {
  57. // 过滤掉表中没有的key
  58. conf := confMap[k]
  59. if conf == nil {
  60. continue
  61. }
  62. switch conf.ValType {
  63. case 1: // 字符串
  64. str, ok := v.(string)
  65. if !ok {
  66. continue
  67. }
  68. str = strings.TrimSpace(str)
  69. if conf.Necessary == 1 && str == "" {
  70. br.Msg = conf.Remark + "不可为空"
  71. return
  72. }
  73. updates = append(updates, models.BusinessConfUpdate{
  74. ConfKey: k,
  75. ConfVal: str,
  76. })
  77. case 2: // 数值
  78. num, ok := v.(float64)
  79. if !ok {
  80. continue
  81. }
  82. if conf.Necessary == 1 && num <= 0 {
  83. br.Msg = conf.Remark + "不可为空"
  84. return
  85. }
  86. val := strconv.FormatFloat(num, 'f', 0, 64)
  87. updates = append(updates, models.BusinessConfUpdate{
  88. ConfKey: k,
  89. ConfVal: val,
  90. })
  91. case 3: // 字符串数组
  92. arr, ok := v.([]interface{})
  93. if !ok {
  94. continue
  95. }
  96. if conf.Necessary == 1 && len(arr) == 0 {
  97. br.Msg = conf.Remark + "不可为空"
  98. return
  99. }
  100. strArr := make([]string, 0)
  101. for _, a := range arr {
  102. if s, ok2 := a.(string); ok2 {
  103. strArr = append(strArr, s)
  104. }
  105. }
  106. val := strings.Join(strArr, ",")
  107. updates = append(updates, models.BusinessConfUpdate{
  108. ConfKey: k,
  109. ConfVal: val,
  110. })
  111. case 4: // 富文本
  112. content, ok := v.(string)
  113. if !ok {
  114. continue
  115. }
  116. content = strings.TrimSpace(content)
  117. if conf.Necessary == 1 && content == "" {
  118. br.Msg = conf.Remark + "不可为空"
  119. return
  120. }
  121. content = html.EscapeString(content)
  122. updates = append(updates, models.BusinessConfUpdate{
  123. ConfKey: k,
  124. ConfVal: content,
  125. })
  126. }
  127. }
  128. if len(updates) > 0 {
  129. if e = models.UpdateBusinessConfMulti(updates); e != nil {
  130. br.Msg = "保存失败"
  131. br.ErrMsg = "保存商家配置失败, Err: " + e.Error()
  132. return
  133. }
  134. }
  135. // 操作日志
  136. go func() {
  137. b, e := json.Marshal(req)
  138. if e != nil {
  139. return
  140. }
  141. recordOb := new(models.BusinessConfOperationRecord)
  142. recordOb.SysUserId = sysUser.AdminId
  143. recordOb.SysRealName = sysUser.RealName
  144. recordOb.Content = string(b)
  145. recordOb.CreateTime = time.Now().Local()
  146. _ = recordOb.Create()
  147. }()
  148. br.Ret = 200
  149. br.Success = true
  150. br.Msg = "操作成功"
  151. }
  152. // Fetch
  153. // @Title 获取配置
  154. // @Description 获取配置
  155. // @Success 200 Ret=200 获取成功
  156. // @router /fetch [get]
  157. func (this *BusinessConfController) Fetch() {
  158. br := new(models.BaseResponse).Init()
  159. defer func() {
  160. if br.ErrMsg == "" {
  161. br.IsSendEmail = false
  162. }
  163. this.Data["json"] = br
  164. this.ServeJSON()
  165. }()
  166. sysUser := this.SysUser
  167. if sysUser == nil {
  168. br.Msg = "请登录"
  169. br.ErrMsg = "请登录,SysUser Is Empty"
  170. br.Ret = 408
  171. return
  172. }
  173. list, e := models.GetBusinessConf()
  174. if e != nil {
  175. br.Msg = "获取失败"
  176. br.ErrMsg = "获取商家配置失败, Err: " + e.Error()
  177. return
  178. }
  179. br.Data = list
  180. br.Ret = 200
  181. br.Success = true
  182. br.Msg = "获取成功"
  183. }