在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    記錄來訪者信息界面功能 含陌生、好友

    POJO

    import lombok.AllArgsConstructor;

    import lombok.Data;

    import lombok.NoArgsConstructor;

    import org.bson.types.ObjectId;

    import org.springframework.data.mongodb.core.mapping.Document;

    @Data

    @NoArgsConstructor

    @AllArgsConstructor

    @Document(collection = “visitors”)

    public class Visitors implements java.io.Serializable{

    private static final long serialVersionUID = 2811682148052386573L;

    private ObjectId id;

    private Long userId; //我的id

    private Long visitorUserId; //來訪用戶id

    private String from; //來源,如首頁、圈子等

    private Long date; //來訪時(shí)間

    private Double score; //得分

    }

    ====================================================

    API

    import com.tanhua.dubbo.server.pojo.Visitors;

    import java.util.List;

    public interface VisitorsApi {

    /**

    * 保存訪客數(shù)據(jù)

    *

    * @param userId 我的id

    * @param visitorUserId 訪客id

    * @param from 來源

    * @return

    */

    String saveVisitor(Long userId, Long visitorUserId, String from);

    /**

    * 查詢我的訪客數(shù)據(jù),存在2種情況:

    * 1. 我沒有看過我的訪客數(shù)據(jù),返回前5個(gè)訪客信息

    * 2. 之前看過我的訪客,從上一次查看的時(shí)間點(diǎn)往后查詢5個(gè)訪客數(shù)據(jù)

    *

    * @param userId

    * @return

    */

    List queryMyVisitor(Long userId);

    }

    ==============================================================

    API IMPL

    import cn.hutool.core.convert.Convert;

    import cn.hutool.core.date.DateUtil;

    import cn.hutool.core.util.ObjectUtil;

    import com.alibaba.dubbo.config.annotation.Service;

    import com.tanhua.dubbo.server.pojo.RecommendUser;

    import com.tanhua.dubbo.server.pojo.Visitors;

    import org.bson.types.ObjectId;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.data.domain.PageRequest;

    import org.springframework.data.domain.Sort;

    import org.springframework.data.mongodb.core.MongoTemplate;

    import org.springframework.data.mongodb.core.query.Criteria;

    import org.springframework.data.mongodb.core.query.Query;

    import org.springframework.data.redis.core.RedisTemplate;

    import java.util.List;

    @Service(version = “1.0.0”)

    public class VisitorsApiImpl implements VisitorsApi {

    @Autowired

    private MongoTemplate mongoTemplate;

    private static final String VISITOR_REDIS_KEY = “VISITOR_USER”;

    @Autowired

    private RedisTemplate redisTemplate;

    @Override

    public String saveVisitor(Long userId, Long visitorUserId, String from) {

    //校驗(yàn)

    if (!ObjectUtil.isAllNotEmpty(userId, visitorUserId, from)) {

    return null;

    }

    //查詢?cè)L客用戶在今天是否已經(jīng)記錄過,如果已經(jīng)記錄過,不再記錄

    String today = DateUtil.today();

    Long minDate = DateUtil.parseDateTime(today + ” 00:00:00″).getTime();

    Long maxDate = DateUtil.parseDateTime(today + ” 23:59:59″).getTime();

    Query query = Query.query(Criteria.where(“userId”).is(userId)

    .and(“visitorUserId”).is(visitorUserId)

    .andOperator(Criteria.where(“date”).gte(minDate),

    Criteria.where(“date”).lte(maxDate)

    )

    );

    long count = this.mongoTemplate.count(query, Visitors.class);

    if (count > 0) {

    //今天已經(jīng)記錄過的

    return null;

    }

    Visitors visitors = new Visitors();

    visitors.setFrom(from);

    visitors.setVisitorUserId(visitorUserId);

    visitors.setUserId(userId);

    visitors.setDate(System.currentTimeMillis());

    visitors.setId(ObjectId.get());

    //存儲(chǔ)數(shù)據(jù)

    this.mongoTemplate.save(visitors);

    return visitors.getId().toHexString();

    }

    @Override

    public List queryMyVisitor(Long userId) {

    // 查詢前5個(gè)訪客數(shù)據(jù),按照訪問時(shí)間倒序排序

    // 如果用戶已經(jīng)查詢過列表,記錄查詢時(shí)間,后續(xù)查詢需要按照這個(gè)時(shí)間往后查詢

    // 上一次查詢列表的時(shí)間

    Long date = Convert.toLong(this.redisTemplate.opsForHash().get(VISITOR_REDIS_KEY, String.valueOf(userId)));

    PageRequest pageRequest = PageRequest.of(0, 5, Sort.by(Sort.Order.desc(“date”)));

    Query query = Query.query(Criteria.where(“userId”).is(userId))

    .with(pageRequest);

    if (ObjectUtil.isNotEmpty(date)) {

    query.addCriteria(Criteria.where(“date”).gte(date));

    }

    List visitorsList = this.mongoTemplate.find(query, Visitors.class);

    //查詢每個(gè)來訪用戶的得分

    for (Visitors visitors : visitorsList) {

    Query queryScore = Query.query(Criteria.where(“toUserId”)

    .is(userId).and(“userId”).is(visitors.getVisitorUserId())

    );

    RecommendUser recommendUser = this.mongoTemplate.findOne(queryScore, RecommendUser.class);

    if(ObjectUtil.isNotEmpty(recommendUser)){

    visitors.setScore(recommendUser.getScore());

    }else {

    //默認(rèn)得分

    visitors.setScore(90d);

    }

    }

    return visitorsList;

    }

    }

    ==============================================================

    APP VO API

    import lombok.AllArgsConstructor;

    import lombok.Data;

    import lombok.NoArgsConstructor;

    @Data

    @NoArgsConstructor

    @AllArgsConstructor

    public class VisitorsVo {

    private Long id;

    private String avatar;

    private String nickname;

    private String gender;

    private Integer age;

    private String[] tags;

    private Integer fateValue;

    }

    ============================================================

    controller

    /**

    * 誰看過我

    *

    * @return

    */

    @GetMapping(“visitors”)

    public ResponseEntity queryVisitorsList(){

    try {

    List list = this.quanZiService.queryVisitorsList();

    return ResponseEntity.ok(list);

    } catch (Exception e) {

    e.printStackTrace();

    }

    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();

    }

    ==============================================================

    service 核心

    public List queryVisitorsList() {

    User user = UserThreadLocal.get();

    List visitorsList = this.visitorsApi.queryMyVisitor(user.getId());

    if (CollUtil.isEmpty(visitorsList)) {

    return Collections.emptyList();

    }

    List userIds = CollUtil.getFieldValues(visitorsList, “visitorUserId”);

    List userInfoList = this.userInfoService.queryUserInfoByUserIdList(userIds);

    List visitorsVoList = new ArrayList();

    for (Visitors visitor : visitorsList) {

    for (UserInfo userInfo : userInfoList) {

    if (ObjectUtil.equals(visitor.getVisitorUserId(), userInfo.getUserId())) {

    VisitorsVo visitorsVo = new VisitorsVo();

    visitorsVo.setAge(userInfo.getAge());

    visitorsVo.setAvatar(userInfo.getLogo());

    visitorsVo.setGender(userInfo.getSex().name().toLowerCase());

    visitorsVo.setId(userInfo.getUserId());

    visitorsVo.setNickname(userInfo.getNickName());

    visitorsVo.setTags(StringUtils.split(userInfo.getTags(), ‘,’));

    visitorsVo.setFateValue(visitor.getScore().intValue());

    visitorsVoList.add(visitorsVo);

    break;

    }

    }

    }

    return visitorsVoList;

    }

    =============================================================

    service 記錄來訪者 數(shù)據(jù)

    public TodayBest queryUserInfo(Long userId) {

    UserInfo userInfo = this.userInfoService.queryUserInfoByUserId(userId);

    if(ObjectUtil.isEmpty(userInfo)){

    return null;

    }

    TodayBest todayBest = new TodayBest();

    todayBest.setId(userId);

    todayBest.setAge(userInfo.getAge());

    todayBest.setGender(userInfo.getSex().name().toLowerCase());

    todayBest.setNickname(userInfo.getNickName());

    todayBest.setTags(Convert.toStrArray(StrUtil.split(userInfo.getTags(),’,’)));

    todayBest.setAvatar(userInfo.getLogo());

    //緣分

    User user = UserThreadLocal.get();

    todayBest.setFateValue(this.recommendUserService.queryScore(userId, user.getId()).longValue());

    //記錄來訪用戶

    this.visitorsApi.saveVisitor(userId, user.getId(), “個(gè)人主頁”);

    return todayBest;

    }

    =========================================================

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月19日 06:35
    下一篇 2022年6月19日 06:35

    相關(guān)推薦

    • ios手游模擬器(手游模擬器ios)

      本文主要講的是ios手游模擬器,以及和手游模擬器ios相關(guān)的知識(shí),如果覺得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 哪個(gè)iOS模擬器能多開手游賬號(hào)?可以推薦個(gè)好用的模擬器給我嗎…

      2022年11月27日
    • 短視頻策劃內(nèi)容的3個(gè)要點(diǎn)(短視頻策劃內(nèi)容怎么做)

      短視頻在制作時(shí),內(nèi)容框架非常重要。如果直奔主題,然后結(jié)束,聚卓告訴你,這樣的短視頻已經(jīng)過時(shí)了?,F(xiàn)在的短視頻需要框架的,但不是任何框架,它需要一種易于理解和消化的框架。而且,現(xiàn)在大多…

      2022年11月27日
    • 推薦48個(gè)微商引流推廣的方法(微商引流推廣的方法有哪些)

      微商引流技能01——同行互推 資源共享,大家才會(huì)共贏。加入你是做穴位貼的,你的朋友是做化妝品的,這是兩個(gè)沒有交集的行業(yè),你們可以友情互推,這樣每個(gè)月的資源就都擴(kuò)大了一倍,而且這些資…

      2022年11月27日
    • 美團(tuán)第三季度實(shí)現(xiàn)營收626億元,即時(shí)配送訂單量增至50億筆

      新京報(bào)訊(記者秦勝南)11月25日,美團(tuán)發(fā)布業(yè)績公告顯示,第三季度營收為626億元,較去年同比增長28.2%,凈利潤為12.2億元。第三季度,美團(tuán)即時(shí)配送訂單數(shù)增長至50億筆。截至…

      2022年11月27日
    • 喬任梁遺體圖片(喬任梁死亡現(xiàn)場(chǎng)照遺體)

      今天小編給各位分享喬任梁遺體圖片的知識(shí),其中也會(huì)對(duì)喬任梁死亡現(xiàn)場(chǎng)照遺體進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! 2016年深夜,喬任梁頭戴塑料袋慘死家…

      2022年11月26日
    • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文(計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字)

      今天小編給各位分享計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文的知識(shí),其中也會(huì)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! 計(jì)算機(jī)網(wǎng)絡(luò)方面的論文3000字…

      2022年11月26日
    • 明日之后怎么加好友(明日之后怎么加好友跨區(qū))

      簡要回答 明日之后中玩家可以跟其他玩家進(jìn)行互動(dòng),可以彼此添加好友。如果想要添加好友,此時(shí)該怎么進(jìn)行操作呢明日之后加好友的方式有下面這幾種。 01 你可以打開游戲界面,點(diǎn)擊聊天框,然…

      2022年11月25日
    • 個(gè)人怎么做抖音帶貨(個(gè)人做抖音帶貨能賺錢嗎)

      抖音如今是大家很熟悉的短視頻平臺(tái),不過現(xiàn)在的抖音卻不只是短視頻那么簡單,它的功能非常豐富,其中一個(gè)就是可以帶貨,相信很多小伙伴都有在抖音上買過東西,抖音如今的變現(xiàn)能力也是不容小覷的…

      2022年11月25日
    • 全民K歌升級(jí)新版本7.0之后,有哪些隱藏功能?

      作者:高百烈來源:知乎 這個(gè)功能,舊版并沒有,要升級(jí)到全新的全民K歌7.0版本才能發(fā)現(xiàn)。 作為朋友圈當(dāng)代K歌之王,我費(fèi)了不少功夫才搶到內(nèi)測(cè)版本。有一說一,全民K歌的路子真的很野,新…

      2022年11月25日
    • 5+3疫情防控從哪天開始算(遼寧疫情防控最新政策)

      最近有關(guān)國內(nèi)各地的疫情大家也都有在持續(xù)關(guān)注,目前國內(nèi)各地疫情隔離時(shí)間也根據(jù)二十條防控措施有了新的調(diào)整。那么,5+3疫情防控從哪天開始算?對(duì)于密接的5+3隔離時(shí)間計(jì)算大家還是比較關(guān)心…

      2022年11月25日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息