106 lines
3.1 KiB
TypeScript
106 lines
3.1 KiB
TypeScript
import GameUtil from "../core/GameUtil";
|
||
import DB from "../utils/DB";
|
||
import ShopItem from "./ShopItem";
|
||
|
||
export default class Shop {
|
||
private static _shared:Shop;
|
||
nMaxID:number;
|
||
mapItem:any;
|
||
// 全部存档
|
||
static saveAll(callback:(msg:string)=>void){
|
||
this.shared.saveAll(callback);
|
||
}
|
||
|
||
static get shared():Shop{
|
||
if(!this._shared){
|
||
this._shared=new Shop();
|
||
}
|
||
return this._shared;
|
||
}
|
||
|
||
constructor() {
|
||
this.nMaxID = 0;
|
||
this.mapItem = {};
|
||
}
|
||
|
||
init() {
|
||
this.readItemFromDB();
|
||
}
|
||
|
||
readItemFromDB() {
|
||
let strSql = `SELECT * FROM shop_goods`;
|
||
DB.query(strSql, (err:any, rows:any) => {
|
||
if (err != null)
|
||
return;
|
||
|
||
for (let i = 0; i < rows.length; i++) {
|
||
|
||
if (GameUtil.getTime() - rows[i].nAddTime > 86400 * 10) // 超过 10 天无人取回直接丢弃
|
||
continue;
|
||
|
||
|
||
let stShopItem = new ShopItem(rows[i].nID, rows[i].nConfigID, rows[i].nKind, rows[i].nSubKind, rows[i].strJson, rows[i].nSeller, rows[i].nAddTime, rows[i].nPrice, rows[i].nCnt, rows[i].nSellCnt, );
|
||
this.mapItem[stShopItem.nID] = stShopItem;
|
||
}
|
||
});
|
||
}
|
||
|
||
FindShopItem(nID:any):any{
|
||
if (this.mapItem.hasOwnProperty(nID) == false)
|
||
return null;
|
||
|
||
return this.mapItem[nID];
|
||
}
|
||
|
||
|
||
GetMaxID() {
|
||
let nMax = 0;
|
||
for (let it in this.mapItem) {
|
||
if (Number(it) > nMax)
|
||
nMax = Number(it);
|
||
}
|
||
return nMax;
|
||
}
|
||
|
||
IsIteamCanSell(nID:any) {
|
||
if (nID >= 30001 && nID <= 30030)
|
||
return false;
|
||
|
||
if (GameUtil.isDataInVecter(nID, [10202, 10116, 10201, 50004, 10301, 10302, 10303, 10406, 10401]))
|
||
return false;
|
||
|
||
return true;
|
||
}
|
||
// 全部存档
|
||
saveAll(callback:(msg:string)=>void) {
|
||
let total = GameUtil.getMapLen(this.mapItem);
|
||
if (total == 0) {
|
||
let msg=`商城存档:数量少于1个,无需存档!`;
|
||
callback(msg);
|
||
return;
|
||
}
|
||
let clear = 'TRUNCATE TABLE shop_goods';
|
||
let sql = '';
|
||
for (let key in this.mapItem) {
|
||
let item = this.mapItem[key];
|
||
let insert = `INSERT INTO shop_goods(nID,nConfigID, nKind, nSubKind, strJson, nSeller,nAddTime,nPrice,nCnt,nSellCnt) values( ${item.nID},${item.nConfigID} ,${item.nKind} ,0,'${item.strJson}',${item.nSeller},${item.nAddTime},${item.nPrice},${item.nCnt},${item.nSellCnt});`;
|
||
sql += insert;
|
||
}
|
||
DB.query(clear,(error: any, rows: any[]) =>{
|
||
if (error != null) {
|
||
let msg=`商城存档:无法清空表!`;
|
||
callback(msg);
|
||
return;
|
||
}
|
||
DB.query(sql,(error: any, rows: any[]) =>{
|
||
if(error != null){
|
||
let msg=`商城存档:无法插入数据!`;
|
||
callback(msg);
|
||
return;
|
||
}
|
||
let msg=`商城存档:全部存档成功!`;
|
||
callback(msg);
|
||
});
|
||
});
|
||
}
|
||
} |