product.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. package controllers
  2. import (
  3. "cc-officialweb/models"
  4. "cc-officialweb/service"
  5. "cc-officialweb/unity"
  6. "cc-officialweb/utils"
  7. "encoding/json"
  8. beego "github.com/beego/beego/v2/server/web"
  9. "github.com/go-playground/validator/v10"
  10. "strconv"
  11. )
  12. type ProductController struct {
  13. beego.Controller
  14. }
  15. // Get 产品详情页
  16. func (s *ProductController) Get() {
  17. var success []string
  18. ptype := s.GetString("ptype")
  19. product := service.GetProduct(ptype)
  20. //获取成功案例轮播图
  21. exams := service.GetResource("example")
  22. for _, v := range exams {
  23. success = append(success, v.Url)
  24. }
  25. //数据大屏展示
  26. data, err := service.GetData(false)
  27. if err == nil {
  28. s.Data["Datas"] = data
  29. } else {
  30. s.Data["Datas"] = "未获得数据"
  31. }
  32. productType := service.GetProductType()
  33. if len(productType) == 0 {
  34. s.Data["productFirst"] = "暂无产品分类"
  35. } else {
  36. s.Data["productFirst"] = productType[0].Name
  37. }
  38. s.Data["productType"] = productType
  39. s.Data["Products"] = product
  40. s.Data["example"] = success
  41. s.TplName = "product.html"
  42. }
  43. // AddProduct 添加产品
  44. func (s *ProductController) AddProduct() {
  45. var product models.ProductDto
  46. err := json.Unmarshal(s.Ctx.Input.RequestBody, &product)
  47. if err != nil {
  48. s.Data["json"] = &JSON{Code: 101, Msg: "json解析失败"}
  49. s.ServeJSON()
  50. return
  51. }
  52. if service.AddProduct(product) {
  53. s.Data["json"] = &JSON{Code: 200, Msg: "添加成功"}
  54. s.ServeJSON()
  55. } else {
  56. s.Data["json"] = &JSON{Code: 102, Msg: "添加失败"}
  57. s.ServeJSON()
  58. return
  59. }
  60. }
  61. // AddProductType 添加产品分类
  62. func (s *ProductController) AddProductType() {
  63. var productType models.ProductType
  64. err := json.Unmarshal(s.Ctx.Input.RequestBody, &productType)
  65. if err != nil {
  66. s.Data["json"] = &JSON{Code: 101, Msg: "json解析失败"}
  67. s.ServeJSON()
  68. return
  69. }
  70. if service.AddProductType(productType) {
  71. s.Data["json"] = &JSON{Code: 200, Msg: "添加成功"}
  72. s.ServeJSON()
  73. } else {
  74. s.Data["json"] = &JSON{Code: 102, Msg: "添加失败"}
  75. s.ServeJSON()
  76. return
  77. }
  78. }
  79. // GetProductType 获取产品类型
  80. func (s *ProductController) GetProductType() {
  81. productType := service.GetProductType()
  82. s.Data["json"] = &JSON{Code: 200, Msg: "获取成功", Data: productType}
  83. s.ServeJSON()
  84. }
  85. // DeleteProductTypeById 根据id删除产品类型
  86. func (s *ProductController) DeleteProductTypeById() {
  87. id := s.GetString("id")
  88. atoi, _ := strconv.Atoi(id)
  89. validate := validator.New()
  90. err2 := validate.Var(atoi, "required")
  91. if err2 != nil {
  92. s.Data["json"] = &JSON{Code: 103, Msg: "id不能为空"}
  93. s.ServeJSON()
  94. return
  95. }
  96. _, err := unity.DeleteById(atoi, models.ProductType{})
  97. if err != nil {
  98. s.Data["json"] = map[string]interface{}{"code": 101, "msg": "删除失败"}
  99. s.ServeJSON()
  100. return
  101. } else {
  102. s.Data["json"] = map[string]interface{}{"code": 200, "msg": "删除成功"}
  103. s.ServeJSON()
  104. }
  105. }
  106. // GetAllProductType 分页获取产品类型
  107. func (s *ProductController) GetAllProductType() {
  108. var page unity.PageParams
  109. err := json.Unmarshal(s.Ctx.Input.RequestBody, &page)
  110. if err != nil {
  111. s.Data["json"] = &JSON{Code: 101, Msg: "参数错误"}
  112. s.ServeJSON()
  113. return
  114. }
  115. result, total, current, err := unity.Paginate(page, models.ProductType{})
  116. if err != nil {
  117. s.Data["json"] = &JSON{Code: 101, Msg: "查询失败"}
  118. s.ServeJSON()
  119. return
  120. } else {
  121. s.Data["json"] = &JSON{Code: 200, Msg: "查询成功", Data: &JSONS{
  122. Current: current,
  123. Size: total,
  124. Data: result,
  125. }}
  126. s.ServeJSON()
  127. return
  128. }
  129. }
  130. // UpdateProductType 根据id修改产品类型
  131. func (s *ProductController) UpdateProductType() {
  132. var productType models.ProductType
  133. err := json.Unmarshal(s.Ctx.Input.RequestBody, &productType)
  134. if err != nil {
  135. s.Data["json"] = &JSON{Code: 101, Msg: "json解析失败"}
  136. s.ServeJSON()
  137. return
  138. }
  139. _, err = unity.UpdateById(productType.ID, productType)
  140. if err != nil {
  141. s.Data["json"] = &JSON{Code: 101, Msg: "修改失败"}
  142. s.ServeJSON()
  143. return
  144. } else {
  145. s.Data["json"] = &JSON{Code: 200, Msg: "修改成功"}
  146. s.ServeJSON()
  147. return
  148. }
  149. }
  150. // DeleteProductById 根据id删除产品
  151. func (s *ProductController) DeleteProductById() {
  152. id := s.GetString("id")
  153. atoi, _ := strconv.Atoi(id)
  154. validate := validator.New()
  155. err2 := validate.Var(atoi, "required")
  156. if err2 != nil {
  157. s.Data["json"] = &JSON{Code: 103, Msg: "id不能为空"}
  158. s.ServeJSON()
  159. return
  160. }
  161. _, err := unity.DeleteById(atoi, models.Products{})
  162. if err != nil {
  163. s.Data["json"] = map[string]interface{}{"code": 101, "msg": "删除失败"}
  164. s.ServeJSON()
  165. return
  166. } else {
  167. s.Data["json"] = map[string]interface{}{"code": 200, "msg": "删除成功"}
  168. s.ServeJSON()
  169. }
  170. }
  171. // GetAllProduct 获取所有产品信息
  172. func (s *ProductController) GetAllProduct() {
  173. var page unity.PageParams
  174. err := json.Unmarshal(s.Ctx.Input.RequestBody, &page)
  175. if err != nil {
  176. s.Data["json"] = &JSON{Code: 101, Msg: "参数错误"}
  177. s.ServeJSON()
  178. return
  179. }
  180. result, total, current, err := unity.Paginate(page, models.Products{})
  181. if err != nil {
  182. s.Data["json"] = &JSON{Code: 101, Msg: "查询失败"}
  183. s.ServeJSON()
  184. return
  185. } else {
  186. s.Data["json"] = &JSON{Code: 200, Msg: "查询成功", Data: &JSONS{
  187. Current: current,
  188. Size: total,
  189. Data: result,
  190. }}
  191. s.ServeJSON()
  192. return
  193. }
  194. }
  195. // UpdateProductById 根据id进行修改产品
  196. func (s *ProductController) UpdateProductById() {
  197. var productDto models.ProductDto
  198. var product models.Products
  199. err := json.Unmarshal(s.Ctx.Input.RequestBody, &productDto)
  200. if err != nil {
  201. s.Data["json"] = &JSON{Code: 101, Msg: "json解析失败"}
  202. s.ServeJSON()
  203. return
  204. }
  205. product.Title = &productDto.Title //标题
  206. product.Synopsis = &productDto.Synopsis //简介
  207. product.Detail = &productDto.Detail //详情
  208. product.Type = &productDto.Type //类型 1.产品 2.服务
  209. product.Ptype = &productDto.Ptype //产品类型 软件 硬件
  210. product.IsIndex = &productDto.IsIndex //是否首页显示
  211. product.Url = &productDto.Url //图片链接
  212. product.ProductIntroduction = &productDto.ProductIntroduction //产品介绍
  213. product.TechnicalParameters = &productDto.TechnicalParameters //技术参数
  214. product.Instructions = &productDto.Instructions //使用说明
  215. product.SupportingSoftware = &productDto.SupportingSoftware //配套软件
  216. product.OptionalAccessories = &productDto.OptionalAccessories //可选配件
  217. product.IsActive = &productDto.IsActive
  218. _, err = unity.UpdateById(productDto.ID, product)
  219. if err != nil {
  220. s.Data["json"] = &JSON{Code: 102, Msg: err.Error()}
  221. s.ServeJSON()
  222. return
  223. } else {
  224. s.Data["json"] = &JSON{Code: 200, Msg: "修改成功"}
  225. s.ServeJSON()
  226. }
  227. }
  228. // UpdateIsIndex 根据id修改状态
  229. func (s *ProductController) UpdateIsIndex() {
  230. var productDto models.ProductDto
  231. var product models.Products
  232. err := json.Unmarshal(s.Ctx.Input.RequestBody, &productDto)
  233. if err != nil {
  234. s.Data["json"] = &JSON{Code: 101, Msg: "json解析失败"}
  235. s.ServeJSON()
  236. return
  237. }
  238. tx := utils.DB.Model(&product).Where("id = ?", productDto.ID).Update("is_index", productDto.IsIndex)
  239. if tx.RowsAffected > 0 {
  240. s.Data["json"] = &JSON{Code: 200, Msg: "修改成功"}
  241. s.ServeJSON()
  242. return
  243. } else {
  244. s.Data["json"] = &JSON{Code: 102, Msg: "修改失败"}
  245. s.ServeJSON()
  246. }
  247. }
  248. // UpdateIsSort 根据id修改排序
  249. func (s *ProductController) UpdateIsSort() {
  250. var productDto models.ProductDto
  251. var product models.Products
  252. err := json.Unmarshal(s.Ctx.Input.RequestBody, &productDto)
  253. if err != nil {
  254. s.Data["json"] = &JSON{Code: 101, Msg: "json解析失败"}
  255. s.ServeJSON()
  256. return
  257. }
  258. tx := utils.DB.Model(&product).Where("id = ?", productDto.ID).Update("sort", productDto.Sort)
  259. if tx.RowsAffected > 0 {
  260. s.Data["json"] = &JSON{Code: 200, Msg: "修改成功"}
  261. s.ServeJSON()
  262. return
  263. } else {
  264. s.Data["json"] = &JSON{Code: 102, Msg: "修改失败"}
  265. s.ServeJSON()
  266. }
  267. }
  268. // GetProduct 根据id获取产品信息
  269. func (s *ProductController) GetProduct() {
  270. getString := s.GetString("id")
  271. id, _ := strconv.Atoi(getString)
  272. validate := validator.New()
  273. err2 := validate.Var(id, "required")
  274. if err2 != nil {
  275. s.Data["json"] = &JSON{Code: 103, Msg: "id不能为空"}
  276. s.ServeJSON()
  277. return
  278. }
  279. result, err := unity.GetById(id, &models.Products{})
  280. if err != nil {
  281. s.Data["json"] = &JSON{Code: 101, Msg: "获取失败"}
  282. s.ServeJSON()
  283. return
  284. } else {
  285. s.Data["json"] = &JSON{Code: 200, Msg: "获取成功", Data: result}
  286. s.ServeJSON()
  287. return
  288. }
  289. }