| | |
| | |
|
| | | 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;
|
| | |
|
| | | /**
|
| | |
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Component
|
| | | @Aspect
|
| | | @Order(6)
|
| | | //@Component
|
| | | //@Aspect
|
| | | //@Order(6)
|
| | | public class ActiveUserAspect {
|
| | |
|
| | | @Resource(name = "taskExecutor")
|
| | |
| | | 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 {
|
| | |
| | | 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++) {
|
| | |
| | | }
|
| | | }
|
| | | try {
|
| | | recommendUserGoodsService.addRecommend(uid, "", goodsList);
|
| | | recommendUserGoodsService.addRecommend(uid, device, "", goodsList);
|
| | | } catch (RecommendUserGoodsException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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++) {
|
| | |
| | | }
|
| | | }
|
| | | try {
|
| | | recommendUserGoodsService.addRecommend(uid, "", goodsList);
|
| | | recommendUserGoodsService.addRecommend(uid, device, "", goodsList);
|
| | | } catch (RecommendUserGoodsException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
| | | */
|
| | | @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 {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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) {
|
| | |
| | |
|
| | | 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)
|
| | |
| | | * @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); |
| | | |
| | | |
| | | } |
| | |
| | | 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() {
|
| | |
| | | public void setUpdateTime(Date updateTime) {
|
| | | this.updateTime = updateTime;
|
| | | }
|
| | |
|
| | | public String getDevice() {
|
| | | return device;
|
| | | }
|
| | |
|
| | | public void setDevice(String device) {
|
| | | this.device = device;
|
| | | }
|
| | | }
|
| | |
| | | <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"> |
| | |
| | | </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 |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | |
|
| | | @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, "无推荐商品");
|
| | |
| | | goods.setCreateTime(new Date());
|
| | | goods.setRecommendDesc(recommendDesc);
|
| | | goods.setUser(new UserInfo(uid));
|
| | | goods.setDevice(device);
|
| | | recommendUserGoodsMapper.insertSelective(goods);
|
| | | for (CommonGoods commonGoods : goodsList)
|
| | | try {
|
| | |
| | | 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);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | * 推荐语
|
| | | * @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;
|
| | |
|
| | | /**
|
| | |
| | |
|
| | | 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);
|
| | |
|
| | | }
|