PageDataApiController.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.cdf.controller.api;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.cdf.common.ResultCode;
  6. import com.cdf.common.ResultData;
  7. import com.cdf.entity.PageData;
  8. import com.cdf.entity.TotalData;
  9. import com.cdf.exception.BusinessException;
  10. import com.cdf.httpClient.client.CdfClient;
  11. import com.cdf.httpClient.request.CdfChannelclick;
  12. import com.cdf.service.IPageDataService;
  13. import com.cdf.service.ITotalDataService;
  14. import com.cdf.util.DateUtil;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.*;
  18. import javax.annotation.Resource;
  19. import javax.naming.ldap.PagedResultsControl;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.xml.transform.Result;
  22. import java.sql.Time;
  23. import java.util.ArrayList;
  24. import java.util.Date;
  25. import java.util.List;
  26. import java.util.stream.Collectors;
  27. @RestController
  28. @RequestMapping("/api")
  29. public class PageDataApiController {
  30. @Autowired
  31. IPageDataService pageDataService;
  32. @Autowired
  33. ITotalDataService totalDataService;
  34. @Resource
  35. CdfClient cdfClient;
  36. @GetMapping("/point")
  37. public ResultData point(@RequestParam(required = false) String userId,
  38. @RequestParam(required = false) String AccessToken,
  39. @RequestParam(required = false) String cookieId,
  40. @RequestParam(required = false) String isMiniApp,
  41. @RequestParam(required = false) String whereUrl,
  42. @RequestParam(required = false) Integer type,
  43. @RequestParam(required = false) String productId,
  44. @RequestParam(required = false,defaultValue = "22") Integer deptId,
  45. HttpServletRequest request) throws Exception {
  46. LambdaQueryWrapper<PageData> wrapper = new LambdaQueryWrapper<>();
  47. wrapper.eq(PageData::getCdfCookieId,cookieId);
  48. wrapper.eq(PageData::getDay,DateUtil.getDay(new Date()));
  49. List<PageData> list = pageDataService.list(wrapper);
  50. PageData pageData;
  51. if(list.size() <=0){
  52. pageData = new PageData();
  53. pageData.setDeptId(deptId);
  54. pageData.setCdfUserId(userId);
  55. pageData.setCdfToken(AccessToken);
  56. pageData.setCdfCookieId(cookieId);
  57. pageData.setIsMiniApp(isMiniApp);
  58. pageData.setDay(DateUtil.getDay(new Date()));
  59. pageData.setUrl(whereUrl);
  60. }else {
  61. pageData = list.get(0);
  62. }
  63. pageData.setUrl(whereUrl);
  64. switch (type){
  65. case 0: //用戶打开页面
  66. pageData.setInPageTime(DateUtil.getDateTime(new Date()));
  67. break;
  68. case 1: //用戶离开页面
  69. if(pageData.getInPageTime() == null){
  70. pageData.setInPageTime(DateUtil.getFirstDay(new Date()));
  71. }
  72. pageData.setOutPageTime(DateUtil.getDateTime(new Date()));
  73. long time = DateUtil.getDateTime(pageData.getInPageTime());
  74. pageData.setStopTime(new Date().getTime() - time );
  75. break;
  76. case 2: //用戶点击寻宝游戏
  77. pageData.setIsClickGame(1);
  78. break;
  79. case 3: //用戶点击商品详情
  80. if(deptId == 22){
  81. sendCdf(productId,cookieId,AccessToken,userId);
  82. }
  83. pageData.setIsClickShop(1);
  84. break;
  85. case 4: //用戶点击場景点位
  86. pageData.setStepNum( pageData.getStepNum() + 1);
  87. break;
  88. case 5: //用戶点击真人视频
  89. pageData.setVideoNum( pageData.getVideoNum() + 1);
  90. break;
  91. case 6: //用戶点击收藏
  92. case 7: //加入购物车
  93. if(deptId == 22){
  94. sendCdf(productId,cookieId,AccessToken,userId);
  95. }
  96. return ResultData.ok();
  97. }
  98. pageData.setUpdateTime(null);
  99. pageDataService.saveOrUpdate(pageData);
  100. return ResultData.ok();
  101. }
  102. private void sendCdf(String productId,String cookieId,String accesstoken,String userId){
  103. if(StringUtils.isEmpty(productId)){
  104. return;
  105. }
  106. CdfChannelclick cdfChannelclick = new CdfChannelclick();
  107. cdfChannelclick.setProductId(productId);
  108. cdfClient.channelclick(cookieId,accesstoken,userId,cdfChannelclick);
  109. }
  110. @GetMapping("/pageData")
  111. public ResultData getPageData(@RequestParam(required = false) String day,
  112. @RequestParam(required = false,defaultValue = "0") Integer type,
  113. @RequestParam(required = false) String startDay,
  114. @RequestParam(required = false) String endDay) throws Exception {
  115. return ResultData.ok(totalDataService.getByType(type,day,startDay,endDay));
  116. }
  117. @GetMapping("/pageDataTime")
  118. public ResultData pageDataTime(@RequestParam(required = false) String startDay,
  119. @RequestParam(required = false) String endDay) {
  120. if(StringUtils.isEmpty(startDay) || StringUtils.isEmpty(endDay)){
  121. throw new BusinessException(ResultCode.PARAM_MISS);
  122. }
  123. return ResultData.ok(totalDataService.pageDataTime(startDay,endDay));
  124. }
  125. @PostMapping("/pageDataList")
  126. public ResultData pageDataList(@RequestBody JSONObject jsonObject) throws Exception {
  127. JSONArray jsonArray = jsonObject.getJSONArray("days");
  128. if(jsonArray == null || jsonArray.size() <=0){
  129. return ResultData.ok(new ArrayList<>());
  130. }
  131. List<String> days = new ArrayList(jsonArray);
  132. return ResultData.ok(totalDataService.getListByType(days));
  133. }
  134. }