package com.cdf.controller.api; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cdf.common.ResultCode; import com.cdf.common.ResultData; import com.cdf.entity.PageData; import com.cdf.entity.TotalData; import com.cdf.exception.BusinessException; import com.cdf.httpClient.client.CdfClient; import com.cdf.httpClient.request.CdfChannelclick; import com.cdf.service.IPageDataService; import com.cdf.service.ITotalDataService; import com.cdf.util.DateUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.naming.ldap.PagedResultsControl; import javax.servlet.http.HttpServletRequest; import javax.xml.transform.Result; import java.sql.Time; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/api") public class PageDataApiController { @Autowired IPageDataService pageDataService; @Autowired ITotalDataService totalDataService; @Resource CdfClient cdfClient; @GetMapping("/point") public ResultData point(@RequestParam(required = false) String userId, @RequestParam(required = false) String AccessToken, @RequestParam(required = false) String cookieId, @RequestParam(required = false) String isMiniApp, @RequestParam(required = false) String whereUrl, @RequestParam(required = false) Integer type, @RequestParam(required = false) String productId, @RequestParam(required = false,defaultValue = "22") Integer deptId, HttpServletRequest request) throws Exception { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(PageData::getCdfCookieId,cookieId); wrapper.eq(PageData::getDay,DateUtil.getDay(new Date())); List list = pageDataService.list(wrapper); PageData pageData; if(list.size() <=0){ pageData = new PageData(); pageData.setDeptId(deptId); pageData.setCdfUserId(userId); pageData.setCdfToken(AccessToken); pageData.setCdfCookieId(cookieId); pageData.setIsMiniApp(isMiniApp); pageData.setDay(DateUtil.getDay(new Date())); pageData.setUrl(whereUrl); }else { pageData = list.get(0); } pageData.setUrl(whereUrl); switch (type){ case 0: //用戶打开页面 pageData.setInPageTime(DateUtil.getDateTime(new Date())); break; case 1: //用戶离开页面 if(pageData.getInPageTime() == null){ pageData.setInPageTime(DateUtil.getFirstDay(new Date())); } pageData.setOutPageTime(DateUtil.getDateTime(new Date())); long time = DateUtil.getDateTime(pageData.getInPageTime()); pageData.setStopTime(new Date().getTime() - time ); break; case 2: //用戶点击寻宝游戏 pageData.setIsClickGame(1); break; case 3: //用戶点击商品详情 if(deptId == 22){ sendCdf(productId,cookieId,AccessToken,userId); } pageData.setIsClickShop(1); break; case 4: //用戶点击場景点位 pageData.setStepNum( pageData.getStepNum() + 1); break; case 5: //用戶点击真人视频 pageData.setVideoNum( pageData.getVideoNum() + 1); break; case 6: //用戶点击收藏 case 7: //加入购物车 if(deptId == 22){ sendCdf(productId,cookieId,AccessToken,userId); } return ResultData.ok(); } pageData.setUpdateTime(null); pageDataService.saveOrUpdate(pageData); return ResultData.ok(); } private void sendCdf(String productId,String cookieId,String accesstoken,String userId){ if(StringUtils.isEmpty(productId)){ return; } CdfChannelclick cdfChannelclick = new CdfChannelclick(); cdfChannelclick.setProductId(productId); cdfClient.channelclick(cookieId,accesstoken,userId,cdfChannelclick); } @GetMapping("/pageData") public ResultData getPageData(@RequestParam(required = false) String day, @RequestParam(required = false,defaultValue = "0") Integer type, @RequestParam(required = false) String startDay, @RequestParam(required = false) String endDay) throws Exception { return ResultData.ok(totalDataService.getByType(type,day,startDay,endDay)); } @GetMapping("/pageDataTime") public ResultData pageDataTime(@RequestParam(required = false) String startDay, @RequestParam(required = false) String endDay) { if(StringUtils.isEmpty(startDay) || StringUtils.isEmpty(endDay)){ throw new BusinessException(ResultCode.PARAM_MISS); } return ResultData.ok(totalDataService.pageDataTime(startDay,endDay)); } @PostMapping("/pageDataList") public ResultData pageDataList(@RequestBody JSONObject jsonObject) throws Exception { JSONArray jsonArray = jsonObject.getJSONArray("days"); if(jsonArray == null || jsonArray.size() <=0){ return ResultData.ok(new ArrayList<>()); } List days = new ArrayList(jsonArray); return ResultData.ok(totalDataService.getListByType(days)); } }