import { MongoBaseService } from "cgserver"; import { MongoBaseModel } from "cgserver"; import { GCacheTool } from "cgserver"; import * as _ from "underscore"; /** * 该mode是json后的model形势,请勿直接序列化 * 数据库中实际为{user_id:number,value:string} */ export class SlotUserRecordModel extends MongoBaseModel { user_id:number=-1 total_spin_num:number=0 total_bet:number=0 total_win:number=0 //room_level room_record = new Map win_records:Map }>() } /** * 用于扩展用户复杂属性,所以用json存储就好 */ export let GSlotUserRecordSer:SlotUserRecordService=null class SlotUserRecordService extends MongoBaseService { async getByUserId(user_id:number) { let key = "slot_user_room_record_"+user_id let srj:SlotUserRecordModel=GCacheTool.get(key) if(srj) { return srj } let surm = await this.get(null,{user_id:user_id})||[] if(!surm) { let srj = new SlotUserRecordModel() srj.user_id = user_id await this._addNew(user_id,srj) let surm=await this.getByUserId(user_id) return surm } let model:SlotUserRecordModel = surm if(model) { //十分钟 GCacheTool.add(key,srj,10*60*1000) } return model } async update(user_id:number,surm?:SlotUserRecordModel) { if(!surm) { surm = await this.get(user_id) if(!surm) { return } } if(!user_id) { return } let sr = await this.updateOne(surm,{user_id:user_id}) if(sr.errcode||sr.rs.modifiedCount==0) { return } let key = "slot_user_room_record_"+user_id GCacheTool.add(key,surm,10*60*1000) return surm } protected async _addNew(user_id:number,surm?:SlotUserRecordModel) { if(!surm) { surm = await this.getByUserId(user_id) if(surm) { return } surm = new SlotUserRecordModel() surm.user_id = user_id } if(!user_id) { return } let sr = await this.insert(surm) if(sr.errcode||!sr.rs.insertedId) { return } return await this.getByUserId(user_id) } } GSlotUserRecordSer = new SlotUserRecordService("slot_user_room_record",SlotUserRecordModel)