package com.longbei.appservice.dao.mongo.dao;
import com.longbei.appservice.common.dao.BaseMongoDao;
import com.longbei.appservice.common.utils.StringUtils;
import com.longbei.appservice.entity.FriendAddAsk;
import net.sf.json.JSONArray;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
/**
* mongo工具类
*/
@Repository
public class FriendMongoDao extends BaseMongoDao<FriendAddAsk>{
/**
* 根据senderUserId 以及receiveUserId 查询添加好友记录
* @param senderUserId
* @param receiveUserId
* @return
*/
public FriendAddAsk findFriendAddAsk(Long senderUserId,Long receiveUserId){
Criteria criteria = Criteria.where("senderUserId").is(senderUserId).and("receiveUserId").is(receiveUserId);
Query query = new Query(criteria);
return mongoTemplate.findOne(query,FriendAddAsk.class);
}
/**
* 新增添加好友记录
* @param newFriendAddAsk
*/
public void addFriendAddAsk(FriendAddAsk newFriendAddAsk) {
mongoTemplate.save(newFriendAddAsk);
}
/**
* 更改添加好友请求的记录 状态
* @param senderUserId 用户id
* @param receiveUserId 请求添加的好友id
* @param status 更改的状态
* @param updateTimeFlag 是否更改添加好友的申请时间
*/
public void updateFriendAddAskStatus(Long senderUserId, Long receiveUserId, Integer status,JSONArray messages, Boolean updateTimeFlag) {
Criteria criteria = Criteria.where("senderUserId").is(senderUserId).and("receiveUserId").is(receiveUserId);
Query query = new Query(criteria);
Update update = new Update();
update.set("status",status);
if(status == FriendAddAsk.STATUS_PENDING){
update.set("receiveIsRead",false);
update.set("senderIsRead",true);
}else if(status == FriendAddAsk.STATUS_FAIL){
update.set("receiveIsRead",true);
update.set("senderIsRead",false);
}else{
update.set("receiveIsRead",true);
update.set("senderIsRead",true);
}
update.set("updateDate",new Date());
if(messages != null){
update.set("message",messages);
}
if(updateTimeFlag != null && updateTimeFlag){
update.set("createDate",new Date());
}
mongoTemplate.updateFirst(query,update,FriendAddAsk.class);
}
/**
* 清空好友的加群申请列表
* @param userid
*/
public void clearFriendAsk(Long userid) {
Query query = new Query();
Criteria criteria = new Criteria();
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userid),
Criteria.where("receiveUserId").is(userid)));
mongoTemplate.remove(query,FriendAddAsk.class);
}
/**
* 根据id获取用户的加好友信息
* @param id
* @return
*/
public FriendAddAsk findFriendAddAskById(Long id) {
Query query = new Query(Criteria.where("id").is(id));
return mongoTemplate.findOne(query,FriendAddAsk.class);
}
/**
* 回复信息
* @param id 加好友的消息id
* @param jsonArray 消息内容
* @param flag 更新发送请求者的已读状态还是被请求者的已读状态 sender / receive
* @param isRead 是否已读
* @param status 接受的状态 1.通过 2.不通过
*/
public void updateFriendAddAsk(Long id, JSONArray jsonArray,String flag,Boolean isRead,Integer status,Boolean updateCreateDate) {
Criteria criteria = Criteria.where("id").is(id);
Query query= new Query(criteria);
Update update = new Update();
if(jsonArray != null && jsonArray.size() > 0){
update.set("message",jsonArray);
}
if(StringUtils.isNotEmpty(flag) && "sender".equals(flag)){
update.set("senderIsRead",isRead);
}else if(StringUtils.isNotEmpty(flag)){
update.set("receiveIsRead",isRead);
}
if(status != null && (status == 1 || status == 2)){
update.set("status",status);
}
if(updateCreateDate != null && updateCreateDate){
update.set("createDate",new Date());
}
update.set("updateDate",new Date());
mongoTemplate.updateFirst(query,update,FriendAddAsk.class);
}
/**
* 查询用户未读的请求消息
* @param userId
* @return
*/
public int findUserUnReadAsk(Long userId) {
Criteria criteria = new Criteria();
Query query = new Query();
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userId).and("senderIsRead").is(false),
Criteria.where("receiveUserId").is(userId).and("receiveIsRead").is(false)));
return (int)mongoTemplate.count(query,FriendAddAsk.class);
}
/**
* 添加好友列表
* @param userId
* @param isRead 是否已读 true代表已读 false代表未读
* @param startNo
* @param pageSize
* @return
*/
public List<FriendAddAsk> friendAddAskList(Long userId,Boolean isRead, Integer startNo, Integer pageSize) {
Query query = new Query();
Criteria criteria = new Criteria();
if(isRead != null){
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userId).and("senderIsRead").is(isRead),
Criteria.where("receiveUserId").is(userId).and("receiveIsRead").is(isRead)));
}else{
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userId),
Criteria.where("receiveUserId").is(userId)));
}
query.with(new Sort(Sort.Direction.DESC,"createDate"));
if(startNo != null && startNo > -1){
query.skip(startNo);
}
if(pageSize != null && pageSize > 0){
query.limit(pageSize);
}
return mongoTemplate.find(query,FriendAddAsk.class);
}
/**
* 添加好友列表
* @param userId
* @param isRead 是否已读 true代表已读 false代表未读
* @param startNo
* @param pageSize
* @return
*/
public List<FriendAddAsk> friendAddAskDateList(Long userId, Date friendAskmaxDate,Boolean isRead, Integer startNo, Integer pageSize) {
Query query = new Query();
Criteria criteria = new Criteria();
if(isRead != null){
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userId).and("senderIsRead").is(isRead),
Criteria.where("receiveUserId").is(userId).and("receiveIsRead").is(isRead)));
}else{
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userId),
Criteria.where("receiveUserId").is(userId)));
}
if(friendAskmaxDate != null){
query.addCriteria(criteria.and("updateDate").gt(friendAskmaxDate));
}
query.with(new Sort(Sort.Direction.DESC,"updateDate"));
if(startNo != null && startNo > -1){
query.skip(startNo);
}
if(pageSize != null && pageSize > 0){
query.limit(pageSize);
}
return mongoTemplate.find(query,FriendAddAsk.class);
}
/**
* 删除好友的加群申请
* @param userid
* @param friendid
*/
public boolean deleteFriendAddAsk(long userid, long friendid) {
Criteria criteria = new Criteria();
Query query = new Query();
query.addCriteria(criteria.orOperator(Criteria.where("senderUserId").is(userid).and("receiveUserId").is(friendid),
Criteria.where("senderUserId").is(friendid).and("receiveUserId").is(userid)));
int row = mongoTemplate.remove(query,FriendAddAsk.class).getN();
if(row > 0){
return true;
}
return false;
}
}
相关推荐
Multisim电容三点式振荡电路仿真:起振设置与波形调试全解析
振荡电路是高频电子线路中的核心基础,其本质是利用正反馈将微弱扰动放大为稳定的正弦波。在Multisim等仿真工具中,理想模型缺少真实噪声源,导致电路常常“纹丝不动”,这并非电路错误,而是起振条件未满足。理解LC谐振选频特性和环路增益原理,是解决仿真失败的关键。人为引入上电冲击或设置初始条件,可有效激励回路起振。这一技术不仅适用于课堂验证,更能帮助电子爱好者快速排查电路参数问题。通过完整的电容三点式振荡电路搭建案例,从元件选型、直流工作点校核到瞬态分析配置,配合示波器与FFT频谱验证,系统演示如何让仿真器输出
MongoDB工具类(CRUD)
目录背景MongoDao.java调用测试 背景 又有一段时间没来了, 这一次带来的分享是源于一个项目上, 需要对接来自MongoDB的数据源, 因此封装了一个针对mongoDB的Dao. 该Dao是针对MongoDB封装的一个CRUD的工具类, 可以满足常规的数据查询, 数据写入, 数据修改, 数据删除操作。 声明: 在本文以及本系列文中, 不会涉及公司内部相关内容,旨在能帮助到努力前进的...
给STM32F103的7寸屏找个新UI:LVGL 8.2裸机移植保姆级教程(附避坑清单)
本文详细介绍了如何将LVGL 8.2裸机移植到STM32F103开发板,特别针对7寸大屏(800×480分辨率)进行优化配置。从环境准备、工程搭建到显示驱动移植、内存优化与性能调优,提供完整的解决方案和避坑清单,帮助开发者快速实现美观的用户界面。
Java(99):Java操作Mongo数据库增删改查工具类MongoDBUtil
Java针对Mongo数据库的工具类MongoDBUtil
代号OneNET02 STM32+ESP8266 WIFI系列-第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级
第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级,这一节主要是实现通过OneNET OTA服务器将需要更新的程序远程下载到STM32单片机,这一节主要是引导程序和应用程序的讲解。
学Simulink——基于Simulink的Buck-Boost变换器双闭环PI+抗饱和设计建模示例
本文详细介绍了基于Simulink的非反相Buck-Boost变换器双闭环控制设计方法。针对Buck-Boost变换器特有的右半平面零点(RHPZ)和控制挑战,提出了电压-电流双闭环PI控制架构,并集成抗积分饱和机制。通过Simulink建模,实现了主电路、电流内环PI、电压外环PI、PWM及占空比限幅等模块的搭建,验证了在输入电压跌落(20V→10V)和负载突变(2A→4A)等场景下的稳定性能。仿真结果表明,输出电压波动小于0.35V,恢复时间快于1ms,电感电流有效限幅。文章还讨论了工程实践要点和扩展方
mongoDB使用工具类
【代码】mongoDB使用工具类。
基于STM32、HAL库的TLV320AIC3204IRHBR音频接口芯片驱动程序设计
* 开启所有数字部分 */#define TLV320AIC3204_REG_LEFT_HEADPHONE_OUT_VOLUME 0x0C /* 左声道耳机输出音量 */#define TLV320AIC3204_REG_DIGITAL_AUDIO_PATH_CONTROL 0x05 /* 数字音频路径控制 */#define TLV320AIC3204_REG_ANALOG_HP_FILTER_CONTROL 0x34 /* 模拟耳机滤波器控制 *//* 最大音量 */
mongo java 工具类_java操作mongodb工具类
新建maven项目pom.xmlxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0com.gm.mongoDBmongoDB0.0.1-SNAPSHOTorg.apache.logging.log4jlog4j-api2.7org.ap...
华为od 面试八股文_测试/测试开发_02_含答案
华为od 面试八股文_测试/测试开发_02_含答案
2023,程序员的出路在哪里?
可是似乎从30岁开始这工资就没涨过,前面跳槽几次涨的薪水在30岁以后跳槽已经不管用了、定格了,这几年由于市场环境不景气,程序员竞争越来越激烈,36岁跟30拿的工资一模一样,不仅工资拿的一样,反而事情还越来越多了,这些都意味着什么?处理故障需要的通常不仅仅是写代码的能力,还需要对一个系统的全貌要有一定的掌握。虽然目前不少大型互联网企业都在进行结构性调整,但是从互联网行业发展的基本面来看,未来在产业互联网发展的过程中,IT行业和传统行业将会释放出大量的就业岗位,所以未来程序员的发展空间还是非常值得期待的。
JAVA单例MongoDB工具类
我经常对MongoDB进行一些基础操作,将这些常用操作合并到一个工具类中,方便自己开发使用。 没用Spring Data、Morphia等框架是为了减少学习、维护成本,另外自己直接JDBC方式的话可以更灵活,为自己以后的积累留一个脚印。 JAVA驱动版本: <!-- MongoDB驱动 -->...
【AI大模型:前沿】41、建筑行业大模型创业全指南:从技术突破到成本控制与落地路径
建筑行业大模型是“高门槛、高回报”的长周期赛道,适合有建筑行业资源+AI技术背景的团队切入。数据是基础,场景切割是策略,合规是底线。通过聚焦“设计生成+规范审查”等刚需场景,用“仿真数据+开源模型”降低成本,3-5年内有望成长为行业独角兽。对于中小团队,避开千万级全流程模型的红海,深耕“小而美”的单点工具,同样能实现盈利与快速扩张。关键成功公式建筑AI创业 = 50%数据壁垒构建 + 30%场景精准切入 + 20%成本控制能力。
MongoDB详解--Java连接mongo集群(工具类)
前两节我们介绍了MongoDB的一些特性以及基本操作。接下来我们来学习一些如何使用jdbc连接MongoDB集群。 为什么不先讲连接单个MongoDB而是直接连接集群呢。其实是因为MongoDB通常存储的数据量较大。所以一般都是以集群的形式搭建的。所以我们在这里直接就演示如何连接MongoDB集群。 这里我直接提供一个创建Mongo连接池的工具类。当你需要操作MongoDB进行增删改查时直接调...
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置、FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创建Logger类,完整代码如下: using NLog; using NLog.Config; using NLog.Mongo; using NLog.Targets; using S...
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置、FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创建Logger类,完整代码如下: /// <summary> /// 日志工具类(基于NLog.Mongo组件) /// Author:左文俊 /// Date:2017/12...
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
mongo java 工具类,mongodb Java 工具类
package com.mongodb;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.bson.Document;import org.bson.conversions.Bson;import org.bson.types.ObjectId;import org.slf4j.Logg...
mongo java 工具类,java操作mongoDB工具类以及测试类
java操作mongoDB工具类:package com.nxin.iot.cloud.common.util;import com.google.common.collect.Lists;import com.mongodb.MongoClient;import com.mongodb.MongoCredential;import com.mongodb.ServerAddress;import...
mongo 工具类封装
[url]http://blog.youkuaiyun.com/ceclar123/article/details/50516535[/url] [url]http://www.oschina.net/code/snippet_1387007_45646[/url]
mongo中日期处理----ISODate类型
mongo根据日期查询时,日期处理工具类 通过调用类处理日期格式,参数为String类型
实现一个MONGO工具类
好的,这是一个示例的 MongoDB 工具类的实现: import pymongo class MongoDBUtil: def __init__(self, host, port, db_name): self.client = pymongo.MongoClient(host, port) self.db = self.client[db_name] ...
SQL转MongoDB语法工具类(sql-to-mongo-db-query-converter工具包的使用)
最近写了一个目录管理的需求,用的MySQL数据库,存储了一些查询规则,对接我的同事他写的模块用的是MongoDB,这样就需要转义。举例:我这边存储的sql where子句是:他需要用到的MongoDB语法格式是: 这样看,转义自己写是相当费劲,因为语法完全不一样,尤其是涉及到多个‘“或”“与”“非”加括号的时候就很容易崩溃了...所以最好的办法就是面向对象,没错去找工具类,吃现成的……经鄙人不懈努力的查找下,终于再github上找到了可用的工具包sql-to-mongo-db-query-converter
mongo java 工具类,Mongodb底层java驱动框架工具类使用
使用MongoDB需要对文档结构进行合理的设计,以满足某些特定需求。比如随机选取文档,使用skip跳过随机个文档就没有在文档中加个随机键, 然后使用某个随机数对文档进行查询高效,随机键还能添加索引,效率更高。合理选择,合理设计。 import java.net.Unknown使用MongoDB需要对文档结构进行合理的设计,以满足某些特定需求。比如随机选取文档,使用skip跳过随机个文档就没有在文档...
Java Mongo怎么写
注意这里有一个 if (StrUtil.isNotEmpty(replicaSet)) ,就是通过这层设置来判断是集群连接还是单点连接。这里因为是 单点的mongo,所以 replicaSet写成 “”,待会儿会对replicaSet的值进行判断,来判断它是单点还是集群。哦对了,还有Mongo的实体类是怎么定义的。先前积累了一套 mongo的做法,但是只能针对于单点进行操作,这个教程可以帮助你,无论是单点还是集群,都能连接的上进行操作。其实就是在原本的类的声明的基础上加了 @Document的注解。
272



被折叠的 条评论
为什么被折叠?



