附近小店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

svc_store.go 10 KiB

10 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. package svc
  2. import (
  3. "applet/app/db"
  4. "applet/app/db/model"
  5. "applet/app/e"
  6. "applet/app/utils"
  7. "github.com/gin-gonic/gin"
  8. "time"
  9. )
  10. func StorePayInfo(c *gin.Context) {
  11. var arg map[string]string
  12. if err := c.ShouldBindJSON(&arg); err != nil {
  13. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  14. return
  15. }
  16. engine := MasterDb(c)
  17. store := db.GetStoreIdEg(engine, arg["store_id"])
  18. if store == nil {
  19. e.OutErr(c, 400, e.NewErr(400, "门店不存在"))
  20. return
  21. }
  22. res := map[string]string{
  23. "name": store.Name, "logo": store.Logo,
  24. }
  25. e.OutSuc(c, res, nil)
  26. return
  27. }
  28. func StorePayScan(c *gin.Context) {
  29. kind := c.DefaultQuery("type", "alipay") //1:支付宝 2:微信
  30. id, _ := c.GetQuery("id")
  31. if id == "" {
  32. e.OutErr(c, e.ERR_INVALID_ARGS, nil)
  33. return
  34. }
  35. engine := MasterDb(c)
  36. data := db.GetStorePayQrcodeById(engine, id)
  37. if data == nil {
  38. e.OutErr(c, 400, e.NewErr(400, "桌码不存在"))
  39. return
  40. }
  41. if data.IsUse != 1 {
  42. e.OutErr(c, 400, e.NewErr(400, "桌码不可用"))
  43. return
  44. }
  45. type RefundReq struct {
  46. StoreId string `json:"store_id" `
  47. StoreType string `json:"store_type" `
  48. AppId string `json:"app_id" `
  49. AppLogo string `json:"app_logo"`
  50. InviteCode string `json:"invite_code"`
  51. }
  52. store := db.GetStoreIdEg(engine, utils.IntToStr(data.Uid))
  53. if store == nil {
  54. e.OutErr(c, 400, e.NewErr(400, "门店不存在"))
  55. return
  56. }
  57. user, _ := db.UserProfileFindByID(engine, store.Uid)
  58. var appId = ""
  59. var appLogo = ""
  60. var inviteCode = user.InviteCode
  61. if kind != "alipay" {
  62. communityTeamStoreWxAppletId := db.SysCfgGet(c, "community_team_store_wx_applet_id")
  63. var wxApplet model.WxAppletList
  64. MasterDb(c).Where("id=?", communityTeamStoreWxAppletId).Get(&wxApplet)
  65. appId = wxApplet.OriginalAppId
  66. appLogo = wxApplet.AppletLogo
  67. }
  68. var result = RefundReq{
  69. StoreId: utils.IntToStr(data.Uid),
  70. AppId: appId,
  71. StoreType: utils.IntToStr(store.StoreType),
  72. InviteCode: inviteCode,
  73. AppLogo: appLogo,
  74. }
  75. e.OutSuc(c, result, nil)
  76. return
  77. }
  78. func StoreScan(c *gin.Context) {
  79. kind := c.DefaultQuery("type", "alipay") //1:支付宝 2:微信
  80. id, _ := c.GetQuery("id")
  81. if id == "" {
  82. e.OutErr(c, e.ERR_INVALID_ARGS, nil)
  83. return
  84. }
  85. engine := MasterDb(c)
  86. data := db.GetStoreQrcodeById(engine, id)
  87. if data == nil {
  88. e.OutErr(c, 400, e.NewErr(400, "桌码不存在"))
  89. return
  90. }
  91. if data.IsUse != 1 {
  92. e.OutErr(c, 400, e.NewErr(400, "桌码不可用"))
  93. return
  94. }
  95. type RefundReq struct {
  96. StoreId string `json:"store_id" `
  97. StoreType string `json:"store_type" `
  98. TableNumber string `json:"table_number" `
  99. AppId string `json:"app_id" `
  100. AppLogo string `json:"app_logo"`
  101. InviteCode string `json:"invite_code"`
  102. }
  103. store := db.GetStoreIdEg(engine, utils.IntToStr(data.Uid))
  104. if store == nil {
  105. e.OutErr(c, 400, e.NewErr(400, "门店不存在"))
  106. return
  107. }
  108. user, _ := db.UserProfileFindByID(engine, store.Uid)
  109. var appId = ""
  110. var appLogo = ""
  111. var inviteCode = user.InviteCode
  112. if kind != "alipay" {
  113. communityTeamStoreWxAppletId := db.SysCfgGet(c, "community_team_store_wx_applet_id")
  114. var wxApplet model.WxAppletList
  115. MasterDb(c).Where("id=?", communityTeamStoreWxAppletId).Get(&wxApplet)
  116. appId = wxApplet.OriginalAppId
  117. appLogo = wxApplet.AppletLogo
  118. }
  119. var result = RefundReq{
  120. StoreId: utils.IntToStr(data.Uid),
  121. TableNumber: data.TableNum,
  122. AppId: appId,
  123. StoreType: utils.IntToStr(store.StoreType),
  124. InviteCode: inviteCode,
  125. AppLogo: appLogo,
  126. }
  127. e.OutSuc(c, result, nil)
  128. return
  129. }
  130. func BankStore(c *gin.Context) {
  131. var arg map[string]string
  132. if err := c.ShouldBindJSON(&arg); err != nil {
  133. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  134. return
  135. }
  136. arg["store_type"] = "0"
  137. user, _ := GetDefaultUser(c, c.GetHeader("Authorization"))
  138. var store = make([]map[string]string, 0)
  139. if arg["cid"] == "2" {
  140. store = db.GetStoreLike(MasterDb(c), arg)
  141. } else {
  142. store = db.GetStore(MasterDb(c), arg)
  143. }
  144. storeList := make([]map[string]interface{}, 0)
  145. for _, v := range store {
  146. km := v["km"]
  147. if utils.StrToFloat64(v["km"]) < 1 {
  148. v["km"] = utils.IntToStr(int(utils.StrToFloat64(v["km"])*1000)) + "m"
  149. } else {
  150. v["km"] = GetCommissionPrec(c, v["km"], "2", "1")
  151. v["km"] += "km"
  152. }
  153. if utils.StrToFloat64(km) <= 0 || utils.StrToFloat64(v["lat"]) == 0 || utils.StrToFloat64(v["lng"]) == 0 {
  154. v["km"] = "-"
  155. }
  156. tmp := map[string]interface{}{
  157. "lat": v["lat"],
  158. "lng": v["lng"],
  159. "address": v["address"],
  160. "name": v["name"],
  161. "id": v["id"],
  162. "km": v["km"],
  163. "time_str": v["timer"],
  164. "uid": v["uid"],
  165. "phone": v["phone"],
  166. "logo": v["logo"],
  167. "is_like": "0",
  168. "fan": "",
  169. }
  170. if user != nil {
  171. count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, v["id"]).Count(&model.CommunityTeamStoreLike{})
  172. if count > 0 {
  173. tmp["is_like"] = "1"
  174. }
  175. }
  176. storeList = append(storeList, tmp)
  177. }
  178. e.OutSuc(c, storeList, nil)
  179. return
  180. }
  181. func NewStore(c *gin.Context) {
  182. var arg map[string]string
  183. if err := c.ShouldBindJSON(&arg); err != nil {
  184. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  185. return
  186. }
  187. arg["store_type"] = "3"
  188. user, _ := GetDefaultUser(c, c.GetHeader("Authorization"))
  189. var store = make([]map[string]string, 0)
  190. if arg["cid"] == "2" {
  191. store = db.GetStoreLike(MasterDb(c), arg)
  192. } else {
  193. store = db.GetStore(MasterDb(c), arg)
  194. }
  195. storeList := make([]map[string]interface{}, 0)
  196. for _, v := range store {
  197. km := v["km"]
  198. if utils.StrToFloat64(v["km"]) < 1 {
  199. v["km"] = utils.IntToStr(int(utils.StrToFloat64(v["km"])*1000)) + "m"
  200. } else {
  201. v["km"] = GetCommissionPrec(c, v["km"], "2", "1")
  202. v["km"] += "km"
  203. }
  204. if utils.StrToFloat64(km) <= 0 || utils.StrToFloat64(v["lat"]) == 0 || utils.StrToFloat64(v["lng"]) == 0 {
  205. v["km"] = "-"
  206. }
  207. tmp := map[string]interface{}{
  208. "lat": v["lat"],
  209. "lng": v["lng"],
  210. "address": v["address"],
  211. "name": v["name"],
  212. "id": v["id"],
  213. "km": v["km"],
  214. "time_str": v["timer"],
  215. "uid": v["uid"],
  216. "store_id": v["uid"],
  217. "store_type": v["store_type"],
  218. "phone": v["phone"],
  219. "logo": v["logo"],
  220. "is_like": "0",
  221. "fan": "",
  222. }
  223. if user != nil {
  224. count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, v["id"]).Count(&model.CommunityTeamStoreLike{})
  225. if count > 0 {
  226. tmp["is_like"] = "1"
  227. }
  228. }
  229. storeList = append(storeList, tmp)
  230. }
  231. e.OutSuc(c, storeList, nil)
  232. return
  233. }
  234. func StoreLike(c *gin.Context) {
  235. var arg map[string]string
  236. if err := c.ShouldBindJSON(&arg); err != nil {
  237. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  238. return
  239. }
  240. arg["store_type"] = "0"
  241. storeId := c.GetHeader("store_id")
  242. if utils.StrToInt(storeId) > 0 {
  243. arg["store_id"] = storeId
  244. storeData := db.GetStoreIdEg(MasterDb(c), storeId)
  245. if storeData.StoreType == 0 {
  246. arg["store_id"] = "0"
  247. }
  248. arg["store_type"] = utils.IntToStr(storeData.StoreType)
  249. }
  250. user, _ := GetDefaultUser(c, c.GetHeader("Authorization"))
  251. store := db.GetStoreLike(MasterDb(c), arg)
  252. storeList := make([]map[string]interface{}, 0)
  253. for _, v := range store {
  254. km := v["km"]
  255. if utils.StrToFloat64(v["km"]) < 1 {
  256. v["km"] = utils.IntToStr(int(utils.StrToFloat64(v["km"])*1000)) + "m"
  257. } else {
  258. v["km"] = GetCommissionPrec(c, v["km"], "2", "1")
  259. v["km"] += "km"
  260. }
  261. if utils.StrToFloat64(km) <= 0 || utils.StrToFloat64(v["lat"]) == 0 || utils.StrToFloat64(v["lng"]) == 0 {
  262. v["km"] = "-"
  263. }
  264. label := make([]string, 0)
  265. tmp := map[string]interface{}{
  266. "lat": v["lat"],
  267. "lng": v["lng"],
  268. "address": v["address"],
  269. "work_state": v["work_state"],
  270. "name": v["name"],
  271. "id": v["id"],
  272. "uid": v["uid"],
  273. "km": v["km"],
  274. "time_str": v["timer"],
  275. "phone": v["phone"],
  276. "label": label,
  277. "is_like": "0",
  278. }
  279. if user != nil {
  280. count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, v["id"]).Count(&model.CommunityTeamStoreLike{})
  281. if count > 0 {
  282. tmp["is_like"] = "1"
  283. }
  284. }
  285. storeList = append(storeList, tmp)
  286. }
  287. e.OutSuc(c, storeList, nil)
  288. return
  289. }
  290. func Store(c *gin.Context) {
  291. var arg map[string]string
  292. if err := c.ShouldBindJSON(&arg); err != nil {
  293. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  294. return
  295. }
  296. arg["store_type"] = "0"
  297. storeId := c.GetHeader("store_id")
  298. if utils.StrToInt(storeId) > 0 {
  299. arg["store_id"] = storeId
  300. storeData := db.GetStoreIdEg(MasterDb(c), storeId)
  301. if storeData.StoreType == 0 {
  302. arg["store_id"] = "0"
  303. }
  304. arg["store_type"] = utils.IntToStr(storeData.StoreType)
  305. }
  306. user, _ := GetDefaultUser(c, c.GetHeader("Authorization"))
  307. store := db.GetStore(MasterDb(c), arg)
  308. storeList := make([]map[string]interface{}, 0)
  309. for _, v := range store {
  310. km := v["km"]
  311. if utils.StrToFloat64(v["km"]) < 1 {
  312. v["km"] = utils.IntToStr(int(utils.StrToFloat64(v["km"])*1000)) + "m"
  313. } else {
  314. v["km"] = GetCommissionPrec(c, v["km"], "2", "1")
  315. v["km"] += "km"
  316. }
  317. if utils.StrToFloat64(km) <= 0 || utils.StrToFloat64(v["lat"]) == 0 || utils.StrToFloat64(v["lng"]) == 0 {
  318. v["km"] = "-"
  319. }
  320. label := make([]string, 0)
  321. tmp := map[string]interface{}{
  322. "lat": v["lat"],
  323. "lng": v["lng"],
  324. "address": v["address"],
  325. "work_state": v["work_state"],
  326. "name": v["name"],
  327. "id": v["id"],
  328. "uid": v["uid"],
  329. "km": v["km"],
  330. "time_str": v["timer"],
  331. "phone": v["phone"],
  332. "label": label,
  333. "is_like": "0",
  334. }
  335. if user != nil {
  336. count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, v["id"]).Count(&model.CommunityTeamStoreLike{})
  337. if count > 0 {
  338. tmp["is_like"] = "1"
  339. }
  340. }
  341. storeList = append(storeList, tmp)
  342. }
  343. e.OutSuc(c, storeList, nil)
  344. return
  345. }
  346. func StoreAddLike(c *gin.Context) {
  347. var arg map[string]string
  348. if err := c.ShouldBindJSON(&arg); err != nil {
  349. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  350. return
  351. }
  352. user := GetUser(c)
  353. count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, arg["id"]).Count(&model.CommunityTeamStoreLike{})
  354. if count > 0 {
  355. e.OutErr(c, 400, e.NewErr(400, "已收藏"))
  356. return
  357. }
  358. var data = model.CommunityTeamStoreLike{
  359. Uid: user.Info.Uid,
  360. StoreId: utils.StrToInt(arg["id"]),
  361. Time: time.Now(),
  362. }
  363. MasterDb(c).Insert(&data)
  364. e.OutSuc(c, "success", nil)
  365. return
  366. }
  367. func StoreCancelLike(c *gin.Context) {
  368. var arg map[string]string
  369. if err := c.ShouldBindJSON(&arg); err != nil {
  370. e.OutErr(c, e.ERR_INVALID_ARGS, err)
  371. return
  372. }
  373. user := GetUser(c)
  374. MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, arg["id"]).Delete(&model.CommunityTeamStoreLike{})
  375. e.OutSuc(c, "success", nil)
  376. return
  377. }