<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                我們通過`@BussinessLog注解`來記錄日志,該注解源碼如下, ``` /** * 標記需要做業務日志的方法 * * @author fengshuonan * @date 2017-03-31 12:46 */ @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface BussinessLog { /** * 業務的名稱,例如:"修改菜單" */ String value() default ""; /** * 被修改的實體的唯一標識,例如:菜單實體的唯一標識為"id" */ String key() default "id"; /** * 字典(用于查找key的中文名稱和字段的中文名稱) */ Class<? extends AbstractDictMap> dict() default SystemDict.class; } ``` 其中,`value`為需要記錄日志的業務名稱,`key`為修改或刪除內容的唯一標識,通過這個唯一標識可以知道具體的修改的哪條記錄,刪除的哪條記錄等等,`dict`為對修改字段的中文翻譯字典,因為程序記錄的都是英文的字段名稱,這里通過字典,把英文字段和中文名稱對應起來,那么日志信息記錄到數據庫中就可以變為中文的記錄 以`UserDict`為例, ``` /** * 用戶的字典 * * @author fengshuonan * @date 2017-05-06 15:01 */ public class UserDict extends AbstractDictMap { @Override public void init() { put("userId","賬號"); put("avatar","頭像"); put("account","賬號"); put("name","名字"); put("birthday","生日"); put("sex","性別"); put("email","電子郵件"); put("phone","電話"); put("roleid","角色名稱"); put("deptid","部門名稱"); put("roleIds","角色名稱集合"); } @Override protected void initBeWrapped() { putFieldWrapperMethodName("sex","getSexName"); putFieldWrapperMethodName("deptid","getDeptName"); putFieldWrapperMethodName("roleid","getSingleRoleName"); putFieldWrapperMethodName("userId","getUserAccountById"); putFieldWrapperMethodName("roleIds","getRoleName"); } } ``` 翻譯字典類中包含兩個方法`init()`和`initBeWrapped()`,其中`init()`為存放英文字段和中文字段的匹配,`initBeWrapped()`操作的是把某些字段的數字值翻譯為中文直觀名稱的過程,例如當修改用戶信息時,用戶修改了一個人性別信息(數據庫中1是男,2是女),由1變為了2,程序記錄的是數據庫中1變為2,但是這句話給業務人員看到他是不知道1和2是什么東西的,所以這里做了一個`值的包裝`,把`1`包裝為對應的中文名稱`男`,`2`包裝為對應的中文名稱`女`,這樣,記錄到數據庫中,信息就變為了,xxx用戶操作了`修改用戶`功能,值由`男`變為了`女`.? 在initBeWrapped()方法中`putFieldWrapperMethodName()`這個方法的第一參數是被包裝的字段名,第二個參數是`ConstantFactory`中的方法名,因為默認會調用`ConstantFactory`來包裝值屬性 下面介紹業務日志記錄的具體步驟: > * 1.在需要被記錄日志的接口上添加@BussinessLog注解,并根據需要填寫三個屬性(value,key,dict) > * 2.若是添加或者修改業務,往往需要去編寫Dict字典類 > * 3.若是修改業務,例如修改用戶信息,因為點擊更新用戶的時候不會提交修改之前的數據,所以在更新用戶信息之前需要保存一下用戶的舊的信息才可以記錄用戶修改的內容,這個緩存用戶臨時信息的地方一般添加在跳轉到用戶詳情接口,用`LogObjectHolder.me().set(user);`這行代碼來緩存用戶的舊的信息,具體用法可以參考`UserMgrController`類中的`userEdit()`和`edit()`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看