Authored by zhengwen.ge

加两个日志表

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yoho.unions.dal.IUnionActivityLogsDAO" >
<resultMap id="BaseResultMap" type="com.yoho.unions.dal.model.UnionActivityLogs" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="app_id" property="appId" jdbcType="VARCHAR" />
<result column="udid" property="udid" jdbcType="VARCHAR" />
<result column="idfa" property="idfa" jdbcType="VARCHAR" />
<result column="imei" property="imei" jdbcType="VARCHAR" />
<result column="union_type" property="unionType" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="INTEGER" />
<result column="client_type" property="clientType" jdbcType="VARCHAR" />
<result column="td" property="td" jdbcType="VARCHAR" />
<result column="app_key" property="appKey" jdbcType="VARCHAR" />
<result column="client_ip" property="clientIp" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, app_id, udid, idfa, imei, union_type, create_time, client_type, td, app_key,
client_ip
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from union_activity_logs
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from union_activity_logs
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.yoho.unions.dal.model.UnionActivityLogs" >
insert into union_activity_logs (id, app_id, udid,
idfa, imei, union_type,
create_time, client_type, td,
app_key, client_ip)
values (#{id,jdbcType=INTEGER}, #{appId,jdbcType=VARCHAR}, #{udid,jdbcType=VARCHAR},
#{idfa,jdbcType=VARCHAR}, #{imei,jdbcType=VARCHAR}, #{unionType,jdbcType=VARCHAR},
#{createTime,jdbcType=INTEGER}, #{clientType,jdbcType=VARCHAR}, #{td,jdbcType=VARCHAR},
#{appKey,jdbcType=VARCHAR}, #{clientIp,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.yoho.unions.dal.model.UnionActivityLogs" >
insert into union_activity_logs
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="appId != null" >
app_id,
</if>
<if test="udid != null" >
udid,
</if>
<if test="idfa != null" >
idfa,
</if>
<if test="imei != null" >
imei,
</if>
<if test="unionType != null" >
union_type,
</if>
<if test="createTime != null" >
create_time,
</if>
<if test="clientType != null" >
client_type,
</if>
<if test="td != null" >
td,
</if>
<if test="appKey != null" >
app_key,
</if>
<if test="clientIp != null" >
client_ip,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="appId != null" >
#{appId,jdbcType=VARCHAR},
</if>
<if test="udid != null" >
#{udid,jdbcType=VARCHAR},
</if>
<if test="idfa != null" >
#{idfa,jdbcType=VARCHAR},
</if>
<if test="imei != null" >
#{imei,jdbcType=VARCHAR},
</if>
<if test="unionType != null" >
#{unionType,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
#{createTime,jdbcType=INTEGER},
</if>
<if test="clientType != null" >
#{clientType,jdbcType=VARCHAR},
</if>
<if test="td != null" >
#{td,jdbcType=VARCHAR},
</if>
<if test="appKey != null" >
#{appKey,jdbcType=VARCHAR},
</if>
<if test="clientIp != null" >
#{clientIp,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.yoho.unions.dal.model.UnionActivityLogs" >
update union_activity_logs
<set >
<if test="appId != null" >
app_id = #{appId,jdbcType=VARCHAR},
</if>
<if test="udid != null" >
udid = #{udid,jdbcType=VARCHAR},
</if>
<if test="idfa != null" >
idfa = #{idfa,jdbcType=VARCHAR},
</if>
<if test="imei != null" >
imei = #{imei,jdbcType=VARCHAR},
</if>
<if test="unionType != null" >
union_type = #{unionType,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
create_time = #{createTime,jdbcType=INTEGER},
</if>
<if test="clientType != null" >
client_type = #{clientType,jdbcType=VARCHAR},
</if>
<if test="td != null" >
td = #{td,jdbcType=VARCHAR},
</if>
<if test="appKey != null" >
app_key = #{appKey,jdbcType=VARCHAR},
</if>
<if test="clientIp != null" >
client_ip = #{clientIp,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.yoho.unions.dal.model.UnionActivityLogs" >
update union_activity_logs
set app_id = #{appId,jdbcType=VARCHAR},
udid = #{udid,jdbcType=VARCHAR},
idfa = #{idfa,jdbcType=VARCHAR},
imei = #{imei,jdbcType=VARCHAR},
union_type = #{unionType,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=INTEGER},
client_type = #{clientType,jdbcType=VARCHAR},
td = #{td,jdbcType=VARCHAR},
app_key = #{appKey,jdbcType=VARCHAR},
client_ip = #{clientIp,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
... ...
... ... @@ -5,10 +5,15 @@ package com.yoho.unions.server.service.impl;
import java.net.URLDecoder;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import com.yoho.unions.dal.*;
import com.yoho.unions.dal.model.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
... ... @@ -34,12 +39,6 @@ import com.yoho.unions.common.redis.RedisValueCache;
import com.yoho.unions.common.utils.DateUtil;
import com.yoho.unions.common.utils.HttpUtils;
import com.yoho.unions.common.utils.SpringContextUtil;
import com.yoho.unions.dal.IAppActivateIdfaListDAO;
import com.yoho.unions.dal.IUnionLogsDAO;
import com.yoho.unions.dal.IUnionTypeDAO;
import com.yoho.unions.dal.model.AppActivateIdfaList;
import com.yoho.unions.dal.model.UnionLogs;
import com.yoho.unions.dal.model.UnionType;
import com.yoho.unions.server.service.IUnionService;
/**
... ... @@ -84,6 +83,20 @@ public class UnionServiceImpl implements IUnionService {
@Resource(name="unionServiceImpl")
IUnionService unionService;
@Resource
IUnionClickLogsDAO unionClickLogsDAO;
@Resource
IUnionActivityLogsDAO unionActivityLogsDAO;
/**
* 默认10个线程,
*/
private ExecutorService taskExecutor = new ThreadPoolExecutor(5, 10,10L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(DEFAULT_QUEUECAPACITY));
private static final int DEFAULT_QUEUECAPACITY = 20000;
@Override
public UnionResponse clickUnion(ClickUnionRequestBO request) throws ServiceException {
... ... @@ -116,11 +129,13 @@ public class UnionServiceImpl implements IUnionService {
log.warn("clickUnion error because union_type is error with param is {}", request);
return new UnionResponse(201, "union_type is error");
}
// if (StringUtils.isEmpty(request.getCallbackurl())) {
// log.warn("clickUnion error because callbackurl is empty with param is {}", request);
// return new UnionResponse(201, "callbackurl is empty");
// }
//异步记录日志表,以后查询日志方便
try {
saveLog(request);
} catch (Exception e) {
log.error("saveClickLog error is {}", e.getMessage());
}
//组装redis保存的key
String key;
if (StringUtils.isNotEmpty(request.getIdfa())) {
... ... @@ -226,6 +241,12 @@ public class UnionServiceImpl implements IUnionService {
return new UnionResponse(201, "imei is empty");
}
try{
saveActivityLog(request);
}catch (Exception e){
log.error("activity save log error is {}",e.getMessage());
}
// 组装redis保存的key
String key = "";
String value = "";
... ... @@ -503,4 +524,43 @@ public class UnionServiceImpl implements IUnionService {
}
//异步记录点击日志表
private void saveLog(ClickUnionRequestBO request){
taskExecutor.execute(new Runnable() {
@Override
public void run()
{
UnionClickLogs unionClickLogs = new UnionClickLogs();
unionClickLogs.setUnionType(request.getUnion_type());
unionClickLogs.setTd(request.getTd());
unionClickLogs.setIdfa(request.getIdfa());
unionClickLogs.setImei(request.getImei());
unionClickLogs.setClientIp(request.getClientIp());
unionClickLogs.setAppKey(request.getAppkey());
unionClickLogs.setAppId(request.getAppid());
unionClickLogs.setCreateTime(DateUtil.getCurrentTimeSecond());
unionClickLogsDAO.insertSelective(unionClickLogs);
}
});
}
private void saveActivityLog(ActivateUnionRequestBO request){
taskExecutor.execute(new Runnable() {
@Override
public void run()
{
UnionActivityLogs unionActivityLogs = new UnionActivityLogs();
unionActivityLogs.setTd(request.getTd());
unionActivityLogs.setIdfa(request.getIdfa());
unionActivityLogs.setImei(request.getImei());
unionActivityLogs.setClientIp(request.getClientIp());
unionActivityLogs.setAppKey(request.getAppkey());
unionActivityLogs.setAppId(request.getAppid());
unionActivityLogs.setCreateTime(DateUtil.getCurrentTimeSecond());
unionActivityLogs.setUdid(request.getUdid());
unionActivityLogsDAO.insertSelective(unionActivityLogs);
}
});
}
}
... ...
... ... @@ -14,6 +14,8 @@ datasources:
password: 9nm0icOwt6bMHjMusIfMLw==
daos:
- com.yoho.unions.dal.IUnionLogsDAO
- com.yoho.unions.dal.IUnionClickLogsDAO
- com.yoho.unions.dal.IUnionActivityLogsDAO
app:
servers:
... ...
... ... @@ -14,6 +14,8 @@ datasources:
password: ${jdbc.mysql.yohologs.password}
daos:
- com.yoho.unions.dal.IUnionLogsDAO
- com.yoho.unions.dal.IUnionClickLogsDAO
- com.yoho.unions.dal.IUnionActivityLogsDAO
app:
... ...