// Path: src/main/java/com/getui/logful/server/entity/ClientUser.java
// @Document(collection = "client_user")
// public class ClientUser {
// 
//     @Id
//     private String id;
// 
//     private int platform;
// 
//     @Indexed
//     private String clientId;
// 
//     @Indexed
//     private String uid;
// 
//     @Indexed
//     private String deviceId;
// 
//     @Indexed
//     private String alias;
// 
//     @Indexed
//     private String model;
// 
//     @Indexed
//     private String imei;
// 
//     @Indexed
//     private String macAddress;
// 
//     @Indexed
//     private String osVersion;
// 
//     @Indexed
//     private String appId;
// 
//     private int version;
// 
//     @Indexed
//     private String versionString;
// 
//     private int level;
// 
//     private boolean recordOn;
// 
//     public String getDeviceId() {
//         return deviceId;
//     }
// 
//     public void setDeviceId(String deviceId) {
//         this.deviceId = deviceId;
//     }
// 
//     public String getClientId() {
//         return clientId;
//     }
// 
//     public void setClientId(String clientId) {
//         this.clientId = clientId;
//     }
// 
//     public boolean isRecordOn() {
//         return recordOn;
//     }
// 
//     public void setRecordOn(boolean recordOn) {
//         this.recordOn = recordOn;
//     }
// 
//     public int getPlatform() {
//         return platform;
//     }
// 
//     public void setPlatform(int platform) {
//         this.platform = platform;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getUid() {
//         return uid;
//     }
// 
//     public void setUid(String uid) {
//         this.uid = uid;
//         if (!StringUtils.isEmpty(uid)) {
//             CRC32 crc32 = new CRC32();
//             crc32.update(uid.getBytes());
//             long crcValue = crc32.getValue();
//             this.level = (int) (crcValue % 100);
//         }
//     }
// 
//     public String getAlias() {
//         return alias;
//     }
// 
//     public void setAlias(String alias) {
//         this.alias = alias;
//     }
// 
//     public String getModel() {
//         return model;
//     }
// 
//     public void setModel(String model) {
//         this.model = model;
//     }
// 
//     public String getImei() {
//         return imei;
//     }
// 
//     public void setImei(String imei) {
//         this.imei = imei;
//     }
// 
//     public String getMacAddress() {
//         return macAddress;
//     }
// 
//     public void setMacAddress(String macAddress) {
//         this.macAddress = macAddress;
//     }
// 
//     public String getOsVersion() {
//         return osVersion;
//     }
// 
//     public void setOsVersion(String osVersion) {
//         this.osVersion = osVersion;
//     }
// 
//     public String getAppId() {
//         return appId;
//     }
// 
//     public void setAppId(String appId) {
//         this.appId = appId;
//     }
// 
//     public int getVersion() {
//         return version;
//     }
// 
//     public void setVersion(int version) {
//         this.version = version;
//     }
// 
//     public String getVersionString() {
//         return versionString;
//     }
// 
//     public void setVersionString(String versionString) {
//         this.versionString = versionString;
//     }
// 
//     public int getLevel() {
//         return level;
//     }
// 
//     public void setLevel(int level) {
//         this.level = level;
//     }
// 
//     public JSONObject appObject() {
//         JSONObject object = new JSONObject();
//         object.put("appId", appId);
//         object.put("version", version);
//         object.put("versionString", versionString);
//         object.put("recordOn", recordOn);
//         return object;
//     }
// 
//     public JSONObject baseObject() {
//         JSONObject object = new JSONObject();
//         object.put("platform", StringUtil.platformString(platform));
//         object.put("uid", uid);
//         object.put("alias", alias);
//         object.put("model", model);
//         object.put("imei", imei);
//         object.put("macAddress", macAddress);
//         object.put("osVersion", osVersion);
//         object.put("clientId", clientId);
//         object.put("level", level);
//         return object;
//     }
// }


import com.getui.logful.server.entity.ClientUser;
import com.mongodb.WriteResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoOperations;
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.List;
package com.getui.logful.server.mongod;



@Repository
public class ClientUserRepository {

    private final MongoOperations operations;

    @Autowired
    public ClientUserRepository(MongoOperations operations) {
        this.operations = operations;
    }

