store_service.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package service
  2. import (
  3. "errors"
  4. "time"
  5. "youngee_b_api/app/dao"
  6. "youngee_b_api/app/entity"
  7. "youngee_b_api/app/vo"
  8. )
  9. type StoreService struct{}
  10. func (p StoreService) GetStoresByEnterpriseId(param vo.GetAllStoreParam) (vo.ResultVO, error) {
  11. if param.Page == 0 {
  12. param.Page = 1
  13. }
  14. if param.PageSize == 0 {
  15. param.PageSize = 10
  16. }
  17. var result vo.ResultVO
  18. var stores []entity.Store
  19. var err error
  20. var total int64
  21. enterpriseId := param.EnterpriseId
  22. if enterpriseId == "" {
  23. return result, errors.New("enterpriseId is empty")
  24. }
  25. stores, total, err = (&dao.StoreDao{}).GetStoresByEnterpriseIDAndStoreName(enterpriseId, param.StoreName, param.Page, param.PageSize)
  26. if err != nil {
  27. // 数据库查询error
  28. return result, err
  29. }
  30. var reStores []vo.ReStorePreview
  31. for _, store := range stores {
  32. photoUrl, e := dao.ProductPhotoDAO{}.GetMainPhotoByStoreID(store.StoreID)
  33. if e != nil {
  34. photoUrl = ""
  35. }
  36. reStore := vo.ReStorePreview{
  37. StoreID: store.StoreID,
  38. StoreName: store.StoreName,
  39. StoreLocation: store.StoreLocation,
  40. StoreType: store.StoreType,
  41. StoreCategory: store.StoreCategory,
  42. TeamNum: store.TeamNum,
  43. StoreDetail: store.StoreDetail,
  44. CreatedAt: store.CreatedAt.Format("2006-01-02 15:04:05"),
  45. PhotoUrl: photoUrl,
  46. }
  47. reStores = append(reStores, reStore)
  48. }
  49. result = vo.ResultVO{
  50. Page: param.Page,
  51. PageSize: param.PageSize,
  52. Total: total,
  53. Data: reStores,
  54. }
  55. return result, nil
  56. }
  57. // 新建门店
  58. func (p StoreService) CreateStore(param *vo.StoreCreateParam) (int64, error) {
  59. newStore := entity.Store{
  60. StoreName: param.StoreName,
  61. StoreCategory: param.StoreCategory,
  62. StoreType: param.StoreType,
  63. StoreLocation: param.StoreLocation,
  64. StoreDetail: param.StoreDetail,
  65. StoreLink: param.StoreLink,
  66. BelongEnterpriseID: param.EnterpriseId,
  67. EnterpriseID: param.EnterpriseId,
  68. SubAccountID: param.SubAccountId,
  69. OperateType: 1,
  70. CreatedAt: time.Now(),
  71. }
  72. storeId, err := dao.StoreDao{}.CreateStore(newStore)
  73. if err != nil {
  74. return 0, err
  75. }
  76. if param.StorePhotos != nil {
  77. storePhotos := []entity.ProductPhoto{}
  78. for _, photo := range param.StorePhotos {
  79. storePhoto := entity.ProductPhoto{
  80. PhotoUrl: photo.PhotoUrl,
  81. PhotoUid: photo.PhotoUid,
  82. Symbol: photo.Symbol,
  83. StoreID: storeId,
  84. ProductPhotoType: 2,
  85. CreatedAt: time.Now(),
  86. }
  87. storePhotos = append(storePhotos, storePhoto)
  88. }
  89. err = dao.ProductPhotoDAO{}.CreateProductPhoto(storePhotos)
  90. if err != nil {
  91. return 0, err
  92. }
  93. }
  94. return storeId, nil
  95. }
  96. // 门店详情
  97. func (s StoreService) GetStoreDetail(param *vo.StoreSearchParam) (*vo.ReStoreInfo, error) {
  98. var reStoreInfo *vo.ReStoreInfo
  99. store, err := dao.StoreDao{}.GetStoreByID(param.StoreId)
  100. if err != nil {
  101. return nil, err
  102. }
  103. photoMain, _ := dao.ProductPhotoDAO{}.GetMainPhotoByStoreID(param.StoreId)
  104. photosAll, _ := dao.ProductPhotoDAO{}.GetProductPhotoByStoreID(param.StoreId)
  105. var photoRotates []vo.Photo
  106. var photoDetails []vo.Photo
  107. for _, photosOne := range photosAll {
  108. if photosOne.Symbol == 2 || photosOne.Symbol == 3 {
  109. photo := vo.Photo{
  110. PhotoUrl: photosOne.PhotoUrl,
  111. Symbol: photosOne.Symbol,
  112. }
  113. photoRotates = append(photoRotates, photo)
  114. } else if photosOne.Symbol == 4 || photosOne.Symbol == 5 {
  115. photo := vo.Photo{
  116. PhotoUrl: photosOne.PhotoUrl,
  117. Symbol: photosOne.Symbol,
  118. }
  119. photoDetails = append(photoDetails, photo)
  120. }
  121. }
  122. reStoreInfo = &vo.ReStoreInfo{
  123. StoreID: store.StoreID,
  124. StoreName: store.StoreName,
  125. StoreCategory: store.StoreCategory,
  126. StoreType: store.StoreType,
  127. StoreLocation: store.StoreLocation,
  128. TeamNum: store.TeamNum,
  129. StoreDetail: store.StoreDetail,
  130. PhotoMain: photoMain,
  131. PhotoRotates: photoRotates,
  132. PhotoDetails: photoDetails,
  133. CreatedAt: store.CreatedAt.Format("2006-01-02 15:04:05"),
  134. }
  135. return reStoreInfo, nil
  136. }
  137. // 更新门店
  138. func (p StoreService) UpdateStore(param *vo.StoreUpdateParam) (int64, error) {
  139. newStore := entity.Store{
  140. StoreID: param.StoreId,
  141. StoreName: param.StoreName,
  142. StoreCategory: param.StoreCategory,
  143. StoreType: param.StoreType,
  144. StoreLocation: param.StoreLocation,
  145. StoreDetail: param.StoreDetail,
  146. StoreLink: param.StoreLink,
  147. UpdatedAt: time.Now(),
  148. }
  149. storeId, err := dao.StoreDao{}.UpdateStore(newStore)
  150. if err != nil {
  151. return 0, err
  152. }
  153. if param.StorePhotos != nil {
  154. storePhotos := []entity.ProductPhoto{}
  155. for _, photo := range param.StorePhotos {
  156. storePhoto := entity.ProductPhoto{
  157. PhotoUrl: photo.PhotoUrl,
  158. PhotoUid: photo.PhotoUid,
  159. Symbol: photo.Symbol,
  160. StoreID: storeId,
  161. ProductPhotoType: 2,
  162. CreatedAt: time.Now(),
  163. }
  164. storePhotos = append(storePhotos, storePhoto)
  165. }
  166. err = dao.ProductPhotoDAO{}.CreateProductPhoto(storePhotos)
  167. if err != nil {
  168. return 0, err
  169. }
  170. }
  171. return storeId, nil
  172. }
  173. // 删除门店
  174. func (p StoreService) DeleteStore(param *vo.StoreUpdateParam) (int64, error) {
  175. err := dao.StoreDao{}.DeleteStore(param.StoreId)
  176. if err != nil {
  177. return 0, err
  178. }
  179. return param.StoreId, nil
  180. }
  181. // 门店类目
  182. func (p StoreService) GetStoreCategory() ([]vo.ReStoreCategory, error) {
  183. var reStoreCategories []vo.ReStoreCategory
  184. storeCategory, err := dao.StoreDao{}.GetStoreCategory()
  185. if err != nil {
  186. return nil, err
  187. }
  188. for _, category := range storeCategory {
  189. reStoreCategory := vo.ReStoreCategory{
  190. ID: category.ID,
  191. Category: category.Category,
  192. Detail: category.Detail,
  193. }
  194. reStoreCategories = append(reStoreCategories, reStoreCategory)
  195. }
  196. return reStoreCategories, nil
  197. }