Prechádzať zdrojové kódy

refactor(economy): 将coins和logs字段封装到economy对象中

为了提升代码的可维护性和可读性,将UserData接口中的coins和logs字段封装到一个新的economy对象中。此修改涉及多个文件的更新,包括接口定义、业务逻辑和插件实现。
枫林 3 mesiacov pred
rodič
commit
c5cfb09b01

+ 4 - 2
src/interface/economy.ts

@@ -1,7 +1,9 @@
 export interface UserData {
     userId: string; 
-    coins: number;
-    logs: Economylogs[];
+    economy:{
+        coins: number;
+        logs: Economylogs[];
+    }
 }
 export interface Economylogs {
     type: 'add' | 'remove';

+ 0 - 0
src/interface/prop.ts


+ 14 - 10
src/lib/economy.ts

@@ -6,8 +6,8 @@ import { economy } from "./config.js";
 
 export function addCoins(userId: string, amount: number, reason: string): void {
     const userData = getUserData(userId);
-    userData.coins += amount;
-    userData.logs.unshift({
+    userData.economy.coins += amount;
+    userData.economy.logs.unshift({
         type: 'add',
         amount: amount,
         reason: reason,
@@ -17,11 +17,11 @@ export function addCoins(userId: string, amount: number, reason: string): void {
 }
 export function removeCoins(userId: string, amount: number, reason: string): void {
     const userData = getUserData(userId);
-    if (userData.coins < amount) {
-        throw new Error(`${economy.name}不足,需要${amount}${economy.currency},拥有${userData.coins}${economy.currency}`);
+    if (userData.economy.coins < amount) {
+        throw new Error(`${economy.name}不足,需要${amount}${economy.currency},拥有${userData.economy.coins}${economy.currency}`);
     }
-    userData.coins -= amount;
-    userData.logs.unshift({
+    userData.economy.coins -= amount;
+    userData.economy.logs.unshift({
         type: 'remove',
         amount: amount,
         reason: reason,
@@ -36,15 +36,19 @@ export function getUserData(userId: string): UserData {
     if (!userId) {
         return {
             userId: '',
-            coins: 0,
-            logs: []
+            economy: {
+                coins: 0,
+                logs: []
+            }
         }
     }
     if (!fs.existsSync(`${economy.data.path}/${userId}.json`)) {
         const newUserData: UserData = {
             userId: userId,
-            coins: economy.data.defaultCoins,
-            logs: []
+            economy: {
+                coins: economy.data.defaultCoins,
+                logs: []
+            }
         };
         fs.writeFileSync(`${economy.data.path}/${userId}.json`, JSON.stringify(newUserData, null, 4));
         return newUserData;

+ 8 - 8
src/plugins/ecomony.ts

@@ -21,13 +21,13 @@ export class ecomony {
     async ecomonyInfo(
         context: PrivateFriendMessage | PrivateGroupMessage | GroupMessage
     ) {
-        const { userId,coins,logs } = await getUserData(context?.sender?.user_id?.toString())
+        const { economy } = await getUserData(context?.sender?.user_id?.toString())
         const __dirname = path.dirname(fileURLToPath(import.meta.url)); //获取当前文件的目录名
         return {
             nickname: context?.sender?.nickname??"未知",
-            coins: coins,
-            logs: logs,
-            avatar: `http://q1.qlogo.cn/g?b=qq&nk=${userId}&s=640`,
+            coins: economy.coins,
+            logs: economy.logs,
+            avatar: `http://q1.qlogo.cn/g?b=qq&nk=${context?.sender?.user_id??0}&s=640`,
             template: {
                 enabled: true,
                 sendText: false,
@@ -43,11 +43,11 @@ export class ecomony {
             },
             toString() { //重写toString方法,用于返回文本内容,启用sendText时将发送文本内容,不启用时将发送图片内容,图片发送失败时发送文字内容
                 let logsString = "";
-                logs.forEach(log => {
+                economy.logs.forEach(log => {
                     logsString += `类型: ${log.type} 数量: ${log.amount} 原因: ${log.reason} 时间: ${log.date}\n`;
                 });
                 return `
-                    金币: ${coins}\n
+                    金币: ${economy.coins}\n
                     ------明细记录----
                     ${logsString}
                 `;
@@ -84,7 +84,7 @@ export class ecomony {
                 }
             }
             addCoins(context.sender.user_id.toString(),amount,reason)
-            const newcoins = (await getUserData(userid)).coins
+            const newcoins = (await getUserData(userid)).economy.coins
             return {
                 msgtype: 'success',
                 ecomsg: `增加成功! 金币 +${amount}, 当前数量: ${newcoins}`,
@@ -169,7 +169,7 @@ export class ecomony {
                 }
             }
             removeCoins(context.sender.user_id.toString(),-amount,reason)
-            const newcoins = (await getUserData(userid)).coins
+            const newcoins = (await getUserData(userid)).economy.coins
             return {
                 msgtype:'success',
                 ecomsg: `减少成功! 金币 -${amount}, 当前数量: ${newcoins}`,