    public ClientUser findById(String id) {
        Query query = new Query(Criteria.where("_id").is(id));
        return operations.findOne(query, ClientUser.class);
    }

// Path: src/main/java/com/getui/logful/server/entity/ClientUser.java
// @Document(collection = "client_user")
// public class ClientUser {
// 
//     @Id
//     private String id;
// 
//     private int platform;
// 
//     @Indexed
//     private String clientId;
// 
//     @Indexed
//     private String uid;
// 
//     @Indexed
//     private String deviceId;
// 
//     @Indexed
//     private String alias;
// 
//     @Indexed
//     private String model;
// 
//     @Indexed
//     private String imei;
// 
//     @Indexed
//     private String macAddress;
// 
//     @Indexed
//     private String osVersion;
// 
//     @Indexed
//     private String appId;
// 
//     private int version;
// 
//     @Indexed
//     private String versionString;
// 
//     private int level;
// 
//     private boolean recordOn;
// 
//     public String getDeviceId() {
//         return deviceId;
//     }
// 
//     public void setDeviceId(String deviceId) {
//         this.deviceId = deviceId;
//     }
// 
//     public String getClientId() {
//         return clientId;
//     }
// 
//     public void setClientId(String clientId) {
//         this.clientId = clientId;
//     }
// 
//     public boolean isRecordOn() {
//         return recordOn;
//     }
// 
//     public void setRecordOn(boolean recordOn) {
//         this.recordOn = recordOn;
//     }
// 
//     public int getPlatform() {
//         return platform;
//     }
// 
//     public void setPlatform(int platform) {
//         this.platform = platform;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getUid() {
//         return uid;
//     }
// 
//     public void setUid(String uid) {
//         this.uid = uid;
//         if (!StringUtils.isEmpty(uid)) {
//             CRC32 crc32 = new CRC32();
//             crc32.update(uid.getBytes());
//             long crcValue = crc32.getValue();
//             this.level = (int) (crcValue % 100);
//         }
//     }
// 
//     public String getAlias() {
//         return alias;
//     }
// 
//     public void setAlias(String alias) {
//         this.alias = alias;
//     }
// 
//     public String getModel() {
//         return model;
//     }
// 
//     public void setModel(String model) {
//         this.model = model;
//     }
// 
//     public String getImei() {
//         return imei;
//     }
// 
//     public void setImei(String imei) {
//         this.imei = imei;
//     }
// 
//     public String getMacAddress() {
//         return macAddress;
//     }
// 
//     public void setMacAddress(String macAddress) {
//         this.macAddress = macAddress;
//     }
// 
//     public String getOsVersion() {
//         return osVersion;
//     }
// 
//     public void setOsVersion(String osVersion) {
//         this.osVersion = osVersion;
//     }
// 
//     public String getAppId() {
//         return appId;
//     }
// 
//     public void setAppId(String appId) {
//         this.appId = appId;
//     }
// 
//     public int getVersion() {
//         return version;
//     }
// 
//     public void setVersion(int version) {
//         this.version = version;
//     }
// 
//     public String getVersionString() {
//         return versionString;
//     }
// 
//     public void setVersionString(String versionString) {
//         this.versionString = versionString;
//     }
// 
//     public int getLevel() {
//         return level;
//     }
// 
//     public void setLevel(int level) {
//         this.level = level;
//     }
// 
//     public JSONObject appObject() {
//         JSONObject object = new JSONObject();
//         object.put("appId", appId);
//         object.put("version", version);
//         object.put("versionString", versionString);
//         object.put("recordOn", recordOn);
//         return object;
//     }
// 
//     public JSONObject baseObject() {
//         JSONObject object = new JSONObject();
//         object.put("platform", StringUtil.platformString(platform));
//         object.put("uid", uid);
//         object.put("alias", alias);
//         object.put("model", model);
//         object.put("imei", imei);
//         object.put("macAddress", macAddress);
//         object.put("osVersion", osVersion);
//         object.put("clientId", clientId);
//         object.put("level", level);
//         return object;
//     }
// }


// Path: src/main/java/com/getui/logful/server/mongod/ClientUserRepository.java
import com.getui.logful.server.entity.ClientUser;
import com.mongodb.WriteResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoOperations;
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.List;

package com.getui.logful.server.mongod;



@Repository
public class ClientUserRepository {

    private final MongoOperations operations;

    @Autowired
    public ClientUserRepository(MongoOperations operations) {
        this.operations = operations;
    }

    public ClientUser findById(String id) {
        Query query = new Query(Criteria.where("_id").is(id));
        return operations.findOne(query, ClientUser.class);
    }

    public ClientUser findByUidAndAppId(int platform, String uid, String appId) {