store_service.go 6.1 KB

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