import { EErrorCode } from '../Config/_error_'; import { GExtUserSer } from './ExtUserService'; import { GEmailSer } from './EmailService'; import { GConfigSer } from './ConfigService'; import { GClubSer, UserClubModel } from './ClubService'; import { MongoBaseModel } from 'cgserver'; import { MongoBaseService } from 'cgserver'; import { ERoleGroup } from 'cgserver'; export class GiveRecordModel extends MongoBaseModel { src_user_id:number=-1 dest_user_id:number=-1 club_id:number=-1 type:number=0//0金币,1砖石 num:number=-1 create_time:number=-1 } export let GGiveSer:GiveService = null class GiveService extends MongoBaseService { async give(club_id:number,src_user_id:number,dest_user_id:number,num:number) { club_id=club_id||-1 let rs = {grm:null,errcode:null} if(!src_user_id||!dest_user_id||!num) { rs.errcode = EErrorCode.Wrong_Param return rs } let src_userclub:UserClubModel=null let dest_userclub:UserClubModel=null if(club_id>0) { let p_src_userclub = GClubSer.getUserClub(src_user_id,club_id) let p_dest_userclub = GClubSer.getUserClub(dest_user_id,club_id) src_userclub=await p_src_userclub dest_userclub=await p_dest_userclub if(!src_userclub||!dest_userclub) { rs.errcode = EErrorCode.Not_In_Club return rs } } let p_src_user = GExtUserSer.getById(src_user_id) let p_dest_user = GExtUserSer.getById(dest_user_id) let src_user=await p_src_user let dest_user=await p_dest_user if(!src_user ||!dest_user) { rs.errcode = EErrorCode.No_User_Id return rs } let open_bank=false let cfg = await GConfigSer.get(null,{game_name:"hall"}) if(!cfg) { open_bank=true//默认开放 } else if(cfg.game_str&&cfg.game_str.cfg&&cfg.game_str.cfg.any_transfer) { open_bank=true } //强制账户转账户,转到银行太麻烦了 open_bank=false let need_src=true if(club_id<=0) { //管理员和创始人不用扣费 if(src_user.role_group==ERoleGroup.Creator ||src_user.role_group==ERoleGroup.Admin) { need_src=false } } else { if(src_userclub.is_admin==2) { need_src=false } } if(need_src) { if(club_id<0 &&src_user.bank_coin0) { if(open_bank &&src_userclub.bank_coin0) { let md={} md[coin_str]=-num GClubSer.updateOne({users:{$inc:md}},{id:club_id,"users.$.user_id":src_user_id}) let sr = await GGiveSer.insert(model) rs.errcode=sr.errcode model._id=sr.rs.insertedId } else { let md={} md[coin_str]=-num GExtUserSer.updateOne({$inc:md},{id:src_user_id,}) let sr = await GGiveSer.insert(model) rs.errcode=sr.errcode model._id=sr.rs.insertedId } } else { let sr = await this.insert(model) rs.errcode=sr.errcode model._id=sr.rs.insertedId } if(rs.errcode) { return rs } if(cfg.game_str&&cfg.game_str.fun&&cfg.game_str.fun.email) { let info = "" if(open_bank) { info=src_user.nickname+" 赠送您"+num.toLocaleString()+"金币,请注意查收!领取之后可以在保险箱中查看,取出后即可使用!" GEmailSer.send(club_id,src_user_id,dest_user_id,"来自 "+src_user.nickname+" 的赠送",info,{bank_coin:num}) } else { info=src_user.nickname+" 赠送您"+num.toLocaleString()+"金币,请注意查收!领取之后可以即刻使用!" GEmailSer.send(club_id,src_user_id,dest_user_id,"来自 "+src_user.nickname+" 的赠送",info,{coin:num}) } } else { if(club_id>0) { if(open_bank) { GClubSer.addBankCoin(dest_user_id,club_id,num) } else { GClubSer.addCoin(dest_user_id,club_id,num) } } else { if(open_bank) { GExtUserSer.updateOne({$inc:{bank_coin:num}},{id:dest_user_id}) } else { GExtUserSer.updateOne({$inc:{coin:num}},{id:dest_user_id}) } } } rs.grm = model return rs } } GGiveSer = new GiveService("give_record",GiveRecordModel)