WeProductController.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.linkwechat.controller;
  2. import com.google.protobuf.ServiceException;
  3. import com.linkwechat.common.annotation.Log;
  4. import com.linkwechat.common.core.controller.BaseController;
  5. import com.linkwechat.common.core.domain.AjaxResult;
  6. import com.linkwechat.common.core.page.TableDataInfo;
  7. import com.linkwechat.common.enums.BusinessType;
  8. import com.linkwechat.domain.product.product.query.WeAddProductQuery;
  9. import com.linkwechat.domain.product.product.query.WeProductLineChartQuery;
  10. import com.linkwechat.domain.product.product.query.WeProductQuery;
  11. import com.linkwechat.domain.product.product.vo.WeProductListVo;
  12. import com.linkwechat.domain.product.product.vo.WeProductStatisticsVo;
  13. import com.linkwechat.domain.product.product.vo.WeProductVo;
  14. import com.linkwechat.domain.product.product.vo.WeUserOrderTop5Vo;
  15. import com.linkwechat.service.IWeProductService;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.validation.annotation.Validated;
  20. import org.springframework.web.bind.annotation.*;
  21. import java.math.BigDecimal;
  22. import java.util.List;
  23. import java.util.Map;
  24. /**
  25. * @author danmo
  26. * @description 商品图册管理
  27. * @date 2022/9/12 18:22
  28. **/
  29. @RestController
  30. @RequestMapping(value = "product")
  31. @Api(tags = "商品图册管理")
  32. public class WeProductController extends BaseController {
  33. @Autowired
  34. private IWeProductService weProductService;
  35. @ApiOperation(value = "新增商品", httpMethod = "POST")
  36. @Log(title = "新增商品", businessType = BusinessType.INSERT)
  37. @PostMapping("/add")
  38. public AjaxResult addProduct(@RequestBody @Validated WeAddProductQuery query) throws ServiceException {
  39. weProductService.addProduct(query);
  40. return AjaxResult.success();
  41. }
  42. @ApiOperation(value = "修改商品", httpMethod = "PUT")
  43. @Log(title = "修改商品", businessType = BusinessType.UPDATE)
  44. @PutMapping("/update/{id}")
  45. public AjaxResult updateProduct(@PathVariable("id") Long id, @RequestBody @Validated WeAddProductQuery query) throws ServiceException {
  46. weProductService.updateProduct(id, query);
  47. return AjaxResult.success();
  48. }
  49. @ApiOperation(value = "删除商品", httpMethod = "DELETE")
  50. @Log(title = "删除商品", businessType = BusinessType.UPDATE)
  51. @DeleteMapping("/delete/{ids}")
  52. public AjaxResult delProduct(@PathVariable("ids") List<Long> ids) {
  53. weProductService.delProduct(ids);
  54. return AjaxResult.success();
  55. }
  56. @ApiOperation(value = "商品详情", httpMethod = "GET")
  57. @Log(title = "商品详情", businessType = BusinessType.SELECT)
  58. @GetMapping("/get/{id}")
  59. public AjaxResult<WeProductVo> getProduct(@PathVariable("id") Long id) {
  60. WeProductVo product = weProductService.getProduct(id);
  61. return AjaxResult.success(product);
  62. }
  63. @ApiOperation(value = "商品列表", httpMethod = "GET")
  64. @Log(title = "商品列表", businessType = BusinessType.SELECT)
  65. @GetMapping("/page/list")
  66. public TableDataInfo<WeProductListVo> productPageList(WeProductQuery query) {
  67. startPage();
  68. List<WeProductListVo> list = weProductService.productList(query);
  69. list.forEach(o -> {
  70. o.setPrice(new BigDecimal(o.getPrice()).divide(BigDecimal.valueOf(100L)).toString());
  71. if (!o.getOrderTotalAmount().equals("0.0")) {
  72. BigDecimal bigDecimal = new BigDecimal(o.getOrderTotalAmount());
  73. bigDecimal = bigDecimal.divide(BigDecimal.valueOf(100L)).setScale(2, BigDecimal.ROUND_HALF_UP);
  74. o.setOrderTotalAmount(bigDecimal.toString());
  75. }
  76. });
  77. return getDataTable(list);
  78. }
  79. @ApiOperation(value = "商品列表同步", httpMethod = "GET")
  80. @Log(title = "商品列表同步", businessType = BusinessType.OTHER)
  81. @GetMapping("/list/sync")
  82. public AjaxResult syncProductList() {
  83. weProductService.syncProductList();
  84. return AjaxResult.success();
  85. }
  86. @ApiOperation(value = "商品详情统计", httpMethod = "GET")
  87. @Log(title = "商品详情统计", businessType = BusinessType.SELECT)
  88. @GetMapping("/statistics/{id}")
  89. public AjaxResult statistics(@PathVariable("id") Long id) {
  90. WeProductStatisticsVo statistics = weProductService.statistics(id);
  91. return AjaxResult.success(statistics);
  92. }
  93. @ApiOperation(value = "商品详情折线图", httpMethod = "POST")
  94. @Log(title = "商品详情折线图", businessType = BusinessType.SELECT)
  95. @PostMapping("/lineChart")
  96. public AjaxResult lineChart(@RequestBody WeProductLineChartQuery query) {
  97. Map<String, Object> map = weProductService.lineChart(query);
  98. return AjaxResult.success(map);
  99. }
  100. @ApiOperation(value = "员工订单Top5", httpMethod = "GET")
  101. @Log(title = "员工订单Top5", businessType = BusinessType.SELECT)
  102. @GetMapping("/top5/{id}")
  103. public AjaxResult<List<WeUserOrderTop5Vo>> top5(@PathVariable("id") Long id) {
  104. List<WeUserOrderTop5Vo> weUserOrderTop5Vos = weProductService.userOrderTop5(id);
  105. return AjaxResult.success(weUserOrderTop5Vos);
  106. }
  107. }