<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      若依

      SQL

      1、

      drop table if exists sys_dept;
      create table sys_dept (
        dept_id           bigint(20)      not null auto_increment    comment '部門id',
        parent_id         bigint(20)      default 0                  comment '父部門id',
        ancestors         varchar(50)     default ''                 comment '祖級列表',
        dept_name         varchar(30)     default ''                 comment '部門名稱',
        order_num         int(4)          default 0                  comment '顯示順序',
        leader            varchar(20)     default null               comment '負責人',
        phone             varchar(11)     default null               comment '聯系電話',
        email             varchar(50)     default null               comment '郵箱',
        status            char(1)         default '0'                comment '部門狀態(0正常 1停用)',
        del_flag          char(1)         default '0'                comment '刪除標志(0代表存在 2代表刪除)',
        create_by         varchar(64)     default ''                 comment '創建者',
        create_time 	    datetime                                   comment '創建時間',
        update_by         varchar(64)     default ''                 comment '更新者',
        update_time       datetime                                   comment '更新時間',
        primary key (dept_id)
      ) engine=innodb auto_increment=200 comment = '部門表';
      

      1、刪除sys_dept如果存在

      2、bight--大整數類型
      varchar--可變長度字符串類型
      char--固定字符串類型,為什么部門狀態不用Int用char,char(1),這里的char是數字,只占1個字節,而Int占了4個字節,更浪費空間(實際占用:在 utf8 或 utf8mb4 字符集中數字也只占用 1 個字節,如果是中文的char,可能占1-3個字節,看是什么編碼)

      3、為什么auto_increment=200 ,要從200開始自增,防止易于維護:系統內置數據和用戶數據分離明顯、擴展性好:為未來可能的手動插入數據預留空間、避免沖突:防止自增ID與預設數據ID沖突

      4、沒什么要特別記,記住數據庫常見這幾種數據類型就行

      5、SQL的char和Java的char是不一樣的
      -- SQL中的char是固定長度的字符串類型
      char(1) -- 表示固定長度為1的字符串,可以存儲'0', 'A', '中'等單個字符
      char(10) -- 表示固定長度為10的字符串
      -- Java中的char是基本數據類型,表示單個字符
      char c = 'A'; // 只能存儲單個字符
      char c2 = '中'; // 可以存儲Unicode字符

      2、

      -- 4、角色信息表
      -- ----------------------------
      drop table if exists sys_role;
      create table sys_role (
        role_id              bigint(20)      not null auto_increment    comment '角色ID',
        role_name            varchar(30)     not null                   comment '角色名稱',
        role_key             varchar(100)    not null                   comment '角色權限字符串',
        role_sort            int(4)          not null                   comment '顯示順序',
        data_scope           char(1)         default '1'                comment '數據范圍(1:全部數據權限 2:自定數據權限 3:本部門數據權限 4:本部門及以下數據權限)',
        menu_check_strictly  tinyint(1)      default 1                  comment '菜單樹選擇項是否關聯顯示',
        dept_check_strictly  tinyint(1)      default 1                  comment '部門樹選擇項是否關聯顯示',
        status               char(1)         not null                   comment '角色狀態(0正常 1停用)',
        del_flag             char(1)         default '0'                comment '刪除標志(0代表存在 2代表刪除)',
        create_by            varchar(64)     default ''                 comment '創建者',
        create_time          datetime                                   comment '創建時間',
        update_by            varchar(64)     default ''                 comment '更新者',
        update_time          datetime                                   comment '更新時間',
        remark               varchar(500)    default null               comment '備注',
        primary key (role_id)
      ) engine=innodb auto_increment=100 comment = '角色信息表';
      

      前端

      1、如果解決瀏覽器跨域問題,將請求指定到前端代碼,然后前端的服務轉化請求到后端的地址,請求后端的內容,服務和服務之間請求是沒有跨域問題
      具體流程是:

      1. 瀏覽器 → localhost:80/dev-api/system/user/info (GET)--前端代碼請求用axios請求地址寫dev-api/system/user/info。。。,瀏覽器會自動加上當前IPlocalhost:80
      2. Webpack Dev Server 接收請求--(自動識別攔下有dev-api的請求)
      3. Webpack Dev Server → localhost:8080/system/user/info (GET) --自動轉化成后端的地址
      4. 后端Spring Boot應用處理請求
      5. Spring Boot → Webpack Dev Server 返回JSON響應
      6. Webpack Dev Server → 瀏覽器 返回響應
      7. 瀏覽器中的JavaScript處理響應數據
        在vue.js文件修改dev-api或prod-api對應后端的地址

      2、
      開發環境啟動:npm run dev
      生產環境構建:npm run build:prod
      根據package.json的命令,來決定啟動哪個環境,

      // src/utils/request.js
      import axios from 'axios'
      
      // process.env.VUE_APP_BASE_API 會根據環境自動切換
      const service = axios.create({
        baseURL: process.env.VUE_APP_BASE_API, // 自動識別 /dev-api 或 /prod-api,
        timeout: 5000
      })
      
      export default service
      

      3、雖然前端也能用node,js的web服務啟用,但是一般生產環境都是交給nginx啟動
      --Node.js服務:
      需要持續運行Node.js進程
      內存占用較高(V8引擎)
      CPU消耗相對較大
      --Nginx服務:
      內存占用極低(通常幾MB)
      CPU消耗很少
      進程管理簡單
      生產環境構建:npm run build:prod后發到nginx

      后端模塊

      ruoyi-admin管理模塊

      啟動類

      1、

      //啟動類
      //exclude = { DataSourceAutoConfiguration.class 是排除Spring Boot的默認數據源自動配置
      // 如果不排除,默認會自動配置數據源,Spring Boot會自動尋找application.yml中的數據源配置,并創建默認的DataSource bean
      //1、配置沖突:若依有自己的數據源配置(Druid)2、功能限制:默認數據源缺少監控、連接池管理等功能3、自定義需求:若依需要使用Druid的高級特性
      @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
      public class RuoYiApplication
      {
          public static void main(String[] args)
          {
              // System.setProperty("spring.devtools.restart.enabled", "false");
              SpringApplication.run(RuoYiApplication.class, args);
              System.out.println("(????)??  若依啟動成功   ?(′?`?)?  \n" +
      

      2、
      druid監控
      訪問地址:http://localhost:8080/druid
      用戶名:ruoyi
      密碼:123456

      3、如何配置druid
      寫了druid配置類文件,然后在application.yml中引入

      # application.yml
      spring:
        profiles:
          include: druid  # 包含application-druid.yml配置
      

      4、RuoYiServletInitializer類
      有這個類說明可以打包成war包,運行到tomcat這種servlet容器

      登錄與認證

      @RestController
      public class SysLoginController {
          // 通過Spring注入依賴
          
          @PostMapping("/login")
          public AjaxResult login(@RequestBody LoginBody loginBody) {
              // 生成并返回認證令牌
          }
          
          @GetMapping("getInfo")
          public AjaxResult getInfo() {
              // 返回用戶詳細信息、角色和權限
          }
          
          @GetMapping("getRouters")
          public AjaxResult getRouters() {
              // 返回菜單路由信息
          }
      }
      

      如何在請求后/login后也請求getinfo和getrouters

      // src/store/modules/user.js 或類似文件
      const actions = {
        // 登錄
        login({ commit }, userInfo) {
          const { username, password, code, uuid } = userInfo
          return new Promise((resolve, reject) => {
            login(username, password, code, uuid).then(res => {
              // 1. 登錄成功,獲取token
              const token = res.token
              commit('SET_TOKEN', token)
              setToken(token)
              
              // 2. 登錄成功后,立即獲取用戶信息和路由信息
              Promise.all([
                dispatch('getInfo'),
                dispatch('getRouters')
              ]).then(() => {
                resolve()
              })
              
            }).catch(error => {
              reject(error)
            })
          })
        },
      
        // 獲取用戶信息
        getInfo({ commit, state }) {
          return new Promise((resolve, reject) => {
            getInfo().then(res => {
              const { user, roles, permissions } = res
              commit('SET_USER', user)
              commit('SET_ROLES', roles)
              commit('SET_PERMISSIONS', permissions)
              resolve(res)
            }).catch(error => {
              reject(error)
            })
          })
        },
      
        // 獲取路由信息
        getRouters({ commit, state }) {
          return new Promise((resolve, reject) => {
            getRouters().then(res => {
              const { data } = res
              commit('SET_ROUTERS', data)
              resolve(data)
            }).catch(error => {
              reject(error)
            })
          })
        }
      }
      

      登陸頁驗證碼

      CaptchaController管理驗證碼的生成和驗證

      1. 用戶訪問登錄頁面 (/login)
         ↓
      2. Vue組件創建,調用 getCaptcha()
         ↓
      3. 發送 GET /captchaImage 請求
         ↓
      4. 后端生成驗證碼圖片和UUID
         ↓
      5. 驗證碼存入Redis,圖片Base64編碼返回
         ↓
      6. 前端顯示驗證碼圖片
         ↓
      7. 用戶輸入用戶名、密碼、驗證碼
         ↓
      8. 點擊登錄按鈕,發送POST /login請求
         ↓
      9. 后端驗證驗證碼(從Redis獲取對比)
         ↓
      10. 驗證通過則登錄成功
      

      認證流程

      ruoyi-system 系統模塊

      用戶管理系統

      sysuser類--路徑在common-core-domain-entity

      public class SysUser extends BaseEntity
      {
          private static final long serialVersionUID = 1L;
      
          /** 用戶ID */
          @Excel(name = "用戶序號", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用戶編號")
          private Long userId;
      
      這串注解 `@Excel(name = "用戶序號", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用戶編號")` 的各個參數值如下:
      
      ## 1. 注解參數詳解
      
      ### name = "用戶序號"
      - **值**: `"用戶序號"`
      - **作用**: 在Excel文件中該列的標題顯示為"用戶序號"
      
      ### type = Type.EXPORT
      - **值**: `Type.EXPORT`
      - **作用**: 指定該字段僅在導出Excel時使用
      - **可選值**:
        - `Type.ALL`: 導入和導出都使用(默認)
        - `Type.EXPORT`: 僅導出時使用
        - `Type.IMPORT`: 僅導入時使用
      
      ### cellType = ColumnType.NUMERIC
      - **值**: `ColumnType.NUMERIC`
      - **作用**: 指定Excel單元格的數據類型為數字類型
      - **可選值**:
        - `ColumnType.NUMERIC`: 數字類型
        - `ColumnType.TEXT`: 文本類型
        - `ColumnType.IMAGE`: 圖片類型
      
      ### prompt = "用戶編號"
      - **值**: `"用戶編號"`
      - **作用**: 在Excel單元格中顯示提示信息"用戶編號"
      
      ## 2. 實際效果
      
      ### 導出Excel時的表現:
      

      Excel文件:
      ┌────────┬────────┬────────┬────────┐
      │ 用戶序號 │ 用戶名稱 │ 用戶郵箱 │ 手機號碼 │
      ├────────┼────────┼────────┼────────┤
      │ 1 │ 管理員 │admin@xx.com│138xxxxxxx│
      │ 2 │ 張三 │zhang@xx.com│139xxxxxxx│
      └────────┴────────┴────────┴────────┘

      
      
      ### 單元格特性:
      - **數據格式**: 數字格式(可進行數值計算)
      - **單元格提示**: 鼠標懸停時顯示"用戶編號"提示
      - **僅導出**: 導入Excel時不會使用此字段
      
      ## 3. 完整的Excel注解配置示例
      
      ### 對比其他字段:
      ```java
      /** 用戶ID */
      @Excel(name = "用戶序號", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用戶編號")
      private Long userId;
      
      /** 部門ID */
      @Excel(name = "部門編號", type = Type.IMPORT)  // 僅導入時使用
      private Long deptId;
      
      /** 用戶賬號 */
      @Excel(name = "登錄名稱")  // 默認為ALL,數字類型
      private String userName;
      
      /** 用戶昵稱 */
      @Excel(name = "用戶名稱")
      private String nickName;
      
      /** 手機號碼 */
      @Excel(name = "手機號碼", cellType = ColumnType.TEXT)  // 強制文本格式
      private String phonenumber;
      
       4. 在若依系統中的使用
      
      ### 導出用戶列表:
      ```java
      // Controller中使用
      @GetMapping("/export")
      public AjaxResult export(SysUser user) {
          List<SysUser> list = userService.selectUserList(user);
          ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
          return util.exportExcel(list, "用戶數據");
      }
      
      
      ### 生成的Excel效果:
      - **"用戶序號"列**: 顯示為數字格式,單元格有"用戶編號"提示
      - **僅在導出時顯示**: 導入模板中不會包含此列
      
      ## 5. 總結
      
      這個注解配置的具體值為:
      - **name**: "用戶序號" - Excel列標題
      - **type**: Type.EXPORT - 僅導出使用
      - **cellType**: ColumnType.NUMERIC - 數字格式
      - **prompt**: "用戶編號" - 單元格提示信息
      
      這樣的配置使得用戶ID在導出Excel時以數字格式顯示,并提供友好的用戶界面提示。
      

      不需要寫 @Autowired 注入,因為這個類是實體類(Entity),不是Spring管理的Bean組件。只有像@service,@controllor這類組件才要autowired注入

      框架設計

      核心模塊及職責

      黑馬程序員AI+若依框架項目

      基礎篇

      1、入門案例,用代碼生成器的功能時,記得vue模板選vue2,不然代碼導入后,會一直加載不出頁面
      2、代碼生成時,先導入sql文件,再配置代碼生成信息,再下載代碼導入項目
      3、改完前前端代碼記得重啟下前端服務

      Screenshot_20250812_225641_tv.danmaku

      Screenshot_20250812_225356_tv.danmaku

      二次開發

      1、新建sky-merchant子模塊(maven模塊)
      2、父工程版本鎖定
      3、sky-admin添加依賴

      posted @ 2025-07-29 23:36  乘加法  閱讀(13)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲亚洲国产一二区| 无码人妻一区二区三区精品视频 | 久久99精品久久久久麻豆| 成全高清在线播放电视剧| 国产精品黄色精品黄色大片 | 中文 在线 日韩 亚洲 欧美| h无码精品3d动漫在线观看| 亚洲精品揄拍自拍首页一| 亚洲男女羞羞无遮挡久久丫| 亚洲AV福利天堂在线观看| 亚洲一区二区av免费| 内射极品少妇xxxxxhd| 亚洲综合色一区二区三区| 亚洲精品天堂成人片AV在线播放| 国产真人性做爰久久网站 | 人妻出轨av中文字幕| 亚洲中文字幕一二区日韩| 日韩卡1卡2卡三卡免费网站| 国产老妇伦国产熟女老妇高清| 精品超清无码视频在线观看| 热久在线免费观看视频| 极品一区二区三区水蜜桃| 国产在线精品欧美日韩电影| 丹江口市| 国产成人精品亚洲资源| 久久99热只有频精品8| 性欧美丰满熟妇xxxx性| 国产激情无码一区二区三区| 人妻在线无码一区二区三区| 成人区精品一区二区不卡| 欧美大胆老熟妇乱子伦视频| 可以直接看的无码av| 18岁日韩内射颜射午夜久久成人| 国产精品爽爽va在线观看网站| 韩国精品一区二区三区在线观看| 国产精品av中文字幕| a级国产乱理伦片在线观看al| 四虎永久精品在线视频| 国产成人午夜精品福利| 中文字幕国产精品资源| 99中文字幕国产精品|