OpenApiController.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package me.zhengjie.modules.thirdparty.v1;
  2. import com.alibaba.fastjson.JSONObject;
  3. import io.swagger.annotations.Api;
  4. import io.swagger.annotations.ApiOperation;
  5. import lombok.RequiredArgsConstructor;
  6. import me.zhengjie.annotation.AnonymousAccess;
  7. import me.zhengjie.annotation.Log;
  8. import me.zhengjie.annotation.rest.AnonymousGetMapping;
  9. import me.zhengjie.annotation.rest.AnonymousPostMapping;
  10. import me.zhengjie.base.BaseResponse;
  11. import me.zhengjie.base.QueryPageParams;
  12. import me.zhengjie.config.rabbitmq.test.SendTemplate;
  13. import me.zhengjie.domain.LocalStorage;
  14. import me.zhengjie.exception.BadRequestException;
  15. import me.zhengjie.modules.dm.daypc.domain.DmDayPc;
  16. import me.zhengjie.modules.dm.daypc.service.DmDayPcService;
  17. import me.zhengjie.modules.dm.daypc.service.dto.DmDayPcQueryCriteria;
  18. import me.zhengjie.modules.dm.foodCate.repository.DmFoodCateRepository;
  19. import me.zhengjie.modules.dm.foodPj.domain.DmFoodPj;
  20. import me.zhengjie.modules.dm.foodPj.service.DmFoodPjService;
  21. import me.zhengjie.modules.dm.order.domain.DmOrderItem;
  22. import me.zhengjie.modules.dm.order.domain.DmOrderRecord;
  23. import me.zhengjie.modules.dm.order.repository.DmOrderItemRepository;
  24. import me.zhengjie.modules.dm.order.repository.DmOrderRecordRepository;
  25. import me.zhengjie.modules.dm.service.domain.DmServicePj;
  26. import me.zhengjie.modules.dm.service.repository.DmServicePjRepository;
  27. import me.zhengjie.modules.dm.service.service.DmServicePjService;
  28. import me.zhengjie.modules.dmApp.domain.AppFoodPj;
  29. import me.zhengjie.modules.dmApp.service.AppFoodPjService;
  30. import me.zhengjie.modules.dmApp.service.dto.AppFoodPjDto;
  31. import me.zhengjie.service.LocalStorageService;
  32. import me.zhengjie.utils.FileUtil;
  33. import me.zhengjie.utils.SecurityUtils;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.data.domain.Pageable;
  36. import org.springframework.http.HttpStatus;
  37. import org.springframework.http.ResponseEntity;
  38. import org.springframework.validation.annotation.Validated;
  39. import org.springframework.web.bind.annotation.*;
  40. import org.springframework.web.multipart.MultipartFile;
  41. import java.math.BigDecimal;
  42. import java.util.HashMap;
  43. import java.util.List;
  44. import java.util.Map;
  45. @RestController
  46. @RequiredArgsConstructor
  47. @Api(tags = "用户接口")
  48. @RequestMapping("/api/thirdparty/v1/open")
  49. public class OpenApiController {
  50. private final DmDayPcService dmDayPcService;
  51. private final DmServicePjService dmServicePjService;
  52. private final AppFoodPjService appFoodPjService;
  53. private final DmFoodPjService dmFoodPjService;
  54. private final LocalStorageService localStorageService;
  55. private final DmOrderRecordRepository dmOrderRecordRepository;
  56. private final DmOrderItemRepository orderItemRepository;
  57. private final DmFoodCateRepository dmFoodCateRepository;
  58. private final DmServicePjRepository dmServicePjRepository;
  59. @Log("获取今日菜品-App")
  60. @ApiOperation("获取今日菜品-App")
  61. @AnonymousPostMapping(value = "/foodRepository")
  62. public BaseResponse<Object> foodRepository(@RequestBody QueryPageParams<DmDayPcQueryCriteria> criteria){
  63. SecurityUtils.CheckApiAuth(criteria);
  64. // dmDayPcService.foodRepository();
  65. return new BaseResponse<>(dmFoodCateRepository.foodApp());
  66. }
  67. @AnonymousPostMapping(value = "/createApp")
  68. @Log("新增服务评价")
  69. @ApiOperation("新增服务评价")
  70. public BaseResponse<Object> createApp(@RequestBody QueryPageParams<DmServicePj> resources){
  71. SecurityUtils.CheckApiAuth(resources);
  72. int count = dmServicePjService.servicePjApp(resources.getQuery().getUserCode());
  73. if (count >= 1){
  74. throw new BadRequestException("该用户已评价,今日不可评价!");
  75. }else {
  76. dmServicePjService.createApp(resources.getQuery());
  77. }
  78. return new BaseResponse<>(count);
  79. }
  80. @AnonymousPostMapping(value = "/appFoodPj")
  81. @Log("App菜品评价")
  82. @ApiOperation("App菜品评价")
  83. public BaseResponse<Object> appFoodPj(@RequestBody QueryPageParams<String> cardid) {
  84. SecurityUtils.CheckApiAuth(cardid);
  85. List<AppFoodPj> list = appFoodPjService.selectAppFoodPj(cardid.getQuery());
  86. return new BaseResponse<>(list);
  87. }
  88. @AnonymousPostMapping(value = "/createFoodPj")
  89. @Log("新增菜品评价")
  90. @ApiOperation("新增菜品评价")
  91. public BaseResponse<Object> createFoodPj(@RequestBody QueryPageParams<DmFoodPj> resources){
  92. SecurityUtils.CheckApiAuth(resources);
  93. return new BaseResponse<>(dmFoodPjService.createApp(resources.getQuery()));
  94. }
  95. @AnonymousPostMapping(value = "/pictures")
  96. @Log("上传图片")
  97. @ApiOperation("上传图片")
  98. public BaseResponse<Object> upload(@RequestParam String timestamp, @RequestParam String nonce, @RequestParam String name, @RequestParam("file") MultipartFile file){
  99. QueryPageParams params = new QueryPageParams();
  100. params.setNonce(nonce);
  101. params.setTimestamp(timestamp);
  102. SecurityUtils.CheckApiAuth(params);
  103. // 判断文件是否为图片
  104. String suffix = FileUtil.getExtensionName(file.getOriginalFilename());
  105. if(!FileUtil.IMAGE.equals(FileUtil.getFileType(suffix))){
  106. throw new BadRequestException("只能上传图片");
  107. }
  108. LocalStorage localStorage = localStorageService.create(name, file);
  109. return new BaseResponse<>(localStorage);
  110. }
  111. @AnonymousAccess
  112. @GetMapping(value = "/countOrderAmt")
  113. @Log("pc端运营食堂营业额")
  114. @ApiOperation("pc端运营食堂营业额")
  115. public ResponseEntity<Object> countOrderAmt(){
  116. return new ResponseEntity<>(dmOrderRecordRepository.countOrderAmt(),HttpStatus.OK);
  117. }
  118. @AnonymousAccess
  119. @GetMapping(value = "/hyFood")
  120. @Log("pc端运营最受欢迎菜品")
  121. @ApiOperation("pc端运营最受欢迎菜品")
  122. public ResponseEntity<Object> hyFood(){
  123. return new ResponseEntity<>(orderItemRepository.hyFood(),HttpStatus.OK);
  124. }
  125. @AnonymousPostMapping(value = "/countOrderAmtApp")
  126. @Log("App端运营食堂营业额")
  127. @ApiOperation("App端运营食堂营业额")
  128. public BaseResponse<Object> countOrderAmtApp(@RequestBody QueryPageParams<DmOrderRecord> criteria){
  129. SecurityUtils.CheckApiAuth(criteria);
  130. return new BaseResponse<>(dmOrderRecordRepository.countOrderAmt());
  131. }
  132. @AnonymousPostMapping(value = "/hyFoodApp")
  133. @Log("App端运营最受欢迎菜品")
  134. @ApiOperation("App端运营最受欢迎菜品")
  135. public BaseResponse<Object> hyFoodApp(@RequestBody QueryPageParams<DmOrderItem> criteria){
  136. SecurityUtils.CheckApiAuth(criteria);
  137. return new BaseResponse<>(orderItemRepository.hyFood());
  138. }
  139. @AnonymousPostMapping(value = "/enableApp")
  140. @Log("pc端控制整体评价是否可见")
  141. @ApiOperation("pc端控制整体评价是否可见")
  142. public BaseResponse<Object> enableApp(@RequestBody QueryPageParams<DmOrderItem> criteria){
  143. SecurityUtils.CheckApiAuth(criteria);
  144. return new BaseResponse<>(dmServicePjService.enableApp());
  145. }
  146. @AnonymousPostMapping(value = "/findDmServicePjByUserCodeAndPjTime")
  147. @Log("用户服务评价详情")
  148. @ApiOperation("用户服务评价详情")
  149. public BaseResponse<Object> findDmServicePjByUserCodeAndPjTime(@RequestBody QueryPageParams<DmServicePj> criteria){
  150. SecurityUtils.CheckApiAuth(criteria);
  151. return new BaseResponse<>(dmServicePjService.getDmServicePjByUserCodeAndPjTime(criteria.getQuery().getUserCode()));
  152. }
  153. @AnonymousPostMapping(value = "/AppCountData")
  154. @Log("统计数据")
  155. @ApiOperation("App端统计数据")
  156. public BaseResponse<Object> appCountData(@RequestBody QueryPageParams<String> criteria){
  157. SecurityUtils.CheckApiAuth(criteria);
  158. /**
  159. * 查询今日购餐总额(元)
  160. */
  161. BigDecimal bigDecimal = dmOrderRecordRepository.countOrderAmtByNow();
  162. /**
  163. * 查询今日用餐人数(人次)
  164. */
  165. Integer person = dmOrderRecordRepository.countOrderPersonByNow();
  166. /**
  167. * 查询服务评价
  168. */
  169. List<DmServicePj> dmServicePjContentByNow = dmServicePjRepository.getDmServicePjContentByNow();
  170. /**
  171. * 统计综合服务评分
  172. */
  173. Map<String, Object> dmServicePjByNow = dmServicePjRepository.getDmServicePjByNow();
  174. dmServicePjByNow.put("dmServicePjContentByNow",dmServicePjContentByNow);
  175. dmServicePjByNow.put("person",person);
  176. dmServicePjByNow.put("money",bigDecimal.toString());
  177. return new BaseResponse<>(dmServicePjByNow);
  178. }
  179. @AnonymousPostMapping(value = "/AppDayFoodData")
  180. @Log("今日菜品清单")
  181. @ApiOperation("App今日菜品清单")
  182. public BaseResponse<Object> AppDayFoodData(@RequestBody QueryPageParams<String> criteria){
  183. SecurityUtils.CheckApiAuth(criteria);
  184. /**
  185. * 查询今日菜品清单
  186. * data { 菜品名称,菜品单价,供应数量 }
  187. */
  188. List<Map<String, Object>> maps = dmFoodCateRepository.foodApp();
  189. /**
  190. * 声明一个json对象用来存储菜品统计信息
  191. */
  192. JSONObject jsonObject = new JSONObject();
  193. /**
  194. * 使用forEach之后 里面的变量必须要用原子类
  195. */
  196. maps.forEach(item->{
  197. // item.get("")
  198. });
  199. return new BaseResponse<>(maps);
  200. }
  201. }