(qOys@0X?;K2Yy00;m8Py!_QLPnfn004Ld000L7f;EzI
zarUrw_Au4Z+ag-XmE1r(o|)-lj^W0pTA@T*QhtwUy&*{By=2AVjLyXSoT&35DnTC!Iw
z8$C^LghIyRV|DV>rfR*L?bqT^j?>+bce(rCR79~17+UYDo+I7)5Lo-4x;!d6#t$CZ
zq{!ijKlE)21G$G|+ARXUwd`S?khoXCZXz9?=1=kbh4(L?^z3^6dT|4xs)wnl|XLQ=dS6PZ@d^1xiy>
zH)}_CHrAi(|Izcmn3I2b^zuX%wQhFQaESa(MBn+;Vmzj#lDC9>E2VZokir5+!^=V%
z;>8Yn5=?EPP&m23wt$;~`9*M(>L7)T^hSKqfl36xpZc%b&2k
zrcS5M(&ZF=8NAx!n97<;@|F6RsAVS(rE4%pSoMgIaNdxFm2Kf1e}e=_QelmaTwYwMCAbAeFDF
zmE*@_>C6tCTYnbStUgUDZtM%r5xHL4ywgC#dhWx)Y~N3ONZn<92mK*2cO4HwOzB7l)toShO_4M2xqjG
zvIYqzG*!OObKx^}4cC0WOyqsLyQHDw`A0JihhEX^V{h*zfooG;ovj6~H_c$iErYi-dw)J^FnDfjP{CBu(U$0$}l2YUoJrS*qsZP|*i>fcPdD_w!`bhMi$`^rnab
z7fedCHZBLdHj3JGbb>K{Y{8r^XxCuDFzGe~so{;R+NdIxp0F)(Fmn{lRm=B=
z{V}F1yr$@q)?%-B<@P~ohl!aHcwhls6;*smCQjzgJzO$DW`qvV-An}CrW)+Tum4hgfry(QCvBeY#xxL{)c;h9*
z`h%CoodCB$eWGG`j$M6ZI8DFeI}L+|ncf%hSVH)_-rcyNb1+E3LZjFj@#&)U#jZp;
z#hVU^Q;K&MlUBHccnelM8Z@aWZ2?a=kZ&5NE>aoGb`_(QnKNb$2fy>rG7Na6;7HZt
z6VbII9AhxiO(Kqke)Jsngj9usL`#eGwwpE3Kjf+oQy8VLk+}hp`*W49!HJ>3_aUY5
zOQK|}QIOud$sP`}R?5%R-u?t?i~OQdE3U%X-}{$w_zMfd6vxw64Dj#-WhiaUdQY;;
zpP`&3g>MiO#oZmR&fV!u%;%JMpTT}ucYMbOTPyX%vs;EWmC@}fKvl#MBemi%e4`kE
z@Hqga)Y9w{%Z6+g8$sQQf!xEXG=^8G(7OpwHqC1k`vE_Bt_-iFp^bX(sHuLMEnH~v
z%qc#f1luoMaOi2~rvPGFS`ochdvh-|Fjs?3I(65TGaG^FZg~+>_pWQb`8#SrDL#_k
zU?Fs1upfzP$d)U2wsKrJuh^MZ!c81XT}4XKJ)%Jhg2uWc)-#}KB?_+?6%qWD0KC6M
zoQOl!lIH>N--r?{nw)wJB}faDEJOeh43sE;OelY)%YP;p7^wDx((S){Dc4j{`UKTJ
zD0dO;-kDywShF5%RJ%Gm7@+=o#(6qQu7HyzVx|@o{jW-Fa4zA#kfC0$a~|{+IGoc?
z=8|Y^_-8nd5FrGYq2nPqki}jFS%@404)*T$PT3v`dWJhrvuI-9qZ}~*`UL|mVMJju
zmGnvTcsRHHFuNzGz56KX05rG`)~^L!g=y_pgw(%(Pm#fB^W(l*YW@r{H^i5G?3fTq
zK^V;!Ft#~K$$Zf%a|Sy4aATw5JM7R|c!m0dq)dsdlt;ur+=C*bPmVm0G12`;L3*nW
zWZ6UVdVsNG{^-%*3B+ctzjta0`lkOGTdS7wtBc_P04HPsfB<^MpRv{5*4o;`o$c3#
z<7be~N}7L_$&MKgVLl~&v;>6f&r$CyottX((>tx7enl99OJ3sSrat8jA&{)q)YYj6
zIa(eE-p7i3fp{Axpz*U+FxsUQB?nGIx$w9E9O3~$-m=7icM2Txqf^CnITk~%8%?ZkkA=m*oA;*Tl^H>ebu=Aa+LjgIsXMF>AE{&@G;zk}xRTYhhM#lM9AY8i
zX4beFiR*Q1XNWKb$DP}$=A1(EKrAvPwypp_%;f_y*oCXdLAMNPbS}@TMcV^^`N6MM
zRTPfHS4IxX-T5ugK~2Me&z9ezhC
zP6|^3!+uV2;<+)2nHL4%2Bc;7!DbP`)?)?X0dTjS--ZKXKPw9$NWTOw^h?N2(wTp>
zW$*5nKs3aOdq3s$^kqR0Dm{?Uc9NWH-)8zTf88@#2*cKgkgDHf#{EhHxl0^Xriyb7
z@Rf>6@h!2Q2{3?eC`%6@pLuYQ%+_vFt_R+g6yMy^kISFa_pq~Zi85No5Hg72Lp&M@gE
z)P=6BF3Cuk&1=mJAQJj2a0X|j3>}ljY#UlVF{gqu(q$dL?(bo8p&}OaC=9BZf{1?B
z0Df`X!`9l#n(f#67p->)Q!s>bS?jYECyVP4gmd5?K8ERT1D`mdh1lYw<0uar%UmW?8-_?cG
zw2QE6iF-Jgs{Y(lhiT#I&aE&N1wlyDxm>s6pl6f#7FZ)?tXwS0Ij4MN}-Y>v0Nr8d6vz`_-BnV%|j#-Lf+|O&{vbRDCXX(7pe;16IA}B{4T}nPTBW
z3&5TJQQn=kWh8HU|1=b~Eci$%1`<%WR6^)86lfXa&KEBRS0&yY7>FW9B8w>l-4_t8
z{#0ZT=l^SWp^LB0dC7&y2O*kKLGAtMV@%$HQ(L}x!omn$AEASYp=Zk?7&kHl)WUXh*JFBTp*h0k
z_50k%BG;^t6RMn@i`0&Q+oL!!(+#rEhKS2O=Od$pTbRNKaD^tTTxj_$Sh_KOilOHI1_Ue_oJ&jMbaZojO<{-mo#GzL3
z8`zIAzx
z*EJ_~`ZN?R!8+Bvy-lmc#z{wVvp@C?BbZ2d?nTtYV4yFM#Qn9#^gxS2V{O5@3sKBw
zotO$jiNUa#z7K>a-fA}n?T40cClA0TsHLRSrUKK_A*<2Dn7T}Gr7n@alH*FRZ$pZK
zbvhG*EXvS_FH-Pr&PTv&w3qT$IqPPZL`y9i14t7JgKdgJ!vNUD#K*vy9#I*tF#)1
zSLndvPD!}>oC4LO+fBi_kXv)&7YsQA!asTeJG%pG#&*Tt2ua(xfSm|WgyeK*rAna)
zdb!lpIby3hiu~7^3X;s-1S(H8vaihhb=F%?xUVvxu!qL^J+5QrV@;RtBdM8!oM>~woZ6DCMP@$S1C=e7a9i2
z5=f>Y)k6=|LgUsUDrlP8rT~$%H1qZi^va?qI@1x3*!WPL)H|?nj$g7c_*de7eLHZo
z*g2laLb*tPc(On^VeN$>5rr_6f%-k!mH+77kFhLl{_X{kfk7ZXU9qIssg$&il&?@h
z3;`}zH0!#6anxq`tCsms;;qb|QDGL*mwj02XU=mx*>X#**SNWP!THGFpQo0rNxDv(spuS7}Y-Uun|>hh}BTVUayH_lnQG<
za^B`uwd{(?lYr`0{RX!X{VHai<+3=^t8)-<0Q|~WMA8y1uJIe}c3vwG-t)`Zr>w*W
z(ZYB=L|Bzs*0O^8IBc6&8X}QQkC_RyZ^9uuh7#{Jwh$!>c|rD%JM;pPabhBq4C4cB
z3A?bsCb+pq+Sgy{Q>~s4csX??GHK;%mqs^Tt!b7)?$%Z?F|+B-pU*hg`;5i#K0
zt|m4(VdF^S6Kq$R&)z-CzX{SHyR?rZ(EOztI&q=>F=@Gb_&Qp<|5TwxIz!GA;+XB!
zhv;Q(t#=9}iG5x&8HT0WG(~t(JD(rZm+h<7w<4iO665ED;haaKsD%z#vO5U9EToE_
zQ~Dspbv?w_p`hx}IhJDIovi%S2ir{AI$x14l`+6O+s`sKmbRA0SRrGDl;?um?~;nc
zt9NTES~CV9nE|dUH&J`O1ZHN66wq*BlF(vgiF{G^_{ye&k@2M;O%pjnXCHo;!UC1D
z%%K=X$Y$oy9CNZh&LCbaSF1xcJ9f{B1>6)UgXc&szkigr6h3Uzd
z_D%j&VqFyhcfY*$lfSf4mjt$jm=bc&Ygs%+V7dcMB52NV;racu^VPR?rIBX-(~8ve
zw$Y2}NQm#eC6~r*`$-m*v(`DjNJv@B)CV`(&!UCLUD_=W9`y1<5SEZ@;afgwvbc{H
z?EAMFNhMNCQbxVoBI!o$X3jPM?rv(ag2Z9UdpjP^#dJdo
z8)inrWjsA&F(O6gJsFI)qplp3+vak8h38g&|jd75`
zQbl)sEPV92({UFK$bCk4=(yk0T{r8WqZY!zf4wlzH8R6FWcUR;ZRy=|b&LnTqukv#
zh0;^V__)h6uwUdigYZ9;_Z=Fl)J>6PLUzPL4$fa6VB8DLlK-n*J2ABxLxg7Jics$d|LOU*=5E$j
zS{`n8&QE?3pgd7R5sm{Kejefta&h5mVbJ8_l;60R`#w-3RyvD
z0V9Xtj~>@cxr~9%;8%|}4g(?g%lH#tCmo|iZIuL!UvZkrzhL2Ear5zSYHmWrD=5&M
zN@0({MNAtw=E9P+>Q|zSV3Orq76#)I;mUrcd^5Q4tk5DcpfmKiWI&x#R_nOz5wUwA
zHw?3*6h{O{b@+*UXkAhYl`UhzoYn|3LUkv4Fiqf_
zXL5SbK(I&f)H)eEgEW
zzCe}I;-hNP*?_aSnnRpVjXww9`qhzGfBf;ob>s(c=C$xUVjJ{?N0TkEFV-yaZL1Ib
z=2$u;YWTMoz(_2@@#Yh(?HO>Ys)|v)@%p$ZH7_)1ZV9>rKF!v=LV6c3x<0EA<;&iG
z8ACi;UTW`jWD2ZjQ*D4eT6?Y+Dk!39aJT#FIk~WNVaKri(MXtrK)jh~fxJMU%-&Iu
zg~X2cS&qYVbogSYFN4QtNdFcyD^YHvTA@$>2p0gL|6>GPp)TWL?WSez;qlXV*d82n
zuv*wT?--nk)Vj8V^T`TxkVD>E{~pL
z(Rh6+iB2mqn;fM(dDr2(e#%C~{pI^jXoB;^RphO9^fR$H?yOw|&DWk1PSq+~V3{qy
zS9_(`y99MD^Iul5W3Jq6j_3Qgl-{b)#Uv?I@ZIPzp1uO1E=}=w`1jLH+wYbv2;6)|
z(yi{)dz?S)&Po-*`BmNQksL?OFk5dH?5edP^9kCO?>2TDtS%0Op84xwr9oLf;YGr<
zR?5WovxJ@d19fgQxpw?d6*Cxc{9bJuY`VlHer?qgY8Kpkm9<9>9IrmmF);#}Fn_
z!iNQ6V!}#_gFrBp6u%FGpMrz||MvdVU8X7Yq3_=W8ac3_bw4W?OLaFFS9dl`7dPua
zTfP4)_d$owKe1D>o1LH+5&}_ogN&EYr{(X7ThjwWaC(g7+nsvo&=l%-sC^E1g?zBd
z?Jw|(_jvihasBtXrU94ooCbqbK8Tjbnr|XcsK7xhZ~CSmvK8I#YaD;E))u>5qV>{rTwpS7h?a9u^SD)m@*qwn)se}6<%hzrtP_A}kGZ!i+@kHfvTTi00Io3hk2zQ*;j$I6;>XC-maKH(-4
z=1wKgc3EpdYu33)or#kgcZq^i1ikzW{6tFO&=w~qeFjx%|Ewtrnw(%|K;01&T35vU
zt2>&zy8h1_p>Fu+l9kx$JpZ$^hj4`+zW*}InIT+USEGpe*-SM+;hCPbARd!a$S0!y
z9P3n4#9cJ6xp|L|WQFxFi&f{fTxbGUrsXtO{O4!NU!=u)BV?+&r36p3b31EQpKfoj
z;S6Fk=`rn)f*pZT*@LUpHIbs?(r}E_D5=Q0)Zv613e%${+?2BknwK*SMcmF!RZNA;
z<2%=gBu5j%Vyo3MuC&SY<}Q7Ry#_H59+tNKi}4|Qe2{*03}*QlvYq1P)aGVV75nvv
zDKiA}n2^nsJV;?@_7?>5w-)bSzYriCRGftm5ySt)Q{rrgVr`LF&|`o?^!!WWrK*FF
z^=yUW=rXumXN(~tY^niGfqXumeIPI}K;-83@P5OkQ-R$6IlnV$?|Na@85)>`*9#F2
zh!hdV9Evyo-aenI9Y&ZG?i>|vKd7!8#?{CD%e0y@TiZd-H66oyYIE}E9Q&*l-2u@nVA2FzcFG!@Ip&ZmEI_`$0#dinvcWqt{j+*oyl?lK~4Sg;i7?&kH6
zpYq`ke};i&fr_wy|C;7M@9#g`fBCjXUFq)tfA91E$MEO&EtDjG>H0r3eAxT^ZTbb8
zAU)`WJ~aM&Kj^n90B{P`5&!@0&_kSuO@iM@451v>zfoRGGgKcA(|ezqd{PRdYTBd??y}1MU(3
z0(>CZ{#C*~1pT`b_zejF?2!Th|Ih^w&Ho;`|7z|}@fY(y>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props
- */
-
- /**
- * 创建时间
- */
- private LocalDateTime createTime = LocalDateTime.now();
/**
* 序列化(编码)
diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java
index 5b7e717..6af5dbe 100644
--- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java
+++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java
@@ -51,4 +51,9 @@ public class PRCodec extends ByteToMessageCodec {
}
+ @Override
+ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
+ log.error("{}", cause.getMessage(), cause);
+ super.exceptionCaught(ctx, cause);
+ }
}
diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java
index 8f5cbd5..b9e33af 100644
--- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java
+++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java
@@ -159,7 +159,7 @@ public class MsgUtils {
public static PRMsg send(String route, T data, Channel channel) {
PRMsg msg = new PRMsg(route, data);
channel.writeAndFlush(msg);
- log.debug(">>>>> {}, {}", route, data);
+ log.debug(">>>>> {}, {}, {}", route, data, msg.getMsgHeader().getId());
return msg;
}
protected static PRMsg send(String route, T data) {
@@ -182,7 +182,7 @@ public class MsgUtils {
// 发送 GC
// Channel channel = getChannel(server);
channel.writeAndFlush(gcMsg);
- log.debug("[reply] >>>>> {}, {}", server, data);
+ log.debug("[reply] >>>>> {}, {}, {}", server, header, data);
}
/**
diff --git a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java
index 67edf14..982389e 100644
--- a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java
+++ b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java
@@ -41,7 +41,7 @@ public class PRGateServerMsgHandler extends PRAbServerMsgHandler {
msg.getMsgHeader().setPId(session.getPlayerId());
}
if (StringUtils.isBlank(msg.getMsgHeader().getSendServer())) {
- msg.getMsgHeader().setSendServer("gate");
+ msg.getMsgHeader().setSendServer("player");
}
}
diff --git a/paradogs-generator/pom.xml b/paradogs-generator/pom.xml
index f363f25..ca223a7 100644
--- a/paradogs-generator/pom.xml
+++ b/paradogs-generator/pom.xml
@@ -37,6 +37,10 @@
com.paradogs
paradogs-framework-core
+
+ com.alibaba
+ easyexcel
+
\ No newline at end of file
diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java
index 2b87b3d..47ee4a6 100644
--- a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java
+++ b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java
@@ -11,7 +11,7 @@ import java.util.Collections;
/**
* @author: yumi
* @date: 2023/11/14 10:00
- * @Description: 待优化,代码生成等项目完善之后再做 !!!
+ * @Description: DB 实体类生成器,待优化,代码生成等项目完善之后再做完整的代码生成 !!!
*/
public class DBEntityGenerator {
public static void main(String[] args) {
diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/ExcelDataGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/ExcelDataGenerator.java
new file mode 100644
index 0000000..fa8dcfd
--- /dev/null
+++ b/paradogs-generator/src/main/java/com/paradogs/generator/ExcelDataGenerator.java
@@ -0,0 +1,146 @@
+package com.paradogs.generator;
+
+import com.alibaba.excel.EasyExcel;
+import com.paradogs.framework.core.utils.StringUtils;
+import com.paradogs.generator.misc.ExcelDataGeneratorListener;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import freemarker.template.Version;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * @author: yumi
+ * @date: 2023/12/5 21:58
+ * @Description: 配置表实体类生成器
+ */
+@Slf4j
+public class ExcelDataGenerator {
+
+ public static void main(String[] args) throws IOException, TemplateException {
+ String path = System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-common/src/main/resources/data";
+ File folder = new File(path);
+
+ for (File file : folder.listFiles()) {
+ ExcelDataGeneratorListener reader = new ExcelDataGeneratorListener();
+ EasyExcel.read(file, reader)
+ .headRowNumber(0) // 表头也读取
+ .sheet(0)
+ .doRead();
+ String fileDataName = StringUtils.firstChar2UpperCase(file.getName().substring(0, file.getName().lastIndexOf("(")));
+
+ // 创建 Freemarker 配置
+ Configuration cfg = new Configuration(new Version("2.3.31"));
+ cfg.setClassLoaderForTemplateLoading(ExcelDataGenerator.class.getClassLoader(), "ftls");
+ cfg.setDefaultEncoding("UTF-8");
+
+ // 加载模板
+ Template template = cfg.getTemplate("data.ftl");
+
+ // 创建数据模型
+ Map dataModel = new HashMap<>();
+ dataModel.put("package", "com.paradogs.framework.common.data");
+
+ List> dataMaps = reader.getData();
+ if (dataMaps.size() < 2) {
+ log.error("{} row < 2", file.getName());
+ continue;
+ }
+
+ // 生成数据项
+ List