yujian
2019-03-15 f1016fdc979107dde7b4bf4570d04758043da8e8
首页-消息-猜你喜欢改为根据用户设备推荐
7个文件已修改
214 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMsgController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/goods/RecommendUserGoodsMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/goods/RecommendUserGoods.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/goods/RecommendUserGoodsMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/RecommendUserGoodsServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/RecommendUserGoodsService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java
@@ -5,14 +5,12 @@
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.annotation.Order;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
/**
@@ -21,9 +19,9 @@
 * @author Administrator
 *
 */
@Component
@Aspect
@Order(6)
//@Component
//@Aspect
//@Order(6)
public class ActiveUserAspect {
    
    @Resource(name = "taskExecutor")
@@ -63,18 +61,16 @@
                    return;
                }
                
                // 缓存uid的Key
                String key = "activeUid_" + uuid;
                // 缓存中是否存在uid
                String cacheValue = redisManager.getCommonString(key);
                if (cacheValue != null && cacheValue.trim().length() > 0) {
                    return;
                if (Constant.IS_OUTNET) {
                    String key = "activeUid_" + uuid;
                    // 缓存中是否存在uid
                    String cacheValue = redisManager.getCommonString(key);
                    if (cacheValue != null && cacheValue.trim().length() > 0) {
                        return;
                    }
                    // 加入缓存 20分钟
                    redisManager.cacheCommonString("activeUid_" + uuid, uuid.toString(), 60 * 20);
                }
                // 加入缓存 20分钟
                redisManager.cacheCommonString("activeUid_" + uuid, uuid.toString(), 60 * 20);
                
                // 接收券
                try {
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMsgController.java
@@ -295,7 +295,7 @@
        return builder;
    }
    private void addRecommendGoods(Long uid, String imei, String idfa) {
    private void addRecommendGoods(Long uid, String device, String imei, String idfa) {
        TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(1, 50, imei, idfa);
        if (result != null && result.getTaoBaoGoodsBriefs() != null) {
            for (int i = 0; i < result.getTaoBaoGoodsBriefs().size(); i++) {
@@ -326,7 +326,7 @@
                    }
                }
                try {
                    recommendUserGoodsService.addRecommend(uid, "", goodsList);
                    recommendUserGoodsService.addRecommend(uid, device, "", goodsList);
                } catch (RecommendUserGoodsException e) {
                    e.printStackTrace();
                }
@@ -334,7 +334,7 @@
        }
    }
    private void addRecommendGoods(Long uid) {
    private void addRecommendGoods(Long uid, String device) {
        List<QualityFactory> qfList = qualityFactoryService.listByMinSalesCountOrderByCreateTimeDesc(10000, 1, 20);
        if (qfList != null && qfList != null) {
            for (int i = 0; i < qfList.size(); i++) {
@@ -365,7 +365,7 @@
                    }
                }
                try {
                    recommendUserGoodsService.addRecommend(uid, "", goodsList);
                    recommendUserGoodsService.addRecommend(uid, device, "", goodsList);
                } catch (RecommendUserGoodsException e) {
                    e.printStackTrace();
                }
@@ -383,15 +383,18 @@
     */
    @RequestMapping(value = "getHomeMsgList", method = RequestMethod.POST)
    public void getHomeMsgList(AcceptData acceptData, Long uid, int page, HttpSession session, PrintWriter out) {
        if (uid == null) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
        String device = acceptData.getDevice();
        if (device == null || device.trim().length() == 0) {
            out.print(JsonUtil.loadFalseResult("设备号不能为空"));
            return;
        }
        if (page == 1) {
            boolean canAdd = false;
            int hour = Calendar.getInstance().get(Calendar.HOUR);
            RecommendUserGoods goods = recommendUserGoodsService.getLatestRecommendUserGoods(uid);
            RecommendUserGoods goods = recommendUserGoodsService.getLatestRecommendUserGoodsByDevice(device);
            if (goods == null) {
                canAdd = true;
            } else {
@@ -401,30 +404,32 @@
                }
            }
            String key = "recommend-goods-user-" + uid;
            //String key = "recommend-goods-user-" + uid;
            String key = "recommend-goods-user-" + device;
            if (Constant.IS_OUTNET) {
                if (canAdd && StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
                    if (Constant.IS_OUTNET)
                        redisManager.cacheCommonString(key, "1", 20);
                    if (hour < 12)
                        addRecommendGoods(uid);
                        addRecommendGoods(uid, device);
                    else
                        addRecommendGoods(uid, acceptData.getImei(), acceptData.getIdfa());
                        addRecommendGoods(uid, device, acceptData.getImei(), acceptData.getIdfa());
                    session.removeAttribute("recommendgoods");
                }
            } else {
                if (canAdd) {
                    if (hour < 12)
                        addRecommendGoods(uid);
                        addRecommendGoods(uid, device);
                    else
                        addRecommendGoods(uid, acceptData.getImei(), acceptData.getIdfa());
                        addRecommendGoods(uid, device, acceptData.getImei(), acceptData.getIdfa());
                }
            }
        }
        List<UserHomeMsgVO> volist = new ArrayList<>();
        List<RecommendUserGoods> list = recommendUserGoodsService.listRecommend(uid, page, Constant.PAGE_SIZE);
        long count = recommendUserGoodsService.countRecommend(uid);//
        List<RecommendUserGoods> list = recommendUserGoodsService.listRecommendGoodsByDevice(device, page, Constant.PAGE_SIZE);
        long count = recommendUserGoodsService.countRecommendGoodsByDevice(device);
        Date now = new Date();
        for (RecommendUserGoods goods : list) {
@@ -486,7 +491,7 @@
        JSONObject root = new JSONObject();
        root.put("msgList", new Gson().toJson(volist));
        if (page == 1) {
        if (page == 1 && uid != null) {
            UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
            UserSystemMsg usm = userSystemMsgService.getLatestUserSystemMsg(uid);
            if (usm != null)
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/goods/RecommendUserGoodsMapper.java
@@ -35,4 +35,35 @@
     * @return
     */
    RecommendUserGoods getLatestRecommendUserGoods(Long uid);
    /**
     *   根据设备号获取最近的推荐
     *
     * @param uid
     * @return
     */
    RecommendUserGoods getLatestRecommendUserGoodsByDevice(String device);
    /**
     *  根据设备号获取用户的推荐列表
     *
     * @param uid
     * @param start
     * @param size
     * @return
     */
    List<RecommendUserGoods> listRecommendGoodsByDevice(@Param("device")String device, @Param("start") long start,
            @Param("count") int count);
    /**
     * 用户推荐的数量
     *
     * @param uid
     * @return
     */
    Long countRecommendGoodsByDevice(@Param("device")String device);
}
fanli/src/main/java/com/yeshi/fanli/entity/goods/RecommendUserGoods.java
@@ -15,14 +15,23 @@
public class RecommendUserGoods {
    @Column(name = "rug_id")
    private Long id;
    @Column(name = "rug_uid")
    private UserInfo user;
    @Column(name = "rug_device")
    private String device;
    @Column(name = "rug_recommend_desc")
    private String recommendDesc;
    @Column(name = "rug_create_time")
    private Date createTime;
    @Column(name = "rug_update_time")
    private Date updateTime;
    private List<CommonGoods> goodsList;
    public Long getId() {
@@ -72,4 +81,12 @@
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getDevice() {
        return device;
    }
    public void setDevice(String device) {
        this.device = device;
    }
}
fanli/src/main/java/com/yeshi/fanli/mapping/goods/RecommendUserGoodsMapper.xml
@@ -5,21 +5,19 @@
    <resultMap id="BaseResultMap"
        type="com.yeshi.fanli.entity.goods.RecommendUserGoods">
        <id column="rug_id" property="id" jdbcType="BIGINT" />
        <result column="rug_recommend_desc" property="recommendDesc"
            jdbcType="VARCHAR" />
        <result column="rug_create_time" property="createTime"
            jdbcType="TIMESTAMP" />
        <result column="rug_update_time" property="updateTime"
            jdbcType="TIMESTAMP" />
        <association property="user"
            javaType="com.yeshi.fanli.entity.bus.user.UserInfo">
        <result column="rug_device" property="device" jdbcType="VARCHAR"/>
        <result column="rug_recommend_desc" property="recommendDesc" jdbcType="VARCHAR" />
        <result column="rug_create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="rug_update_time" property="updateTime" jdbcType="TIMESTAMP" />
        <association property="user" javaType="com.yeshi.fanli.entity.bus.user.UserInfo">
            <id column="rug_uid" property="id" jdbcType="BIGINT" />
        </association>
        <association property="goodsList" column="rug_id"
            select="com.yeshi.fanli.dao.mybatis.goods.RecommendUserGoodsMapMapper.selectGoodsByRecommendId">
        </association>
    </resultMap>
    <sql id="Base_Column_List">rug_id,rug_uid,rug_recommend_desc,rug_create_time,rug_update_time
    <sql id="Base_Column_List">rug_id,rug_uid,rug_device,rug_recommend_desc,rug_create_time,rug_update_time
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
@@ -58,7 +56,25 @@
    </select>
    <select id="getLatestRecommendUserGoodsByDevice" resultMap="BaseResultMap" parameterType="java.lang.String">
        select    * from yeshi_ec_recommend_user_goods
        where rug_device =    #{0}
        order by rug_create_time desc
        limit 1
    </select>
    <select id="listRecommendGoodsByDevice" resultMap="BaseResultMap">
        select     <include refid="Base_Column_List" /> from yeshi_ec_recommend_user_goods
        where rug_device =    #{device,jdbcType=VARCHAR}
        order by rug_create_time desc
        limit #{start},#{count}
    </select>
    <select id="countRecommendGoodsByDevice" resultType="java.lang.Long" parameterType="java.lang.String">
        select count(rug_id) from yeshi_ec_recommend_user_goods
        where  rug_device =    #{device,jdbcType=VARCHAR}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
@@ -67,9 +83,9 @@
    <insert id="insert" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods"
        useGeneratedKeys="true" keyProperty="id">insert into
        yeshi_ec_recommend_user_goods
        (rug_id,rug_uid,rug_recommend_desc,rug_create_time,rug_update_time)
        (rug_id,rug_uid,rug_device,rug_recommend_desc,rug_create_time,rug_update_time)
        values
        (#{id,jdbcType=BIGINT},#{user.id,jdbcType=BIGINT},#{recommendDesc,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})
        (#{id,jdbcType=BIGINT},#{user.id,jdbcType=BIGINT},#{device,jdbcType=VARCHAR},#{recommendDesc,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})
    </insert>
    <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods"
        useGeneratedKeys="true" keyProperty="id">
@@ -77,6 +93,7 @@
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">rug_id,</if>
            <if test="user != null">rug_uid,</if>
            <if test="device != null">rug_device,</if>
            <if test="recommendDesc != null">rug_recommend_desc,</if>
            <if test="createTime != null">rug_create_time,</if>
            <if test="updateTime != null">rug_update_time,</if>
@@ -85,24 +102,27 @@
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id,jdbcType=BIGINT},</if>
            <if test="user != null">#{user.id,jdbcType=BIGINT},</if>
            <if test="device != null">#{device,jdbcType=VARCHAR},</if>
            <if test="recommendDesc != null">#{recommendDesc,jdbcType=VARCHAR},</if>
            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods">update
        yeshi_ec_recommend_user_goods set rug_uid =
        #{user.id,jdbcType=BIGINT},rug_recommend_desc =
        #{recommendDesc,jdbcType=VARCHAR},rug_create_time =
        #{createTime,jdbcType=TIMESTAMP},rug_update_time =
        #{updateTime,jdbcType=TIMESTAMP} where rug_id = #{id,jdbcType=BIGINT}
        yeshi_ec_recommend_user_goods set
        rug_uid = #{user.id,jdbcType=BIGINT},
        rug_device = #{device,jdbcType=VARCHAR},
        rug_recommend_desc = #{recommendDesc,jdbcType=VARCHAR},
        rug_create_time = #{createTime,jdbcType=TIMESTAMP},
        rug_update_time = #{updateTime,jdbcType=TIMESTAMP}
        where rug_id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods">
        update yeshi_ec_recommend_user_goods
        <set>
            <if test="user != null">rug_uid=#{user.id,jdbcType=BIGINT},</if>
            <if test="recommendDesc != null">rug_recommend_desc=#{recommendDesc,jdbcType=VARCHAR},
            </if>
            <if test="device != null">rug_device=#{device,jdbcType=VARCHAR},</if>
            <if test="recommendDesc != null">rug_recommend_desc=#{recommendDesc,jdbcType=VARCHAR},</if>
            <if test="createTime != null">rug_create_time=#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">rug_update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
        </set>
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/RecommendUserGoodsServiceImpl.java
@@ -31,7 +31,7 @@
    @Transactional
    @Override
    public void addRecommend(Long uid, String recommendDesc, List<CommonGoods> goodsList)
    public void addRecommend(Long uid, String device, String recommendDesc, List<CommonGoods> goodsList)
            throws RecommendUserGoodsException {
        if (goodsList == null || goodsList.size() == 0)
            throw new RecommendUserGoodsException(1, "无推荐商品");
@@ -40,6 +40,7 @@
        goods.setCreateTime(new Date());
        goods.setRecommendDesc(recommendDesc);
        goods.setUser(new UserInfo(uid));
        goods.setDevice(device);
        recommendUserGoodsMapper.insertSelective(goods);
        for (CommonGoods commonGoods : goodsList)
            try {
@@ -74,5 +75,20 @@
    public RecommendUserGoods getLatestRecommendUserGoods(Long uid) {
        return recommendUserGoodsMapper.getLatestRecommendUserGoods(uid);
    }
    @Override
    public RecommendUserGoods getLatestRecommendUserGoodsByDevice(String device) {
        return recommendUserGoodsMapper.getLatestRecommendUserGoodsByDevice(device);
    }
    @Override
    public List<RecommendUserGoods> listRecommendGoodsByDevice(String device, int page, int pageSize) {
        return recommendUserGoodsMapper.listRecommendGoodsByDevice(device, (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countRecommendGoodsByDevice(String device) {
        return recommendUserGoodsMapper.countRecommendGoodsByDevice(device);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/RecommendUserGoodsService.java
@@ -17,7 +17,7 @@
     *            推荐语
     * @param goodsList
     */
    public void addRecommend(Long uid, String recommendDesc, List<CommonGoods> goodsList)
    public void addRecommend(Long uid, String device, String recommendDesc, List<CommonGoods> goodsList)
            throws RecommendUserGoodsException;
    
    /**
@@ -57,4 +57,27 @@
    
    public RecommendUserGoods getLatestRecommendUserGoods(Long uid);
    /**
     *  根据设备获取最近的推荐
     * @param device
     * @return
     */
    public RecommendUserGoods getLatestRecommendUserGoodsByDevice(String device);
    /**
     * 根据设备号查询
     * @param device
     * @param page
     * @param pageSize
     * @return
     */
    public List<RecommendUserGoods> listRecommendGoodsByDevice(String device, int page, int pageSize);
    /**
     * 根据设备号统计
     * @param device
     * @return
     */
    public long countRecommendGoodsByDevice(String device);
}