Commit 3b86b71b by 田超

Merge branch 'feature/1004185' into 'master'

feat: [1004185] banner统计

See merge request rays/pcloud-book!1172
parents 0b8ac8f4 83e94922
...@@ -119,4 +119,9 @@ public interface AppletService { ...@@ -119,4 +119,9 @@ public interface AppletService {
@ApiOperation("停止更新 applet_record.type_code 旧数据") @ApiOperation("停止更新 applet_record.type_code 旧数据")
@GetMapping("stopHandleAppletRecordTypeCode") @GetMapping("stopHandleAppletRecordTypeCode")
void stopHandleAppletRecordTypeCode(); void stopHandleAppletRecordTypeCode();
@ApiOperation("定时任务更新banner上下架状态")
@GetMapping("autoChageBannerState")
void autoChageBannerState(@RequestParam("id") Long id,
@RequestParam("showState") Integer showState);
} }
...@@ -400,4 +400,9 @@ public class BookConstant { ...@@ -400,4 +400,9 @@ public class BookConstant {
public static final String wxOfficialAccountUrl = "http://m-qun.umeng100.com/uqun/growth/luopan/client/business/operationData/wxOfficialAccountUrl/list.ajax"; public static final String wxOfficialAccountUrl = "http://m-qun.umeng100.com/uqun/growth/luopan/client/business/operationData/wxOfficialAccountUrl/list.ajax";
public static final Long visitorWechatUserId = 86045917L; public static final Long visitorWechatUserId = 86045917L;
public static final String JOB_NAME_BANNER_PUT_ON = "BannerAutoPutOn";
public static final String JOB_NAME_BANNER_PUT_OFF = "BannerAutoPutOff";
} }
package com.pcloud.book.applet.biz; package com.pcloud.book.applet.biz;
import com.pcloud.book.applet.dto.AppletBannerDTO; import com.pcloud.book.applet.dto.AppletBannerDTO;
import com.pcloud.book.applet.dto.AppletBannerTrendDTO;
import com.pcloud.book.applet.entity.AppletBanner; import com.pcloud.book.applet.entity.AppletBanner;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import java.text.ParseException;
import java.util.List;
/** /**
* 小程序banner * 小程序banner
*/ */
...@@ -52,4 +56,23 @@ public interface AppletBannerBiz { ...@@ -52,4 +56,23 @@ public interface AppletBannerBiz {
PageBeanNew<AppletBannerDTO> listBanner4Wechat(Integer currentPage, Integer numPerPage, Boolean showState, Long officialAccountsId, Long wechatUserId); PageBeanNew<AppletBannerDTO> listBanner4Wechat(Integer currentPage, Integer numPerPage, Boolean showState, Long officialAccountsId, Long wechatUserId);
void bannerClickRecord(Long wechatUserId, Long bannerId); void bannerClickRecord(Long wechatUserId, Long bannerId);
/**
*
* @param
* @param currentPage
* @param numPerPage
* @param agentId
* @param inHour
* @param id
* @return
*/
List<AppletBannerTrendDTO> getBannerRecordTrend(String currentPage, String numPerPage, Long agentId, Boolean inHour, Long id) throws ParseException;
/**
* 定时任务更新banner上下架状态
* @param id
* @param showState
*/
void autoChageBannerState(Long id, Integer showState);
} }
...@@ -128,38 +128,39 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -128,38 +128,39 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
@Override @Override
@ParamLog("新增足迹埋点") @ParamLog("新增足迹埋点")
@Transactional(rollbackFor = Exception.class)
public Long insert(AppletRecord appletRecord) { public Long insert(AppletRecord appletRecord) {
insertCheck(appletRecord); ThreadPoolUtils.APPLET_RECORD.execute(()-> {
AppletRecordDTO appletRecordDTO = new AppletRecordDTO(); insertCheck(appletRecord);
BeanUtils.copyProperties(appletRecord, appletRecordDTO); AppletRecordDTO appletRecordDTO = new AppletRecordDTO();
fillTypeCode(Lists.newArrayList(appletRecordDTO)); BeanUtils.copyProperties(appletRecord, appletRecordDTO);
BeanUtils.copyProperties(appletRecordDTO, appletRecord); fillTypeCode(Lists.newArrayList(appletRecordDTO));
appletRecordDao.insert(appletRecord); BeanUtils.copyProperties(appletRecordDTO, appletRecord);
//判断日表是否有数据 appletRecordDao.insert(appletRecord);
AppletRecordDayServe appletRecordDayServe = new AppletRecordDayServe(); //判断日表是否有数据
BeanUtils.copyProperties(appletRecord, appletRecordDayServe); AppletRecordDayServe appletRecordDayServe = new AppletRecordDayServe();
AppletRecordServe appletRecordServe = new AppletRecordServe(); BeanUtils.copyProperties(appletRecord, appletRecordDayServe);
BeanUtils.copyProperties(appletRecord, appletRecordServe); AppletRecordServe appletRecordServe = new AppletRecordServe();
AppletRecordDayServe appletRecordDayServe4Data = appletRecordDayServeDao.getByTypeAndServeId(appletRecord.getWechatUserId(), appletRecord.getRecordType(), appletRecord.getFromId(), DateUtil.today()); BeanUtils.copyProperties(appletRecord, appletRecordServe);
if (null != appletRecordDayServe4Data) { AppletRecordDayServe appletRecordDayServe4Data = appletRecordDayServeDao.getByTypeAndServeId(appletRecord.getWechatUserId(), appletRecord.getRecordType(), appletRecord.getFromId(), DateUtil.today());
//更新 if (null != appletRecordDayServe4Data) {
appletRecordDayServe.setId(appletRecordDayServe4Data.getId()); //更新
appletRecordDayServeDao.update(appletRecordDayServe); appletRecordDayServe.setId(appletRecordDayServe4Data.getId());
}else { appletRecordDayServeDao.update(appletRecordDayServe);
//新增 } else {
appletRecordDayServeDao.insert(appletRecordDayServe); //新增
} appletRecordDayServeDao.insert(appletRecordDayServe);
//判断总表是否有数据 }
AppletRecordServe appletRecordServe4Data = appletRecordServeDao.getByTypeAndServeId(appletRecord.getWechatUserId(), appletRecord.getRecordType(), appletRecord.getFromId()); //判断总表是否有数据
if (null != appletRecordServe4Data) { AppletRecordServe appletRecordServe4Data = appletRecordServeDao.getByTypeAndServeId(appletRecord.getWechatUserId(), appletRecord.getRecordType(), appletRecord.getFromId());
//更新 if (null != appletRecordServe4Data) {
appletRecordServe.setId(appletRecordServe4Data.getId()); //更新
appletRecordServeDao.update(appletRecordServe); appletRecordServe.setId(appletRecordServe4Data.getId());
}else { appletRecordServeDao.update(appletRecordServe);
//新增 } else {
appletRecordServeDao.insert(appletRecordServe); //新增
} appletRecordServeDao.insert(appletRecordServe);
}
});
return appletRecord.getId(); return appletRecord.getId();
} }
......
...@@ -226,9 +226,9 @@ public class AppletUserBookcaseBizImpl implements AppletUserBookcaseBiz { ...@@ -226,9 +226,9 @@ public class AppletUserBookcaseBizImpl implements AppletUserBookcaseBiz {
if (ListUtils.isEmpty(pageBeanNew.getRecordList())) { if (ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage, numPerPage, pageBeanNew.getTotalCount(), new ArrayList<>()); return new PageBeanNew<>(currentPage, numPerPage, pageBeanNew.getTotalCount(), new ArrayList<>());
} }
fillTempletName(pageBeanNew.getRecordList()); //fillTempletName(pageBeanNew.getRecordList());
fillLabelNames(pageBeanNew.getRecordList()); fillLabelNames(pageBeanNew.getRecordList());
fillRightsSettingAndResourceCount(pageBeanNew.getRecordList()); //fillRightsSettingAndResourceCount(pageBeanNew.getRecordList());
JedisClusterUtils.hset2Json(key, field, pageBeanNew.getRecordList()); JedisClusterUtils.hset2Json(key, field, pageBeanNew.getRecordList());
JedisClusterUtils.set(countKey, String.valueOf(pageBeanNew.getTotalCount())); JedisClusterUtils.set(countKey, String.valueOf(pageBeanNew.getTotalCount()));
JedisClusterUtils.expire(key, 60); JedisClusterUtils.expire(key, 60);
......
package com.pcloud.book.applet.dao; package com.pcloud.book.applet.dao;
import com.pcloud.book.applet.dto.AppletBannerTrendDTO;
import com.pcloud.book.applet.entity.AppletBanner; import com.pcloud.book.applet.entity.AppletBanner;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface AppletBannerDao extends BaseDao<AppletBanner> { public interface AppletBannerDao extends BaseDao<AppletBanner> {
/** /**
...@@ -10,4 +13,8 @@ public interface AppletBannerDao extends BaseDao<AppletBanner> { ...@@ -10,4 +13,8 @@ public interface AppletBannerDao extends BaseDao<AppletBanner> {
* @return * @return
*/ */
Integer getMaxSeq(Long agentId); Integer getMaxSeq(Long agentId);
List<AppletBannerTrendDTO> getBannerRecordTrendByHour(String createDate);
List<AppletBannerTrendDTO> getSendMessageTrendByDay(String startDate, String endDate);
} }
package com.pcloud.book.applet.dao.impl; package com.pcloud.book.applet.dao.impl;
import com.pcloud.book.applet.dao.AppletBannerDao; import com.pcloud.book.applet.dao.AppletBannerDao;
import com.pcloud.book.applet.dto.AppletBannerTrendDTO;
import com.pcloud.book.applet.entity.AppletBanner; import com.pcloud.book.applet.entity.AppletBanner;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
@Component @Component
...@@ -17,4 +19,17 @@ public class AppletBannerDaoImpl extends BaseDaoImpl<AppletBanner> implements Ap ...@@ -17,4 +19,17 @@ public class AppletBannerDaoImpl extends BaseDaoImpl<AppletBanner> implements Ap
map.put("agentId", agentId); map.put("agentId", agentId);
return getSessionTemplate().selectOne(getStatement("getMaxSeq"), map); return getSessionTemplate().selectOne(getStatement("getMaxSeq"), map);
} }
@Override
public List<AppletBannerTrendDTO> getBannerRecordTrendByHour(String createDate) {
return getSessionTemplate().selectList(getStatement("getBannerRecordTrendByHour"), createDate);
}
@Override
public List<AppletBannerTrendDTO> getSendMessageTrendByDay(String startDate, String endDate) {
Map<String, String> paramMap = new HashMap<>();
paramMap.put("startDate",startDate);
paramMap.put("endDate",endDate);
return getSessionTemplate().selectList(getStatement("getSendMessageTrendByDay"), paramMap);
}
} }
package com.pcloud.book.applet.dto; package com.pcloud.book.applet.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto; import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@ApiModel("小程序banner") @ApiModel("小程序banner")
...@@ -46,4 +49,18 @@ public class AppletBannerDTO extends BaseDto { ...@@ -46,4 +49,18 @@ public class AppletBannerDTO extends BaseDto {
@ApiModelProperty("咨询具体信息") @ApiModelProperty("咨询具体信息")
private ServeItemInfoDTO appItem; private ServeItemInfoDTO appItem;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("上架时间")
private Date startTime;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("下架时间")
private Date endTime;
} }
package com.pcloud.book.applet.dto;
import lombok.Data;
@Data
public class AppletBannerTrendDTO {
/**
* 日期
*/
private String date;
/**
* 小时
*/
private Integer hour;
/**
* 消息量
*/
private Integer UV;
/**
* 消息量
*/
private Integer PV;
}
package com.pcloud.book.applet.entity; package com.pcloud.book.applet.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity; import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@ApiModel("小程序banner") @ApiModel("小程序banner")
...@@ -41,4 +44,23 @@ public class AppletBanner extends BaseEntity { ...@@ -41,4 +44,23 @@ public class AppletBanner extends BaseEntity {
@ApiModelProperty("作品/应用/咨询的类型") @ApiModelProperty("作品/应用/咨询的类型")
private Integer serveType; private Integer serveType;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("上架时间")
private Date startTime;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("下架时间")
private Date endTime;
@ApiModelProperty("更新banner是否涉及定时任务")
private Integer isTime;
} }
...@@ -58,4 +58,14 @@ public class AppletBannerRecord implements Serializable { ...@@ -58,4 +58,14 @@ public class AppletBannerRecord implements Serializable {
private Integer jumpType; private Integer jumpType;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 创建小时
*/
private Integer createHour;
/**
* 创建日期
*/
private String createDate;
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import com.pcloud.book.applet.biz.AppletUserBookcaseBiz; ...@@ -9,6 +9,7 @@ import com.pcloud.book.applet.biz.AppletUserBookcaseBiz;
import com.pcloud.book.applet.dto.AddBookParamDTO; import com.pcloud.book.applet.dto.AddBookParamDTO;
import com.pcloud.book.applet.dto.AnswerSubscribeDTO; import com.pcloud.book.applet.dto.AnswerSubscribeDTO;
import com.pcloud.book.applet.dto.AppletBannerDTO; import com.pcloud.book.applet.dto.AppletBannerDTO;
import com.pcloud.book.applet.dto.AppletBannerTrendDTO;
import com.pcloud.book.applet.dto.AppletBooklistClassifyDTO; import com.pcloud.book.applet.dto.AppletBooklistClassifyDTO;
import com.pcloud.book.applet.dto.AppletBooklistDTO; import com.pcloud.book.applet.dto.AppletBooklistDTO;
import com.pcloud.book.applet.dto.AppletNewsClassifyDTO; import com.pcloud.book.applet.dto.AppletNewsClassifyDTO;
...@@ -45,6 +46,7 @@ import com.pcloud.common.utils.SessionUtil; ...@@ -45,6 +46,7 @@ import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -61,6 +63,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -61,6 +63,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -324,6 +327,19 @@ public class AppletHomeFacade { ...@@ -324,6 +327,19 @@ public class AppletHomeFacade {
} }
@ApiOperation("banner列表") @ApiOperation("banner列表")
@GetMapping("getBannerRecordTrend")
public ResponseDto<List<AppletBannerTrendDTO>> getBannerRecordTrend(
@RequestHeader("token") String token,
@RequestParam("inHour") Boolean inHour,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "id", required = false) Long id) throws PermissionException, ParseException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long agentId = (Long) map.get(SessionUtil.RAY_AGENT_ID);
return new ResponseDto<>(appletBannerBiz.getBannerRecordTrend(startDate, endDate, agentId, inHour,id));
}
@ApiOperation("banner列表")
@GetMapping("listBanner") @GetMapping("listBanner")
public ResponseDto<PageBeanNew<AppletBannerDTO>> listBanner( public ResponseDto<PageBeanNew<AppletBannerDTO>> listBanner(
@RequestHeader("token") String token, @RequestHeader("token") String token,
......
package com.pcloud.book.applet.mapper; package com.pcloud.book.applet.mapper;
import com.pcloud.book.applet.dto.AppletBannerStats; import com.pcloud.book.applet.dto.AppletBannerStats;
import com.pcloud.book.applet.dto.AppletBannerTrendDTO;
import com.pcloud.book.applet.entity.AppletBannerRecord; import com.pcloud.book.applet.entity.AppletBannerRecord;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -25,4 +26,7 @@ public interface AppletBannerRecordMapper { ...@@ -25,4 +26,7 @@ public interface AppletBannerRecordMapper {
List<AppletBannerStats> getBannerPVUV(@Param("bannerIds") List<Long> bannerIds); List<AppletBannerStats> getBannerPVUV(@Param("bannerIds") List<Long> bannerIds);
List<AppletBannerTrendDTO> getBannerRecordTrendByHour(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("id") Long id);
List<AppletBannerTrendDTO> getBannerRecordTrendByDay(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("id")Long id);
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.pcloud.book.applet.service.impl; ...@@ -2,6 +2,7 @@ package com.pcloud.book.applet.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.pcloud.book.applet.biz.AnswerSubscribeBiz; import com.pcloud.book.applet.biz.AnswerSubscribeBiz;
import com.pcloud.book.applet.biz.AppletBannerBiz;
import com.pcloud.book.applet.biz.AppletBooklistBiz; import com.pcloud.book.applet.biz.AppletBooklistBiz;
import com.pcloud.book.applet.biz.AppletBookClassifyBiz; import com.pcloud.book.applet.biz.AppletBookClassifyBiz;
import com.pcloud.book.applet.biz.AppletNewsBiz; import com.pcloud.book.applet.biz.AppletNewsBiz;
...@@ -78,6 +79,8 @@ public class AppletServiceImpl implements AppletService { ...@@ -78,6 +79,8 @@ public class AppletServiceImpl implements AppletService {
private AppletRecordBiz appletRecordBiz; private AppletRecordBiz appletRecordBiz;
@Autowired @Autowired
private AppletRecordAggrStatisBiz appletRecordAggrStatisBiz; private AppletRecordAggrStatisBiz appletRecordAggrStatisBiz;
@Autowired
private AppletBannerBiz appletBannerBiz;
@Override @Override
...@@ -213,4 +216,12 @@ public class AppletServiceImpl implements AppletService { ...@@ -213,4 +216,12 @@ public class AppletServiceImpl implements AppletService {
public void stopHandleAppletRecordTypeCode(){ public void stopHandleAppletRecordTypeCode(){
appletRecordBiz.stopHandleAppletRecordTypeCode(); appletRecordBiz.stopHandleAppletRecordTypeCode();
} }
@Override
@GetMapping("autoChageBannerState")
public void autoChageBannerState(@RequestParam("id") Long id,
@RequestParam("showState") Integer showState) {
appletBannerBiz.autoChageBannerState(id, showState);
}
} }
...@@ -64,4 +64,8 @@ public class ThreadPoolUtils { ...@@ -64,4 +64,8 @@ public class ThreadPoolUtils {
public static final ExecutorService RMALL_SIGN_IN = new ThreadPoolExecutor(8,8,0L, TimeUnit.SECONDS, public static final ExecutorService RMALL_SIGN_IN = new ThreadPoolExecutor(8,8,0L, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("rmall_sign_in-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy()); new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("rmall_sign_in-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy());
public static final ExecutorService APPLET_RECORD = new ThreadPoolExecutor(8,8,0L, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("applet_record-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy());
} }
...@@ -14,11 +14,13 @@ ...@@ -14,11 +14,13 @@
<result column="serve_id" jdbcType="BIGINT" property="serveId"/> <result column="serve_id" jdbcType="BIGINT" property="serveId"/>
<result column="serve_type" jdbcType="TINYINT" property="serveType"/> <result column="serve_type" jdbcType="TINYINT" property="serveType"/>
<result column="fill_type" jdbcType="TINYINT" property="fillType"/> <result column="fill_type" jdbcType="TINYINT" property="fillType"/>
<result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
<result column="end_time" jdbcType="TIMESTAMP" property="endTime"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, banner_pic, jump_type, jump_url, seq, show_state, create_time, update_time, agent_id, id, banner_pic, jump_type, jump_url, seq, show_state, create_time, update_time, agent_id,
serve_id, serve_type, fill_type serve_id, serve_type, fill_type, start_time, end_time
</sql> </sql>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.applet.entity.AppletBanner" <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.applet.entity.AppletBanner"
...@@ -58,6 +60,12 @@ ...@@ -58,6 +60,12 @@
<if test="fillType != null"> <if test="fillType != null">
fill_type, fill_type,
</if> </if>
<if test="startTime != null">
start_time,
</if>
<if test="endTime != null">
end_time,
</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="bannerPic != null"> <if test="bannerPic != null">
...@@ -93,6 +101,12 @@ ...@@ -93,6 +101,12 @@
<if test="fillType != null"> <if test="fillType != null">
#{fillType,jdbcType=BOOLEAN}, #{fillType,jdbcType=BOOLEAN},
</if> </if>
<if test="startTime != null">
#{startTime},
</if>
<if test="endTime != null">
#{endTime},
</if>
</trim> </trim>
</insert> </insert>
...@@ -130,6 +144,12 @@ ...@@ -130,6 +144,12 @@
<if test="fillType != null"> <if test="fillType != null">
fill_type = #{fillType,jdbcType=BOOLEAN}, fill_type = #{fillType,jdbcType=BOOLEAN},
</if> </if>
<if test="startTime != null">
start_time = #{startTime},
</if>
<if test="endTime != null">
end_time = #{endTime},
</if>
</set> </set>
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
...@@ -177,5 +197,4 @@ ...@@ -177,5 +197,4 @@
SELECT IFNULL(MAX(seq),0) FROM applet_banner SELECT IFNULL(MAX(seq),0) FROM applet_banner
WHERE agent_id = #{agentId} WHERE agent_id = #{agentId}
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
useGeneratedKeys="true"> useGeneratedKeys="true">
insert into applet_banner_record (banner_id, create_time, update_time, insert into applet_banner_record (banner_id, create_time, update_time,
wechat_user_id, serve_id, serve_type, wechat_user_id, serve_id, serve_type,
jump_type) jump_type, create_hour, create_date)
values (#{bannerId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, values (#{bannerId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},
#{wechatUserId,jdbcType=BIGINT}, #{serveId,jdbcType=BIGINT}, #{serveType,jdbcType=TINYINT}, #{wechatUserId,jdbcType=BIGINT}, #{serveId,jdbcType=BIGINT}, #{serveType,jdbcType=TINYINT},
#{jumpType,jdbcType=BOOLEAN}) #{jumpType,jdbcType=BOOLEAN}, #{createHour}, #{createDate})
</insert> </insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" <insert id="insertSelective" keyColumn="id" keyProperty="id"
parameterType="com.pcloud.book.applet.entity.AppletBannerRecord" useGeneratedKeys="true"> parameterType="com.pcloud.book.applet.entity.AppletBannerRecord" useGeneratedKeys="true">
...@@ -136,4 +136,42 @@ ...@@ -136,4 +136,42 @@
GROUP BY GROUP BY
t.banner_id t.banner_id
</select> </select>
<select id="getBannerRecordTrendByHour" parameterType="string" resultType="com.pcloud.book.applet.dto.AppletBannerTrendDTO">
SELECT
create_hour hour ,
count(1) PV,
COUNT(DISTINCT wechat_user_id) UV
FROM
`applet_banner_record`
WHERE
create_time >= #{startTime}
AND
create_time &lt; #{endTime}
<if test="id != null">
and banner_id = #{id}
</if>
GROUP BY
create_hour
</select>
<select id="getBannerRecordTrendByDay" parameterType="map" resultType="com.pcloud.book.applet.dto.AppletBannerTrendDTO">
SELECT
create_date date ,
count(1) PV,
COUNT(DISTINCT wechat_user_id) UV
FROM
`applet_banner_record`
WHERE
create_time >= #{startDate}
AND create_time &lt;= #{endDate}
<if test="id != null">
and banner_id = #{id}
</if>
GROUP BY
create_date
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment