import { OrderData } from './orderdata.model'; import { Orders } from './../orders/orders.model'; import { OrdersService } from './../orders/orders.service'; import { SubscribeMessage, WebSocketGateway } from '@nestjs/websockets'; import { Socket,Client,Server} from 'socket.io'; import { ResultDTO } from 'src/result.dto'; import { UserService } from '../user/user.service'; import { OrderDataService } from './orderdata.service'; import { UseGuards } from '@nestjs/common'; import { AuthGuard } from 'src/guard/auth.guard'; import { AuthModule } from '../auth/auth.module'; import { rejects } from 'assert'; @WebSocketGateway({namespace: 'api'}) export class OrderDataGateway { constructor( private _user:UserService, private _od:OrderDataService, private _o:OrdersService ) { console.log('OrderData gateway readed.'); } updateOrder(_id): Promise{ return new Promise((resolve, reject) =>{ this._od.Get({"order":_id}).then(orderList=>{ let totalOrder={ //总箱 box:0, //总额 total: 0, size:0, weight:0 }; //遍历统计 orderList.map((i)=>{ totalOrder.box+=i.box; totalOrder.total+=Math.round(i.box*i.qty*i.price*i.discount); totalOrder.size+=i.size; totalOrder.weight+=i.weight; }) //查找更新 发布 this._o.GetOne({_id:_id}).then(o=>{ Object.assign(o,totalOrder) // o.box=totalOrder.box; // o.total=totalOrder.total; // o.size=totalOrder.size; // o.weight=totalOrder.weight; o.balance=o.total-o.payment; o.save().then(ret=>{ resolve(ret) //client.emit('freshOrder',ret) }) }) }) }) } @SubscribeMessage('OrderDataGet') //@UseGuards(AuthGuard) Get( client: Socket, filter: any): Promise { console.log('OrderDataGet',filter); return new Promise((resolve, reject) =>{ let result=new ResultDTO(); this._od.Get(filter).then(docs=>{ console.log("Finded:",docs.length); if(docs){ result.ok=1; result.msg= "Geted Orderdata." result.count=docs.length; result.data=docs resolve(result) } }) }) } @SubscribeMessage('OrderDataGetOne') GetOne( client: Socket, filter: any): Promise { console.log('OrderDataGetOne',filter); return new Promise((resolve, reject) =>{ let result=new ResultDTO(); this._od.GetOne(filter).then(doc=>{ if(doc){ result.ok=1; result.msg= "Geted." result.count=1; result.data=doc resolve(result) } }) }) } @SubscribeMessage('OrderDataAdd') Add(client: Socket, data: any): Promise { console.log('OrderDataAdd',data); return new Promise((resolve, reject) =>{ let result=new ResultDTO(); this._od.Add(data).then(doc=>{ if(doc){ this.updateOrder(doc.order).then(order=>{ client.emit('freshOrder',order) }) //添加数据完成 统计数据更新表单 result.ok=1; result.msg= "Added." result.count=1; result.data=doc resolve(result) } }) }) } @SubscribeMessage('OrderDataUpd') Update(client: Socket, data: any): Promise { return new Promise((resolve, reject)=>{ let result=new ResultDTO(); result.ok=1; //判断当前用户等级 this._od.Update(data).then(doc=>{ console.log('UPD',doc) this.updateOrder(doc.order).then(order=>{ client.emit('freshOrder',order) }) result.msg='Upded OrderData' result.data=doc; resolve(result) }).catch(err=>{ result.ok=0; result.msg=err.message; resolve(result) }) }) } @SubscribeMessage('OrderDataDel') Delete(client: Socket, data: any): Promise { //判断当前用户等级 return new Promise((resolve, reject)=>{ console.log("删除",data); let result=new ResultDTO(); this._od.GetOne({'_id':data}).then(doc=>{ console.log('查获',doc); if(doc){ this._od.Delete(doc._id).then(ret=>{ console.log('del ret',ret); if(ret.deletedCount>0){ result.ok=1; result.msg=`已删除数据: ${ret.deletedCount}`; this.updateOrder(doc.order).then(order=>{ client.emit('freshOrder',order) }) resolve(result); }else{ console.log("无可删除数据"); result.ok=0; result.msg="无可删除数据." resolve(result); } }) }else{ console.log("无可删除数据"); result.ok=0; result.msg="无可删除数据." resolve(result); } }).catch(error=>{ result.ok=0; result.msg=error.message; reject(result) }) }) } @SubscribeMessage('OrderDataDisconnectLink') DisconnectLink(client: Socket, _id: any): Promise { console.log('断连 11111111111111') return new Promise((resolve, reject)=>{ this._od._model.findByIdAndUpdate(_id,{link:null}).then(doc=>{ console.log('断连 ',doc); } ) }) } }