park.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. package v1
  2. import (
  3. "git.getensh.com/common/gopkgs/logger"
  4. "git.getensh.com/common/gopkgs/tasker/httptasker"
  5. "git.getensh.com/common/gopkgs/util"
  6. "github.com/gin-gonic/gin"
  7. "go.uber.org/zap"
  8. "net/http"
  9. "property-system-gateway/errors"
  10. param_v1 "property-system-gateway/param/v1"
  11. "property-system-gateway/pb"
  12. "property-system-gateway/pb/v1"
  13. "property-system-gateway/utils"
  14. )
  15. //
  16. // @Summary 添加停车场
  17. // @Description 添加停车场
  18. // @Tags 停车场
  19. // @Accept json
  20. // @Produce json
  21. // @Param token header string true "token"
  22. // @Param body body v1.ParkAddBody true "信息"
  23. // @Success 200 {object} v1.ParkAddResponse
  24. // @Failure 500 {object} base.HTTPError
  25. // @Router /api/v1/park [post]
  26. func (c *Controller) ParkAdd(ctx *gin.Context) {
  27. // 解析参数
  28. req := &param_v1.ParkAddRequest{}
  29. parseParamTask := func() error {
  30. err := util.ShouldBind(ctx, &req.Header, nil, nil, &req.ParkAddBody)
  31. if err != nil {
  32. logger.Error("func",
  33. zap.String("call", "util.ShouldBind"),
  34. zap.String("error", err.Error()))
  35. return errors.ParamsError
  36. }
  37. return nil
  38. }
  39. // 业务处理
  40. handleServiceTask := func() error {
  41. tokenInfo, err := utils.GetSubjectValue(ctx)
  42. if err != nil {
  43. return err
  44. }
  45. // 响应数据
  46. resp := param_v1.ParkAddResponse{}
  47. rpcReq := &v1.ParkAddRequest{
  48. GardenId:tokenInfo.GardenId,
  49. ParkName:req.ParkName,
  50. ParkNumber:req.ParkNumber,
  51. ParkType:req.ParkType,
  52. Comment:req.Comment,
  53. }
  54. rpcRsp, err := pb.Garden.ParkAdd(ctx, rpcReq)
  55. if err != nil {
  56. s, _ := json.MarshalToString(req)
  57. logger.Error("func",
  58. zap.String("call", "pb.Garden.ParkAdd"),
  59. zap.String("params", s),
  60. zap.String("error", err.Error()))
  61. return errors.ErrorTransForm(err)
  62. }
  63. resp.Data = *rpcRsp
  64. ctx.JSON(http.StatusOK, resp)
  65. logReq := OperationLogRequest{
  66. Module:ModulePark,
  67. Action:ActionParkAdd,
  68. Origin:nil,
  69. Target:req.ParkAddBody,
  70. UserName:tokenInfo.UserName,
  71. Uid:tokenInfo.Uid,
  72. Cid:tokenInfo.Cid,
  73. GardenId:tokenInfo.GardenId,
  74. }
  75. go OperationLogAdd(&logReq)
  76. return nil
  77. }
  78. // 执行任务
  79. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  80. }
  81. //
  82. // @Summary 更改停车场
  83. // @Description 更改停车场
  84. // @Tags 停车场
  85. // @Accept json
  86. // @Produce json
  87. // @Param token header string true "token"
  88. // @Param body body v1.ParkUpdateBody true "信息"
  89. // @Success 200 {object} v1.ParkUpdateResponse
  90. // @Failure 500 {object} base.HTTPError
  91. // @Router /api/v1/park [put]
  92. func (c *Controller) ParkUpdate(ctx *gin.Context) {
  93. // 解析参数
  94. req := &param_v1.ParkUpdateRequest{}
  95. parseParamTask := func() error {
  96. err := util.ShouldBind(ctx, &req.Header, nil, nil, &req.ParkUpdateBody)
  97. if err != nil {
  98. logger.Error("func",
  99. zap.String("call", "util.ShouldBind"),
  100. zap.String("error", err.Error()))
  101. return errors.ParamsError
  102. }
  103. return nil
  104. }
  105. // 业务处理
  106. handleServiceTask := func() error {
  107. tokenInfo, err := utils.GetSubjectValue(ctx)
  108. if err != nil {
  109. return err
  110. }
  111. // 响应数据
  112. resp := param_v1.ParkUpdateResponse{}
  113. rpcReq := &v1.ParkUpdateRequest{
  114. GardenId:tokenInfo.GardenId,
  115. Comment:req.Comment,
  116. Id:req.Id,
  117. ParkName:req.ParkName,
  118. ParkNumber:req.ParkNumber,
  119. ParkType:req.ParkType,
  120. }
  121. rpcRsp, err := pb.Garden.ParkUpdate(ctx, rpcReq)
  122. if err != nil {
  123. s, _ := json.MarshalToString(req)
  124. logger.Error("func",
  125. zap.String("call", "pb.Garden.ParkUpdate"),
  126. zap.String("params", s),
  127. zap.String("error", err.Error()))
  128. return errors.ErrorTransForm(err)
  129. }
  130. ctx.JSON(http.StatusOK, resp)
  131. logReq := OperationLogRequest{
  132. Module:ModulePark,
  133. Action:ActionParkUpdate,
  134. Origin:rpcRsp.Origin,
  135. Target:req.ParkUpdateBody,
  136. UserName:tokenInfo.UserName,
  137. Uid:tokenInfo.Uid,
  138. Cid:tokenInfo.Cid,
  139. GardenId:tokenInfo.GardenId,
  140. }
  141. go OperationLogAdd(&logReq)
  142. return nil
  143. }
  144. // 执行任务
  145. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  146. }
  147. //
  148. // @Summary 删除停车场
  149. // @Description 删除停车场
  150. // @Tags 停车场
  151. // @Accept json
  152. // @Produce json
  153. // @Param token header string true "token"
  154. // @Param id query int true "id"
  155. // @Success 200 {object} v1.ParkDelResponse
  156. // @Failure 500 {object} base.HTTPError
  157. // @Router /api/v1/park [delete]
  158. func (c *Controller) ParkDel(ctx *gin.Context) {
  159. // 解析参数
  160. req := &param_v1.ParkDelRequest{}
  161. parseParamTask := func() error {
  162. err := util.ShouldBind(ctx, &req.Header, nil, &req.ParkDelQuery, nil)
  163. if err != nil {
  164. logger.Error("func",
  165. zap.String("call", "util.ShouldBind"),
  166. zap.String("error", err.Error()))
  167. return errors.ParamsError
  168. }
  169. return nil
  170. }
  171. // 业务处理
  172. handleServiceTask := func() error {
  173. tokenInfo, err := utils.GetSubjectValue(ctx)
  174. if err != nil {
  175. return err
  176. }
  177. // 响应数据
  178. resp := param_v1.ParkDelResponse{}
  179. rpcReq := &v1.ParkDelRequest{
  180. GardenId:tokenInfo.GardenId,
  181. Id:req.Id,
  182. }
  183. rpcRsp, err := pb.Garden.ParkDel(ctx, rpcReq)
  184. if err != nil {
  185. s, _ := json.MarshalToString(req)
  186. logger.Error("func",
  187. zap.String("call", "pb.Garden.ParkDel"),
  188. zap.String("params", s),
  189. zap.String("error", err.Error()))
  190. return errors.ErrorTransForm(err)
  191. }
  192. ctx.JSON(http.StatusOK, resp)
  193. logReq := OperationLogRequest{
  194. Module:ModulePark,
  195. Action:ActionParkDel,
  196. Origin:rpcRsp.Origin,
  197. Target:nil,
  198. UserName:tokenInfo.UserName,
  199. Uid:tokenInfo.Uid,
  200. Cid:tokenInfo.Cid,
  201. GardenId:tokenInfo.GardenId,
  202. }
  203. go OperationLogAdd(&logReq)
  204. return nil
  205. }
  206. // 执行任务
  207. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  208. }
  209. //
  210. // @Summary 停车场列表
  211. // @Description 停车场列表
  212. // @Tags 停车场
  213. // @Accept json
  214. // @Produce json
  215. // @Param token header string true "token"
  216. // @Success 200 {object} v1.ParkListResponse
  217. // @Failure 500 {object} base.HTTPError
  218. // @Router /api/v1/park [get]
  219. func (c *Controller) ParkList(ctx *gin.Context) {
  220. // 解析参数
  221. req := &param_v1.ParkListRequest{}
  222. parseParamTask := func() error {
  223. err := util.ShouldBind(ctx, &req.Header, nil, nil, nil)
  224. if err != nil {
  225. logger.Error("func",
  226. zap.String("call", "util.ShouldBind"),
  227. zap.String("error", err.Error()))
  228. return errors.ParamsError
  229. }
  230. return nil
  231. }
  232. // 业务处理
  233. handleServiceTask := func() error {
  234. tokenInfo, err := utils.GetSubjectValue(ctx)
  235. if err != nil {
  236. return err
  237. }
  238. // 响应数据
  239. resp := param_v1.ParkListResponse{}
  240. rpcReq := &v1.ParkListRequest{
  241. GardenId:tokenInfo.GardenId,
  242. }
  243. rpcRsp, err := pb.Garden.ParkList(ctx, rpcReq)
  244. if err != nil {
  245. s, _ := json.MarshalToString(req)
  246. logger.Error("func",
  247. zap.String("call", "pb.Garden.ParkList"),
  248. zap.String("params", s),
  249. zap.String("error", err.Error()))
  250. return errors.ErrorTransForm(err)
  251. }
  252. if rpcRsp.List == nil {
  253. rpcRsp.List = make([]*v1.ParkItem, 0)
  254. }
  255. resp.Data = *rpcRsp
  256. ctx.JSON(http.StatusOK, resp)
  257. return nil
  258. }
  259. // 执行任务
  260. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  261. }
  262. //
  263. // @Summary 添加停车位
  264. // @Description 添加停车位
  265. // @Tags 停车位
  266. // @Accept json
  267. // @Produce json
  268. // @Param token header string true "token"
  269. // @Param body body v1.ParkSpaceAddBody true "信息"
  270. // @Success 200 {object} v1.ParkAddResponse
  271. // @Failure 500 {object} base.HTTPError
  272. // @Router /api/v1/park/space [post]
  273. func (c *Controller) ParkSpaceAdd(ctx *gin.Context) {
  274. // 解析参数
  275. req := &param_v1.ParkSpaceAddRequest{}
  276. parseParamTask := func() error {
  277. err := util.ShouldBind(ctx, &req.Header, nil, nil, &req.ParkSpaceAddBody)
  278. if err != nil {
  279. logger.Error("func",
  280. zap.String("call", "util.ShouldBind"),
  281. zap.String("error", err.Error()))
  282. return errors.ParamsError
  283. }
  284. return nil
  285. }
  286. // 业务处理
  287. handleServiceTask := func() error {
  288. tokenInfo, err := utils.GetSubjectValue(ctx)
  289. if err != nil {
  290. return err
  291. }
  292. // 响应数据
  293. resp := param_v1.ParkSpaceAddResponse{}
  294. rpcReq := &v1.ParkSpaceAddRequest{
  295. GardenId:tokenInfo.GardenId,
  296. ParkId: req.ParkId,
  297. SpaceArea:req.SpaceArea,
  298. SpaceType:req.SpaceType,
  299. SpaceNumber:req.SpaceNumber,
  300. Comment:req.Comment,
  301. HouseId:req.HouseId,
  302. }
  303. rpcRsp, err := pb.Garden.ParkSpaceAdd(ctx, rpcReq)
  304. if err != nil {
  305. s, _ := json.MarshalToString(req)
  306. logger.Error("func",
  307. zap.String("call", "pb.Garden.ParkSpaceAdd"),
  308. zap.String("params", s),
  309. zap.String("error", err.Error()))
  310. return errors.ErrorTransForm(err)
  311. }
  312. resp.Data = *rpcRsp
  313. ctx.JSON(http.StatusOK, resp)
  314. logReq := OperationLogRequest{
  315. Module:ModulePark,
  316. Action:ActionParkSpaceAdd,
  317. Origin:nil,
  318. Target:req.ParkSpaceAddBody,
  319. UserName:tokenInfo.UserName,
  320. Uid:tokenInfo.Uid,
  321. Cid:tokenInfo.Cid,
  322. GardenId:tokenInfo.GardenId,
  323. }
  324. go OperationLogAdd(&logReq)
  325. return nil
  326. }
  327. // 执行任务
  328. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  329. }
  330. //
  331. // @Summary 更改停车位
  332. // @Description 更改停车位
  333. // @Tags 停车位
  334. // @Accept json
  335. // @Produce json
  336. // @Param token header string true "token"
  337. // @Param body body v1.ParkSpaceUpdateBody true "信息"
  338. // @Success 200 {object} v1.ParkSpaceUpdateResponse
  339. // @Failure 500 {object} base.HTTPError
  340. // @Router /api/v1/park/space [put]
  341. func (c *Controller) ParkSpaceUpdate(ctx *gin.Context) {
  342. // 解析参数
  343. req := &param_v1.ParkSpaceUpdateRequest{}
  344. parseParamTask := func() error {
  345. err := util.ShouldBind(ctx, &req.Header, nil, nil, &req.ParkSpaceUpdateBody)
  346. if err != nil {
  347. logger.Error("func",
  348. zap.String("call", "util.ShouldBind"),
  349. zap.String("error", err.Error()))
  350. return errors.ParamsError
  351. }
  352. return nil
  353. }
  354. // 业务处理
  355. handleServiceTask := func() error {
  356. tokenInfo, err := utils.GetSubjectValue(ctx)
  357. if err != nil {
  358. return err
  359. }
  360. // 响应数据
  361. resp := param_v1.ParkSpaceUpdateResponse{}
  362. rpcReq := &v1.ParkSpaceUpdateRequest{
  363. GardenId:tokenInfo.GardenId,
  364. Comment:req.Comment,
  365. Id:req.Id,
  366. ParkId: req.ParkId,
  367. SpaceArea:req.SpaceArea,
  368. SpaceType:req.SpaceType,
  369. SpaceNumber:req.SpaceNumber,
  370. HouseId:req.HouseId,
  371. }
  372. rpcRsp, err := pb.Garden.ParkSpaceUpdate(ctx, rpcReq)
  373. if err != nil {
  374. s, _ := json.MarshalToString(req)
  375. logger.Error("func",
  376. zap.String("call", "pb.Garden.ParkSpaceUpdate"),
  377. zap.String("params", s),
  378. zap.String("error", err.Error()))
  379. return errors.ErrorTransForm(err)
  380. }
  381. ctx.JSON(http.StatusOK, resp)
  382. logReq := OperationLogRequest{
  383. Module:ModulePark,
  384. Action:ActionParkSpaceUpdate,
  385. Origin:rpcRsp.Origin,
  386. Target:req.ParkSpaceUpdateBody,
  387. UserName:tokenInfo.UserName,
  388. Uid:tokenInfo.Uid,
  389. Cid:tokenInfo.Cid,
  390. GardenId:tokenInfo.GardenId,
  391. }
  392. go OperationLogAdd(&logReq)
  393. return nil
  394. }
  395. // 执行任务
  396. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  397. }
  398. //
  399. // @Summary 删除停车位
  400. // @Description 删除停车位
  401. // @Tags 停车位
  402. // @Accept json
  403. // @Produce json
  404. // @Param token header string true "token"
  405. // @Param id query int true "id"
  406. // @Success 200 {object} v1.ParkSpaceDelResponse
  407. // @Failure 500 {object} base.HTTPError
  408. // @Router /api/v1/park/space [delete]
  409. func (c *Controller) ParkSpaceDel(ctx *gin.Context) {
  410. // 解析参数
  411. req := &param_v1.ParkSpaceDelRequest{}
  412. parseParamTask := func() error {
  413. err := util.ShouldBind(ctx, &req.Header, nil, &req.ParkSpaceDelQuery, nil)
  414. if err != nil {
  415. logger.Error("func",
  416. zap.String("call", "util.ShouldBind"),
  417. zap.String("error", err.Error()))
  418. return errors.ParamsError
  419. }
  420. return nil
  421. }
  422. // 业务处理
  423. handleServiceTask := func() error {
  424. tokenInfo, err := utils.GetSubjectValue(ctx)
  425. if err != nil {
  426. return err
  427. }
  428. // 响应数据
  429. resp := param_v1.ParkSpaceDelResponse{}
  430. rpcReq := &v1.ParkSpaceDelRequest{
  431. GardenId:tokenInfo.GardenId,
  432. Id:req.Id,
  433. }
  434. rpcRsp, err := pb.Garden.ParkSpaceDel(ctx, rpcReq)
  435. if err != nil {
  436. s, _ := json.MarshalToString(req)
  437. logger.Error("func",
  438. zap.String("call", "pb.Garden.ParkSpaceDel"),
  439. zap.String("params", s),
  440. zap.String("error", err.Error()))
  441. return errors.ErrorTransForm(err)
  442. }
  443. ctx.JSON(http.StatusOK, resp)
  444. logReq := OperationLogRequest{
  445. Module:ModulePark,
  446. Action:ActionParkSpaceDel,
  447. Origin:rpcRsp.Origin,
  448. Target:nil,
  449. UserName:tokenInfo.UserName,
  450. Uid:tokenInfo.Uid,
  451. Cid:tokenInfo.Cid,
  452. GardenId:tokenInfo.GardenId,
  453. }
  454. go OperationLogAdd(&logReq)
  455. return nil
  456. }
  457. // 执行任务
  458. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  459. }
  460. //
  461. // @Summary 停车位列表
  462. // @Description 停车位列表
  463. // @Tags 停车位
  464. // @Accept json
  465. // @Produce json
  466. // @Param token header string true "token"
  467. // @Param page query int false " "
  468. // @Param page_size query int false " "
  469. // @Param space_number query string false "车位编号 "
  470. // @Param park_id query int false "停车场id "
  471. // @Param space_type query int false "车位类型 1 普通车位 2 子母车位 3 豪华车位 "
  472. // @Param household_uid query int false "业主uid"
  473. // @Param bind_type query int false "车辆的绑定类型"
  474. // @Param bind_space_id query int false "车辆已绑定的车位id"
  475. // @Success 200 {object} v1.ParkSpaceListResponse
  476. // @Failure 500 {object} base.HTTPError
  477. // @Router /api/v1/park/space [get]
  478. func (c *Controller) ParkSpaceList(ctx *gin.Context) {
  479. // 解析参数
  480. req := &param_v1.ParkSpaceListRequest{}
  481. parseParamTask := func() error {
  482. err := util.ShouldBind(ctx, &req.Header, nil, &req.ParkSpaceListQuery, nil)
  483. if err != nil {
  484. logger.Error("func",
  485. zap.String("call", "util.ShouldBind"),
  486. zap.String("error", err.Error()))
  487. return errors.ParamsError
  488. }
  489. return nil
  490. }
  491. // 业务处理
  492. handleServiceTask := func() error {
  493. tokenInfo, err := utils.GetSubjectValue(ctx)
  494. if err != nil {
  495. return err
  496. }
  497. // 响应数据
  498. resp := param_v1.ParkSpaceListResponse{}
  499. rpcReq := &v1.ParkSpaceListRequest{
  500. GardenId:tokenInfo.GardenId,
  501. Page:req.Page,
  502. PageSize:req.PageSize,
  503. ParkId:req.ParkId,
  504. SpaceNumber:req.SpaceNumber,
  505. SpaceType:req.SpaceType,
  506. HouseholdUid:req.HouseholdUid,
  507. BindType:req.BindType,
  508. BindSpaceId:req.BindSpaceId,
  509. }
  510. rpcRsp, err := pb.Garden.ParkSpaceList(ctx, rpcReq)
  511. if err != nil {
  512. s, _ := json.MarshalToString(req)
  513. logger.Error("func",
  514. zap.String("call", "pb.Garden.ParkSpaceList"),
  515. zap.String("params", s),
  516. zap.String("error", err.Error()))
  517. return errors.ErrorTransForm(err)
  518. }
  519. if rpcRsp.List == nil {
  520. rpcRsp.List = make([]*v1.ParkSpaceItem, 0)
  521. }
  522. resp.Data = *rpcRsp
  523. ctx.JSON(http.StatusOK, resp)
  524. return nil
  525. }
  526. // 执行任务
  527. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  528. }