From d6f570bb96c5af6e23d9746ddd8c3b630cefacd0 Mon Sep 17 00:00:00 2001
From: weiweiw <14335254+weiweiw22@user.noreply.gitee.com>
Date: Fri, 14 Jun 2024 14:30:03 +0800
Subject: [PATCH] first commit to ai platform
---
bonus-api/bonus-ai-api-system/pom.xml | 28 ++
bonus-api/bonus-ai-api-system/src/.DS_Store | Bin 0 -> 6148 bytes
.../bonus-ai-api-system/src/main/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/com/bonus/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/com/bonus/system/.DS_Store | Bin 0 -> 6148 bytes
.../bonus/system/api/RemoteFileService.java | 29 ++
.../bonus/system/api/RemoteLogService.java | 41 +++
.../bonus/system/api/RemoteUserService.java | 43 +++
.../com/bonus/system/api/domain/SysDept.java | 203 +++++++++++
.../bonus/system/api/domain/SysDictData.java | 176 ++++++++++
.../bonus/system/api/domain/SysDictType.java | 96 ++++++
.../com/bonus/system/api/domain/SysFile.java | 50 +++
.../system/api/domain/SysLogininfor.java | 102 ++++++
.../bonus/system/api/domain/SysOperLog.java | 255 ++++++++++++++
.../com/bonus/system/api/domain/SysRole.java | 241 +++++++++++++
.../com/bonus/system/api/domain/SysUser.java | 323 ++++++++++++++++++
.../factory/RemoteFileFallbackFactory.java | 35 ++
.../api/factory/RemoteLogFallbackFactory.java | 42 +++
.../factory/RemoteUserFallbackFactory.java | 41 +++
.../com/bonus/system/api/model/LoginUser.java | 150 ++++++++
...ot.autoconfigure.AutoConfiguration.imports | 3 +
.../bonus-large-model/pom.xml | 102 ++++++
.../src/main/java/com/bonus/.DS_Store | Bin 0 -> 6148 bytes
.../com/bonus/llm/BonusLLMApplication.java | 31 ++
.../src/main/resources/banner.txt | 10 +
.../src/main/resources/bootstrap.yml | 29 ++
.../src/main/resources/logback.xml | 74 ++++
.../bonus-ocr-recognition/pom.xml | 102 ++++++
.../bonus-ocr-recognition/src/.DS_Store | Bin 0 -> 6148 bytes
.../bonus-ocr-recognition/src/main/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/com/bonus/.DS_Store | Bin 0 -> 6148 bytes
.../src/main/java/com/bonus/ocr/.DS_Store | Bin 0 -> 6148 bytes
.../com/bonus/ocr/BonusOcrApplication.java | 31 ++
.../src/main/resources/banner.txt | 10 +
.../src/main/resources/bootstrap.yml | 29 ++
.../src/main/resources/logback.xml | 74 ++++
bonus-modules/bonus-large-model/pom.xml | 20 ++
.../com/bonus/llm/BonusFileApplication.java | 31 ++
.../src/main/resources/banner.txt | 10 +
.../src/main/resources/bootstrap.yml | 29 ++
.../src/main/resources/logback.xml | 74 ++++
45 files changed, 2514 insertions(+)
create mode 100644 bonus-api/bonus-ai-api-system/pom.xml
create mode 100644 bonus-api/bonus-ai-api-system/src/.DS_Store
create mode 100644 bonus-api/bonus-ai-api-system/src/main/.DS_Store
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/.DS_Store
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/.DS_Store
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/.DS_Store
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/.DS_Store
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteFileService.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteLogService.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDept.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictType.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysLogininfor.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysOperLog.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteFileFallbackFactory.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteLogFallbackFactory.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java
create mode 100644 bonus-api/bonus-ai-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 bonus-modules/bonus-ai-modules/bonus-large-model/pom.xml
create mode 100644 bonus-modules/bonus-ai-modules/bonus-large-model/src/main/java/com/bonus/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-large-model/src/main/java/com/bonus/llm/BonusLLMApplication.java
create mode 100644 bonus-modules/bonus-ai-modules/bonus-large-model/src/main/resources/banner.txt
create mode 100644 bonus-modules/bonus-ai-modules/bonus-large-model/src/main/resources/bootstrap.yml
create mode 100644 bonus-modules/bonus-ai-modules/bonus-large-model/src/main/resources/logback.xml
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/pom.xml
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/bonus/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/bonus/ocr/.DS_Store
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/bonus/ocr/BonusOcrApplication.java
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/resources/banner.txt
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/resources/bootstrap.yml
create mode 100644 bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/resources/logback.xml
create mode 100644 bonus-modules/bonus-large-model/pom.xml
create mode 100644 bonus-modules/bonus-large-model/src/main/java/com/bonus/llm/BonusFileApplication.java
create mode 100644 bonus-modules/bonus-large-model/src/main/resources/banner.txt
create mode 100644 bonus-modules/bonus-large-model/src/main/resources/bootstrap.yml
create mode 100644 bonus-modules/bonus-large-model/src/main/resources/logback.xml
diff --git a/bonus-api/bonus-ai-api-system/pom.xml b/bonus-api/bonus-ai-api-system/pom.xml
new file mode 100644
index 0000000..3c02b0a
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/pom.xml
@@ -0,0 +1,28 @@
+
+
+
+ com.bonus
+ bonus-api
+ 3.6.4
+
+ 4.0.0
+
+ bonus-ai-api-system
+
+
+ bonus-ai-api-system系统接口模块
+
+
+
+
+
+
+ com.bonus
+ bonus-common-core
+
+
+
+
+
\ No newline at end of file
diff --git a/bonus-api/bonus-ai-api-system/src/.DS_Store b/bonus-api/bonus-ai-api-system/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..7b0d36729e2ee777a660f9e8c6709dd97bc2fb68
GIT binary patch
literal 6148
zcmeH~F>V4u3`M`g7D#EfOgRk)$PGpaPQV2S&>%r5BKkQx-ySzvsH0W%E!l7ES!;KH
zv9ktX>-*^w7y&HlPOLmk%$N_j;tOYdpMH*)!|itQBJHgMp3+B5_H$d10#ZNMM4T9irw
zDe%t}uwk>?toc%Twm!X{*Y{cVb)%DUIm54?049DEf6&9YUwlE)m<
zk%er^j=Knh3!DIf);
zz>E~gV|@8Jqi52iNC7D@4+Z@DQ0UH@Y@PAxV2BZb99RzHI%Wy7c!8|R*2xOZa(b|A
zwHQOZ9_?hw>uR!f_I6kfAC`AEpJHg%+hK(X&1yhF3P^#80*juHe*W+1ujcQ^n8@Auu4PPqH)~DC=`aY|^Zges(XZZ6Iz{HQ@6+Mjm#TR5vwoX=P`Vj~j6r{kv
GD)0dNyb`AX
literal 0
HcmV?d00001
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/.DS_Store b/bonus-api/bonus-ai-api-system/src/main/java/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..35a54bf0595027f28217af82c3d32981e121b5e7
GIT binary patch
literal 6148
zcmeH~Jr2S!425mVP>H1@V-^m;4I%_5-~tF3K^+i#j?VMXLSaS~dY0@jc51bKLsN^0
z?w;4J$RHv;+$b9h6I0}!Tx68{^>MkK$MI$*w?)zl@IfZ~xlK?3DnJFO02QDDGg2TA
z@_sd=XX2w!0V*&L1?>A!;KrJ4LH~3h_y_tMAK>5S|49o|DnJGPOaWc)
zkNX{7D$mxB*R%R5tF~@%&@V@L`w2i|NAVi&hW%m-uqIm&6&Qa6Tm}Xz@KXg|*oF~o
literal 0
HcmV?d00001
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/.DS_Store b/bonus-api/bonus-ai-api-system/src/main/java/com/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..8a20afe454f2aa343cb53edb363ac00073d24901
GIT binary patch
literal 6148
zcmeH~J&pn~427SUS!pF2$}Q7y0B#T=H~|+xvy^D3K=e8KK09t0wniiLEIBWB;`#ZC
z$rym`@0T600q{k4#ny+J8RJiknDC1`ZkOB7b)2TFr}2?{J)rX%kL$TC5djep0TB=Z
z5m*p`IK+AWuNU-8dK3{5fn^Zz??a)x*3{NDJ{=sQ1)vU0hjAXg1hsgAT2otBW@wh(
zgJr2j8{+vWrhZ?U|0Dgs{(n}Y
zPy|Ha%?Q|VI34zUsXSYsUeELA%=*01sj;2I!%qMMKZ?KUVO%dhq1M#al^L3T1OkHw
I5qK$qKL!yKpa1{>
literal 0
HcmV?d00001
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/.DS_Store b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..c7f175f42326c4f01a07f5d1e40f837a2f64205f
GIT binary patch
literal 6148
zcmeHKISv9b4733uBpOP}e1RWC2wuPk5Jv~101CRTco$D&d=#LC4hqm%awc&+i894{
zEh0KSZzdum5gEV@w=YMzz)z2S+n`Ya
zDnJFO02QDDA6Fnt>|prulX)N&paQ?HfPEhd+^{A#f&S^h;4J{Khp-#w-b(G
z{r@wGD=I(*{z?Ju%@(sMo|Lt<^*F1w1-^t^&JAvcxl=HBIR<(;#=^?+*pni!*c|&c
Vu?ciK;!X$hXTWr!QGstOa0e=g6|evR
literal 0
HcmV?d00001
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/.DS_Store b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..f9538889e8f39881ab88794e1723a5de06f13390
GIT binary patch
literal 6148
zcmeH~JqiLr422WdLa^D=avBfd4F=H@cme+!K~NC;Il3=DjjOdR@&d^>$!yr&SL|#=
zMAy&rN~9N&8QdsK3jG6tE4fXQR)F_1*w1Z(3Qz$mKn17(6&R5M
zd63WMBYGx23KgIN<50l94+US|ZT=s$Fr@-i;LjA$
z>1MZC upload(@RequestPart(value = "file") MultipartFile file);
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteLogService.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteLogService.java
new file mode 100644
index 0000000..682081e
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteLogService.java
@@ -0,0 +1,41 @@
+package com.bonus.system.api;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import com.bonus.common.core.constant.SecurityConstants;
+import com.bonus.common.core.constant.ServiceNameConstants;
+import com.bonus.common.core.domain.R;
+import com.bonus.system.api.domain.SysLogininfor;
+import com.bonus.system.api.domain.SysOperLog;
+import com.bonus.system.api.factory.RemoteLogFallbackFactory;
+
+/**
+ * 日志服务
+ *
+ * @author bonus
+ */
+@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
+public interface RemoteLogService
+{
+ /**
+ * 保存系统日志
+ *
+ * @param sysOperLog 日志实体
+ * @param source 请求来源
+ * @return 结果
+ */
+ @PostMapping("/operlog")
+ public R saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
+
+ /**
+ * 保存访问记录
+ *
+ * @param sysLogininfor 访问实体
+ * @param source 请求来源
+ * @return 结果
+ */
+ @PostMapping("/logininfor")
+ public R saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java
new file mode 100644
index 0000000..5c19cec
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java
@@ -0,0 +1,43 @@
+package com.bonus.system.api;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import com.bonus.common.core.constant.SecurityConstants;
+import com.bonus.common.core.constant.ServiceNameConstants;
+import com.bonus.common.core.domain.R;
+import com.bonus.system.api.domain.SysUser;
+import com.bonus.system.api.factory.RemoteUserFallbackFactory;
+import com.bonus.system.api.model.LoginUser;
+
+/**
+ * 用户服务
+ *
+ * @author bonus
+ */
+@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
+public interface RemoteUserService
+{
+ /**
+ * 通过用户名查询用户信息
+ *
+ * @param username 用户名
+ * @param source 请求来源
+ * @return 结果
+ */
+ @GetMapping("/user/info/{username}")
+ public R getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * 注册用户信息
+ *
+ * @param sysUser 用户信息
+ * @param source 请求来源
+ * @return 结果
+ */
+ @PostMapping("/user/register")
+ public R registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDept.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDept.java
new file mode 100644
index 0000000..6c9f019
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDept.java
@@ -0,0 +1,203 @@
+package com.bonus.system.api.domain;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.bonus.common.core.web.domain.BaseEntity;
+
+/**
+ * 部门表 sys_dept
+ *
+ * @author bonus
+ */
+public class SysDept extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 部门ID */
+ private Long deptId;
+
+ /** 父部门ID */
+ private Long parentId;
+
+ /** 祖级列表 */
+ private String ancestors;
+
+ /** 部门名称 */
+ private String deptName;
+
+ /** 显示顺序 */
+ private Integer orderNum;
+
+ /** 负责人 */
+ private String leader;
+
+ /** 联系电话 */
+ private String phone;
+
+ /** 邮箱 */
+ private String email;
+
+ /** 部门状态:0正常,1停用 */
+ private String status;
+
+ /** 删除标志(0代表存在 2代表删除) */
+ private String delFlag;
+
+ /** 父部门名称 */
+ private String parentName;
+
+ /** 子部门 */
+ private List children = new ArrayList();
+
+ public Long getDeptId()
+ {
+ return deptId;
+ }
+
+ public void setDeptId(Long deptId)
+ {
+ this.deptId = deptId;
+ }
+
+ public Long getParentId()
+ {
+ return parentId;
+ }
+
+ public void setParentId(Long parentId)
+ {
+ this.parentId = parentId;
+ }
+
+ public String getAncestors()
+ {
+ return ancestors;
+ }
+
+ public void setAncestors(String ancestors)
+ {
+ this.ancestors = ancestors;
+ }
+
+ @NotBlank(message = "部门名称不能为空")
+ @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
+ public String getDeptName()
+ {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName)
+ {
+ this.deptName = deptName;
+ }
+
+ @NotNull(message = "显示顺序不能为空")
+ public Integer getOrderNum()
+ {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum)
+ {
+ this.orderNum = orderNum;
+ }
+
+ public String getLeader()
+ {
+ return leader;
+ }
+
+ public void setLeader(String leader)
+ {
+ this.leader = leader;
+ }
+
+ @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
+ public String getPhone()
+ {
+ return phone;
+ }
+
+ public void setPhone(String phone)
+ {
+ this.phone = phone;
+ }
+
+ @Email(message = "邮箱格式不正确")
+ @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+ public String getEmail()
+ {
+ return email;
+ }
+
+ public void setEmail(String email)
+ {
+ this.email = email;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ public String getDelFlag()
+ {
+ return delFlag;
+ }
+
+ public void setDelFlag(String delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public String getParentName()
+ {
+ return parentName;
+ }
+
+ public void setParentName(String parentName)
+ {
+ this.parentName = parentName;
+ }
+
+ public List getChildren()
+ {
+ return children;
+ }
+
+ public void setChildren(List children)
+ {
+ this.children = children;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("deptId", getDeptId())
+ .append("parentId", getParentId())
+ .append("ancestors", getAncestors())
+ .append("deptName", getDeptName())
+ .append("orderNum", getOrderNum())
+ .append("leader", getLeader())
+ .append("phone", getPhone())
+ .append("email", getEmail())
+ .append("status", getStatus())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java
new file mode 100644
index 0000000..471ff20
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java
@@ -0,0 +1,176 @@
+package com.bonus.system.api.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.bonus.common.core.annotation.Excel;
+import com.bonus.common.core.annotation.Excel.ColumnType;
+import com.bonus.common.core.constant.UserConstants;
+import com.bonus.common.core.web.domain.BaseEntity;
+
+/**
+ * 字典数据表 sys_dict_data
+ *
+ * @author bonus
+ */
+public class SysDictData extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 字典编码 */
+ @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
+ private Long dictCode;
+
+ /** 字典排序 */
+ @Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
+ private Long dictSort;
+
+ /** 字典标签 */
+ @Excel(name = "字典标签")
+ private String dictLabel;
+
+ /** 字典键值 */
+ @Excel(name = "字典键值")
+ private String dictValue;
+
+ /** 字典类型 */
+ @Excel(name = "字典类型")
+ private String dictType;
+
+ /** 样式属性(其他样式扩展) */
+ private String cssClass;
+
+ /** 表格字典样式 */
+ private String listClass;
+
+ /** 是否默认(Y是 N否) */
+ @Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
+ private String isDefault;
+
+ /** 状态(0正常 1停用) */
+ @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ public Long getDictCode()
+ {
+ return dictCode;
+ }
+
+ public void setDictCode(Long dictCode)
+ {
+ this.dictCode = dictCode;
+ }
+
+ public Long getDictSort()
+ {
+ return dictSort;
+ }
+
+ public void setDictSort(Long dictSort)
+ {
+ this.dictSort = dictSort;
+ }
+
+ @NotBlank(message = "字典标签不能为空")
+ @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
+ public String getDictLabel()
+ {
+ return dictLabel;
+ }
+
+ public void setDictLabel(String dictLabel)
+ {
+ this.dictLabel = dictLabel;
+ }
+
+ @NotBlank(message = "字典键值不能为空")
+ @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
+ public String getDictValue()
+ {
+ return dictValue;
+ }
+
+ public void setDictValue(String dictValue)
+ {
+ this.dictValue = dictValue;
+ }
+
+ @NotBlank(message = "字典类型不能为空")
+ @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
+ public String getDictType()
+ {
+ return dictType;
+ }
+
+ public void setDictType(String dictType)
+ {
+ this.dictType = dictType;
+ }
+
+ @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
+ public String getCssClass()
+ {
+ return cssClass;
+ }
+
+ public void setCssClass(String cssClass)
+ {
+ this.cssClass = cssClass;
+ }
+
+ public String getListClass()
+ {
+ return listClass;
+ }
+
+ public void setListClass(String listClass)
+ {
+ this.listClass = listClass;
+ }
+
+ public boolean getDefault()
+ {
+ return UserConstants.YES.equals(this.isDefault);
+ }
+
+ public String getIsDefault()
+ {
+ return isDefault;
+ }
+
+ public void setIsDefault(String isDefault)
+ {
+ this.isDefault = isDefault;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("dictCode", getDictCode())
+ .append("dictSort", getDictSort())
+ .append("dictLabel", getDictLabel())
+ .append("dictValue", getDictValue())
+ .append("dictType", getDictType())
+ .append("cssClass", getCssClass())
+ .append("listClass", getListClass())
+ .append("isDefault", getIsDefault())
+ .append("status", getStatus())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("remark", getRemark())
+ .toString();
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictType.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictType.java
new file mode 100644
index 0000000..50a2be9
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysDictType.java
@@ -0,0 +1,96 @@
+package com.bonus.system.api.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.bonus.common.core.annotation.Excel;
+import com.bonus.common.core.annotation.Excel.ColumnType;
+import com.bonus.common.core.web.domain.BaseEntity;
+
+/**
+ * 字典类型表 sys_dict_type
+ *
+ * @author bonus
+ */
+public class SysDictType extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 字典主键 */
+ @Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
+ private Long dictId;
+
+ /** 字典名称 */
+ @Excel(name = "字典名称")
+ private String dictName;
+
+ /** 字典类型 */
+ @Excel(name = "字典类型")
+ private String dictType;
+
+ /** 状态(0正常 1停用) */
+ @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ public Long getDictId()
+ {
+ return dictId;
+ }
+
+ public void setDictId(Long dictId)
+ {
+ this.dictId = dictId;
+ }
+
+ @NotBlank(message = "字典名称不能为空")
+ @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
+ public String getDictName()
+ {
+ return dictName;
+ }
+
+ public void setDictName(String dictName)
+ {
+ this.dictName = dictName;
+ }
+
+ @NotBlank(message = "字典类型不能为空")
+ @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
+ @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
+ public String getDictType()
+ {
+ return dictType;
+ }
+
+ public void setDictType(String dictType)
+ {
+ this.dictType = dictType;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("dictId", getDictId())
+ .append("dictName", getDictName())
+ .append("dictType", getDictType())
+ .append("status", getStatus())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("remark", getRemark())
+ .toString();
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java
new file mode 100644
index 0000000..7ce7a89
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java
@@ -0,0 +1,50 @@
+package com.bonus.system.api.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 文件信息
+ *
+ * @author bonus
+ */
+public class SysFile
+{
+ /**
+ * 文件名称
+ */
+ private String name;
+
+ /**
+ * 文件地址
+ */
+ private String url;
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl(String url)
+ {
+ this.url = url;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("name", getName())
+ .append("url", getUrl())
+ .toString();
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysLogininfor.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysLogininfor.java
new file mode 100644
index 0000000..0dd5237
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysLogininfor.java
@@ -0,0 +1,102 @@
+package com.bonus.system.api.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.bonus.common.core.annotation.Excel;
+import com.bonus.common.core.annotation.Excel.ColumnType;
+import com.bonus.common.core.web.domain.BaseEntity;
+
+/**
+ * 系统访问记录表 sys_logininfor
+ *
+ * @author bonus
+ */
+public class SysLogininfor extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** ID */
+ @Excel(name = "序号", cellType = ColumnType.NUMERIC)
+ private Long infoId;
+
+ /** 用户账号 */
+ @Excel(name = "用户账号")
+ private String userName;
+
+ /** 状态 0成功 1失败 */
+ @Excel(name = "状态", readConverterExp = "0=成功,1=失败")
+ private String status;
+
+ /** 地址 */
+ @Excel(name = "地址")
+ private String ipaddr;
+
+ /** 描述 */
+ @Excel(name = "描述")
+ private String msg;
+
+ /** 访问时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date accessTime;
+
+ public Long getInfoId()
+ {
+ return infoId;
+ }
+
+ public void setInfoId(Long infoId)
+ {
+ this.infoId = infoId;
+ }
+
+ public String getUserName()
+ {
+ return userName;
+ }
+
+ public void setUserName(String userName)
+ {
+ this.userName = userName;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ public String getIpaddr()
+ {
+ return ipaddr;
+ }
+
+ public void setIpaddr(String ipaddr)
+ {
+ this.ipaddr = ipaddr;
+ }
+
+ public String getMsg()
+ {
+ return msg;
+ }
+
+ public void setMsg(String msg)
+ {
+ this.msg = msg;
+ }
+
+ public Date getAccessTime()
+ {
+ return accessTime;
+ }
+
+ public void setAccessTime(Date accessTime)
+ {
+ this.accessTime = accessTime;
+ }
+}
\ No newline at end of file
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysOperLog.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysOperLog.java
new file mode 100644
index 0000000..dac8a58
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysOperLog.java
@@ -0,0 +1,255 @@
+package com.bonus.system.api.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.bonus.common.core.annotation.Excel;
+import com.bonus.common.core.annotation.Excel.ColumnType;
+import com.bonus.common.core.web.domain.BaseEntity;
+
+/**
+ * 操作日志记录表 oper_log
+ *
+ * @author bonus
+ */
+public class SysOperLog extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 日志主键 */
+ @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
+ private Long operId;
+
+ /** 操作模块 */
+ @Excel(name = "操作模块")
+ private String title;
+
+ /** 业务类型(0其它 1新增 2修改 3删除) */
+ @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
+ private Integer businessType;
+
+ /** 业务类型数组 */
+ private Integer[] businessTypes;
+
+ /** 请求方法 */
+ @Excel(name = "请求方法")
+ private String method;
+
+ /** 请求方式 */
+ @Excel(name = "请求方式")
+ private String requestMethod;
+
+ /** 操作类别(0其它 1后台用户 2手机端用户) */
+ @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
+ private Integer operatorType;
+
+ /** 操作人员 */
+ @Excel(name = "操作人员")
+ private String operName;
+
+ /** 部门名称 */
+ @Excel(name = "部门名称")
+ private String deptName;
+
+ /** 请求url */
+ @Excel(name = "请求地址")
+ private String operUrl;
+
+ /** 操作地址 */
+ @Excel(name = "操作地址")
+ private String operIp;
+
+ /** 请求参数 */
+ @Excel(name = "请求参数")
+ private String operParam;
+
+ /** 返回参数 */
+ @Excel(name = "返回参数")
+ private String jsonResult;
+
+ /** 操作状态(0正常 1异常) */
+ @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
+ private Integer status;
+
+ /** 错误消息 */
+ @Excel(name = "错误消息")
+ private String errorMsg;
+
+ /** 操作时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date operTime;
+
+ /** 消耗时间 */
+ @Excel(name = "消耗时间", suffix = "毫秒")
+ private Long costTime;
+
+ public Long getOperId()
+ {
+ return operId;
+ }
+
+ public void setOperId(Long operId)
+ {
+ this.operId = operId;
+ }
+
+ public String getTitle()
+ {
+ return title;
+ }
+
+ public void setTitle(String title)
+ {
+ this.title = title;
+ }
+
+ public Integer getBusinessType()
+ {
+ return businessType;
+ }
+
+ public void setBusinessType(Integer businessType)
+ {
+ this.businessType = businessType;
+ }
+
+ public Integer[] getBusinessTypes()
+ {
+ return businessTypes;
+ }
+
+ public void setBusinessTypes(Integer[] businessTypes)
+ {
+ this.businessTypes = businessTypes;
+ }
+
+ public String getMethod()
+ {
+ return method;
+ }
+
+ public void setMethod(String method)
+ {
+ this.method = method;
+ }
+
+ public String getRequestMethod()
+ {
+ return requestMethod;
+ }
+
+ public void setRequestMethod(String requestMethod)
+ {
+ this.requestMethod = requestMethod;
+ }
+
+ public Integer getOperatorType()
+ {
+ return operatorType;
+ }
+
+ public void setOperatorType(Integer operatorType)
+ {
+ this.operatorType = operatorType;
+ }
+
+ public String getOperName()
+ {
+ return operName;
+ }
+
+ public void setOperName(String operName)
+ {
+ this.operName = operName;
+ }
+
+ public String getDeptName()
+ {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName)
+ {
+ this.deptName = deptName;
+ }
+
+ public String getOperUrl()
+ {
+ return operUrl;
+ }
+
+ public void setOperUrl(String operUrl)
+ {
+ this.operUrl = operUrl;
+ }
+
+ public String getOperIp()
+ {
+ return operIp;
+ }
+
+ public void setOperIp(String operIp)
+ {
+ this.operIp = operIp;
+ }
+
+ public String getOperParam()
+ {
+ return operParam;
+ }
+
+ public void setOperParam(String operParam)
+ {
+ this.operParam = operParam;
+ }
+
+ public String getJsonResult()
+ {
+ return jsonResult;
+ }
+
+ public void setJsonResult(String jsonResult)
+ {
+ this.jsonResult = jsonResult;
+ }
+
+ public Integer getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(Integer status)
+ {
+ this.status = status;
+ }
+
+ public String getErrorMsg()
+ {
+ return errorMsg;
+ }
+
+ public void setErrorMsg(String errorMsg)
+ {
+ this.errorMsg = errorMsg;
+ }
+
+ public Date getOperTime()
+ {
+ return operTime;
+ }
+
+ public void setOperTime(Date operTime)
+ {
+ this.operTime = operTime;
+ }
+
+ public Long getCostTime()
+ {
+ return costTime;
+ }
+
+ public void setCostTime(Long costTime)
+ {
+ this.costTime = costTime;
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java
new file mode 100644
index 0000000..8540519
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysRole.java
@@ -0,0 +1,241 @@
+package com.bonus.system.api.domain;
+
+import java.util.Set;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.bonus.common.core.annotation.Excel;
+import com.bonus.common.core.annotation.Excel.ColumnType;
+import com.bonus.common.core.web.domain.BaseEntity;
+
+/**
+ * 角色表 sys_role
+ *
+ * @author bonus
+ */
+public class SysRole extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 角色ID */
+ @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
+ private Long roleId;
+
+ /** 角色名称 */
+ @Excel(name = "角色名称")
+ private String roleName;
+
+ /** 角色权限 */
+ @Excel(name = "角色权限")
+ private String roleKey;
+
+ /** 角色排序 */
+ @Excel(name = "角色排序")
+ private Integer roleSort;
+
+ /** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) */
+ @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
+ private String dataScope;
+
+ /** 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */
+ private boolean menuCheckStrictly;
+
+ /** 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) */
+ private boolean deptCheckStrictly;
+
+ /** 角色状态(0正常 1停用) */
+ @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ /** 删除标志(0代表存在 2代表删除) */
+ private String delFlag;
+
+ /** 用户是否存在此角色标识 默认不存在 */
+ private boolean flag = false;
+
+ /** 菜单组 */
+ private Long[] menuIds;
+
+ /** 部门组(数据权限) */
+ private Long[] deptIds;
+
+ /** 角色菜单权限 */
+ private Set permissions;
+
+ public SysRole()
+ {
+
+ }
+
+ public SysRole(Long roleId)
+ {
+ this.roleId = roleId;
+ }
+
+ public Long getRoleId()
+ {
+ return roleId;
+ }
+
+ public void setRoleId(Long roleId)
+ {
+ this.roleId = roleId;
+ }
+
+ public boolean isAdmin()
+ {
+ return isAdmin(this.roleId);
+ }
+
+ public static boolean isAdmin(Long roleId)
+ {
+ return roleId != null && 1L == roleId;
+ }
+
+ @NotBlank(message = "角色名称不能为空")
+ @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
+ public String getRoleName()
+ {
+ return roleName;
+ }
+
+ public void setRoleName(String roleName)
+ {
+ this.roleName = roleName;
+ }
+
+ @NotBlank(message = "权限字符不能为空")
+ @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
+ public String getRoleKey()
+ {
+ return roleKey;
+ }
+
+ public void setRoleKey(String roleKey)
+ {
+ this.roleKey = roleKey;
+ }
+
+ @NotNull(message = "显示顺序不能为空")
+ public Integer getRoleSort()
+ {
+ return roleSort;
+ }
+
+ public void setRoleSort(Integer roleSort)
+ {
+ this.roleSort = roleSort;
+ }
+
+ public String getDataScope()
+ {
+ return dataScope;
+ }
+
+ public void setDataScope(String dataScope)
+ {
+ this.dataScope = dataScope;
+ }
+
+ public boolean isMenuCheckStrictly()
+ {
+ return menuCheckStrictly;
+ }
+
+ public void setMenuCheckStrictly(boolean menuCheckStrictly)
+ {
+ this.menuCheckStrictly = menuCheckStrictly;
+ }
+
+ public boolean isDeptCheckStrictly()
+ {
+ return deptCheckStrictly;
+ }
+
+ public void setDeptCheckStrictly(boolean deptCheckStrictly)
+ {
+ this.deptCheckStrictly = deptCheckStrictly;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ public String getDelFlag()
+ {
+ return delFlag;
+ }
+
+ public void setDelFlag(String delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public boolean isFlag()
+ {
+ return flag;
+ }
+
+ public void setFlag(boolean flag)
+ {
+ this.flag = flag;
+ }
+
+ public Long[] getMenuIds()
+ {
+ return menuIds;
+ }
+
+ public void setMenuIds(Long[] menuIds)
+ {
+ this.menuIds = menuIds;
+ }
+
+ public Long[] getDeptIds()
+ {
+ return deptIds;
+ }
+
+ public void setDeptIds(Long[] deptIds)
+ {
+ this.deptIds = deptIds;
+ }
+
+ public Set getPermissions()
+ {
+ return permissions;
+ }
+
+ public void setPermissions(Set permissions)
+ {
+ this.permissions = permissions;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("roleId", getRoleId())
+ .append("roleName", getRoleName())
+ .append("roleKey", getRoleKey())
+ .append("roleSort", getRoleSort())
+ .append("dataScope", getDataScope())
+ .append("menuCheckStrictly", isMenuCheckStrictly())
+ .append("deptCheckStrictly", isDeptCheckStrictly())
+ .append("status", getStatus())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("remark", getRemark())
+ .toString();
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
new file mode 100644
index 0000000..6d89efc
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
@@ -0,0 +1,323 @@
+package com.bonus.system.api.domain;
+
+import java.util.Date;
+import java.util.List;
+import javax.validation.constraints.*;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.bonus.common.core.annotation.Excel;
+import com.bonus.common.core.annotation.Excel.ColumnType;
+import com.bonus.common.core.annotation.Excel.Type;
+import com.bonus.common.core.annotation.Excels;
+import com.bonus.common.core.web.domain.BaseEntity;
+import com.bonus.common.core.xss.Xss;
+
+/**
+ * 用户对象 sys_user
+ *
+ * @author bonus
+ */
+public class SysUser extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 用户ID */
+ @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
+ private Long userId;
+
+ /** 部门ID */
+ @Excel(name = "部门编号", type = Type.IMPORT)
+ private Long deptId;
+
+ /** 用户账号 */
+ @Excel(name = "登录名称")
+ private String userName;
+
+ /** 用户昵称 */
+ @Excel(name = "用户名称")
+ private String nickName;
+
+ /** 用户邮箱 */
+ @Excel(name = "用户邮箱")
+ private String email;
+
+ /** 手机号码 */
+ @Excel(name = "手机号码", cellType = ColumnType.TEXT)
+ private String phonenumber;
+
+ /** 用户性别 */
+ @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
+ private String sex;
+
+ /** 用户头像 */
+ private String avatar;
+
+ /** 密码 */
+ private String password;
+
+ /** 帐号状态(0正常 1停用) */
+ @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ /** 删除标志(0代表存在 2代表删除) */
+ private String delFlag;
+
+ /** 最后登录IP */
+ @Excel(name = "最后登录IP", type = Type.EXPORT)
+ private String loginIp;
+
+ /** 最后登录时间 */
+ @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
+ private Date loginDate;
+
+ /** 部门对象 */
+ @Excels({
+ @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
+ @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
+ })
+ private SysDept dept;
+
+ /** 角色对象 */
+ private List roles;
+
+ /** 角色组 */
+ private Long[] roleIds;
+
+ /** 岗位组 */
+ private Long[] postIds;
+
+ /** 角色ID */
+ private Long roleId;
+
+ public SysUser()
+ {
+
+ }
+
+ public SysUser(Long userId)
+ {
+ this.userId = userId;
+ }
+
+ public Long getUserId()
+ {
+ return userId;
+ }
+
+ public void setUserId(Long userId)
+ {
+ this.userId = userId;
+ }
+
+ public boolean isAdmin()
+ {
+ return isAdmin(this.userId);
+ }
+
+ public static boolean isAdmin(Long userId)
+ {
+ return userId != null && 1L == userId;
+ }
+
+ public Long getDeptId()
+ {
+ return deptId;
+ }
+
+ public void setDeptId(Long deptId)
+ {
+ this.deptId = deptId;
+ }
+
+ @Xss(message = "用户昵称不能包含脚本字符")
+ @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
+ public String getNickName()
+ {
+ return nickName;
+ }
+
+ public void setNickName(String nickName)
+ {
+ this.nickName = nickName;
+ }
+
+ @Xss(message = "用户账号不能包含脚本字符")
+ @NotBlank(message = "用户账号不能为空")
+ @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
+ public String getUserName()
+ {
+ return userName;
+ }
+
+ public void setUserName(String userName)
+ {
+ this.userName = userName;
+ }
+
+ @Email(message = "邮箱格式不正确")
+ @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+ public String getEmail()
+ {
+ return email;
+ }
+
+ public void setEmail(String email)
+ {
+ this.email = email;
+ }
+
+ @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
+ public String getPhonenumber()
+ {
+ return phonenumber;
+ }
+
+ public void setPhonenumber(String phonenumber)
+ {
+ this.phonenumber = phonenumber;
+ }
+
+ public String getSex()
+ {
+ return sex;
+ }
+
+ public void setSex(String sex)
+ {
+ this.sex = sex;
+ }
+
+ public String getAvatar()
+ {
+ return avatar;
+ }
+
+ public void setAvatar(String avatar)
+ {
+ this.avatar = avatar;
+ }
+
+ public String getPassword()
+ {
+ return password;
+ }
+
+ public void setPassword(String password)
+ {
+ this.password = password;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ public String getDelFlag()
+ {
+ return delFlag;
+ }
+
+ public void setDelFlag(String delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public String getLoginIp()
+ {
+ return loginIp;
+ }
+
+ public void setLoginIp(String loginIp)
+ {
+ this.loginIp = loginIp;
+ }
+
+ public Date getLoginDate()
+ {
+ return loginDate;
+ }
+
+ public void setLoginDate(Date loginDate)
+ {
+ this.loginDate = loginDate;
+ }
+
+ public SysDept getDept()
+ {
+ return dept;
+ }
+
+ public void setDept(SysDept dept)
+ {
+ this.dept = dept;
+ }
+
+ public List getRoles()
+ {
+ return roles;
+ }
+
+ public void setRoles(List roles)
+ {
+ this.roles = roles;
+ }
+
+ public Long[] getRoleIds()
+ {
+ return roleIds;
+ }
+
+ public void setRoleIds(Long[] roleIds)
+ {
+ this.roleIds = roleIds;
+ }
+
+ public Long[] getPostIds()
+ {
+ return postIds;
+ }
+
+ public void setPostIds(Long[] postIds)
+ {
+ this.postIds = postIds;
+ }
+
+ public Long getRoleId()
+ {
+ return roleId;
+ }
+
+ public void setRoleId(Long roleId)
+ {
+ this.roleId = roleId;
+ }
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("userId", getUserId())
+ .append("deptId", getDeptId())
+ .append("userName", getUserName())
+ .append("nickName", getNickName())
+ .append("email", getEmail())
+ .append("phonenumber", getPhonenumber())
+ .append("sex", getSex())
+ .append("avatar", getAvatar())
+ .append("password", getPassword())
+ .append("status", getStatus())
+ .append("delFlag", getDelFlag())
+ .append("loginIp", getLoginIp())
+ .append("loginDate", getLoginDate())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("remark", getRemark())
+ .append("dept", getDept())
+ .toString();
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteFileFallbackFactory.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteFileFallbackFactory.java
new file mode 100644
index 0000000..023977d
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteFileFallbackFactory.java
@@ -0,0 +1,35 @@
+package com.bonus.system.api.factory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+import com.bonus.common.core.domain.R;
+import com.bonus.system.api.RemoteFileService;
+import com.bonus.system.api.domain.SysFile;
+
+/**
+ * 文件服务降级处理
+ *
+ * @author bonus
+ */
+@Component
+public class RemoteFileFallbackFactory implements FallbackFactory
+{
+ private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
+
+ @Override
+ public RemoteFileService create(Throwable throwable)
+ {
+ log.error("文件服务调用失败:{}", throwable.getMessage());
+ return new RemoteFileService()
+ {
+ @Override
+ public R upload(MultipartFile file)
+ {
+ return R.fail("上传文件失败:" + throwable.getMessage());
+ }
+ };
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteLogFallbackFactory.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteLogFallbackFactory.java
new file mode 100644
index 0000000..c4a57d8
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteLogFallbackFactory.java
@@ -0,0 +1,42 @@
+package com.bonus.system.api.factory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+import com.bonus.common.core.domain.R;
+import com.bonus.system.api.RemoteLogService;
+import com.bonus.system.api.domain.SysLogininfor;
+import com.bonus.system.api.domain.SysOperLog;
+
+/**
+ * 日志服务降级处理
+ *
+ * @author bonus
+ */
+@Component
+public class RemoteLogFallbackFactory implements FallbackFactory
+{
+ private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);
+
+ @Override
+ public RemoteLogService create(Throwable throwable)
+ {
+ log.error("日志服务调用失败:{}", throwable.getMessage());
+ return new RemoteLogService()
+ {
+ @Override
+ public R saveLog(SysOperLog sysOperLog, String source)
+ {
+ return R.fail("保存操作日志失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R saveLogininfor(SysLogininfor sysLogininfor, String source)
+ {
+ return R.fail("保存登录日志失败:" + throwable.getMessage());
+ }
+ };
+
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java
new file mode 100644
index 0000000..be1fdc3
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java
@@ -0,0 +1,41 @@
+package com.bonus.system.api.factory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+import com.bonus.common.core.domain.R;
+import com.bonus.system.api.RemoteUserService;
+import com.bonus.system.api.domain.SysUser;
+import com.bonus.system.api.model.LoginUser;
+
+/**
+ * 用户服务降级处理
+ *
+ * @author bonus
+ */
+@Component
+public class RemoteUserFallbackFactory implements FallbackFactory
+{
+ private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
+
+ @Override
+ public RemoteUserService create(Throwable throwable)
+ {
+ log.error("用户服务调用失败:{}", throwable.getMessage());
+ return new RemoteUserService()
+ {
+ @Override
+ public R getUserInfo(String username, String source)
+ {
+ return R.fail("获取用户失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R registerUserInfo(SysUser sysUser, String source)
+ {
+ return R.fail("注册用户失败:" + throwable.getMessage());
+ }
+ };
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java
new file mode 100644
index 0000000..d335a6f
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java
@@ -0,0 +1,150 @@
+package com.bonus.system.api.model;
+
+import java.io.Serializable;
+import java.util.Set;
+import com.bonus.system.api.domain.SysUser;
+
+/**
+ * 用户信息
+ *
+ * @author bonus
+ */
+public class LoginUser implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 用户唯一标识
+ */
+ private String token;
+
+ /**
+ * 用户名id
+ */
+ private Long userid;
+
+ /**
+ * 用户名
+ */
+ private String username;
+
+ /**
+ * 登录时间
+ */
+ private Long loginTime;
+
+ /**
+ * 过期时间
+ */
+ private Long expireTime;
+
+ /**
+ * 登录IP地址
+ */
+ private String ipaddr;
+
+ /**
+ * 权限列表
+ */
+ private Set permissions;
+
+ /**
+ * 角色列表
+ */
+ private Set roles;
+
+ /**
+ * 用户信息
+ */
+ private SysUser sysUser;
+
+ public String getToken()
+ {
+ return token;
+ }
+
+ public void setToken(String token)
+ {
+ this.token = token;
+ }
+
+ public Long getUserid()
+ {
+ return userid;
+ }
+
+ public void setUserid(Long userid)
+ {
+ this.userid = userid;
+ }
+
+ public String getUsername()
+ {
+ return username;
+ }
+
+ public void setUsername(String username)
+ {
+ this.username = username;
+ }
+
+ public Long getLoginTime()
+ {
+ return loginTime;
+ }
+
+ public void setLoginTime(Long loginTime)
+ {
+ this.loginTime = loginTime;
+ }
+
+ public Long getExpireTime()
+ {
+ return expireTime;
+ }
+
+ public void setExpireTime(Long expireTime)
+ {
+ this.expireTime = expireTime;
+ }
+
+ public String getIpaddr()
+ {
+ return ipaddr;
+ }
+
+ public void setIpaddr(String ipaddr)
+ {
+ this.ipaddr = ipaddr;
+ }
+
+ public Set getPermissions()
+ {
+ return permissions;
+ }
+
+ public void setPermissions(Set permissions)
+ {
+ this.permissions = permissions;
+ }
+
+ public Set getRoles()
+ {
+ return roles;
+ }
+
+ public void setRoles(Set roles)
+ {
+ this.roles = roles;
+ }
+
+ public SysUser getSysUser()
+ {
+ return sysUser;
+ }
+
+ public void setSysUser(SysUser sysUser)
+ {
+ this.sysUser = sysUser;
+ }
+}
diff --git a/bonus-api/bonus-ai-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/bonus-api/bonus-ai-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..83df20b
--- /dev/null
+++ b/bonus-api/bonus-ai-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,3 @@
+com.bonus.system.api.factory.RemoteUserFallbackFactory
+com.bonus.system.api.factory.RemoteLogFallbackFactory
+com.bonus.system.api.factory.RemoteFileFallbackFactory
diff --git a/bonus-modules/bonus-ai-modules/bonus-large-model/pom.xml b/bonus-modules/bonus-ai-modules/bonus-large-model/pom.xml
new file mode 100644
index 0000000..9d4b6de
--- /dev/null
+++ b/bonus-modules/bonus-ai-modules/bonus-large-model/pom.xml
@@ -0,0 +1,102 @@
+
+
+
+ com.bonus
+ bonus-modules
+ 3.6.4
+
+ 4.0.0
+
+ bonus-large-model
+
+
+ bonus-large-model服务
+
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ com.github.tobato
+ fastdfs-client
+
+
+
+
+ io.minio
+ minio
+ ${minio.version}
+
+
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ 3.5.0
+
+
+
+
+ commons-net
+ commons-net
+ 3.8.0
+
+
+
+
+ com.bonus
+ bonus-api-system
+
+
+
+
+ com.bonus
+ bonus-common-swagger
+
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bonus-modules/bonus-ai-modules/bonus-large-model/src/main/java/com/bonus/.DS_Store b/bonus-modules/bonus-ai-modules/bonus-large-model/src/main/java/com/bonus/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..2db372137f05d141c883b77e49747a5f424da0b4
GIT binary patch
literal 6148
zcmeHK-AcnS6i&A3GKSC#g4?f`u_b%oaMdVC$H5Td;3k%6m9X~KdY6W2l+Ddg2f$L*GeT}sR!XrJY7wk
z!wZ$>L7Yw(x*(3GkaB+;r;%EDYMDlvuJuhov_xy-bk^&^px2fC;b_y9>oe3x!_&>C
zC610y&aWmf$t+cGhE5J_YdNr3!aFE-HLw06O;q{>o-(`4A|wWg0b+m{*lh;vxggrR
zO#`i-7$62J7{L8OLPK;d76$d!0UchSG2TE#0Uh5Gh|;2Ku`mb`5N=8VO)0le3~tK7
zFKwP{u`p=L8P_wzICkdp@xt}&;Fmg`an~UA!~ij{%|P9l4xay)@RzB4`+seWas
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/pom.xml b/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/pom.xml
new file mode 100644
index 0000000..a0c7fba
--- /dev/null
+++ b/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/pom.xml
@@ -0,0 +1,102 @@
+
+
+
+ com.bonus
+ bonus-modules
+ 3.6.4
+
+ 4.0.0
+
+ bonus-ocr-recognition
+
+
+ bonus-ocr-recognition服务
+
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ com.github.tobato
+ fastdfs-client
+
+
+
+
+ io.minio
+ minio
+ ${minio.version}
+
+
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ 3.5.0
+
+
+
+
+ commons-net
+ commons-net
+ 3.8.0
+
+
+
+
+ com.bonus
+ bonus-api-system
+
+
+
+
+ com.bonus
+ bonus-common-swagger
+
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/.DS_Store b/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..7b0d36729e2ee777a660f9e8c6709dd97bc2fb68
GIT binary patch
literal 6148
zcmeH~F>V4u3`M`g7D#EfOgRk)$PGpaPQV2S&>%r5BKkQx-ySzvsH0W%E!l7ES!;KH
zv9ktX>-*^w7y&HlPOLmk%$N_j;tOYdpMH*)!|itQBJHgMp3+B5_H$d10#ZNMM4T9irw
zDe%t}uwk>?toc%Twm!X{*Y{cVb)%DUIm54?049DEf6&9YUwlExb!G)pQmsa7q9C7tnBd1K+6m~>d&%ya5ys}9BDcE($z!^T97
zQa}ovD{!65rPu!l`Vam8IY}!iAO-%E0yeB4*DF4$YHRm6ueFW-ME9Hzx*O*~;SlAR
k80DA?FUNP0lzGkP+#d_)#Go@CbfSI+To;)X_-zF~0cN5b5&!@I
literal 0
HcmV?d00001
diff --git a/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/.DS_Store b/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..35a54bf0595027f28217af82c3d32981e121b5e7
GIT binary patch
literal 6148
zcmeH~Jr2S!425mVP>H1@V-^m;4I%_5-~tF3K^+i#j?VMXLSaS~dY0@jc51bKLsN^0
z?w;4J$RHv;+$b9h6I0}!Tx68{^>MkK$MI$*w?)zl@IfZ~xlK?3DnJFO02QDDGg2TA
z@_sd=XX2w!0V*&L1?>A!;KrJ4LH~3h_y_tMAK>5S|49o|DnJGPOaWc)
zkNX{7D$mxB*R%R5tF~@%&@V@L`w2i|NAVi&hW%m-uqIm&6&Qa6Tm}Xz@KXg|*oF~o
literal 0
HcmV?d00001
diff --git a/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/.DS_Store b/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..ec3d2d8982b1349faf939d91ebc92e0a7923d38e
GIT binary patch
literal 6148
zcmeHK%}T>S5Z>*NO(;SR3Oz1(t=Lv6ikA@U3mDOZN=;1BV9b^#v4>K~SzpK}@p+ut
z-Abi;@FG%XVCI|7&TP70%1(zd#=RoyGUhPGEKtOX4dxrcb<`E9m`D|nt39%CnvKIm
zhAX)g_@4~myQ{O1NtUvLEx*6FaGbC(^HXtMhhyh|??HMo^pVeIZlhOf+0b<~{4B-7BKoMPorABpifKej=U=6}b
zz{gnvYlK19V5t#SK)5ai)TP{v7+jY_T$nu9V5w1;Gj4_tZl27|gu>O+VSl008Fw|3
zB?gFruMFVq2jXD=KmB?BS4m`u0b*c18Q`^nKk(pernjz~5__!xy#+WogQZ4@fY2WSMFSaP;7=L&07X7fga7~l
literal 0
HcmV?d00001
diff --git a/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/bonus/.DS_Store b/bonus-modules/bonus-ai-modules/bonus-ocr-recognition/src/main/java/com/bonus/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..882c0d3e32ee4bc380c1f5fafc72cd47787e4aa5
GIT binary patch
literal 6148
zcmeHKPfNov6i>G4I)>1LqQ`*OiJMMQyp%e>fE7Kc%yu1Gtj%aUdl-XW^$Yn;{5-yw
zq@cKiClU7^B)^yUCry6PB#$x1-D%ik%w~*P&=5H)3k1yzT{RP22jnKn(nd0X!cBG(^W>sZkvr(5VstumNTzpkpn8Il`c0
zu+#`15Ux`Jbt*R{2G{9e7beazSZdVijGN+vn=eS5Z<+|-BN@c6nYGJE!ZCs#7l_v1&ruHr6#0kFlI}Wm_sS#tS{t~_&m<+
zZlJ~BQN+%`?l(I>yO|HNKa4T%=HZYri!mmkA#zk|1kJUs9TSYm)f{P1r1Kz_LCrLO
z(}dsNVmZrL#A3Go{U5o0C`bR}gRRJtEr
zN3&vT?Vrme^P^<8Pzg~ugOIzMC<$fZ$~*~EmFsDT=!nkL>MfVU@vv_nk4CG$y*wQa
zKp&s1RvmG0cyx9-eU4ue`KF2Fz_^kRTBfmzz+=I{$N8xbPSdn)z$$WUZ2t5L_`4{-x7$nLC0XJ5j-GVrvmC!
zZk`xir-R)#agM=KqfTdBtqk*+m8-`KSF3~FR^g008mT7+h=EN88hU8q`F{bwOzk6o
zGlfRP05R~-7~su`H*ujTbGCjf56@Z~+5
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bonus-modules/bonus-large-model/pom.xml b/bonus-modules/bonus-large-model/pom.xml
new file mode 100644
index 0000000..8450c1b
--- /dev/null
+++ b/bonus-modules/bonus-large-model/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+ com.bonus
+ bonus-modules
+ 3.6.4
+
+
+ bonus-large-model
+
+
+ 8
+ 8
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/bonus-modules/bonus-large-model/src/main/java/com/bonus/llm/BonusFileApplication.java b/bonus-modules/bonus-large-model/src/main/java/com/bonus/llm/BonusFileApplication.java
new file mode 100644
index 0000000..e4089a7
--- /dev/null
+++ b/bonus-modules/bonus-large-model/src/main/java/com/bonus/llm/BonusFileApplication.java
@@ -0,0 +1,31 @@
+package com.bonus.file;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import com.bonus.common.swagger.annotation.EnableCustomSwagger2;
+
+/**
+ * 文件服务
+ *
+ * @author bonus
+ */
+@EnableCustomSwagger2
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
+public class BonusFileApplication
+{
+ public static void main(String[] args)
+ {
+ SpringApplication.run(BonusFileApplication.class, args);
+ System.out.println("(♥◠‿◠)ノ゙ 文件服务模块启动成功 ლ(´ڡ`ლ)゙ \n" +
+ " .-------. ____ __ \n" +
+ " | _ _ \\ \\ \\ / / \n" +
+ " | ( ' ) | \\ _. / ' \n" +
+ " |(_ o _) / _( )_ .' \n" +
+ " | (_,_).' __ ___(_ o _)' \n" +
+ " | |\\ \\ | || |(_,_)' \n" +
+ " | | \\ `' /| `-' / \n" +
+ " | | \\ / \\ / \n" +
+ " ''-' `'-' `-..-' ");
+ }
+}
diff --git a/bonus-modules/bonus-large-model/src/main/resources/banner.txt b/bonus-modules/bonus-large-model/src/main/resources/banner.txt
new file mode 100644
index 0000000..27cacb9
--- /dev/null
+++ b/bonus-modules/bonus-large-model/src/main/resources/banner.txt
@@ -0,0 +1,10 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+ _ __ _ _
+ (_) / _|(_)| |
+ _ __ _ _ ___ _ _ _ ______ | |_ _ | | ___
+| '__|| | | | / _ \ | | | || ||______|| _|| || | / _ \
+| | | |_| || (_) || |_| || | | | | || || __/
+|_| \__,_| \___/ \__, ||_| |_| |_||_| \___|
+ __/ |
+ |___/
\ No newline at end of file
diff --git a/bonus-modules/bonus-large-model/src/main/resources/bootstrap.yml b/bonus-modules/bonus-large-model/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..6e70201
--- /dev/null
+++ b/bonus-modules/bonus-large-model/src/main/resources/bootstrap.yml
@@ -0,0 +1,29 @@
+# Tomcat
+server:
+ port: 9300
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: bonus-file
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ username: nacos
+ password: nacos
+ discovery:
+ # 服务注册地址
+ server-addr: 192.168.0.14:8848
+ namespace: f1fcd3ea-9460-4597-8acd-0f334527017c
+ config:
+ # 配置中心地址
+ server-addr: 192.168.0.14:8848
+ namespace: f1fcd3ea-9460-4597-8acd-0f334527017c
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
diff --git a/bonus-modules/bonus-large-model/src/main/resources/logback.xml b/bonus-modules/bonus-large-model/src/main/resources/logback.xml
new file mode 100644
index 0000000..7607fdf
--- /dev/null
+++ b/bonus-modules/bonus-large-model/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file