mirror of
https://github.com/FJ-OMS/oms-erp.git
synced 2024-09-20 15:26:28 +08:00
commit skyer-channel
This commit is contained in:
parent
3a0e40ecaa
commit
2db479a775
103
skyer-channel/.gitignore
vendored
Normal file
103
skyer-channel/.gitignore
vendored
Normal file
|
@ -0,0 +1,103 @@
|
|||
#======================================================================================================================
|
||||
#========================================= gitignore的基础用法 =========================================
|
||||
#======================================================================================================================
|
||||
# 一.基础语法
|
||||
# .gitignore配置文件的一些通用技巧 [参考:https://git-scm.com/docs/gitignore]
|
||||
# 1.空白行不匹配任何文件,所以可以作为可读性的分隔符,同时两端的空格将会被忽略.
|
||||
# 2.使用[#]开头,将会注释掉整行,使其不进行匹配操作,如果需要匹配#开头,可以使用转义字符[\].
|
||||
# 3.1匹配模式以[/]结尾,表示想要匹配一个目录及其子文件.(比如[foo/]会匹配foo目录及其下面的路径.)
|
||||
# 3.2匹配模式不包含[/],将会全局匹配该文件.
|
||||
# 4.通配符
|
||||
# [*]: 匹配除[/]以外的任何内容,也就意味着[*]不能跨目录.
|
||||
# [?]: 匹配除[/]和[[]以及[]]以外的任何一个字符.
|
||||
# [**]: 匹配所有的内容,或者说匹配任意目录下的内容.
|
||||
# 示例:
|
||||
# 1.[**/foo/bar] 将会匹配所有直接在foo目录下的bar,无论foo处在何处.
|
||||
# 2.[foo/**]则表示匹配foo目录下的所有文件和目录.
|
||||
# 3.[a/**/b]则可以匹配a/b, a/c/b, a/c/d/b,即此处的[**]可以表示0个或多个.
|
||||
# !!! 需要注意的是,除上面示例的用法外,剩余的[**]都是无效的..
|
||||
# 5.可以通过前缀[!]来表示不忽略某些文件,比如可以通过[!a]来确保文件a不会被忽略,即时前面已经声明了忽略其父目录,该模式优先级高于普通忽略模式.
|
||||
# 二.常用命令
|
||||
# 1.git -rm [https://git-scm.com/docs/git-rm]
|
||||
# 删除文件索引,或者同时删除文件索引和物理文件.可以使用通配符.
|
||||
# 2.git-check-ignore [https://git-scm.com/docs/git-check-ignore]
|
||||
# 调试.gitignore文件
|
||||
# 三.注意事项
|
||||
# 1.如果文件已经被git管理,那么后续添加的忽略模式将不会生效,具体解决方法,参考<<二.常用命令>>.
|
||||
|
||||
#=======================================================================================================================
|
||||
#============================== java忽略文件 =====================================
|
||||
#===================== https://github.com/github/gitignore/blob/master/Java.gitignore ==================
|
||||
#=======================================================================================================================
|
||||
# 编译后的class文件,忽略所有以[.class]结尾的文件
|
||||
*.class
|
||||
|
||||
# 日志文件,忽略所有以[.log]结尾的文件.
|
||||
*.log
|
||||
|
||||
# BlueJ 文件,忽略所有以[.ctxt]结尾的文件.
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME),忽略[.mtj.tmp/]目录及其子文件.
|
||||
.mtj.tmp/
|
||||
|
||||
# 打包文件,忽略所有以[.jar]或[.war]或[.nar]或[.ear]或[.zip]或[.tar.gz]或[rar]结尾的文件.
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# 虚拟机崩溃日志,忽略所有以[hs_err_pid]开头的文件.[see http://www.java.com/en/download/help/error_hotspot.xml]
|
||||
hs_err_pid*
|
||||
#=======================================================================================================================
|
||||
#============================== maven忽略文件 ===================================
|
||||
#===================== https://github.com/github/gitignore/blob/master/Maven.gitignore ==================
|
||||
#=======================================================================================================================
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
|
||||
!/.mvn/wrapper/maven-wrapper.jar
|
||||
#=======================================================================================================================
|
||||
#============================== IDE环境忽略文件 ==================================
|
||||
#===================== https://github.com/github/gitignore/blob/master/Maven.gitignore ==================
|
||||
#=======================================================================================================================
|
||||
#----------------IDEA-------------
|
||||
.idea/*
|
||||
.idea/compiler.xml
|
||||
.idea/encodings.xml
|
||||
.idea/modules.xml
|
||||
*.iml
|
||||
#=======================================================================================================================
|
||||
#============================== other环境忽略文件 ================================
|
||||
#===================== https://github.com/github/gitignore/blob/master/Maven.gitignore ==================
|
||||
#=======================================================================================================================
|
||||
*.sw?
|
||||
.#*
|
||||
*#
|
||||
*~
|
||||
.classpath
|
||||
.project
|
||||
.settings/
|
||||
bin
|
||||
build
|
||||
target
|
||||
dependency-reduced-pom.xml
|
||||
*.sublime-*
|
||||
/scratch
|
||||
.gradle
|
||||
Guardfile
|
||||
README.html
|
||||
*.iml
|
||||
.idea
|
||||
*/.DS_Store
|
||||
.DS_Store
|
5
skyer-channel/.gitlab-ci.yml
Normal file
5
skyer-channel/.gitlab-ci.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
include: http://api.k8s9.com/devops/v1/projects/285085540595404800/ci_contents/pipelines/b4ff52ed-c506-4083-a403-ccb2b5403653/content.yaml
|
||||
|
||||
#include: http://api.baogicloud.com/devops/v1/projects/204888765897510912/ci_contents/pipelines/ac34bd4f-a85d-424c-983f-d6df76419b8b/content.yaml
|
||||
#
|
||||
##include: http://api.baogicloud.com/devops/v1/projects/187577360164982784/ci_contents/pipelines/30c4f61e-d629-4189-981d-b5bf7c463c2e/content.yaml
|
5
skyer-channel/charts/skyer-channel/Chart.yaml
Normal file
5
skyer-channel/charts/skyer-channel/Chart.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: skyer-channel
|
||||
version: 0.1.0
|
81
skyer-channel/charts/skyer-channel/README.md
Normal file
81
skyer-channel/charts/skyer-channel/README.md
Normal file
|
@ -0,0 +1,81 @@
|
|||
# skyer Base Service
|
||||
基于Spring Cloud Channel的微服务渠道管理服务
|
||||
## Introduction
|
||||
|
||||
## Add Helm chart repository
|
||||
|
||||
``` bash
|
||||
helm repo add skyer https://chart.skyer.com.cn/skyer/c7n
|
||||
helm repo update
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
```bash
|
||||
$ helm install c7n/skyer-platform --name skyer-platform
|
||||
```
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
```bash
|
||||
$ helm delete skyer-platform
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Parameter | Description | Default
|
||||
--- | --- | ---
|
||||
`replicaCount` | pod运行数量 | `1`
|
||||
`image.repository` | 镜像库地址 | `registry.skyer.com.cn/skyer/skyer-platform`
|
||||
`image.pullPolicy` | 镜像拉取策略 | `IfNotPresent`
|
||||
`preJob.timeout` | job超时时间 | `300`
|
||||
`preJob.image` | job镜像库地址 | `registry.cn-hangzhou.aliyuncs.com/skyer-tools/dbtool:0.6.4`
|
||||
`metrics.path` | 收集应用的指标数据路径 | `/actuator/prometheus`
|
||||
`metrics.group` | 性能指标应用分组 | `spring-boot`
|
||||
`logs.parser` | 日志收集格式 | `spring-boot`
|
||||
`deployment.managementPort` | 服务管理端口 | `8101`
|
||||
`ingress.enabled` | 是否创建k8s ingress | `false`
|
||||
`env.open.SPRING_DATASOURCE_URL` | 数据库连接地址 | `jdbc:mysql://localhost/base_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true`
|
||||
`env.open.SPRING_DATASOURCE_USERNAME` | 数据库用户名 | `skyer`
|
||||
`env.open.SPRING_DATASOURCE_PASSWORD` | 数据库密码 | `password`
|
||||
`env.open.SPRING_REDIS_HOST` | redis主机地址 | `localhost`
|
||||
`env.open.SPRING_REDIS_PORT` | redis端口 | `6379`
|
||||
`env.open.SPRING_REDIS_DATABASE` | redis db | `1`
|
||||
`env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE` | 注册服务地址 | `http://register-server:8000/eureka/`
|
||||
`service.enabled` | 是否创建k8s service | `false`
|
||||
`service.type` | service类型 | `ClusterIP`
|
||||
`service.port` | service端口 | `8100`
|
||||
`service.name` | service名称 | `skyer-channel`
|
||||
`resources.limits` | k8s中容器能使用资源的资源最大值 | `3Gi`
|
||||
`resources.requests` | k8s中容器使用的最小资源需求 | `2Gi`
|
||||
|
||||
### SkyWalking Configuration
|
||||
Parameter | Description
|
||||
--- | ---
|
||||
`javaagent` | SkyWalking 代理jar包(添加则开启 SkyWalking,删除则关闭)
|
||||
`skywalking.agent.application_code` | SkyWalking 应用名称
|
||||
`skywalking.agent.sample_n_per_3_secs` | SkyWalking 采样率配置
|
||||
`skywalking.agent.namespace` | SkyWalking 跨进程链路中的header配置
|
||||
`skywalking.agent.authentication` | SkyWalking 认证token配置
|
||||
`skywalking.agent.span_limit_per_segment` | SkyWalking 每segment中的最大span数配置
|
||||
`skywalking.agent.ignore_suffix` | SkyWalking 需要忽略的调用配置
|
||||
`skywalking.agent.is_open_debugging_class` | SkyWalking 是否保存增强后的字节码文件
|
||||
`skywalking.collector.backend_service` | SkyWalking OAP 服务地址和端口配置
|
||||
|
||||
```bash
|
||||
$ helm install c7n/skyer-platform \
|
||||
--set env.open.SKYWALKING_OPTS="-javaagent:/agent/skywalking-agent.jar -Dskywalking.agent.application_code=skyer-platform -Dskywalking.agent.sample_n_per_3_secs=-1 -Dskywalking.collector.backend_service=oap.skywalking:11800" \
|
||||
--name skyer-platform
|
||||
```
|
||||
|
||||
## 验证部署
|
||||
```bash
|
||||
curl -s $(kubectl get po -n c7n-system -l skyer.io/release=skyer-platform -o jsonpath="{.items[0].status.podIP}"):8081/actuator/health | jq -r .status
|
||||
```
|
||||
出现以下类似信息即为成功部署
|
||||
|
||||
```bash
|
||||
UP
|
||||
```
|
28
skyer-channel/charts/skyer-channel/templates/_helpers.tpl
Normal file
28
skyer-channel/charts/skyer-channel/templates/_helpers.tpl
Normal file
|
@ -0,0 +1,28 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
{{- /*
|
||||
service.labels.standard prints the standard service Helm labels.
|
||||
The standard labels are frequently used in metadata.
|
||||
*/ -}}
|
||||
|
||||
{{- define "service.image" -}}
|
||||
{{- printf "%s:%s" .Values.image.repository (default (.Chart.Version) .Values.image.tag) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for deployment.
|
||||
*/}}
|
||||
{{- define "app.deployment.apiVersion" -}}
|
||||
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "apps/v1beta2" -}}
|
||||
{{- else -}}
|
||||
{{- print "apps/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{- define "service.labels.kubesphere" -}}
|
||||
app: {{ .Release.Name | quote }}
|
||||
app.kubernetes.io/name: {{ .Values.kubesphere.app.name | quote }}
|
||||
app.kubernetes.io/version: {{ .Values.kubesphere.app.version | quote }}
|
||||
version: {{ .Values.kubesphere.app.version | quote }}
|
||||
{{- end -}}
|
121
skyer-channel/charts/skyer-channel/templates/deployment.yaml
Normal file
121
skyer-channel/charts/skyer-channel/templates/deployment.yaml
Normal file
|
@ -0,0 +1,121 @@
|
|||
apiVersion: {{ include "app.deployment.apiVersion" . }}
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
labels:
|
||||
{{ include "service.labels.kubesphere" . | indent 4 }}
|
||||
annotations:
|
||||
deployment.kubernetes.io/revision: '1'
|
||||
kubesphere.io/creator: {{ .Values.kubesphere.app.creator | quote }}
|
||||
servicemesh.kubesphere.io/enabled: '{{ .Values.kubesphere.app.servicemesh }}'
|
||||
spec:
|
||||
strategy:
|
||||
type: {{ .Values.deploymentUpdate.type }}
|
||||
{{- if eq .Values.deploymentUpdate.type "RollingUpdate" }}
|
||||
rollingUpdate:
|
||||
maxSurge: {{ .Values.deploymentUpdate.maxSurge }}
|
||||
maxUnavailable: {{ .Values.deploymentUpdate.maxUnavailable }}
|
||||
{{- else }}
|
||||
rollingUpdate: null
|
||||
{{- end}}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{ include "service.labels.kubesphere" . | indent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
sidecar.istio.io/inject: '{{ .Values.kubesphere.app.servicemesh }}'
|
||||
labels:
|
||||
{{ include "service.labels.kubesphere" . | indent 8 }}
|
||||
spec:
|
||||
volumes:
|
||||
- name: host-time
|
||||
hostPath:
|
||||
path: /etc/localtime
|
||||
type: ''
|
||||
- name: data
|
||||
{{- if .Values.persistence.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Values.persistence.existingClaim | default ( .Release.Name ) }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Release.Name }}
|
||||
image: {{ include "service.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
env:
|
||||
{{- range $name, $value := .Values.env.open }}
|
||||
{{- if ne (len ($value | quote)) 0 }}
|
||||
- name: {{ $name | quote }}
|
||||
value: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http-{{ .Values.service.port }}
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
{{- if not (empty .Values.deployment.managementPort) }}
|
||||
- name: http-{{ .Values.deployment.managementPort }}
|
||||
containerPort: {{ .Values.deployment.managementPort }}
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
readinessProbe:
|
||||
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
||||
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
||||
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
|
||||
exec:
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- >
|
||||
nc -z localhost {{ .Values.env.open.SERVER_PORT }}
|
||||
&& curl -s --fail localhost:{{ .Values.env.open.MANAGEMENT_SERVER_PORT }}/actuator/health
|
||||
livenessProbe:
|
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
||||
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
||||
failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
|
||||
exec:
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- >
|
||||
nc -z localhost {{ .Values.env.open.SERVER_PORT }}
|
||||
&& curl -s --fail localhost:{{ .Values.env.open.MANAGEMENT_SERVER_PORT }}/actuator/health
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
volumeMounts:
|
||||
- name: host-time
|
||||
readOnly: true
|
||||
mountPath: /etc/localtime
|
||||
- mountPath: /Charts
|
||||
name: data
|
||||
{{- if not (empty .Values.persistence.subPath) }}
|
||||
subPath: {{ .Values.persistence.subPath }}
|
||||
{{- end }}
|
||||
terminationMessagePath: /dev/termination-log
|
||||
terminationMessagePolicy: File
|
||||
restartPolicy: Always
|
||||
terminationGracePeriodSeconds: 30
|
||||
dnsPolicy: ClusterFirst
|
||||
serviceAccountName: default
|
||||
serviceAccount: default
|
||||
securityContext: {}
|
||||
schedulerName: default-scheduler
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
41
skyer-channel/charts/skyer-channel/templates/service.yaml
Normal file
41
skyer-channel/charts/skyer-channel/templates/service.yaml
Normal file
|
@ -0,0 +1,41 @@
|
|||
{{- if .Values.service.enabled }}
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
labels:
|
||||
{{ include "service.labels.kubesphere" . | indent 4 }}
|
||||
annotations:
|
||||
kubesphere.io/creator: {{ .Values.kubesphere.app.creator }}
|
||||
kubesphere.io/serviceType: {{ .Values.kubesphere.app.serviceType | quote }}
|
||||
{{- if .Values.kubesphere.app.ingress }}
|
||||
service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids: ''
|
||||
service.beta.kubernetes.io/qingcloud-load-balancer-type: '0'
|
||||
{{- end }}
|
||||
servicemesh.kubesphere.io/enabled: '{{ .Values.kubesphere.app.servicemesh }}'
|
||||
spec:
|
||||
ports:
|
||||
- name: http-{{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
port: {{ .Values.service.port }}
|
||||
targetPort: {{ .Values.service.port }}
|
||||
{{- if not (empty .Values.service.nodePort) }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- end }}
|
||||
{{- if not (empty .Values.deployment.managementPort) }}
|
||||
- name: http-{{ .Values.deployment.managementPort }}
|
||||
protocol: TCP
|
||||
port: {{ .Values.deployment.managementPort }}
|
||||
targetPort: {{ .Values.deployment.managementPort }}
|
||||
{{- if not (empty .Values.deployment.nodePort) }}
|
||||
nodePort: {{ .Values.deployment.nodePort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
{{ include "service.labels.kubesphere" . | indent 4 }}
|
||||
type: {{ .Values.service.type | quote }}
|
||||
sessionAffinity: None
|
||||
ipFamilies:
|
||||
- IPv4
|
||||
ipFamilyPolicy: SingleStack
|
||||
{{- end }}
|
137
skyer-channel/charts/skyer-channel/values.yaml
Normal file
137
skyer-channel/charts/skyer-channel/values.yaml
Normal file
|
@ -0,0 +1,137 @@
|
|||
## 实例运行数量
|
||||
replicaCount: 1
|
||||
|
||||
## 设置默认的 image、imageTag 和 imagePullPolicy。
|
||||
image:
|
||||
repository: harbor.k8s9.com/k8s9-skyer-ebc/skyer-channel
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
deployment:
|
||||
managementPort: 8301
|
||||
nodePort:
|
||||
|
||||
kubesphere:
|
||||
app:
|
||||
name: ebc
|
||||
version: v1
|
||||
creator: admin
|
||||
servicemesh: true
|
||||
# statelessservice statefulservice
|
||||
serviceType: statelessservice
|
||||
ingress: false
|
||||
|
||||
## Deployment 更新策略
|
||||
deploymentUpdate:
|
||||
type: RollingUpdate
|
||||
maxUnavailable: 25%
|
||||
maxSurge: 25%
|
||||
|
||||
## Pod 节点分配
|
||||
## ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||
##
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
|
||||
## 实例运行时的环境变量
|
||||
env:
|
||||
open:
|
||||
# 本实例服务端口
|
||||
SERVER_PORT: 8300
|
||||
# 本实例管理端口
|
||||
MANAGEMENT_SERVER_PORT: 8301
|
||||
|
||||
# 是否启用配置中心
|
||||
SPRING_CLOUD_CONFIG_ENABLED: false
|
||||
# 配置中心地址
|
||||
SPRING_CLOUD_CONFIG_URI: http://skyer-config:8010
|
||||
|
||||
# Redis 主机地址
|
||||
SPRING_REDIS_HOST: skyer-redis
|
||||
# Redis 端口
|
||||
SPRING_REDIS_PORT: 6379
|
||||
# Redis db 固定数据不可更改
|
||||
SPRING_REDIS_DATABASE: 1
|
||||
|
||||
# 数据库连接地址
|
||||
SPRING_DATASOURCE_URL: jdbc:mysql://skyer-mysql:3306/skyer_channel?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
|
||||
# 数据库用户名
|
||||
SPRING_DATASOURCE_USERNAME: root
|
||||
# 数据库密码
|
||||
SPRING_DATASOURCE_PASSWORD: 123456
|
||||
|
||||
# 注册服务地址
|
||||
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://skyer-register:8000/eureka/
|
||||
|
||||
EUREKA_INSTANCE_PREFER_IP_ADDRESS: true
|
||||
|
||||
# 项目级API是否必须检查项目参数
|
||||
SKYER_GATEWAY_FILTER_COMMON_REQUEST_CHECK_PROJECT: true
|
||||
# 组织级API是否必须检查组织参数
|
||||
SKYER_GATEWAY_FILTER_COMMON_REQUEST_CHECK_ORGANIZATION: true
|
||||
# 是否启用标准的权限检查
|
||||
SKYER_GATEWAY_FILTER_COMMON_REQUEST_ENABLE: true
|
||||
# 是否统计API访问情况
|
||||
SKYER_GATEWAY_FILTER_COLLECT_SPAN_ENABLED: true
|
||||
# 是否打印 JWT
|
||||
SKYER_GATEWAY_HELPER_ENABLE_JWT_LOG: false
|
||||
# 主键加密配置 encrypt(主键加密) to_string(主键变字符串类型) do_nothing(关闭加密)
|
||||
SKYER_REQUEST_ENCRYPT_MODE: encrypt
|
||||
LOG_LEVEL: info
|
||||
SKYER_GATEWAY_AUTHENTICATE_REDIS: true
|
||||
|
||||
# 百分比使用物理内存,预留一部分用于堆外内存以及外部程序
|
||||
JAVA_OPTS: >-
|
||||
-XX:MaxRAMPercentage=80.0
|
||||
|
||||
## Skywalking 配置参数
|
||||
# SKYWALKING_OPTS: >-
|
||||
# -javaagent:/agent/skywalking-agent.jar
|
||||
# -Dskywalking.agent.application_code=asgard-service
|
||||
# -Dskywalking.agent.sample_n_per_3_secs=-1
|
||||
# -Dskywalking.collector.backend_service=oap.skywalking:11800
|
||||
|
||||
|
||||
## Liveness 和 Readiness 探针相关配置
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 300
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 3
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 300
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 3
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
|
||||
## 资源请求和限制相关配置
|
||||
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||
##
|
||||
resources:
|
||||
limits:
|
||||
cpu: 900m
|
||||
memory: 2Gi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 2Gi
|
||||
|
||||
## service 相关设置
|
||||
## ref: http://kubernetes.io/docs/user-guide/services/
|
||||
##
|
||||
service:
|
||||
enabled: true
|
||||
# LoadBalancer ClusterIP
|
||||
type: ClusterIP
|
||||
port: 8300
|
||||
nodePort:
|
||||
|
||||
persistence:
|
||||
enabled: false
|
||||
## A manually managed Persistent Volume and Claim
|
||||
## Requires persistence.enabled: true
|
||||
## If defined, PVC must be created manually before volume will be bound
|
||||
# existingClaim:
|
||||
# subPath:
|
6
skyer-channel/docker/Dockerfile
Normal file
6
skyer-channel/docker/Dockerfile
Normal file
|
@ -0,0 +1,6 @@
|
|||
FROM registry.cn-shanghai.aliyuncs.com/c7n/javabase:0.10.0
|
||||
RUN mkdir /skyer && chown -R www-data:www-data /skyer
|
||||
COPY --chown=www-data:www-data app.jar /skyer/skyer-channel.jar
|
||||
WORKDIR /skyer
|
||||
USER 33
|
||||
CMD java $JAVA_OPTS $SKYWALKING_OPTS -jar /skyer/skyer-channel.jar
|
13
skyer-channel/init-local-database.sh
Normal file
13
skyer-channel/init-local-database.sh
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env bash
|
||||
mkdir -p target
|
||||
if [ ! -f target/skyer-tool-liquibase.jar ]
|
||||
then
|
||||
curl https://nexus.skyer.com.cn/repository/skyer-release/io/skyer/skyer-tool-liquibase/0.8.1.RELEASE/skyer-tool-liquibase-0.8.1.RELEASE.jar -o target/skyer-tool-liquibase.jar
|
||||
fi
|
||||
|
||||
java -Dspring.datasource.url="jdbc connection url" \
|
||||
-Dspring.datasource.username=username \
|
||||
-Dspring.datasource.password=password \
|
||||
-Ddata.drop=false -Ddata.init=init \
|
||||
-Ddata.dir=src/main/resources \
|
||||
-jar target/skyer-tool-liquibase.jar
|
312
skyer-channel/pom.xml
Normal file
312
skyer-channel/pom.xml
Normal file
|
@ -0,0 +1,312 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.skyer</groupId>
|
||||
<artifactId>skyer-parent</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>skyer-channel</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!-- skyer starter -->
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-mybatis-mapper</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-export</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-feign-replay</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-config-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-metric</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-keyencrypt</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.starter</groupId>
|
||||
<artifactId>skyer-starter-saga</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- skyer boot -->
|
||||
<dependency>
|
||||
<groupId>org.skyer.boot</groupId>
|
||||
<artifactId>skyer-boot-iam</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.boot</groupId>
|
||||
<artifactId>skyer-boot-platform</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.boot</groupId>
|
||||
<artifactId>skyer-boot-message</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyer.boot</groupId>
|
||||
<artifactId>skyer-boot-scheduler</artifactId>
|
||||
</dependency>
|
||||
<!-- 个性化插件boot-->
|
||||
<dependency>
|
||||
<groupId>org.skyer.boot</groupId>
|
||||
<artifactId>skyer-boot-customize</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- api 客制化 -->
|
||||
<dependency>
|
||||
<groupId>org.skyer.boot</groupId>
|
||||
<artifactId>skyer-boot-api-customize</artifactId>
|
||||
</dependency>
|
||||
<!-- 使用 api 客制化时,依赖的项目必须自行引入 tools.jar 热部署时用到,同时,需要在打包时将其打包进去 includeSystemScope=true -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>jdk.tools</groupId>-->
|
||||
<!-- <artifactId>jdk.tools</artifactId>-->
|
||||
<!-- <version>1.8</version>-->
|
||||
<!-- <scope>system</scope>-->
|
||||
<!-- <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- db -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.oracle</groupId>
|
||||
<artifactId>ojdbc7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>sqljdbc4</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- spring-boot -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-undertow</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.squareup.retrofit2</groupId>
|
||||
<artifactId>retrofit</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.retrofit2</groupId>
|
||||
<artifactId>converter-jackson</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- commons -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-collections4</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-yaml</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- jsr310 时间支持 -->
|
||||
<dependency>
|
||||
<groupId>org.mybatis</groupId>
|
||||
<artifactId>mybatis-typehandlers-jsr310</artifactId>
|
||||
<version>1.0.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- spock测试相关依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.spockframework</groupId>
|
||||
<artifactId>spock-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.spockframework</groupId>
|
||||
<artifactId>spock-spring</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cglib</groupId>
|
||||
<artifactId>cglib-nodep</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jcraft</groupId>
|
||||
<artifactId>jsch</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- register and config -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-config-client</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>app</finalName>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
<include>**/*.properties</include>
|
||||
</includes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/**</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>saml/*.jks</exclude>
|
||||
</excludes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src</directory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
</includes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<configuration>
|
||||
<nonFilteredFileExtensions>
|
||||
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ttc</nonFilteredFileExtension>
|
||||
</nonFilteredFileExtensions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>${maven.javadoc.skip}</skip>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<additionalOptions>
|
||||
<additionalOption>
|
||||
-Xdoclint:none
|
||||
</additionalOption>
|
||||
</additionalOptions>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<includes>
|
||||
<include>**/*Test.java</include>
|
||||
<include>**/*Spec.java</include>
|
||||
</includes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,55 @@
|
|||
package org.skyer.autoconfigure.channel;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import org.skyer.channel.infra.properties.DataHierarchyProperties;
|
||||
import org.skyer.channel.infra.properties.ChannelProperties;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
|
||||
import org.skyer.resource.annoation.EnableSkyerResourceServer;
|
||||
|
||||
import org.skyer.core.jackson.annotation.EnableObjectMapper;
|
||||
import org.skyer.core.util.CommonExecutor;
|
||||
|
||||
/**
|
||||
* @author bojiangzhou 2018/10/25
|
||||
*/
|
||||
@ComponentScan(value = {"org.hippius.wd", "org.skyer.channel.api", "org.skyer.channel.app",
|
||||
"org.skyer.channel.config", "org.skyer.channel.domain", "org.skyer.channel.infra"})
|
||||
@EnableFeignClients({"org.skyer.channel", "org.skyer", "org.skyer.plugin"})
|
||||
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
|
||||
@EnableSkyerResourceServer
|
||||
@EnableObjectMapper
|
||||
@EnableAsync
|
||||
@EnableConfigurationProperties({ChannelProperties.class, DataHierarchyProperties.class})
|
||||
public class ChannelAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 通用线程池
|
||||
*/
|
||||
@Bean
|
||||
@Qualifier("commonAsyncTaskExecutor")
|
||||
public ThreadPoolExecutor commonAsyncTaskExecutor() {
|
||||
int coreSize = CommonExecutor.getCpuProcessors();
|
||||
int maxSize = coreSize * 8;
|
||||
ThreadPoolExecutor executor =
|
||||
new ThreadPoolExecutor(coreSize, maxSize, 30, TimeUnit.MINUTES, new LinkedBlockingQueue<>(16),
|
||||
new ThreadFactoryBuilder().setNameFormat("CommonExecutor-%d").build(),
|
||||
new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
|
||||
CommonExecutor.displayThreadPoolStatus(executor, "HpfmCommonExecutor");
|
||||
CommonExecutor.hookShutdownThreadPool(executor, "HpfmCommonExecutor");
|
||||
|
||||
return executor;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package org.skyer.autoconfigure.channel;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
/**
|
||||
* @author bojiangzhou 2018/10/25
|
||||
*/
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Import(ChannelAutoConfiguration.class)
|
||||
public @interface EnableSkyerChannel {
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package org.skyer.channel;
|
||||
|
||||
import org.skyer.autoconfigure.channel.EnableSkyerChannel;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
|
||||
/**
|
||||
* Skyer平台服务启动类 主要包含平台通用功能
|
||||
*
|
||||
* @author xianzhi.chen@hand-china.com 2018年6月7日下午6:09:44
|
||||
*/
|
||||
@EnableSkyerChannel
|
||||
@EnableDiscoveryClient
|
||||
@SpringBootApplication
|
||||
public class ChannelApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
SpringApplication.run(ChannelApplication.class, args);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.skyer.channel.api.dto.DealerDTO;
|
||||
import org.skyer.channel.api.dto.DealerListDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.config.ChannelSwaggerApiConfig;
|
||||
import org.skyer.channel.domain.entity.Dealer;
|
||||
import org.skyer.channel.domain.service.DealerService;
|
||||
import org.skyer.channel.domain.vo.DealerVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-17
|
||||
* @description: 经销商
|
||||
*/
|
||||
@Api(tags = ChannelSwaggerApiConfig.DEALER_MANAGE)
|
||||
@RestController("dealerController.v1")
|
||||
@RequestMapping("/v1/channel/dealer")
|
||||
public class DealerController {
|
||||
|
||||
@Autowired
|
||||
private DealerService dealerService;
|
||||
|
||||
@ApiOperation("新增经销商")
|
||||
@PostMapping("/add")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> addDealer(@Valid @RequestBody Dealer dealer) {
|
||||
return dealerService.addDealer(dealer) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "分页获取信息")
|
||||
@GetMapping("/list")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Page<DealerVO>> pageList( DealerListDTO dealerListDTO, PageRequest pageRequest) {
|
||||
return Results.success( dealerService.pageDealerList(pageRequest, dealerListDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改经销商信息")
|
||||
@PostMapping("/update")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> updatDealer(@RequestBody DealerDTO dealerDTO) {
|
||||
return dealerService.updateDealer (dealerDTO)? Results.success():Results.error();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ApiOperation(value = "删除经销商信息")
|
||||
@PostMapping("/delete")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> deleteById(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return dealerService.deleteById(id)? Results.success():Results.error();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "根据Id获取经销商信息信息")
|
||||
@GetMapping("/details")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Dealer> getDealerDetail(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return Results.success(dealerService.getDealerDetail(id));
|
||||
}
|
||||
|
||||
@ApiOperation("禁用 OR 启用")
|
||||
@PostMapping("/operation")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> operation(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("true OR false") @RequestParam(value = "flag") Boolean flag) {
|
||||
return dealerService.operation(id, flag) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("批量删除数据")
|
||||
@PostMapping("/deletes")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deletes(@ApiParam("批量删除集合") @RequestBody @Encrypt ShopDeleteDTO shopDeleteDTO) {
|
||||
return dealerService.deletes(shopDeleteDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
import org.skyer.channel.domain.service.GroupService;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.core.base.BaseController;
|
||||
import org.skyer.channel.domain.entity.Group;
|
||||
import org.skyer.channel.domain.repository.GroupRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.skyer.mybatis.helper.SecurityTokenHelper;
|
||||
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.mybatis.pagehelper.annotation.SortDefault;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.mybatis.pagehelper.domain.Sort;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
/**
|
||||
* 集团组织 API
|
||||
*
|
||||
* @author zhanglongbing@ebc.com 2021-12-21
|
||||
*/
|
||||
@RestController("groupController.v1")
|
||||
@RequestMapping("/v1/groups")
|
||||
public class GroupController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private GroupService groupService;
|
||||
|
||||
|
||||
@ApiOperation(value = "获取默认集团")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
@GetMapping("/default")
|
||||
public ResponseEntity<Group> getDefaultGroups() {
|
||||
Group group = groupService.getDefaultGroups();
|
||||
return Results.success(group);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改默认集团信息")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
@PostMapping("/update")
|
||||
public ResponseEntity<Group> updateDefaultGroups(@RequestBody Group group) {
|
||||
groupService.updateDefaultGroups(group);
|
||||
return Results.success(group);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.skyer.channel.api.dto.*;
|
||||
import org.skyer.channel.config.ChannelSwaggerApiConfig;
|
||||
import org.skyer.channel.domain.service.OnlineShopService;
|
||||
import org.skyer.channel.domain.vo.OnlineShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopSettingVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
|
||||
/**
|
||||
* 网店管理
|
||||
*
|
||||
* @author lixiaoyang
|
||||
* @date 2021/6/16 15:19
|
||||
*/
|
||||
@Api(tags = ChannelSwaggerApiConfig.ONLINE_SHOP_MANAGE)
|
||||
@RestController("onlineShopController.v1")
|
||||
@RequestMapping("/v1/online/shop")
|
||||
public class OnlineShopController {
|
||||
@Autowired
|
||||
private OnlineShopService onlineShopService;
|
||||
|
||||
@ApiOperation("查询列表")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@GetMapping("/page")
|
||||
public ResponseEntity<Page<OnlineShopVO>> showPage(OnlineShopShowDTO onlineShopShowDTO, PageRequest pageRequest) {
|
||||
return Results.success(onlineShopService.getPage(onlineShopShowDTO, pageRequest));
|
||||
}
|
||||
|
||||
@ApiOperation("查询详情")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@GetMapping("/details")
|
||||
public ResponseEntity<OnlineShopDetailVO> showDetails(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return Results.success(onlineShopService.getDetails(id));
|
||||
}
|
||||
|
||||
@ApiOperation("查询详情")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@GetMapping("/details/by/code")
|
||||
public ResponseEntity<OnlineShopDetailVO> showDetailsByCode(@ApiParam("编码") @RequestParam(value = "code") String code) {
|
||||
return Results.success(onlineShopService.getDetailsByCode(code));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("新增与修改")
|
||||
@PostMapping("/save")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> save(@Valid @RequestBody @Encrypt OnlineShopDTO onlineShopDTO) {
|
||||
return onlineShopService.save(onlineShopDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("网店设置")
|
||||
@PostMapping("/setting")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> setting(@Valid @RequestBody @Encrypt OnlineShopSettingDTO onlineShopSettingDTO) {
|
||||
return onlineShopService.setting(onlineShopSettingDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("删除数据")
|
||||
@PostMapping("/delete")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> delete(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("当前版本号") @RequestParam(value = "objectVersionNumber") Long objectVersionNumber) {
|
||||
return onlineShopService.delete(id, objectVersionNumber) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("禁用 OR 启用")
|
||||
@PostMapping("/operation")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> operation(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("true OR false") @RequestParam(value = "flag") Boolean flag,
|
||||
@ApiParam("当前版本号") @RequestParam(value = "objectVersionNumber") Long objectVersionNumber) {
|
||||
return onlineShopService.operation(id, flag, objectVersionNumber) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("清除缓存")
|
||||
@PostMapping("/delete/cache")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deleteCache(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
onlineShopService.deleteCache(id);
|
||||
return Results.success();
|
||||
}
|
||||
|
||||
@ApiOperation("查询设置")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@GetMapping("/get/setting")
|
||||
public ResponseEntity<OnlineShopSettingVO> getSetting(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return Results.success(onlineShopService.getSetting(id));
|
||||
}
|
||||
|
||||
@ApiOperation("批量删除数据")
|
||||
@PostMapping("/deletes")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deletes(@ApiParam("批量删除集合") @RequestBody @Encrypt ShopDeleteDTO shopDeleteDTO) {
|
||||
return onlineShopService.deletes(shopDeleteDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.skyer.channel.api.dto.PhysicalShopDTO;
|
||||
import org.skyer.channel.api.dto.PhysicalShopShowDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.config.ChannelSwaggerApiConfig;
|
||||
import org.skyer.channel.domain.service.PhysicalShopService;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
|
||||
/**
|
||||
* 门店管理
|
||||
*
|
||||
* @author lixiaoyang
|
||||
* @date 2021/6/16 15:19
|
||||
*/
|
||||
@Api(tags = ChannelSwaggerApiConfig.PHYSICAL_SHOP_MANAGE)
|
||||
@RestController("physicalShopController.v1")
|
||||
@RequestMapping("/v1/physical/shop")
|
||||
public class PhysicalShopController {
|
||||
@Autowired
|
||||
private PhysicalShopService physicalShopService;
|
||||
|
||||
@ApiOperation("查询列表")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@GetMapping("/page")
|
||||
public ResponseEntity<Page<PhysicalShopVO>> showPage(PhysicalShopShowDTO physicalShopShowDTO, PageRequest pageRequest) {
|
||||
return Results.success(physicalShopService.getPage(physicalShopShowDTO, pageRequest));
|
||||
}
|
||||
|
||||
@ApiOperation("查询详情")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@GetMapping("/details")
|
||||
public ResponseEntity<PhysicalShopDetailVO> showDetails(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return Results.success(physicalShopService.getDetails(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增与修改")
|
||||
@PostMapping("/save")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> save(@Valid @RequestBody @Encrypt PhysicalShopDTO physicalShop) {
|
||||
return physicalShopService.save(physicalShop) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("删除数据")
|
||||
@PostMapping("/delete")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> delete(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("当前版本号") @RequestParam(value = "objectVersionNumber") Long objectVersionNumber) {
|
||||
return physicalShopService.delete(id, objectVersionNumber) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("禁用 OR 启用")
|
||||
@PostMapping("/operation")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> operation(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("true OR false") @RequestParam(value = "flag") Boolean flag,
|
||||
@ApiParam("当前版本号") @RequestParam(value = "objectVersionNumber") Long objectVersionNumber) {
|
||||
return physicalShopService.operation(id, flag, objectVersionNumber) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation("清除缓存")
|
||||
@PostMapping("/delete/cache")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deleteCache(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
physicalShopService.deleteCache(id);
|
||||
return Results.success();
|
||||
}
|
||||
|
||||
@ApiOperation("批量删除数据")
|
||||
@PostMapping("/deletes")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deletes(@ApiParam("批量删除集合") @RequestBody @Encrypt ShopDeleteDTO shopDeleteDTO) {
|
||||
return physicalShopService.deletes(shopDeleteDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.channel.api.dto.SalesOrganizationDTO;
|
||||
import org.skyer.channel.api.dto.SalesOrganizationListDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.config.ChannelSwaggerApiConfig;
|
||||
import org.skyer.channel.domain.entity.SalesOrganization;
|
||||
import org.skyer.channel.domain.service.SalesOrganizationService;
|
||||
import org.skyer.channel.domain.vo.ListOfTreeVO;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationByTenantIdVO;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationListVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售组织
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
@RestController("SalesOrganizationController.v1")
|
||||
@RequestMapping(value = "/v1/channel/salesOrganization")
|
||||
@Api(tags = ChannelSwaggerApiConfig.SALE_ORGANIZATION_MANAGE)
|
||||
public class SalesOrganizationController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private SalesOrganizationService salesOrganizationService;
|
||||
|
||||
|
||||
@ApiOperation(value = "分页获取信息")
|
||||
@GetMapping("/list")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Page<SalesOrganizationListVO>> pageSalesOrganizationList(@Encrypt SalesOrganizationListDTO salesOrganizationListDTO, PageRequest pageRequest) {
|
||||
return Results.success( salesOrganizationService.pageSalesOrganizationList(pageRequest,salesOrganizationListDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改销售组织")
|
||||
@PostMapping("/update")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> updatSalesOrganization(@Encrypt @RequestBody SalesOrganizationDTO salesOrganizationDTO) {
|
||||
return salesOrganizationService.updateSalesOrganization (salesOrganizationDTO)? Results.success(): Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新增销售组织")
|
||||
@PostMapping("/add")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> createLabel(@Encrypt @RequestBody SalesOrganization salesOrganization) {
|
||||
return salesOrganizationService.createSalesOrganization (salesOrganization)?Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除销售组织")
|
||||
@PostMapping("/delete")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> deleteById(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return salesOrganizationService.deleteById(id) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "根据Id获取销售组织信息")
|
||||
@GetMapping("/details")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<SalesOrganization> getSalesOrganizationDetail(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return Results.success(salesOrganizationService.getSalesOrganizationDetail(id));
|
||||
}
|
||||
|
||||
@ApiOperation("禁用 OR 启用")
|
||||
@PostMapping("/operation")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> operation(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("true OR false") @RequestParam(value = "flag") Boolean flag) {
|
||||
return salesOrganizationService.operation(id, flag) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据租户Id获取销售组织信息")
|
||||
@GetMapping("/getByTenantId")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<List<SalesOrganizationByTenantIdVO>> getsalesOrganizationByTenantId(@ApiParam("租户ID") @RequestParam(value = "tenantId") @Encrypt Long tenantId) {
|
||||
return Results.success(salesOrganizationService.getsalesOrganizationByTenantId(tenantId));
|
||||
}
|
||||
@ApiOperation("批量删除数据")
|
||||
@PostMapping("/deletes")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deletes(@ApiParam("批量删除集合") @RequestBody @Encrypt ShopDeleteDTO shopDeleteDTO) {
|
||||
return salesOrganizationService.deletes(shopDeleteDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("公司列表树")
|
||||
@GetMapping("/listOfTree")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<List<ListOfTreeVO>> listOfTree(@ApiParam("true") @RequestParam(value = "flag") Boolean flag) {
|
||||
List<ListOfTreeVO> list = salesOrganizationService.listOfTree(flag);
|
||||
return Results.success(list);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
import feign.ResponseMapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.skyer.channel.api.dto.ChannelSaleOrderDTO;
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import org.skyer.channel.api.dto.QueryShopListDTO;
|
||||
import org.skyer.channel.config.ChannelSwaggerApiConfig;
|
||||
import org.skyer.channel.domain.service.saga.ShopService;
|
||||
import org.skyer.channel.domain.vo.ShopListVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController("shopController.v1")
|
||||
@RequestMapping(value = "/v1/shop")
|
||||
@Api(tags = ChannelSwaggerApiConfig.SHOP_MANAGE)
|
||||
public class ShopController {
|
||||
@Autowired
|
||||
private ShopService shopService;
|
||||
|
||||
@ApiOperation("查询所有店铺")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@PostMapping("/page")
|
||||
public ResponseEntity<Page<ShopListVO>> queryShop(@RequestBody QueryShopListDTO dto) {
|
||||
return Results.success(shopService.queryShop(dto));
|
||||
}
|
||||
|
||||
@ApiOperation("店铺销售表")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
@PostMapping("/channel-order-report")
|
||||
public ResponseEntity<List<ChannelSaleOrderVO>> queryChannelOrderSaleReport(@RequestBody ChannelSaleOrderDTO dto) {
|
||||
List<ChannelSaleOrderVO> channelSaleOrderVOS = shopService.queryChannelOrderSaleReport(dto);
|
||||
return Results.success(channelSaleOrderVOS);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
package org.skyer.channel.api.controller.v1;
|
||||
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.api.dto.WarehouseDTO;
|
||||
import org.skyer.channel.api.dto.WarehouseListDTO;
|
||||
import org.skyer.channel.config.ChannelSwaggerApiConfig;
|
||||
import org.skyer.channel.domain.entity.Warehouse;
|
||||
import org.skyer.channel.domain.service.WarehouseService;
|
||||
import org.skyer.channel.domain.vo.WarehouseListVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.util.Results;
|
||||
import org.skyer.mybatis.pagehelper.annotation.SortDefault;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.mybatis.pagehelper.domain.Sort;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
import org.skyer.swagger.annotation.Permission;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 渠道仓库管理
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
@RestController("WarehouseController.v1")
|
||||
@RequestMapping(value = "/v1/channel/warehouse")
|
||||
@Api(tags = ChannelSwaggerApiConfig.WAREHOUSE_MANAGE)
|
||||
public class WarehouseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private WarehouseService warehouseService;
|
||||
|
||||
@ApiOperation(value = "分页获取渠道仓库信息")
|
||||
@GetMapping("/list")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Page<WarehouseListVO>> pageList( WarehouseListDTO warehouseListDTO, PageRequest pageRequest) {
|
||||
return Results.success( warehouseService.pageWarehouseList(pageRequest,warehouseListDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改渠道仓库")
|
||||
@PostMapping("/update")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> updatWarehouse(@RequestBody WarehouseDTO warehouse) {
|
||||
return warehouseService.updateWarehouse (warehouse)? Results.success() : Results.error();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新增渠道仓库")
|
||||
@PostMapping("/add")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Warehouse> createLabel(@RequestBody Warehouse warehouse) {
|
||||
return warehouseService.createWarehouse (warehouse) ? Results.success() : Results.error() ;
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除渠道仓库")
|
||||
@PostMapping("/delete")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> deleteById(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return warehouseService.deleteById(id) ? Results.success() : Results.error() ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "根据Id获取渠道仓库信息")
|
||||
@GetMapping("/details")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Warehouse> getWarehouseDetail(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id) {
|
||||
return Results.success(warehouseService.getWarehouseDetail(id));
|
||||
}
|
||||
|
||||
@ApiOperation("禁用 OR 启用")
|
||||
@PostMapping("/operation")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION,permissionLogin = true)
|
||||
public ResponseEntity<Void> operation(@ApiParam("主键ID") @RequestParam(value = "id") @Encrypt Long id,
|
||||
@ApiParam("true OR false") @RequestParam(value = "flag") Boolean flag) {
|
||||
return warehouseService.operation(id, flag) ? Results.success() : Results.error();
|
||||
}
|
||||
@ApiOperation("批量删除数据")
|
||||
@PostMapping("/deletes")
|
||||
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
|
||||
public ResponseEntity<Void> deletes(@ApiParam("批量删除集合") @RequestBody @Encrypt ShopDeleteDTO shopDeleteDTO) {
|
||||
return warehouseService.deletes(shopDeleteDTO) ? Results.success() : Results.error();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ChannelSaleOrderDTO {
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
private Date startDate;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private Date endDate;
|
||||
|
||||
@ApiModelProperty("渠道")
|
||||
private String channel;
|
||||
|
||||
@ApiModelProperty("店铺名")
|
||||
@Encrypt
|
||||
private List<Long> storeIds;
|
||||
|
||||
@ApiModelProperty("网店类型")
|
||||
private String storeType;
|
||||
|
||||
@ApiModelProperty("所属公司")
|
||||
private String organization;
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-17
|
||||
* @description:
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("经销商传参")
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DealerDTO {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "经销商编码")
|
||||
@NotNull
|
||||
private String dealerCode;
|
||||
|
||||
@ApiModelProperty(value = "经销商名称")
|
||||
@NotNull
|
||||
private String dealerName;
|
||||
|
||||
@ApiModelProperty(value = "联系人姓名")
|
||||
@NotNull
|
||||
private String contactName;
|
||||
|
||||
@ApiModelProperty(value = "联系人电话")
|
||||
@NotNull
|
||||
private String contactPhone;
|
||||
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description:
|
||||
*/
|
||||
@ApiModel("经销商列表请求")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DealerListDTO {
|
||||
|
||||
@ApiModelProperty(value = "经销商名称")
|
||||
private String dealerName;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
@ApiModel("网店入参类")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class OnlineShopDTO {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
@NotNull
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("渠道类型")
|
||||
@NotNull
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty("网店类型")
|
||||
@NotNull
|
||||
private String onlineStoreTypeCode;
|
||||
|
||||
@ApiModelProperty("负责人")
|
||||
@NotNull
|
||||
private String manager;
|
||||
|
||||
@ApiModelProperty("网店地址(url)")
|
||||
@NotNull
|
||||
private String url;
|
||||
|
||||
@ApiModelProperty("销售组织")
|
||||
@NotNull
|
||||
@Encrypt
|
||||
private Long salesOrganizingId;
|
||||
|
||||
@ApiModelProperty("发票种类")
|
||||
@NotNull
|
||||
private String invoiceTypeCode;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态 true是")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty("网店关联的门店id")
|
||||
@Encrypt
|
||||
private Long relationPhysicalShopId;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Long objectVersionNumber;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@ApiModel("网店设置入参类")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class OnlineShopSettingDTO {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("自动确认发货(天)")
|
||||
private Integer autoConfirmDay;
|
||||
|
||||
@ApiModelProperty("自动下载商品 true是 false否")
|
||||
private Boolean autoDownloadGoods;
|
||||
|
||||
@ApiModelProperty("自动同步库存 true是 false否")
|
||||
private Boolean autoSyncInventory;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Long objectVersionNumber;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@ApiModel("网店查看入参类")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class OnlineShopShowDTO {
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("网店编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("渠道类型")
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("销售组织名称")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty("网店类型")
|
||||
private String onlineStoreTypeCode;
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@Data
|
||||
public class PhysicalShopDTO extends AuditDomain {
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("租户ID(入参不填)")
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty("门店名称")
|
||||
@NotNull
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("门店类型编码")
|
||||
@NotNull
|
||||
private String typeCode;
|
||||
|
||||
@ApiModelProperty("负责人")
|
||||
@NotNull
|
||||
private String manager;
|
||||
|
||||
@ApiModelProperty("销售组织")
|
||||
@NotNull
|
||||
@Encrypt
|
||||
private Long salesOrganizingId;
|
||||
|
||||
@ApiModelProperty("发票种类编码")
|
||||
@NotNull
|
||||
private String invoiceTypeCode;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty("国家ID")
|
||||
private Long countryId;
|
||||
|
||||
@ApiModelProperty("省ID")
|
||||
private Long provinceId;
|
||||
|
||||
@ApiModelProperty("市ID")
|
||||
private Long cityId;
|
||||
|
||||
@ApiModelProperty("县ID")
|
||||
private Long countyId;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("状态 true启用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty("删除标识 true删除")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty(value = "o2o自提门店")
|
||||
private Boolean selfPickupFlag;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("门店设置入参类")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class PhysicalShopShowDTO {
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("销售组织名称")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty("门店类型")
|
||||
private String typeCode;
|
||||
|
||||
@ApiModelProperty("o2o自提门店")
|
||||
private Boolean selfPickupFlag;
|
||||
|
||||
@ApiModelProperty("负责人")
|
||||
private String manager;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@Data
|
||||
public class QueryShopListDTO extends PageRequest {
|
||||
|
||||
@ApiModelProperty("店铺名称")
|
||||
private String name;
|
||||
@ApiModelProperty("店铺编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("渠道编码")
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty("o2o销售店铺id")
|
||||
@Encrypt
|
||||
private Long o2oSalesStoreId;
|
||||
|
||||
@ApiModelProperty(value = "网店或门店", hidden = true)
|
||||
private String categoryType;
|
||||
|
||||
@ApiModelProperty(value = "店铺id", hidden = true)
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "网店关联的门店id", hidden = true)
|
||||
@Encrypt
|
||||
private Long relationPhysicalShopId;
|
||||
|
||||
@ApiModelProperty(value = "是否o2o自提店铺", hidden = true)
|
||||
private Boolean selfPickupFlag;
|
||||
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-21
|
||||
* @description:
|
||||
*/
|
||||
@ApiModel("销售组织请求参数")
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Data
|
||||
public class SalesOrganizationDTO {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "组织编码")
|
||||
private String orgCode;
|
||||
|
||||
@ApiModelProperty(value = "组织名称")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty(value = "租户ID")
|
||||
@Encrypt
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty(value = "营业执照名称")
|
||||
private String shopPermitName;
|
||||
|
||||
@ApiModelProperty(value = "法人姓名")
|
||||
private String legalPerson;
|
||||
|
||||
@ApiModelProperty(value = "统一社会信用代码")
|
||||
private String uniformSocialCreditCode;
|
||||
|
||||
@ApiModelProperty(value = "状态 0启用 1禁用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty(value = "营业执照")
|
||||
private String businessLicense;
|
||||
|
||||
@ApiModelProperty(value = "所属上级公司")
|
||||
@Encrypt
|
||||
private Long pid;
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description:
|
||||
*/
|
||||
@ApiModel("销售组织列表请求参数")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SalesOrganizationListDTO {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "组织名称")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty(value = "营业执照名称")
|
||||
private String shopPermitName;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty(value = "所属上级公司")
|
||||
@Encrypt
|
||||
private Long pid;
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.channel.domain.entity.Shop;
|
||||
|
||||
@Data
|
||||
public class SaveShopDTO {
|
||||
private Shop shop;
|
||||
private Boolean flag;
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class ShopDTO {
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("店铺编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty(value = "店铺类别:区分网店还是实体店")
|
||||
private String categoryType;
|
||||
|
||||
@ApiModelProperty(value = "渠道类型")
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态 true是")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty("租户ID")
|
||||
private Long tenantId;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@ApiModel("批量删除入参类")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class ShopDeleteDTO {
|
||||
@ApiModelProperty("主键集合")
|
||||
@Encrypt
|
||||
private List<Long> ids;
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-21
|
||||
* @description:
|
||||
*/
|
||||
@ApiModel("仓库修改请求参数")
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Data
|
||||
public class WarehouseDTO {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "仓库编码")
|
||||
private String wareCode;
|
||||
|
||||
@ApiModelProperty(value = "仓库名称")
|
||||
private String wareName;
|
||||
|
||||
@ApiModelProperty(value = "联系人姓名")
|
||||
private String contactName;
|
||||
|
||||
@ApiModelProperty(value = "联系人电话")
|
||||
private String contactPhone;
|
||||
|
||||
@ApiModelProperty(value = "国家ID")
|
||||
private Long countryId;
|
||||
|
||||
@ApiModelProperty(value = "省ID ")
|
||||
private Long provinceId;
|
||||
|
||||
@ApiModelProperty(value = "市ID ")
|
||||
private Long cityId;
|
||||
|
||||
@ApiModelProperty(value = "县ID")
|
||||
private Long countyId;
|
||||
|
||||
@ApiModelProperty(value = "详细地址 ")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("租户ID")
|
||||
@Encrypt
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package org.skyer.channel.api.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description:
|
||||
*/
|
||||
@ApiModel("渠道仓库列表请求参数")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class WarehouseListDTO {
|
||||
|
||||
@ApiModelProperty(value = "仓库名称")
|
||||
private String wareName;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package org.skyer.channel.config;
|
||||
|
||||
|
||||
import org.skyer.common.SkyerService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import org.skyer.core.swagger.SkyerRouteData;
|
||||
import org.skyer.swagger.annotation.SkyerExtraData;
|
||||
import org.skyer.swagger.swagger.extra.ExtraData;
|
||||
import org.skyer.swagger.swagger.extra.ExtraDataManager;
|
||||
|
||||
/**
|
||||
* 服务基本信息
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年7月20日下午4:49:12
|
||||
*/
|
||||
@SkyerExtraData
|
||||
public class ChannelExtraDataManager implements ExtraDataManager {
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
||||
@Override
|
||||
public ExtraData getData() {
|
||||
SkyerRouteData routeData = new SkyerRouteData();
|
||||
routeData.setName(environment.getProperty("skyer.service.current.name", "schl"));
|
||||
routeData.setPath(environment.getProperty("skyer.service.current.path", "schl/**"));
|
||||
routeData.setServiceId(
|
||||
environment.getProperty("skyer.service.current.service-name", "skyer-channel"));
|
||||
routeData.setPackages("org.skyer.channel.api");
|
||||
extraData.put(ExtraData.ZUUL_ROUTE_DATA, routeData);
|
||||
return extraData;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package org.skyer.channel.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import springfox.documentation.service.Tag;
|
||||
import springfox.documentation.spring.web.plugins.Docket;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Swagger Api 描述配置
|
||||
* </p>
|
||||
*
|
||||
* @author qingsheng.chen 2018/7/30 星期一 14:26
|
||||
*/
|
||||
@Configuration
|
||||
public class ChannelSwaggerApiConfig {
|
||||
public static final String SHOP_MANAGE = "Shop Manage";
|
||||
public static final String ONLINE_SHOP_MANAGE = "Online Shop Manage";
|
||||
public static final String PHYSICAL_SHOP_MANAGE = "physical Shop Manage";
|
||||
public static final String DEALER_MANAGE="Dealer Manage";
|
||||
public static final String SALE_ORGANIZATION_MANAGE= "SalesOrganization Manage";
|
||||
public static final String WAREHOUSE_MANAGE="Warehouse Manage";
|
||||
|
||||
|
||||
@Autowired
|
||||
public ChannelSwaggerApiConfig(Docket docket) {
|
||||
docket.tags(
|
||||
new Tag(SHOP_MANAGE, "店铺公共接口"),
|
||||
new Tag(ONLINE_SHOP_MANAGE, "网店管理"),
|
||||
new Tag(PHYSICAL_SHOP_MANAGE, "门店管理"),
|
||||
new Tag(DEALER_MANAGE, "经销商管理"),
|
||||
new Tag(SALE_ORGANIZATION_MANAGE, "销售组织管理"),
|
||||
new Tag(WAREHOUSE_MANAGE, "渠道仓库管理")
|
||||
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
package org.skyer.channel.domain.entity;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.mybatis.annotation.ModifyAudit;
|
||||
import org.skyer.mybatis.annotation.MultiLanguage;
|
||||
import org.skyer.mybatis.annotation.VersionAudit;
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-17
|
||||
*/
|
||||
@VersionAudit
|
||||
@ModifyAudit
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Accessors(chain = true)
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Table(name="channel_dealer")
|
||||
public class Dealer extends AuditDomain {
|
||||
|
||||
public static final String DEALER_NAME ="dealerName";
|
||||
public static final String STATUS = "status";
|
||||
public static final String DELETEFLAG="deleteFlag";
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "经销商编码")
|
||||
private String dealerCode;
|
||||
|
||||
@ApiModelProperty(value = "经销商名称")
|
||||
@NotNull
|
||||
private String dealerName;
|
||||
|
||||
@ApiModelProperty(value = "联系人姓名")
|
||||
@NotNull
|
||||
private String contactName;
|
||||
|
||||
@ApiModelProperty(value = "联系人电话")
|
||||
@NotNull
|
||||
private String contactPhone;
|
||||
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("租户ID")
|
||||
@Encrypt
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
package org.skyer.channel.domain.entity;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.skyer.mybatis.annotation.ModifyAudit;
|
||||
import org.skyer.mybatis.annotation.VersionAudit;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author linzhuanghuang@ebc.com 2021-09-03 16:54:36
|
||||
*/
|
||||
@ApiModel("")
|
||||
@VersionAudit
|
||||
@ModifyAudit
|
||||
@JsonInclude(value = JsonInclude.Include.NON_NULL)
|
||||
@Table(name = "channel_group")
|
||||
@Data
|
||||
public class Group extends AuditDomain {
|
||||
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_GROUP_NAME = "groupName";
|
||||
public static final String FIELD_GROUP_SHORT_NAME = "groupShortName";
|
||||
public static final String FIELD_LOGO = "logo";
|
||||
public static final String FIELD_FAVICON = "favicon";
|
||||
public static final String FIELD_TENANT_ID = "tenantId";
|
||||
|
||||
//
|
||||
// 业务方法(按public protected private顺序排列)
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// 数据库字段
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ApiModelProperty("")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Encrypt
|
||||
private Long id;
|
||||
@ApiModelProperty(value = "集团名称")
|
||||
private String groupName;
|
||||
@ApiModelProperty(value = "集团简称")
|
||||
private String groupShortName;
|
||||
@ApiModelProperty(value = "集团logo")
|
||||
private String logo;
|
||||
@ApiModelProperty(value = "集团图标")
|
||||
private String favicon;
|
||||
|
||||
|
||||
|
||||
//
|
||||
// 非数据库字段
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// getter/setter
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
package org.skyer.channel.domain.entity;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Transient;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.mybatis.annotation.ModifyAudit;
|
||||
import org.skyer.mybatis.annotation.MultiLanguage;
|
||||
import org.skyer.mybatis.annotation.VersionAudit;
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
@VersionAudit
|
||||
@ModifyAudit
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Accessors(chain = true)
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Table(name="channel_sales_organization")
|
||||
public class SalesOrganization extends AuditDomain {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "公司编码")
|
||||
private String orgCode;
|
||||
|
||||
@ApiModelProperty(value = "公司名称")
|
||||
@NotNull
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty(value = "租户ID")
|
||||
@Encrypt
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty(value = "营业执照名称")
|
||||
@NotNull
|
||||
private String shopPermitName;
|
||||
|
||||
@ApiModelProperty(value = "法人姓名")
|
||||
private String legalPerson;
|
||||
|
||||
@ApiModelProperty(value = "统一社会信用代码")
|
||||
private String uniformSocialCreditCode;
|
||||
|
||||
@ApiModelProperty(value = "状态 0启用 1禁用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty(value = "营业执照")
|
||||
private String businessLicense;
|
||||
|
||||
@ApiModelProperty(value = "所属上级公司")
|
||||
@Encrypt
|
||||
private Long pid;
|
||||
|
||||
@ApiModelProperty(value = "所属集团")
|
||||
@Encrypt
|
||||
private Long groupId;
|
||||
|
||||
@Transient
|
||||
private List<SalesOrganization> children;
|
||||
}
|
|
@ -0,0 +1,133 @@
|
|||
package org.skyer.channel.domain.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.skyer.mybatis.annotation.ModifyAudit;
|
||||
import org.skyer.mybatis.annotation.VersionAudit;
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
|
||||
/**
|
||||
* @author lixiaoyang 2021-12-10 13:27:14
|
||||
*/
|
||||
@ApiModel("店铺实体类")
|
||||
@VersionAudit
|
||||
@ModifyAudit
|
||||
@Data
|
||||
@JsonInclude(value = JsonInclude.Include.NON_NULL)
|
||||
@Table(name = "channel_shop")
|
||||
public class Shop extends AuditDomain {
|
||||
/**
|
||||
* 门店对应的渠道类型编码
|
||||
*/
|
||||
public static final String PHYSICAL_SHOP_CHANNEL_TYPE_CODE = "999";
|
||||
/**
|
||||
* 门店对应的categoryType编码
|
||||
*/
|
||||
public static final String PHYSICAL_SHOP_CATEGORY_TYPE = "PhysicalShop";
|
||||
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_CODE = "code";
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_TENANT_ID = "tenantId";
|
||||
public static final String FIELD_TYPE_CODE = "typeCode";
|
||||
public static final String FIELD_CATEGORY_TYPE = "categoryType";
|
||||
public static final String FIELD__WAREHOUSE_STATUS = "channelWarehouseStatus";
|
||||
public static final String FIELD__WAREHOUSE_NAME = "channelWarehouseName";
|
||||
public static final String FIELD_MANAGER = "manager";
|
||||
public static final String FIELD_DESCRIPTION = "description";
|
||||
public static final String FIELD_STATUS = "status";
|
||||
public static final String FIELD_DELETE_FLAG = "deleteFlag";
|
||||
public static final String FIELD_SALES_ORGANIZING_ID = "salesOrganizingId";
|
||||
public static final String FIELD_INVOICE_TYPE_CODE = "invoiceTypeCode";
|
||||
public static final String FIELD_ADDRESS = "address";
|
||||
public static final String FIELD_COUNTRY_ID = "countryId";
|
||||
public static final String FIELD_PROVINCE_ID = "provinceId";
|
||||
public static final String FIELD_CITY_ID = "cityId";
|
||||
public static final String FIELD_COUNTY_ID = "countyId";
|
||||
public static final String FIELD_URL = "url";
|
||||
public static final String FIELD__TYPE_CODE = "channelTypeCode";
|
||||
public static final String FIELD_AUTO_CONFIRM_DAY = "autoConfirmDay";
|
||||
public static final String FIELD_AUTO_DOWNLOAD_GOODS = "autoDownloadGoods";
|
||||
public static final String FIELD_AUTO_SYNC_INVENTORY = "autoSyncInventory";
|
||||
public static final String FIELD_RELATION_PHYSICAL_SHOP_ID = "relationPhysicalShopId";
|
||||
public static final String FIELD_SELF_PICKUP_FLAG = "selfPickupFlag";
|
||||
|
||||
|
||||
//
|
||||
// 业务方法(按public protected private顺序排列)
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// 数据库字段
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ApiModelProperty("主键")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
@ApiModelProperty(value = "编码")
|
||||
private String code;
|
||||
@ApiModelProperty(value = "店铺名称")
|
||||
private String name;
|
||||
@ApiModelProperty(value = "租户Id")
|
||||
private Long tenantId;
|
||||
@ApiModelProperty(value = "店铺类型")
|
||||
private String typeCode;
|
||||
@ApiModelProperty(value = "店铺类别:区分网店还是实体店")
|
||||
private String categoryType;
|
||||
@ApiModelProperty(value = "0否 1是")
|
||||
private Boolean channelWarehouseStatus;
|
||||
@ApiModelProperty(value = "渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
@ApiModelProperty(value = "负责人")
|
||||
private String manager;
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
@ApiModelProperty(value = "状态 1启用 0禁用")
|
||||
private Boolean status;
|
||||
@ApiModelProperty(value = "1删除")
|
||||
private Boolean deleteFlag;
|
||||
@ApiModelProperty(value = "销售组织")
|
||||
private Long salesOrganizingId;
|
||||
@ApiModelProperty(value = "发票种类")
|
||||
private String invoiceTypeCode;
|
||||
@ApiModelProperty(value = "详细地址")
|
||||
private String address;
|
||||
@ApiModelProperty(value = "国家ID")
|
||||
private Long countryId;
|
||||
@ApiModelProperty(value = "省ID")
|
||||
private Long provinceId;
|
||||
@ApiModelProperty(value = "市ID")
|
||||
private Long cityId;
|
||||
@ApiModelProperty(value = "县ID")
|
||||
private Long countyId;
|
||||
@ApiModelProperty(value = "网店地址(url)")
|
||||
private String url;
|
||||
@ApiModelProperty(value = "渠道类型")
|
||||
private String channelTypeCode;
|
||||
@ApiModelProperty(value = "自动确认发货(天)")
|
||||
private Integer autoConfirmDay;
|
||||
@ApiModelProperty(value = "自动下载商品")
|
||||
private Boolean autoDownloadGoods;
|
||||
@ApiModelProperty(value = "自动同步库存")
|
||||
private Boolean autoSyncInventory;
|
||||
|
||||
@ApiModelProperty(value = "网店关联的门店")
|
||||
private Long relationPhysicalShopId;
|
||||
|
||||
@ApiModelProperty(value = "o2o自提门店")
|
||||
private Boolean selfPickupFlag;
|
||||
|
||||
//
|
||||
// 非数据库字段
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
package org.skyer.channel.domain.entity;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.skyer.mybatis.annotation.ModifyAudit;
|
||||
import org.skyer.mybatis.annotation.MultiLanguage;
|
||||
import org.skyer.mybatis.annotation.VersionAudit;
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
@VersionAudit
|
||||
@ModifyAudit
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Accessors(chain = true)
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Table(name="channel_warehouse")
|
||||
public class Warehouse extends AuditDomain {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "仓库编码")
|
||||
private String wareCode;
|
||||
|
||||
@ApiModelProperty(value = "仓库名称")
|
||||
@NotNull
|
||||
private String wareName;
|
||||
|
||||
@ApiModelProperty(value = "联系人姓名")
|
||||
@NotNull
|
||||
private String contactName;
|
||||
|
||||
@ApiModelProperty(value = "联系人电话")
|
||||
@NotNull
|
||||
private String contactPhone;
|
||||
|
||||
@ApiModelProperty(value = "国家ID")
|
||||
@NotNull
|
||||
private Long countryId;
|
||||
|
||||
@ApiModelProperty(value = "省ID ")
|
||||
@NotNull
|
||||
private Long provinceId;
|
||||
|
||||
@ApiModelProperty(value = "市ID ")
|
||||
@NotNull
|
||||
private Long cityId;
|
||||
|
||||
@ApiModelProperty(value = "县ID")
|
||||
@NotNull
|
||||
private Long countyId;
|
||||
|
||||
@ApiModelProperty(value = "详细地址 ")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("租户ID")
|
||||
@Encrypt
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty("状态 true启用 false禁用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty(value = "逻辑仓名称")
|
||||
private String logicWarehouseName;
|
||||
|
||||
@ApiModelProperty(value = "是否逻辑仓 1-是 0-否")
|
||||
private Boolean logicFlag;
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package org.skyer.channel.domain.repository;
|
||||
|
||||
import org.skyer.channel.api.dto.DealerListDTO;
|
||||
import org.skyer.channel.domain.entity.Dealer;
|
||||
import org.skyer.channel.domain.vo.DealerVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.base.BaseRepository;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-17
|
||||
* @description: 经销商
|
||||
*/
|
||||
public interface DealerRepository extends BaseRepository<Dealer> {
|
||||
|
||||
/**
|
||||
* 分页查询经销商
|
||||
* @param pageRequest
|
||||
* @param dealerListDTO
|
||||
* @return
|
||||
*/
|
||||
Page<Dealer> pageDealerList(PageRequest pageRequest, DealerListDTO dealerListDTO);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package org.skyer.channel.domain.repository;
|
||||
|
||||
import org.skyer.mybatis.base.BaseRepository;
|
||||
import org.skyer.channel.domain.entity.Group;
|
||||
|
||||
/**
|
||||
* 资源库
|
||||
*
|
||||
* @author linzhuanghuang@ebc.com 2021-09-03 16:54:36
|
||||
*/
|
||||
public interface GroupRepository extends BaseRepository<Group> {
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.skyer.channel.domain.repository;
|
||||
|
||||
import org.skyer.channel.domain.entity.SalesOrganization;
|
||||
import org.skyer.mybatis.base.BaseRepository;
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-17
|
||||
* @description: 销售组织
|
||||
*/
|
||||
public interface SalesOrganizationReposotory extends BaseRepository<SalesOrganization> {
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package org.skyer.channel.domain.repository;
|
||||
|
||||
import org.skyer.channel.api.dto.ChannelSaleOrderDTO;
|
||||
import org.skyer.channel.api.dto.OnlineShopShowDTO;
|
||||
import org.skyer.channel.api.dto.PhysicalShopShowDTO;
|
||||
import org.skyer.channel.api.dto.QueryShopListDTO;
|
||||
import org.skyer.channel.domain.entity.Shop;
|
||||
import org.skyer.channel.domain.vo.*;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.base.BaseRepository;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 资源库
|
||||
*
|
||||
* @author lixiaoyang 2021-12-10 13:27:14
|
||||
*/
|
||||
public interface ShopRepository extends BaseRepository<Shop> {
|
||||
|
||||
OnlineShopSettingVO getSetting(Long id);
|
||||
|
||||
Page<OnlineShopVO> getPage(PageRequest pageRequest, OnlineShopShowDTO onlineShopShowDTO, Long tenantId);
|
||||
|
||||
Page<PhysicalShopVO> getPage(PageRequest pageRequest, PhysicalShopShowDTO physicalShopShowDTO, Long tenantId);
|
||||
|
||||
|
||||
Page<ShopListVO> queryShop(QueryShopListDTO dto, Long tenantId, PageRequest pageRequest);
|
||||
|
||||
Shop getShopByNameAndCategoryTypeAndChannelType(String name, String categoryType, String channelType, String channelWarehouseName);
|
||||
|
||||
|
||||
List<ChannelSaleOrderVO> queryChannelOrderSaleReport(ChannelSaleOrderDTO dto);
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.skyer.channel.domain.repository;
|
||||
|
||||
import org.skyer.channel.domain.entity.Warehouse;
|
||||
import org.skyer.mybatis.base.BaseRepository;
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description: 仓库
|
||||
*/
|
||||
public interface WarehouseRepository extends BaseRepository<Warehouse> {
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
package org.skyer.channel.domain.service;
|
||||
|
||||
import org.skyer.channel.api.dto.DealerDTO;
|
||||
import org.skyer.channel.api.dto.DealerListDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.domain.entity.Dealer;
|
||||
import org.skyer.channel.domain.vo.DealerVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
public interface DealerService {
|
||||
|
||||
/**
|
||||
* 添加经销商
|
||||
dealer * @return
|
||||
*/
|
||||
Boolean addDealer(Dealer dealer);
|
||||
|
||||
/**
|
||||
* 修改经销商信息
|
||||
* @param dealerDTO
|
||||
* @return
|
||||
*/
|
||||
Boolean updateDealer(DealerDTO dealerDTO);
|
||||
|
||||
/**
|
||||
* 删除经销商信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Boolean deleteById(Long id);
|
||||
|
||||
/**
|
||||
* 获取经销商详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Dealer getDealerDetail(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询经销商列表
|
||||
* @param pageRequest
|
||||
* @param dealerListDTO
|
||||
* @return
|
||||
*/
|
||||
Page<DealerVO> pageDealerList(PageRequest pageRequest, DealerListDTO dealerListDTO);
|
||||
|
||||
/**
|
||||
* 禁用
|
||||
* @param id
|
||||
* @param flag
|
||||
* @return
|
||||
*/
|
||||
boolean operation(Long id, Boolean flag);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param shopDeleteDTO
|
||||
* @return
|
||||
*/
|
||||
Boolean deletes(ShopDeleteDTO shopDeleteDTO);
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package org.skyer.channel.domain.service;
|
||||
|
||||
import org.skyer.channel.domain.entity.Group;
|
||||
|
||||
/**
|
||||
* 应用服务
|
||||
*
|
||||
* @author linzhuanghuang@ebc.com 2021-09-03 16:54:36
|
||||
*/
|
||||
public interface GroupService {
|
||||
|
||||
/**
|
||||
* 获取默认集团
|
||||
* @return
|
||||
*/
|
||||
Group getDefaultGroups();
|
||||
|
||||
/**
|
||||
* 修改默认的集团信息
|
||||
* @param group
|
||||
* @return
|
||||
*/
|
||||
int updateDefaultGroups(Group group);
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package org.skyer.channel.domain.service;
|
||||
|
||||
import org.skyer.channel.api.dto.*;
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopSettingVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface OnlineShopService {
|
||||
|
||||
Boolean save(OnlineShopDTO onlineShopDTO);
|
||||
|
||||
Boolean setting(OnlineShopSettingDTO onlineShopSettingDTO);
|
||||
|
||||
Boolean delete(Long id, Long objectVersionNumber);
|
||||
|
||||
Boolean operation(Long id, Boolean flag, Long objectVersionNumber);
|
||||
|
||||
Page<OnlineShopVO> getPage(OnlineShopShowDTO onlineShopShowDTO, PageRequest pageRequest);
|
||||
|
||||
/**
|
||||
* 根据主键获取全部详情
|
||||
*
|
||||
* @author lixiaoyang
|
||||
* @date 2021/6/28 17:20
|
||||
*/
|
||||
OnlineShopDetailVO getDetails(Long id);
|
||||
|
||||
|
||||
OnlineShopDetailVO getDetailsByCode(String code);
|
||||
|
||||
/**
|
||||
* 根据主键获取设置信息
|
||||
*
|
||||
* @author lixiaoyang
|
||||
* @date 2021/6/28 17:21
|
||||
*/
|
||||
OnlineShopSettingVO getSetting(Long id);
|
||||
|
||||
void deleteCache(Long id);
|
||||
|
||||
Boolean deletes(ShopDeleteDTO shopDeleteDTO);
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package org.skyer.channel.domain.service;
|
||||
|
||||
import org.skyer.channel.api.dto.PhysicalShopDTO;
|
||||
import org.skyer.channel.api.dto.PhysicalShopShowDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
public interface PhysicalShopService {
|
||||
|
||||
Boolean save(PhysicalShopDTO dto);
|
||||
|
||||
Boolean delete(Long id, Long objectVersionNumber);
|
||||
|
||||
Boolean deletes(ShopDeleteDTO shopDeleteDTO);
|
||||
|
||||
Boolean operation(Long id, Boolean flag, Long objectVersionNumber);
|
||||
|
||||
Page<PhysicalShopVO> getPage(PhysicalShopShowDTO physicalShopShowDTO, PageRequest pageRequest);
|
||||
|
||||
PhysicalShopDetailVO getDetails(Long id);
|
||||
|
||||
void deleteCache(Long id);
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
package org.skyer.channel.domain.service;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.channel.api.dto.SalesOrganizationDTO;
|
||||
import org.skyer.channel.api.dto.SalesOrganizationListDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.domain.entity.SalesOrganization;
|
||||
import org.skyer.channel.domain.vo.ListOfTreeVO;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationByTenantIdVO;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationListVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 经销商组织
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
public interface SalesOrganizationService {
|
||||
/**
|
||||
* 分页查询销售组织
|
||||
* @param pageRequest
|
||||
* @return
|
||||
*/
|
||||
Page<SalesOrganizationListVO> pageSalesOrganizationList(PageRequest pageRequest, SalesOrganizationListDTO salesOrganizationListDTO);
|
||||
|
||||
/**
|
||||
* 修改销售组织
|
||||
* @param salesOrganization
|
||||
* @return
|
||||
*/
|
||||
Boolean updateSalesOrganization(SalesOrganizationDTO salesOrganization);
|
||||
|
||||
/**
|
||||
* 新增销售组织
|
||||
* @param salesOrganization
|
||||
* @return
|
||||
*/
|
||||
Boolean createSalesOrganization(SalesOrganization salesOrganization);
|
||||
|
||||
/**
|
||||
* 删除销售组织
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Boolean deleteById(Long id);
|
||||
|
||||
/**
|
||||
* 获取销售组织详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
SalesOrganization getSalesOrganizationDetail(Long id);
|
||||
|
||||
/**
|
||||
* 禁用 OR 启用
|
||||
* @param id
|
||||
* @param flag
|
||||
* @return
|
||||
*/
|
||||
boolean operation(Long id, Boolean flag);
|
||||
|
||||
/**
|
||||
* 根据租户Id查询
|
||||
* @param tenantId
|
||||
* @return
|
||||
*/
|
||||
List<SalesOrganizationByTenantIdVO> getsalesOrganizationByTenantId(Long tenantId);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param shopDeleteDTO
|
||||
* @return
|
||||
*/
|
||||
Boolean deletes(ShopDeleteDTO shopDeleteDTO);
|
||||
|
||||
/**
|
||||
* 公司上下级树形结构
|
||||
* @return
|
||||
*/
|
||||
List<ListOfTreeVO> listOfTree(Boolean flag);
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
package org.skyer.channel.domain.service;
|
||||
|
||||
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.api.dto.WarehouseDTO;
|
||||
import org.skyer.channel.api.dto.WarehouseListDTO;
|
||||
import org.skyer.channel.domain.entity.Warehouse;
|
||||
import org.skyer.channel.domain.vo.WarehouseListVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
public interface WarehouseService {
|
||||
/**
|
||||
* 修改仓库
|
||||
* @param warehouse
|
||||
* @return
|
||||
*/
|
||||
Boolean updateWarehouse(WarehouseDTO warehouse);
|
||||
|
||||
/**
|
||||
* 新增仓库
|
||||
* @param warehouse
|
||||
* @return
|
||||
*/
|
||||
Boolean createWarehouse(Warehouse warehouse);
|
||||
|
||||
/**
|
||||
* 删除仓库
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Boolean deleteById(Long id);
|
||||
|
||||
/**
|
||||
* 获取仓库详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Warehouse getWarehouseDetail(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询仓库信息
|
||||
* @param pageRequest
|
||||
* @param warehouseListDTO
|
||||
* @return
|
||||
*/
|
||||
Page<WarehouseListVO> pageWarehouseList(PageRequest pageRequest, WarehouseListDTO warehouseListDTO);
|
||||
|
||||
/**
|
||||
* 禁用 OR 启用
|
||||
* @param id
|
||||
* @param flag
|
||||
* @return
|
||||
*/
|
||||
boolean operation(Long id, Boolean flag);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param shopDeleteDTO
|
||||
* @return
|
||||
*/
|
||||
Boolean deletes(ShopDeleteDTO shopDeleteDTO);
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
package org.skyer.channel.domain.service.impl;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.skyer.channel.api.dto.DealerDTO;
|
||||
import org.skyer.channel.api.dto.DealerListDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.domain.entity.Dealer;
|
||||
import org.skyer.channel.domain.repository.DealerRepository;
|
||||
import org.skyer.channel.domain.service.DealerService;
|
||||
import org.skyer.channel.domain.vo.DealerVO;
|
||||
import org.skyer.core.cache.ProcessCacheValue;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.oauth.CustomUserDetails;
|
||||
import org.skyer.core.oauth.DetailsHelper;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-17
|
||||
* @description:
|
||||
*/
|
||||
@Service
|
||||
public class DealerServiceImpl implements DealerService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DealerServiceImpl.class);
|
||||
@Autowired
|
||||
private DealerRepository dealerRepository;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean addDealer(Dealer dealer) {
|
||||
if (ObjectUtils.isEmpty(dealer.getDealerCode())){
|
||||
dealer.setDealerCode(UUID.randomUUID().toString().replace("-", ""));
|
||||
}
|
||||
CustomUserDetails userDetails = DetailsHelper.getUserDetails();
|
||||
logger.info("获取当前用户==============》" + userDetails);
|
||||
logger.info("获取当前用户租户ID==============》" + userDetails.getTenantId());
|
||||
Long tenantId = userDetails.getTenantId();
|
||||
dealer.setTenantId(tenantId);
|
||||
return dealerRepository.insert(dealer) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateDealer(DealerDTO dealerDTO) {
|
||||
Dealer dealer = dealerRepository.selectByPrimaryKey(dealerDTO.getId());
|
||||
BeanUtils.copyProperties(dealerDTO,dealer);
|
||||
return dealerRepository.updateByPrimaryKey(dealer)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteById(Long id) {
|
||||
Dealer dealer = dealerRepository.selectByPrimaryKey(id);
|
||||
dealer.setDeleteFlag(true);
|
||||
return dealerRepository.updateByPrimaryKey(dealer) >0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessCacheValue
|
||||
public Dealer getDealerDetail(Long id) {
|
||||
return dealerRepository.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessCacheValue
|
||||
public Page<DealerVO> pageDealerList(PageRequest pageRequest, DealerListDTO dealerListDTO) {
|
||||
Page<Dealer> page = dealerRepository.pageDealerList(pageRequest, dealerListDTO);
|
||||
List<Dealer> content = page.getContent();
|
||||
List<DealerVO> list = new ArrayList<>();
|
||||
content.forEach(item->{
|
||||
DealerVO dealerVO = new DealerVO();
|
||||
BeanUtils.copyProperties(item,dealerVO);
|
||||
list.add(dealerVO);
|
||||
});
|
||||
Page<DealerVO> a = new Page<>();
|
||||
a.setContent(list);
|
||||
return a;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean operation(Long id, Boolean flag) {
|
||||
Dealer dealer = dealerRepository.selectByPrimaryKey(id);
|
||||
dealer.setStatus(flag);
|
||||
return dealerRepository.updateByPrimaryKey(dealer) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deletes(ShopDeleteDTO shopDeleteDTO) {
|
||||
List<Long> ids = shopDeleteDTO.getIds();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
stringBuilder.append(ids.get(i));
|
||||
if (i != (ids.size() - 1)) {
|
||||
stringBuilder.append(",");
|
||||
}
|
||||
}
|
||||
List<Dealer> dealarList = dealerRepository.selectByIds(stringBuilder.toString());
|
||||
for (Dealer dealar : dealarList) {
|
||||
dealar.setDeleteFlag(true);
|
||||
}
|
||||
// 执行软删
|
||||
dealerRepository.batchUpdateByPrimaryKey(dealarList);
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package org.skyer.channel.domain.service.impl;
|
||||
|
||||
import org.skyer.channel.domain.entity.Group;
|
||||
import org.skyer.channel.domain.repository.GroupRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import org.skyer.channel.domain.service.GroupService;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 应用服务默认实现
|
||||
*
|
||||
* @author linzhuanghuang@ebc.com 2021-09-03 16:54:36
|
||||
*/
|
||||
@Service
|
||||
public class GroupServiceImpl implements GroupService {
|
||||
|
||||
@Autowired
|
||||
private GroupRepository groupRepository;
|
||||
|
||||
@Override
|
||||
public Group getDefaultGroups() {
|
||||
List<Group> groupList = groupRepository.selectAll();
|
||||
if (ObjectUtils.isEmpty(groupList)){
|
||||
return new Group();
|
||||
}else {
|
||||
return groupList.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateDefaultGroups(Group group) {
|
||||
List<Group> groupList = groupRepository.selectAll();
|
||||
if (ObjectUtils.isEmpty(groupList)){
|
||||
return groupRepository.insert(group);
|
||||
}else {
|
||||
group.setId(groupList.get(0).getId());
|
||||
group.setObjectVersionNumber(groupList.get(0).getObjectVersionNumber());
|
||||
return groupRepository.updateByPrimaryKeySelective(group);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,228 @@
|
|||
package org.skyer.channel.domain.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.skyer.channel.infra.constant.Constants.APP_CODE;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.ProcessLovValue;
|
||||
import org.skyer.channel.api.dto.*;
|
||||
import org.skyer.channel.domain.entity.Shop;
|
||||
import org.skyer.channel.domain.repository.ShopRepository;
|
||||
import org.skyer.channel.domain.service.OnlineShopService;
|
||||
import org.skyer.channel.domain.service.saga.ShopService;
|
||||
import org.skyer.channel.domain.vo.OnlineShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopSettingVO;
|
||||
import org.skyer.channel.domain.vo.OnlineShopVO;
|
||||
import org.skyer.core.cache.ProcessCacheValue;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.exception.CommonException;
|
||||
import org.skyer.core.redis.DynamicRedisHelper;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
@Service
|
||||
public class OnlineShopServiceImpl implements OnlineShopService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(OnlineShopServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private ShopRepository shopRepository;
|
||||
@Autowired
|
||||
private DynamicRedisHelper redisHelper;
|
||||
@Autowired
|
||||
private ShopService shopService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean save(OnlineShopDTO dto) {
|
||||
String shopName = dto.getName();
|
||||
String channelWarehouseName = dto.getChannelWarehouseName();
|
||||
Shop shop = null;
|
||||
if (!ObjectUtils.isEmpty(shopName)) {
|
||||
String typeCode = dto.getChannelTypeCode();
|
||||
shop = shopRepository.getShopByNameAndCategoryTypeAndChannelType(shopName, OnlineShopDetailVO.ONLINE_SHOP, typeCode, null);
|
||||
}
|
||||
Shop channelShop = null;
|
||||
if (!ObjectUtils.isEmpty(channelWarehouseName)) {
|
||||
channelShop = shopRepository.getShopByNameAndCategoryTypeAndChannelType(null, null, null, channelWarehouseName);
|
||||
}
|
||||
|
||||
Long id = dto.getId();
|
||||
// id为空走新增逻辑
|
||||
if (ObjectUtils.isEmpty(id) || id == 0) {
|
||||
if (!ObjectUtils.isEmpty(shop)) {
|
||||
throw new CommonException("店铺名称禁止重复");
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(channelShop)) {
|
||||
throw new CommonException("逻辑仓名称禁止重复");
|
||||
}
|
||||
Long tenantId = 0L;
|
||||
Shop onlineShop = new Shop();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(dto, onlineShop);
|
||||
String code = onlineShop.getCode();
|
||||
if (ObjectUtils.isEmpty(code)) {
|
||||
onlineShop.setCode(shopService.creationCode(tenantId));
|
||||
}
|
||||
onlineShop.setTypeCode(dto.getOnlineStoreTypeCode());
|
||||
onlineShop.setTenantId(tenantId);
|
||||
onlineShop.setStatus(true);
|
||||
onlineShop.setDeleteFlag(false);
|
||||
onlineShop.setCategoryType(OnlineShopDetailVO.ONLINE_SHOP);
|
||||
SaveShopDTO saveShopDTO = new SaveShopDTO();
|
||||
saveShopDTO.setShop(onlineShop);
|
||||
saveShopDTO.setFlag(true);
|
||||
ShopDTO shopDTO = shopService.doSaveShop(saveShopDTO);
|
||||
return !ObjectUtils.isEmpty(shopDTO);
|
||||
} else {
|
||||
if (!ObjectUtils.isEmpty(shop) && shop.getId().compareTo(id) != 0) {
|
||||
throw new CommonException("店铺名称禁止重复");
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(channelShop) && channelShop.getId().compareTo(id) != 0) {
|
||||
throw new CommonException("逻辑仓名称禁止重复");
|
||||
}
|
||||
Shop onlineShop = shopRepository.selectByPrimaryKey(id);
|
||||
// CODE 不能修改 获取出来
|
||||
String code = onlineShop.getCode();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(dto, onlineShop);
|
||||
// 重新放入CODE
|
||||
onlineShop.setCode(code);
|
||||
onlineShop.setTypeCode(dto.getOnlineStoreTypeCode());
|
||||
SaveShopDTO saveShopDTO = new SaveShopDTO();
|
||||
saveShopDTO.setShop(onlineShop);
|
||||
saveShopDTO.setFlag(false);
|
||||
ShopDTO shopDTO = shopService.doSaveShop(saveShopDTO);
|
||||
return !ObjectUtils.isEmpty(shopDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean setting(OnlineShopSettingDTO onlineShopSettingDTO) {
|
||||
Shop onlineShop = shopRepository.selectByPrimaryKey(onlineShopSettingDTO.getId());
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(onlineShopSettingDTO, onlineShop);
|
||||
int update = shopRepository.updateByPrimaryKey(onlineShop);
|
||||
if (update > 0) {
|
||||
redisHelper.hshDelete(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, onlineShop.getId().toString());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean delete(Long id, Long objectVersionNumber) {
|
||||
Shop onlineShop = shopRepository.selectByPrimaryKey(id);
|
||||
onlineShop.setDeleteFlag(true);
|
||||
onlineShop.setObjectVersionNumber(objectVersionNumber);
|
||||
int update = shopRepository.updateByPrimaryKey(onlineShop);
|
||||
if (update > 0) {
|
||||
redisHelper.hshDelete(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, onlineShop.getId().toString());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean operation(Long id, Boolean flag, Long objectVersionNumber) {
|
||||
Shop onlineShop = shopRepository.selectByPrimaryKey(id);
|
||||
onlineShop.setStatus(flag);
|
||||
onlineShop.setChannelWarehouseStatus(flag);
|
||||
onlineShop.setObjectVersionNumber(objectVersionNumber);
|
||||
SaveShopDTO saveShopDTO = new SaveShopDTO();
|
||||
saveShopDTO.setShop(onlineShop);
|
||||
saveShopDTO.setFlag(false);
|
||||
ShopDTO shopDTO = shopService.doSaveShop(saveShopDTO);
|
||||
return !ObjectUtils.isEmpty(shopDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessCacheValue
|
||||
@ProcessLovValue
|
||||
public Page<OnlineShopVO> getPage(OnlineShopShowDTO onlineShopShowDTO, PageRequest pageRequest) {
|
||||
Long tenantId = 0L;
|
||||
return shopRepository.getPage(pageRequest, onlineShopShowDTO, tenantId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessLovValue
|
||||
public OnlineShopDetailVO getDetails(Long id) {
|
||||
String data = redisHelper.hshGet(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, id.toString());
|
||||
if (ObjectUtils.isEmpty(data)) {
|
||||
Shop onlineShop = shopRepository.selectByPrimaryKey(id);
|
||||
OnlineShopDetailVO vo = new OnlineShopDetailVO();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(onlineShop, vo);
|
||||
vo.setOnlineStoreTypeCode(onlineShop.getTypeCode());
|
||||
|
||||
if (!ObjectUtils.isEmpty(onlineShop.getRelationPhysicalShopId())) {
|
||||
Shop relationShop = shopRepository.selectByPrimaryKey(onlineShop.getRelationPhysicalShopId());
|
||||
if (!ObjectUtils.isEmpty(relationShop)){
|
||||
vo.setRelationPhysicalShopName(relationShop.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
redisHelper.hshPut(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, onlineShop.getId().toString(), JSON.toJSONString(vo));
|
||||
logger.info("==============mysql获取==============");
|
||||
return vo;
|
||||
}
|
||||
logger.info("==============缓存获取==============");
|
||||
return JSON.parseObject(data, OnlineShopDetailVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OnlineShopDetailVO getDetailsByCode(String code) {
|
||||
Shop query = new Shop();
|
||||
query.setCode(code);
|
||||
Shop onlineShop = shopRepository.selectOne(query);
|
||||
OnlineShopDetailVO vo = new OnlineShopDetailVO();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(onlineShop, vo);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OnlineShopSettingVO getSetting(Long id) {
|
||||
return shopRepository.getSetting(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteCache(Long id) {
|
||||
redisHelper.hshDelete(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, id.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deletes(ShopDeleteDTO shopDeleteDTO) {
|
||||
List<Long> ids = shopDeleteDTO.getIds();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
stringBuilder.append(ids.get(i));
|
||||
if (i != (ids.size() - 1)) {
|
||||
stringBuilder.append(",");
|
||||
}
|
||||
}
|
||||
List<Shop> onlineShopList = shopRepository.selectByIds(stringBuilder.toString());
|
||||
for (Shop onlineShop : onlineShopList) {
|
||||
onlineShop.setDeleteFlag(true);
|
||||
// 清除缓存
|
||||
redisHelper.hshDelete(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, onlineShop.getId().toString());
|
||||
}
|
||||
// 执行软删
|
||||
shopRepository.batchUpdateByPrimaryKey(onlineShopList);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,181 @@
|
|||
package org.skyer.channel.domain.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.skyer.channel.infra.constant.Constants.APP_CODE;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.ProcessLovValue;
|
||||
import org.skyer.channel.api.dto.*;
|
||||
import org.skyer.channel.domain.entity.Shop;
|
||||
import org.skyer.channel.domain.repository.ShopRepository;
|
||||
import org.skyer.channel.domain.service.PhysicalShopService;
|
||||
import org.skyer.channel.domain.service.saga.ShopService;
|
||||
import org.skyer.channel.domain.vo.OnlineShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopVO;
|
||||
import org.skyer.core.cache.ProcessCacheValue;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.exception.CommonException;
|
||||
import org.skyer.core.oauth.CustomUserDetails;
|
||||
import org.skyer.core.oauth.DetailsHelper;
|
||||
import org.skyer.core.redis.DynamicRedisHelper;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
@Service
|
||||
public class PhysicalShopServiceImpl implements PhysicalShopService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(PhysicalShopServiceImpl.class);
|
||||
@Autowired
|
||||
private ShopRepository shopRepository;
|
||||
@Autowired
|
||||
private DynamicRedisHelper redisHelper;
|
||||
@Autowired
|
||||
private ShopService shopService;
|
||||
|
||||
@Override
|
||||
public Boolean save(PhysicalShopDTO dto) {
|
||||
Shop shop = shopRepository.getShopByNameAndCategoryTypeAndChannelType(dto.getName(), PhysicalShopDetailVO.PHYSICAL_SHOP, null, null);
|
||||
Shop channelShop = shopRepository.getShopByNameAndCategoryTypeAndChannelType(null, null, null, dto.getChannelWarehouseName());
|
||||
Long id = dto.getId();
|
||||
// id为空走新增逻辑
|
||||
if (ObjectUtils.isEmpty(id) || id == 0) {
|
||||
if (!ObjectUtils.isEmpty(shop)) {
|
||||
throw new CommonException("店铺名称禁止重复");
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(channelShop)) {
|
||||
throw new CommonException("逻辑仓名称禁止重复");
|
||||
}
|
||||
Shop physicalShop = new Shop();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(dto, physicalShop);
|
||||
String code = physicalShop.getCode();
|
||||
// 请求头中获取当前用户信息
|
||||
CustomUserDetails userDetails = DetailsHelper.getUserDetails();
|
||||
logger.info("获取当前用户==============》" + userDetails);
|
||||
Long tenantId = userDetails.getTenantId();
|
||||
if (ObjectUtils.isEmpty(code)) {
|
||||
physicalShop.setCode(shopService.creationCode(tenantId));
|
||||
}
|
||||
physicalShop.setTenantId(tenantId);
|
||||
physicalShop.setStatus(true);
|
||||
physicalShop.setDeleteFlag(false);
|
||||
physicalShop.setCategoryType(PhysicalShopDetailVO.PHYSICAL_SHOP);
|
||||
SaveShopDTO saveShopDTO = new SaveShopDTO();
|
||||
saveShopDTO.setShop(physicalShop);
|
||||
saveShopDTO.setFlag(true);
|
||||
ShopDTO shopDTO = shopService.doSaveShop(saveShopDTO);
|
||||
return !ObjectUtils.isEmpty(shopDTO);
|
||||
} else {
|
||||
if (!ObjectUtils.isEmpty(shop) && shop.getId().compareTo(id) != 0) {
|
||||
throw new CommonException("店铺名称禁止重复");
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(channelShop) && channelShop.getId().compareTo(id) != 0) {
|
||||
throw new CommonException("逻辑仓名称禁止重复");
|
||||
}
|
||||
Shop updatePhysicalShop = shopRepository.selectByPrimaryKey(id);
|
||||
// CODE 不能修改 获取出来
|
||||
String code = updatePhysicalShop.getCode();
|
||||
// tenantId 不能修改 获取出来
|
||||
Long tenantId = updatePhysicalShop.getTenantId();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(dto, updatePhysicalShop);
|
||||
// 重新放入CODE
|
||||
updatePhysicalShop.setCode(code);
|
||||
updatePhysicalShop.setTenantId(tenantId);
|
||||
SaveShopDTO saveShopDTO = new SaveShopDTO();
|
||||
saveShopDTO.setShop(updatePhysicalShop);
|
||||
saveShopDTO.setFlag(false);
|
||||
ShopDTO shopDTO = shopService.doSaveShop(saveShopDTO);
|
||||
return !ObjectUtils.isEmpty(shopDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean delete(Long id, Long objectVersionNumber) {
|
||||
Shop physicalShop = shopRepository.selectByPrimaryKey(id);
|
||||
physicalShop.setDeleteFlag(true);
|
||||
physicalShop.setObjectVersionNumber(objectVersionNumber);
|
||||
int update = shopRepository.updateByPrimaryKey(physicalShop);
|
||||
if (update > 0) {
|
||||
redisHelper.hshDelete(APP_CODE + ":" + PhysicalShopDetailVO.PHYSICAL_SHOP, physicalShop.getId().toString());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deletes(ShopDeleteDTO shopDeleteDTO) {
|
||||
List<Long> ids = shopDeleteDTO.getIds();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
stringBuilder.append(ids.get(i));
|
||||
if (i != (ids.size() - 1)) {
|
||||
stringBuilder.append(",");
|
||||
}
|
||||
}
|
||||
List<Shop> physicalShopList = shopRepository.selectByIds(stringBuilder.toString());
|
||||
for (Shop physicalShop : physicalShopList) {
|
||||
physicalShop.setDeleteFlag(true);
|
||||
// 清除缓存
|
||||
redisHelper.hshDelete(APP_CODE + ":" + PhysicalShopDetailVO.PHYSICAL_SHOP, physicalShop.getId().toString());
|
||||
}
|
||||
// 执行软删
|
||||
shopRepository.batchUpdateByPrimaryKey(physicalShopList);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean operation(Long id, Boolean flag, Long objectVersionNumber) {
|
||||
Shop physicalShop = shopRepository.selectByPrimaryKey(id);
|
||||
physicalShop.setStatus(flag);
|
||||
physicalShop.setChannelWarehouseStatus(flag);
|
||||
physicalShop.setObjectVersionNumber(objectVersionNumber);
|
||||
SaveShopDTO saveShopDTO = new SaveShopDTO();
|
||||
saveShopDTO.setShop(physicalShop);
|
||||
saveShopDTO.setFlag(false);
|
||||
ShopDTO shopDTO = shopService.doSaveShop(saveShopDTO);
|
||||
return !ObjectUtils.isEmpty(shopDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessCacheValue
|
||||
@ProcessLovValue
|
||||
public Page<PhysicalShopVO> getPage(PhysicalShopShowDTO physicalShopShowDTO, PageRequest pageRequest) {
|
||||
Long tenantId = 0L;
|
||||
return shopRepository.getPage(pageRequest, physicalShopShowDTO, tenantId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessLovValue
|
||||
public PhysicalShopDetailVO getDetails(Long id) {
|
||||
String data = redisHelper.hshGet(APP_CODE + ":" + PhysicalShopDetailVO.PHYSICAL_SHOP, id.toString());
|
||||
if (ObjectUtils.isEmpty(data)) {
|
||||
Shop physicalShop = shopRepository.selectByPrimaryKey(id);
|
||||
PhysicalShopDetailVO vo = new PhysicalShopDetailVO();
|
||||
// 参数转换
|
||||
BeanUtils.copyProperties(physicalShop, vo);
|
||||
redisHelper.hshPut(APP_CODE + ":" + PhysicalShopDetailVO.PHYSICAL_SHOP, id.toString(), JSON.toJSONString(vo));
|
||||
logger.info("==============mysql获取==============");
|
||||
return vo;
|
||||
}
|
||||
logger.info("==============缓存获取==============");
|
||||
return JSON.parseObject(data, PhysicalShopDetailVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteCache(Long id) {
|
||||
redisHelper.hshDelete(APP_CODE + ":" + PhysicalShopDetailVO.PHYSICAL_SHOP, id.toString());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,252 @@
|
|||
package org.skyer.channel.domain.service.impl;
|
||||
|
||||
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.skyer.channel.infra.feign.UserClient;
|
||||
import org.skyer.core.exception.CommonException;
|
||||
import org.skyer.core.util.ResponseUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.skyer.channel.api.dto.SalesOrganizationDTO;
|
||||
import org.skyer.channel.api.dto.SalesOrganizationListDTO;
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.domain.entity.Dealer;
|
||||
import org.skyer.channel.domain.entity.SalesOrganization;
|
||||
import org.skyer.channel.domain.repository.SalesOrganizationReposotory;
|
||||
import org.skyer.channel.domain.service.SalesOrganizationService;
|
||||
import org.skyer.channel.domain.vo.ChildrenVO;
|
||||
import org.skyer.channel.domain.vo.ListOfTreeVO;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationByTenantIdVO;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationListVO;
|
||||
import org.skyer.channel.infra.mapper.SalesOrganizationMapper;
|
||||
import org.skyer.channel.infra.util.ListUtil;
|
||||
import org.skyer.core.cache.ProcessCacheValue;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.oauth.CustomUserDetails;
|
||||
import org.skyer.core.oauth.DetailsHelper;
|
||||
import org.skyer.mybatis.pagehelper.PageHelper;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
@Service
|
||||
public class SalesOrganizationServiceImpl implements SalesOrganizationService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SalesOrganizationServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private SalesOrganizationReposotory salesOrganizationReposotory;
|
||||
|
||||
@Autowired
|
||||
private SalesOrganizationMapper salesOrganizationMapper;
|
||||
|
||||
@Autowired
|
||||
private UserClient userClient;
|
||||
|
||||
@Override
|
||||
@ProcessCacheValue
|
||||
public Page<SalesOrganizationListVO> pageSalesOrganizationList(PageRequest pageRequest, SalesOrganizationListDTO salesOrganizationListDTO) {
|
||||
return PageHelper.doPage(pageRequest,()-> salesOrganizationMapper.pageSalesOrganizationList(salesOrganizationListDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateSalesOrganization(SalesOrganizationDTO salesOrganization) {
|
||||
SalesOrganization organization = salesOrganizationReposotory.selectByPrimaryKey(salesOrganization.getId());
|
||||
BeanUtils.copyProperties(salesOrganization,organization);
|
||||
return salesOrganizationReposotory.updateByPrimaryKey(organization)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean createSalesOrganization(SalesOrganization salesOrganization) {
|
||||
if (ObjectUtils.isEmpty(salesOrganization.getOrgCode())){
|
||||
salesOrganization.setOrgCode(UUID.randomUUID().toString());
|
||||
}
|
||||
CustomUserDetails userDetails = DetailsHelper.getUserDetails();
|
||||
logger.info("获取当前用户==============》" + userDetails);
|
||||
logger.info("获取当前用户租户ID==============》" + userDetails.getTenantId());
|
||||
Long tenantId = userDetails.getTenantId();
|
||||
salesOrganization.setTenantId(tenantId);
|
||||
return salesOrganizationReposotory.insertSelective(salesOrganization)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteById(Long id) {
|
||||
ResponseEntity response= userClient.companyUser(Collections.singletonList(id));
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
throw new CommonException("组织已存在用户,无法删除");
|
||||
}
|
||||
SalesOrganization organization = salesOrganizationReposotory.selectByPrimaryKey(id);
|
||||
organization.setDeleteFlag(true);
|
||||
return salesOrganizationReposotory.updateByPrimaryKey(organization)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalesOrganization getSalesOrganizationDetail(Long id) {
|
||||
return salesOrganizationReposotory.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean operation(Long id, Boolean flag) {
|
||||
SalesOrganization organization = salesOrganizationReposotory.selectByPrimaryKey(id);
|
||||
organization.setStatus(flag);
|
||||
return salesOrganizationReposotory.updateByPrimaryKey(organization) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalesOrganizationByTenantIdVO> getsalesOrganizationByTenantId(Long tenantId) {
|
||||
SalesOrganization salesOrganization = new SalesOrganization();
|
||||
salesOrganization.setTenantId(tenantId);
|
||||
List<SalesOrganization> list = salesOrganizationReposotory.select(salesOrganization);
|
||||
List<SalesOrganizationByTenantIdVO> vos = ListUtil.listConvert(list, SalesOrganizationByTenantIdVO.class);
|
||||
return vos;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deletes(ShopDeleteDTO shopDeleteDTO) {
|
||||
List<Long> ids = shopDeleteDTO.getIds();
|
||||
ResponseEntity response= userClient.companyUser(ids);
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
throw new CommonException("组织已存在用户,无法删除");
|
||||
}
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
stringBuilder.append(ids.get(i));
|
||||
if (i != (ids.size() - 1)) {
|
||||
stringBuilder.append(",");
|
||||
}
|
||||
}
|
||||
List<SalesOrganization> list = salesOrganizationReposotory.selectByIds(stringBuilder.toString());
|
||||
for (SalesOrganization salesOrganization : list) {
|
||||
salesOrganization.setDeleteFlag(true);
|
||||
}
|
||||
// 执行软删
|
||||
salesOrganizationReposotory.batchUpdateByPrimaryKey(list);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ListOfTreeVO> listOfTree(Boolean flag) {
|
||||
|
||||
// 获取所有公司记录
|
||||
SalesOrganization organization = new SalesOrganization();
|
||||
organization.setDeleteFlag(false);
|
||||
if (flag==true){
|
||||
organization.setStatus(true);
|
||||
}
|
||||
List<SalesOrganization> allCompanyList = salesOrganizationReposotory.select(organization);
|
||||
List<SalesOrganization> oneList = allCompanyList.stream().filter(model -> model.getPid() == null)
|
||||
.map((menu) -> {
|
||||
menu.setChildren(find(menu, allCompanyList));
|
||||
return menu;
|
||||
}).collect(Collectors.toList());
|
||||
// List<SalesOrganization> twoList = allCompanyList.stream().filter(model -> model.getPid() != null).collect(Collectors.toList());
|
||||
// Map<Long, SalesOrganization> oneMap = oneList.stream().collect(Collectors.toMap(SalesOrganization::getId, Function.identity()));
|
||||
//
|
||||
// Map<Long, SalesOrganization> twoMap = twoList.stream().collect(Collectors.toMap(SalesOrganization::getId, Function.identity()));
|
||||
// List<SalesOrganization> list = doDataProcessing(allCompanyList, oneMap, twoMap);
|
||||
|
||||
|
||||
|
||||
return ListUtil.listConvert(oneList,ListOfTreeVO.class);
|
||||
}
|
||||
/**
|
||||
*递归查找所有菜单的子菜单
|
||||
*/
|
||||
private List<SalesOrganization> find(SalesOrganization root, List<SalesOrganization> all) {
|
||||
|
||||
return all.stream().filter(menuEntity ->
|
||||
menuEntity.getPid() != null &&
|
||||
menuEntity.getPid().equals(root.getId())
|
||||
).map(item -> {
|
||||
//1、找到子菜单(递归)
|
||||
item.setChildren(find(item, all));
|
||||
return item;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * 执行数据处理 树结构构成
|
||||
// *
|
||||
// * @param moduleConfigSysList 所有菜单集合
|
||||
// * @param oneDataMap 一级菜单集合
|
||||
// * @param twoDataMap 其它级菜单集合
|
||||
// * @return List<ModuleConfigVO>
|
||||
// * @author lixiaoyang
|
||||
// * @date 2021/6/8 16:46
|
||||
// */
|
||||
// private List<SalesOrganization> doDataProcessing(List<SalesOrganization> moduleConfigSysList, Map<Long, SalesOrganization> oneDataMap, Map<Long, SalesOrganization> twoDataMap) {
|
||||
// List<SalesOrganization> leaveOutList = new ArrayList<>();
|
||||
// for (SalesOrganization moduleConfig : moduleConfigSysList) {
|
||||
// Long parentId = moduleConfig.getPid();
|
||||
// if (!ObjectUtils.isEmpty(parentId) && parentId != 0) {
|
||||
// //获取父菜单
|
||||
// SalesOrganization parentModuleConfigVO = oneDataMap.get(parentId);
|
||||
// if (ObjectUtils.isEmpty(parentModuleConfigVO)) {
|
||||
//
|
||||
// parentModuleConfigVO = twoDataMap.get(parentId);
|
||||
// if (ObjectUtils.isEmpty(parentModuleConfigVO)) {
|
||||
// leaveOutList.add(moduleConfig);
|
||||
// continue;
|
||||
// }
|
||||
// }
|
||||
// List<SalesOrganization> moduleConfigVOList = parentModuleConfigVO.getChildren();
|
||||
// if (ObjectUtils.isEmpty(moduleConfigVOList)) {
|
||||
// moduleConfigVOList = new ArrayList<>();
|
||||
// }
|
||||
// moduleConfigVOList.add(moduleConfig);
|
||||
// parentModuleConfigVO.setChildren(moduleConfigVOList);
|
||||
// twoDataMap.put(moduleConfig.getId(), moduleConfig);
|
||||
// } else {
|
||||
// oneDataMap.put(moduleConfig.getId(), moduleConfig);
|
||||
// }
|
||||
// }
|
||||
// // 防止因顺序问题造成菜单无法挂钩父类
|
||||
// if (leaveOutList.size() > 0) {
|
||||
// boolean flag = false;
|
||||
// while (leaveOutList.iterator().hasNext()) {
|
||||
// SalesOrganization moduleConfig = leaveOutList.iterator().next();
|
||||
// Long parentId = moduleConfig.getPid();
|
||||
// SalesOrganization one = oneDataMap.get(parentId);
|
||||
// SalesOrganization two = twoDataMap.get(parentId);
|
||||
// if (!ObjectUtils.isEmpty(one) || !ObjectUtils.isEmpty(two)) {
|
||||
// flag = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (flag) {
|
||||
// doDataProcessing(leaveOutList, oneDataMap, twoDataMap);
|
||||
// }
|
||||
// }
|
||||
// //菜单分配完成最后整合
|
||||
// Set<Long> longs = oneDataMap.keySet();
|
||||
// List<SalesOrganization> result = new ArrayList<>();
|
||||
// longs.forEach(l -> {
|
||||
// result.add(oneDataMap.get(l));
|
||||
// });
|
||||
// return result;
|
||||
// }
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
package org.skyer.channel.domain.service.impl;
|
||||
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.skyer.channel.api.dto.ShopDeleteDTO;
|
||||
import org.skyer.channel.api.dto.WarehouseDTO;
|
||||
import org.skyer.channel.api.dto.WarehouseListDTO;
|
||||
import org.skyer.channel.domain.entity.SalesOrganization;
|
||||
import org.skyer.channel.domain.entity.Warehouse;
|
||||
import org.skyer.channel.domain.repository.WarehouseRepository;
|
||||
import org.skyer.channel.domain.service.WarehouseService;
|
||||
import org.skyer.channel.domain.vo.WarehouseListVO;
|
||||
import org.skyer.channel.infra.mapper.WarehouseMapper;
|
||||
import org.skyer.core.cache.ProcessCacheValue;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.oauth.CustomUserDetails;
|
||||
import org.skyer.core.oauth.DetailsHelper;
|
||||
import org.skyer.mybatis.pagehelper.PageHelper;
|
||||
import org.skyer.mybatis.pagehelper.domain.PageRequest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
@Service
|
||||
public class WarehouseServiceImpl implements WarehouseService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(WarehouseServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private WarehouseRepository warehouseRepository;
|
||||
|
||||
@Autowired
|
||||
private WarehouseMapper warehouseMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateWarehouse(WarehouseDTO warehouseDTO) {
|
||||
Warehouse warehouse = warehouseRepository.selectByPrimaryKey(warehouseDTO.getId());
|
||||
BeanUtils.copyProperties(warehouseDTO,warehouse);
|
||||
return warehouseRepository.updateByPrimaryKey(warehouse)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean createWarehouse(Warehouse warehouse) {
|
||||
if (ObjectUtils.isEmpty(warehouse.getWareCode())){
|
||||
warehouse.setWareCode(UUID.randomUUID().toString());
|
||||
}
|
||||
CustomUserDetails userDetails = DetailsHelper.getUserDetails();
|
||||
logger.info("获取当前用户==============》" + userDetails);
|
||||
logger.info("获取当前用户租户ID==============》" + userDetails.getTenantId());
|
||||
Long tenantId = userDetails.getTenantId();
|
||||
warehouse.setTenantId(tenantId);
|
||||
return warehouseRepository.insertSelective(warehouse)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteById(Long id) {
|
||||
Warehouse warehouse = warehouseRepository.selectByPrimaryKey(id);
|
||||
warehouse.setDeleteFlag(true);
|
||||
return warehouseRepository.updateByPrimaryKey(warehouse)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Warehouse getWarehouseDetail(Long id) {
|
||||
return warehouseRepository.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessCacheValue
|
||||
public Page<WarehouseListVO> pageWarehouseList(PageRequest pageRequest, WarehouseListDTO warehouseListDTO) {
|
||||
return PageHelper.doPageAndSort(pageRequest,()->warehouseMapper.pageWarehouseList(warehouseListDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean operation(Long id, Boolean flag) {
|
||||
Warehouse warehouse = warehouseMapper.selectByPrimaryKey(id);
|
||||
warehouse.setStatus(flag);
|
||||
return warehouseMapper.updateByPrimaryKey(warehouse) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deletes(ShopDeleteDTO shopDeleteDTO) {
|
||||
List<Long> ids = shopDeleteDTO.getIds();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
stringBuilder.append(ids.get(i));
|
||||
if (i != (ids.size() - 1)) {
|
||||
stringBuilder.append(",");
|
||||
}
|
||||
}
|
||||
List<Warehouse> list = warehouseRepository.selectByIds(stringBuilder.toString());
|
||||
for (Warehouse warehouse : list) {
|
||||
warehouse.setDeleteFlag(true);
|
||||
}
|
||||
// 执行软删
|
||||
warehouseRepository.batchUpdateByPrimaryKey(list);
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.skyer.channel.domain.service.saga;
|
||||
|
||||
import org.skyer.channel.api.dto.ChannelSaleOrderDTO;
|
||||
import org.skyer.channel.api.dto.QueryShopListDTO;
|
||||
import org.skyer.channel.api.dto.SaveShopDTO;
|
||||
import org.skyer.channel.api.dto.ShopDTO;
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.skyer.channel.domain.vo.ShopListVO;
|
||||
import org.skyer.core.domain.Page;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ShopService {
|
||||
|
||||
ShopDTO doSaveShop(SaveShopDTO saveShopDTO);
|
||||
|
||||
Page<ShopListVO> queryShop(QueryShopListDTO dto);
|
||||
|
||||
String creationCode(Long tenantId);
|
||||
|
||||
List<ChannelSaleOrderVO> queryChannelOrderSaleReport(ChannelSaleOrderDTO dto);
|
||||
}
|
|
@ -0,0 +1,171 @@
|
|||
package org.skyer.channel.domain.service.saga.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.skyer.channel.api.dto.ChannelSaleOrderDTO;
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.skyer.channel.infra.feign.OrderReportRemoteService;
|
||||
import org.skyer.channel.infra.remote.api.dto.SaleOrderOrderApiDTO;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import static org.skyer.channel.infra.constant.Constants.APP_CODE;
|
||||
|
||||
import org.skyer.boot.platform.code.builder.CodeRuleBuilder;
|
||||
import org.skyer.boot.platform.code.constant.CodeConstants;
|
||||
import org.skyer.boot.platform.lov.annotation.ProcessLovValue;
|
||||
import org.skyer.channel.api.dto.QueryShopListDTO;
|
||||
import org.skyer.channel.api.dto.SaveShopDTO;
|
||||
import org.skyer.channel.api.dto.ShopDTO;
|
||||
import org.skyer.channel.domain.entity.Shop;
|
||||
import org.skyer.channel.domain.repository.ShopRepository;
|
||||
import org.skyer.channel.domain.service.saga.ShopService;
|
||||
import org.skyer.channel.domain.vo.OnlineShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.PhysicalShopDetailVO;
|
||||
import org.skyer.channel.domain.vo.ShopListVO;
|
||||
import org.skyer.channel.infra.constant.HrConstants;
|
||||
import org.skyer.core.domain.Page;
|
||||
import org.skyer.core.iam.ResourceLevel;
|
||||
import org.skyer.core.oauth.CustomUserDetails;
|
||||
import org.skyer.core.oauth.DetailsHelper;
|
||||
import org.skyer.core.redis.DynamicRedisHelper;
|
||||
import org.skyer.saga.saga.annotation.Saga;
|
||||
import org.skyer.saga.saga.producer.StartSagaBuilder;
|
||||
import org.skyer.saga.saga.producer.TransactionalProducer;
|
||||
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ShopServiceImpl implements ShopService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(ShopServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private ShopRepository shopRepository;
|
||||
@Autowired
|
||||
private CodeRuleBuilder codeRuleBuilder;
|
||||
@Autowired
|
||||
private DynamicRedisHelper redisHelper;
|
||||
@Autowired
|
||||
private TransactionalProducer transactionalProducer;
|
||||
@Autowired
|
||||
private OrderReportRemoteService orderReportRemoteService;
|
||||
|
||||
@Override
|
||||
@Saga(code = "do-save-shop", description = "商户创建", inputSchemaClass = Shop.class)
|
||||
public ShopDTO doSaveShop(SaveShopDTO saveShopDTO) {
|
||||
return transactionalProducer.applyAndReturn(StartSagaBuilder
|
||||
.newBuilder()
|
||||
.withLevel(ResourceLevel.SITE)
|
||||
.withSourceId(1L)
|
||||
.withRefType("saveShopDTO")
|
||||
.withPayloadAndSerialize(saveShopDTO)
|
||||
.withSagaCode("do-save-shop"),
|
||||
build -> {
|
||||
Boolean flag = saveShopDTO.getFlag();
|
||||
Shop shop = saveShopDTO.getShop();
|
||||
ShopDTO shopDTO = new ShopDTO();
|
||||
int size;
|
||||
if (flag) {
|
||||
size = shopRepository.insertSelective(shop);
|
||||
} else {
|
||||
size = shopRepository.updateByPrimaryKeySelective(shop);
|
||||
}
|
||||
if (size > 0) {
|
||||
redisHelper.hshDelete(APP_CODE + ":" + OnlineShopDetailVO.ONLINE_SHOP, shop.getId().toString());
|
||||
redisHelper.hshDelete(APP_CODE + ":" + PhysicalShopDetailVO.PHYSICAL_SHOP, shop.getId().toString());
|
||||
BeanUtils.copyProperties(shop, shopDTO);
|
||||
}
|
||||
build.withPayloadAndSerialize(shopDTO).withRefId(shopDTO.getId() + " time:" + System.currentTimeMillis());
|
||||
return shopDTO;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessLovValue
|
||||
public Page<ShopListVO> queryShop(QueryShopListDTO dto) {
|
||||
// 999 其他渠道特殊处理
|
||||
String channelTypeCode = dto.getChannelTypeCode();
|
||||
if (!ObjectUtils.isEmpty(channelTypeCode) && Shop.PHYSICAL_SHOP_CHANNEL_TYPE_CODE.equals(channelTypeCode)) {
|
||||
dto.setChannelTypeCode(null);
|
||||
dto.setCategoryType(Shop.PHYSICAL_SHOP_CATEGORY_TYPE);
|
||||
}
|
||||
|
||||
// 提货店铺特殊处理
|
||||
Long o2oSalesStoreId = dto.getO2oSalesStoreId();
|
||||
if (Objects.nonNull(o2oSalesStoreId)) {
|
||||
Shop shop = shopRepository.selectByPrimaryKey(o2oSalesStoreId);
|
||||
if (Objects.nonNull(shop) && !Shop.PHYSICAL_SHOP_CATEGORY_TYPE.equals(shop.getCategoryType())) {
|
||||
// 如果销售店铺是网店,则取网店关联的门店列表。
|
||||
if (ObjectUtils.isEmpty(shop.getRelationPhysicalShopId())){
|
||||
// 如果网店没有关联门店,则返回空值。
|
||||
return new Page<>();
|
||||
}
|
||||
dto.setId(shop.getRelationPhysicalShopId());
|
||||
} else {
|
||||
// 如果销售店铺是门店,则取已启用的且是O2O订单自提门店列表。
|
||||
dto.setCategoryType(Shop.PHYSICAL_SHOP_CATEGORY_TYPE);
|
||||
dto.setSelfPickupFlag(true);
|
||||
}
|
||||
}
|
||||
|
||||
return shopRepository.queryShop(dto, 0L, dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String creationCode(Long tenantId) {
|
||||
return codeRuleBuilder.generateCode(CodeConstants.Level.TENANT, tenantId, HrConstants.CodeRule.QD_WAREHOUSE_CODE, CodeConstants.CodeRuleLevelCode.CUSTOM, HrConstants.LevelValue.QD_WAREHOUSE_CODE, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ProcessLovValue
|
||||
public List<ChannelSaleOrderVO> queryChannelOrderSaleReport(ChannelSaleOrderDTO dto) {
|
||||
List<ChannelSaleOrderVO> channelSaleOrderVOS = shopRepository.queryChannelOrderSaleReport(dto);
|
||||
//调用订单中心获取订单金额等数据
|
||||
if (CollectionUtils.isEmpty(channelSaleOrderVOS)) {
|
||||
return channelSaleOrderVOS;
|
||||
}
|
||||
List<String> storeCodeList = channelSaleOrderVOS.stream().map(ChannelSaleOrderVO::getStoreCode).distinct().collect(Collectors.toList());
|
||||
SaleOrderOrderApiDTO saleOrderOrderApiDTO = new SaleOrderOrderApiDTO();
|
||||
saleOrderOrderApiDTO.setStartDate(dto.getStartDate());
|
||||
saleOrderOrderApiDTO.setEndDate(dto.getEndDate());
|
||||
saleOrderOrderApiDTO.setStoreCode(storeCodeList);
|
||||
ResponseEntity<List<ChannelSaleOrderVO>> listResponseEntity = orderReportRemoteService.queryChannelOrderSaleReport(saleOrderOrderApiDTO);
|
||||
log.info("调用订单中心获取订单数据 入参为:{},出参为:{}", JSONObject.toJSONString(saleOrderOrderApiDTO), JSONObject.toJSONString(listResponseEntity));
|
||||
//调用订单中心获取金额等参数
|
||||
List<ChannelSaleOrderVO> channelSaleOrderPartInfoVOList = listResponseEntity.getBody();
|
||||
if (CollectionUtils.isEmpty(channelSaleOrderPartInfoVOList)) {
|
||||
return channelSaleOrderVOS;
|
||||
}
|
||||
Map<String, ChannelSaleOrderVO> channelSaleOrderPartInfoVOMap = channelSaleOrderPartInfoVOList.stream().collect(Collectors.toMap(ChannelSaleOrderVO::getStoreCode, Function.identity(), (o1, o2) -> o1));
|
||||
channelSaleOrderVOS.forEach(channelSaleOrderVO -> {
|
||||
ChannelSaleOrderVO channelSaleOrderPartInfoVO = channelSaleOrderPartInfoVOMap.get(channelSaleOrderVO.getStoreCode());
|
||||
channelSaleOrderVO.setOrderCount(0);
|
||||
channelSaleOrderVO.setOrderAmount(BigDecimal.ZERO);
|
||||
channelSaleOrderVO.setReverseOrderCount(0);
|
||||
channelSaleOrderVO.setReverseOrderAmount(BigDecimal.ZERO);
|
||||
if (channelSaleOrderPartInfoVO != null) {
|
||||
channelSaleOrderVO.setOrderCount(channelSaleOrderPartInfoVO.getOrderCount());
|
||||
channelSaleOrderVO.setOrderAmount(channelSaleOrderPartInfoVO.getOrderAmount());
|
||||
channelSaleOrderVO.setReverseOrderCount(channelSaleOrderPartInfoVO.getReverseOrderCount());
|
||||
channelSaleOrderVO.setReverseOrderAmount(channelSaleOrderPartInfoVO.getReverseOrderAmount());
|
||||
}
|
||||
});
|
||||
return channelSaleOrderVOS;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ChannelSaleOrderVO {
|
||||
|
||||
@ApiModelProperty(value = "渠道类型code")
|
||||
@LovValue(lovCode = "SCHL.CHANNEL_TYPE", meaningField = "channelName")
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty(value ="渠道名称")
|
||||
private String channelName;
|
||||
|
||||
@ApiModelProperty(value = "店铺名")
|
||||
private String storeName;
|
||||
|
||||
@ApiModelProperty(value="店铺编码")
|
||||
private String storeCode;
|
||||
|
||||
@ApiModelProperty(value="所属公司")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("店铺类型编码")
|
||||
private String storeTypeCode;
|
||||
|
||||
|
||||
@ApiModelProperty(value="店铺类型")
|
||||
private String storeType;
|
||||
|
||||
@ApiModelProperty(value="订单数")
|
||||
private Integer orderCount;
|
||||
|
||||
@ApiModelProperty(value="销售单数")
|
||||
private BigDecimal orderAmount;
|
||||
|
||||
@ApiModelProperty(value="售后单数")
|
||||
private Integer reverseOrderCount;
|
||||
|
||||
@ApiModelProperty(value="售后金额")
|
||||
private BigDecimal reverseOrderAmount;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-09-07
|
||||
* @description:
|
||||
*/
|
||||
@Data
|
||||
public class ChildrenVO {
|
||||
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
private String orgName;
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
import org.skyer.common.SkyerCacheKey;
|
||||
import org.skyer.core.cache.CacheValue;
|
||||
import org.skyer.core.cache.Cacheable;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description:
|
||||
*/
|
||||
@Data
|
||||
public class DealerVO implements Cacheable {
|
||||
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
private String dealerCode;
|
||||
private String dealerName;
|
||||
private Boolean status;
|
||||
private Date creationDate;
|
||||
private Long createdBy;
|
||||
|
||||
@ApiModelProperty("创建人用户名")
|
||||
@CacheValue(
|
||||
key = SkyerCacheKey.USER,
|
||||
primaryKey = "createdBy",
|
||||
searchKey = "realName",
|
||||
structure = CacheValue.DataStructure.MAP_OBJECT
|
||||
)
|
||||
private String createdName;
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-09-07
|
||||
* @description:
|
||||
*/
|
||||
@ApiModel("公司层级关系树")
|
||||
@Data
|
||||
public class ListOfTreeVO {
|
||||
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
private String orgName;
|
||||
|
||||
private List<ChildrenVO> children;
|
||||
}
|
|
@ -0,0 +1,112 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 网店
|
||||
* </p>
|
||||
*
|
||||
* @author lixiaoyang
|
||||
* @since 2021-06-16
|
||||
*/
|
||||
@ApiModel("网店")
|
||||
@Data
|
||||
public class OnlineShopDetailVO extends AuditDomain {
|
||||
public static final String ONLINE_SHOP = "OnlineShop";
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("租户ID")
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 处理后的含义字段放在哪个字段中<br/>
|
||||
* 不设置则进行默认映射,将注解所在字段名末尾的Code(如果有)替换为Meaning,例:<br/>
|
||||
* <ul>
|
||||
* <li>statusCode -> statusMeaning</li>
|
||||
* <li>processStatus -> processStatusMeaning</li>
|
||||
* <li>codeTypeCode -> codeTypeMeaning</li>
|
||||
* </ul>
|
||||
*/
|
||||
|
||||
@ApiModelProperty("渠道类型编码")
|
||||
@LovValue(lovCode = "SCHL.CHANNEL_TYPE",meaningField = "channelTypeMeaning")
|
||||
private String channelTypeCode;
|
||||
|
||||
//非数据库字段
|
||||
@ApiModelProperty("渠道类型")
|
||||
private String channelTypeMeaning;
|
||||
|
||||
@ApiModelProperty("网店类型编码")
|
||||
@LovValue(lovCode = "SCHL.SHOP_TYPE", meaningField = "onlineStoreTypeMeaning")
|
||||
private String onlineStoreTypeCode;
|
||||
|
||||
//非数据库字段
|
||||
@ApiModelProperty("网店类型")
|
||||
private String onlineStoreTypeMeaning;
|
||||
|
||||
@ApiModelProperty("负责人")
|
||||
private String manager;
|
||||
|
||||
@ApiModelProperty("网店地址(url)")
|
||||
private String url;
|
||||
|
||||
@ApiModelProperty("销售组织")
|
||||
@Encrypt
|
||||
private Long salesOrganizingId;
|
||||
|
||||
@ApiModelProperty("发票种类编码")
|
||||
@LovValue(lovCode = "SCHL.INVOICE_TYPE", meaningField = "invoiceTypeCodeMeaning")
|
||||
private String invoiceTypeCode;
|
||||
|
||||
//非数据库字段
|
||||
@ApiModelProperty("发票种类")
|
||||
private String invoiceTypeCodeMeaning;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态 true是")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
private Boolean deleteFlag;
|
||||
// 1 = true
|
||||
@ApiModelProperty("状态 true启用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("自动确认发货(天)")
|
||||
private Integer autoConfirmDay;
|
||||
|
||||
@ApiModelProperty("自动下载商品 true是 false否")
|
||||
private Boolean autoDownloadGoods;
|
||||
|
||||
@ApiModelProperty("自动同步库存 true是 false否")
|
||||
private Boolean autoSyncInventory;
|
||||
|
||||
@ApiModelProperty("网店关联的门店id")
|
||||
@Encrypt
|
||||
private Long relationPhysicalShopId;
|
||||
|
||||
@ApiModelProperty("网店关联的门店名称")
|
||||
private String relationPhysicalShopName;
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@ApiModel("网店设置出参类")
|
||||
@Data
|
||||
public class OnlineShopSettingVO {
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("自动确认发货(天)")
|
||||
private Integer autoConfirmDay;
|
||||
|
||||
@ApiModelProperty("自动下载商品 true是 false否")
|
||||
private Boolean autoDownloadGoods;
|
||||
|
||||
@ApiModelProperty("自动同步库存 true是 false否")
|
||||
private Boolean autoSyncInventory;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Long objectVersionNumber;
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
import org.skyer.common.SkyerCacheKey;
|
||||
import org.skyer.core.cache.CacheValue;
|
||||
import org.skyer.core.cache.Cacheable;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@ApiModel("网店出参类")
|
||||
@Data
|
||||
public class OnlineShopVO implements Cacheable {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("渠道类型编码")
|
||||
@LovValue(lovCode = "SCHL.CHANNEL_TYPE", meaningField = "channelTypeMeaning")
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty("渠道类型")
|
||||
private String channelTypeMeaning;
|
||||
|
||||
@ApiModelProperty("状态 true启用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("销售组织")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty("店铺类型编码")
|
||||
@LovValue(lovCode = "SCHL.SHOP_TYPE", meaningField = "onlineStoreTypeMeaning")
|
||||
private String onlineStoreTypeCode;
|
||||
|
||||
@ApiModelProperty("店铺类型")
|
||||
private String onlineStoreTypeMeaning;
|
||||
|
||||
@ApiModelProperty("网店地址(url)")
|
||||
private String url;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态 true禁用")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty("网店关联的门店名称")
|
||||
private String relationPhysicalShopName;
|
||||
|
||||
@ApiModelProperty("创建人")
|
||||
private Long createdBy;
|
||||
|
||||
@ApiModelProperty("创建人用户名")
|
||||
@CacheValue(
|
||||
key = SkyerCacheKey.USER,
|
||||
primaryKey = "createdBy",
|
||||
searchKey = "realName",
|
||||
structure = CacheValue.DataStructure.MAP_OBJECT
|
||||
)
|
||||
private String createdName;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private Date creationDate;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Long objectVersionNumber;
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
import org.skyer.mybatis.domain.AuditDomain;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 门店
|
||||
* </p>
|
||||
*
|
||||
* @author lixiaoyang
|
||||
* @since 2021-06-16
|
||||
*/
|
||||
@ApiModel("门店")
|
||||
@Data
|
||||
public class PhysicalShopDetailVO extends AuditDomain {
|
||||
public static final String PHYSICAL_SHOP = "PhysicalShop";
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("租户ID(入参不填)")
|
||||
private Long tenantId;
|
||||
|
||||
@ApiModelProperty("门店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("门店类型编码")
|
||||
@LovValue(lovCode = "SCHL.SHOP_TYPE", meaningField = "typeCodeMeaning")
|
||||
private String typeCode;
|
||||
|
||||
@ApiModelProperty("门店类型(入参不填)")
|
||||
private String typeCodeMeaning;
|
||||
|
||||
@ApiModelProperty("负责人")
|
||||
private String manager;
|
||||
|
||||
@ApiModelProperty("销售组织")
|
||||
@Encrypt
|
||||
private Long salesOrganizingId;
|
||||
|
||||
@ApiModelProperty("发票种类编码")
|
||||
@LovValue(lovCode = "SCHL.INVOICE_TYPE", meaningField = "invoiceTypeCodeMeaning")
|
||||
private String invoiceTypeCode;
|
||||
|
||||
//非数据库字段
|
||||
@ApiModelProperty("发票种类(入参不填)")
|
||||
private String invoiceTypeCodeMeaning;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty("国家ID")
|
||||
private Long countryId;
|
||||
|
||||
@ApiModelProperty("省ID")
|
||||
private Long provinceId;
|
||||
|
||||
@ApiModelProperty("市ID")
|
||||
private Long cityId;
|
||||
|
||||
@ApiModelProperty("县ID")
|
||||
private Long countyId;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("状态 true启用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty("删除标识 true删除")
|
||||
private Boolean deleteFlag;
|
||||
|
||||
@ApiModelProperty(value = "o2o自提门店")
|
||||
private Boolean selfPickupFlag;
|
||||
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
import org.skyer.common.SkyerCacheKey;
|
||||
import org.skyer.core.cache.CacheValue;
|
||||
import org.skyer.core.cache.Cacheable;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
@ApiModel("门店出参类")
|
||||
@Data
|
||||
public class PhysicalShopVO implements Cacheable {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("状态 true启用")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty("销售组织")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty("店铺类型")
|
||||
@LovValue(lovCode = "SCHL.SHOP_TYPE", meaningField = "typeCodeMeaning")
|
||||
private String typeCode;
|
||||
|
||||
@ApiModelProperty("店铺类型")
|
||||
private String typeCodeMeaning;
|
||||
|
||||
@ApiModelProperty("店铺地址")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty("渠道仓使用状态")
|
||||
private Boolean channelWarehouseStatus;
|
||||
|
||||
@ApiModelProperty("渠道仓名称")
|
||||
private String channelWarehouseName;
|
||||
|
||||
@ApiModelProperty(value = "o2o自提门店")
|
||||
private Boolean selfPickupFlag;
|
||||
|
||||
@ApiModelProperty("创建人")
|
||||
private Long createdBy;
|
||||
|
||||
@ApiModelProperty("创建人用户名")
|
||||
@CacheValue(
|
||||
key = SkyerCacheKey.USER,
|
||||
primaryKey = "createdBy",
|
||||
searchKey = "realName",
|
||||
structure = CacheValue.DataStructure.MAP_OBJECT
|
||||
)
|
||||
private String createdName;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private Date creationDate;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Long objectVersionNumber;
|
||||
|
||||
@ApiModelProperty("负责人")
|
||||
private String manager;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-25
|
||||
* @description:
|
||||
*/
|
||||
@Data
|
||||
public class SalesOrganizationByTenantIdVO {
|
||||
|
||||
@Encrypt
|
||||
private Long id;
|
||||
private String orgName;
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.skyer.common.SkyerCacheKey;
|
||||
import org.skyer.core.cache.CacheValue;
|
||||
import org.skyer.core.cache.Cacheable;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description:
|
||||
*/
|
||||
@Data
|
||||
public class SalesOrganizationListVO implements Cacheable {
|
||||
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
private String orgCode;
|
||||
private String orgName;
|
||||
private String shopPermitName;
|
||||
private Boolean status;
|
||||
private Date creationDate;
|
||||
private Long createdBy;
|
||||
@ApiModelProperty("创建人用户名")
|
||||
@CacheValue(
|
||||
key = SkyerCacheKey.USER,
|
||||
primaryKey = "createdBy",
|
||||
searchKey = "realName",
|
||||
structure = CacheValue.DataStructure.MAP_OBJECT
|
||||
)
|
||||
private String createdName;
|
||||
|
||||
|
||||
private String superiorName;
|
||||
private String groupName;
|
||||
@ApiModelProperty(value = "所属上级公司")
|
||||
@Encrypt
|
||||
private Long pid;
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import org.skyer.boot.platform.lov.annotation.LovValue;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
@Data
|
||||
@ApiModel("店铺结果集")
|
||||
public class ShopListVO {
|
||||
|
||||
@ApiModelProperty("表ID,主键,供其他表做外键")
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("网店名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("渠道类型编码")
|
||||
@LovValue(lovCode = "SCHL.CHANNEL_TYPE", meaningField = "channelTypeMeaning")
|
||||
private String channelTypeCode;
|
||||
|
||||
@ApiModelProperty("渠道类型")
|
||||
private String channelTypeMeaning;
|
||||
|
||||
@ApiModelProperty(value = "店铺类别:区分网店还是实体店 网店:OnlineShop 门店:PhysicalShop")
|
||||
private String categoryType;
|
||||
|
||||
@ApiModelProperty("所属公司id")
|
||||
@Encrypt
|
||||
private Long salesOrganizingId;
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package org.skyer.channel.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
import org.skyer.common.SkyerCacheKey;
|
||||
import org.skyer.core.cache.CacheValue;
|
||||
import org.skyer.core.cache.Cacheable;
|
||||
import org.skyer.starter.keyencrypt.core.Encrypt;
|
||||
|
||||
/**
|
||||
* @author: lzh
|
||||
* @date: 2021-06-18
|
||||
* @description:
|
||||
*/
|
||||
@Data
|
||||
public class WarehouseListVO implements Cacheable {
|
||||
|
||||
@Encrypt
|
||||
private Long id;
|
||||
|
||||
private String wareCode;
|
||||
private String wareName;
|
||||
private String contactName;
|
||||
private String contactPhone;
|
||||
private Long countryId;
|
||||
private Long provinceId;
|
||||
private Long cityId;
|
||||
private Long countyId;
|
||||
private String address;
|
||||
private Boolean status;
|
||||
private Date creationDate;
|
||||
private Long createdBy;
|
||||
@ApiModelProperty("创建人用户名")
|
||||
@CacheValue(
|
||||
key = SkyerCacheKey.USER,
|
||||
primaryKey = "createdBy",
|
||||
searchKey = "realName",
|
||||
structure = CacheValue.DataStructure.MAP_OBJECT
|
||||
)
|
||||
private String createdName;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.skyer.channel.infra.annocations;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* 数据源类型
|
||||
*
|
||||
* @author xiaoyu.zhao@hand-china.com
|
||||
*/
|
||||
@Inherited
|
||||
@Target({ElementType.TYPE})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface DatasourceType {
|
||||
|
||||
/**
|
||||
* 数据源类型
|
||||
*
|
||||
* @return 类型
|
||||
*/
|
||||
String[] value();
|
||||
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.skyer.channel.infra.constant;
|
||||
|
||||
|
||||
/**
|
||||
* 公司常量类
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年7月10日下午7:15:05
|
||||
*/
|
||||
public class CompanyConstants {
|
||||
|
||||
/**
|
||||
* 企业审批后续处理类型
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年7月10日下午7:21:13
|
||||
*/
|
||||
public static class CompanyApprovalProcessType {
|
||||
/**
|
||||
* 初审
|
||||
*/
|
||||
public static final String FIRST_APPROVAL = "FIRST_APPROVAL";
|
||||
/**
|
||||
* 组织分配
|
||||
*/
|
||||
public static final String ORG_ASSIGN = "ORG_ASSIGN";
|
||||
/**
|
||||
* 角色分配
|
||||
*/
|
||||
public static final String ROLE_ASSIGN = "ROLE_ASSIGN";
|
||||
}
|
||||
|
||||
/**
|
||||
* 企业审批后续处理状态
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年7月10日下午7:21:13
|
||||
*/
|
||||
public static class CompanyApprovalProcessStatus {
|
||||
/**
|
||||
* 成功
|
||||
*/
|
||||
public static final String SUCCESS = "S";
|
||||
/**
|
||||
* 错误
|
||||
*/
|
||||
public static final String ERROR = "E";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,331 @@
|
|||
package org.skyer.channel.infra.constant;
|
||||
|
||||
import org.skyer.common.SkyerService;
|
||||
|
||||
/**
|
||||
* 平台常量
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年6月12日下午2:38:38
|
||||
*/
|
||||
public interface Constants {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 国际冠码 值集编码
|
||||
*/
|
||||
String IDD_LOV_CODE = "HPFM.IDD";
|
||||
|
||||
/**
|
||||
* 值集禁止状态
|
||||
*/
|
||||
String FORBIDDEN = "FORBIDDEN";
|
||||
|
||||
/**
|
||||
* 服务简称
|
||||
*/
|
||||
String APP_CODE = "schl";
|
||||
|
||||
String SITE_LEVEL_UPPER_CASE = "SITE";
|
||||
String TENANT_LEVEL_UPPER_CASE = "TENANT";
|
||||
|
||||
String CONFIG_CODE_FAVICON = "FAVICON";
|
||||
|
||||
/**
|
||||
* 默认平台管理员角色
|
||||
*/
|
||||
String DEFAULT_ROLE_ADMINISTRATOR = "role/site/default/administrator";
|
||||
/**
|
||||
* 默认平台管理员角色
|
||||
*/
|
||||
String DEFAULT_ROLE_ORG_ADMINISTRATOR = "role/organization/default/administrator";
|
||||
/**
|
||||
* 默认模板角色
|
||||
*/
|
||||
String DEFAULT_ROLE_ADMINISTRATOR_TEMPLATE = "role/organization/default/template/administrator";
|
||||
|
||||
String HPFM_FILE_CONFIG_TYPE_CODE = "FILE";
|
||||
String HPFM_TEXT_CONFIG_TYPE_CODE = "TEXT";
|
||||
|
||||
|
||||
/**
|
||||
* kafka topic常量
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年7月10日上午11:15:11
|
||||
*/
|
||||
interface KafkaTopics {
|
||||
/**
|
||||
* 企业注册
|
||||
*/
|
||||
String HPFM_COMPANY_REGISTER = "hpfm_company_register";
|
||||
/**
|
||||
* 角色权限分配
|
||||
*/
|
||||
String HPFM_HIAM_ROLE_ASSIGN = "hpfm_hiam_role_assign";
|
||||
/**
|
||||
* 企业注册后期处理
|
||||
*/
|
||||
String COMPANY_REGISTER_POST_PROCESSING = "company_register_post_processing";
|
||||
}
|
||||
|
||||
/**
|
||||
* 编码规则代码
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年7月10日下午5:27:21
|
||||
*/
|
||||
interface RuleCodes {
|
||||
/**
|
||||
* 公司编码
|
||||
*/
|
||||
String HPFM_COMPANY = "HPFM.COMPANY";
|
||||
/**
|
||||
* 集团编码
|
||||
*/
|
||||
String HPFM_GROUP = "HPFM.GROUP";
|
||||
/**
|
||||
* 租户编码
|
||||
*/
|
||||
String HPFM_TENANT = "HPFM.TENANT";
|
||||
}
|
||||
|
||||
/**
|
||||
* DashboardLayout编码
|
||||
*/
|
||||
interface DashboardLayout {
|
||||
/*
|
||||
* 默认租户
|
||||
*/
|
||||
Long DEFAULT_TENANT_ID = 0L;
|
||||
/*
|
||||
* 默认用户ID
|
||||
*/
|
||||
Long DEFAULT_USER_ID = 0L;
|
||||
/**
|
||||
* 默认角色ID
|
||||
*/
|
||||
Long DEFAULT_ROLE_ID = 0L;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据源常量
|
||||
*/
|
||||
interface Datasource {
|
||||
/**
|
||||
* 数据库类型-Oracle
|
||||
*/
|
||||
String DB_ORACLE = "ORACLE";
|
||||
/**
|
||||
* 数据库类型-Mysql
|
||||
*/
|
||||
String DB_MYSQL = "MYSQL";
|
||||
/**
|
||||
* 数据库类型-Tidb
|
||||
*/
|
||||
String DB_TIDB = "TIDB";
|
||||
/**
|
||||
* 数据库类型-SqlServer
|
||||
*/
|
||||
String DB_MSSQL = "SQLSERVER";
|
||||
/**
|
||||
* 数据库类型-Hana
|
||||
*/
|
||||
String DB_HANA = "HANA";
|
||||
|
||||
/**
|
||||
* 数据库JDBC驱动
|
||||
*/
|
||||
String DRIVER_CLASS_MYSQL = "com.mysql.jdbc.Driver";
|
||||
String DRIVER_CLASS_SQLSERVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
||||
String DRIVER_CLASS_ORACLE = "oracle.jdbc.driver.OracleDriver";
|
||||
/**
|
||||
* 数据库连接字符串
|
||||
*/
|
||||
String DATA_SOURCE_URL_MYSQL = "jdbc:mysql://${host}:${port}/${database}?characterEncoding=${encoding}";
|
||||
String DATA_SOURCE_URL_SQLSERVER = "jdbc:sqlserver://${host};databaseName=${database}";
|
||||
String DATA_SOURCE_URL_ORACLE = "jdbc:oracle:thin:@${host}:${port}:${database}";
|
||||
String DATA_SOURCE_PURPOSE_DI = "DI";
|
||||
String DATA_SOURCE_PURPOSE_DT = "DT";
|
||||
String DATA_SOURCE_PURPOSE_DR = "DR";
|
||||
|
||||
/**
|
||||
* 驱动类型(自定义,默认)
|
||||
*/
|
||||
String CUSTOMIZE = "CUSTOMIZE";
|
||||
String DEFAULT = "DEFAULT";
|
||||
}
|
||||
|
||||
/**
|
||||
* DashboardCard编码
|
||||
*/
|
||||
interface DashboardCard {
|
||||
/**
|
||||
* 用户维度类型
|
||||
*/
|
||||
String DIMENSION_TYPE_USER = "USER";
|
||||
/**
|
||||
* 租户维度类型
|
||||
*/
|
||||
String DIMENSION_TYPE_TENANT = "TENANT";
|
||||
}
|
||||
|
||||
/**
|
||||
* 属性归属
|
||||
*/
|
||||
interface PropertyOwner {
|
||||
/**
|
||||
* 表格
|
||||
*/
|
||||
String TABLE = "TABLE";
|
||||
/**
|
||||
* 列
|
||||
*/
|
||||
String COLUMN = "COLUMN";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格个性化
|
||||
*/
|
||||
interface UiTable {
|
||||
|
||||
interface SourceType {
|
||||
String TENANT = "TENANT";
|
||||
String ROLE = "ROLE";
|
||||
String USER = "USER";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 弹性域
|
||||
*/
|
||||
interface Flex {
|
||||
|
||||
/**
|
||||
* 条件
|
||||
*/
|
||||
interface Symbol {
|
||||
String AND = "AND";
|
||||
String OR = "OR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 运算符
|
||||
*/
|
||||
interface Operator {
|
||||
String EQUAL = "=";
|
||||
String LIKE = "LIKE";
|
||||
}
|
||||
|
||||
/**
|
||||
* 层级
|
||||
*/
|
||||
interface Scope {
|
||||
String TENANT = "T";
|
||||
String ROLE = "R";
|
||||
String USER = "U";
|
||||
}
|
||||
|
||||
interface FieldType {
|
||||
String INPUT = "INPUT";
|
||||
String NUMBER = "NUMBER";
|
||||
String LOV = "LOV";
|
||||
String LANG = "LANG";
|
||||
String SELECT = "SELECT";
|
||||
String DATE = "DATE";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单个性化
|
||||
*/
|
||||
interface Personality {
|
||||
/**
|
||||
* 层级
|
||||
*/
|
||||
interface Scope {
|
||||
String TENANT = "T";
|
||||
String ROLE = "R";
|
||||
String USER = "U";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 服务器管理
|
||||
*/
|
||||
interface Server {
|
||||
|
||||
String SEPARATOR = "/";// File.separator;
|
||||
/**
|
||||
* 操作系统常量
|
||||
*/
|
||||
String OS_LINUX = "LINUX";
|
||||
}
|
||||
|
||||
/**
|
||||
* 个性化规则类型
|
||||
*/
|
||||
interface CustomizeRuleType {
|
||||
String URL = "URL";
|
||||
String JAVA = "JAVA";
|
||||
String GROOVY = "GROOVY";
|
||||
}
|
||||
|
||||
/**
|
||||
* 个性化规则位置
|
||||
*/
|
||||
interface CustomizeRulePosition {
|
||||
String BEFORE = "BEFORE";
|
||||
String REPLACE = "REPLACE";
|
||||
String AFTER = "AFTER";
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入模板定义
|
||||
*/
|
||||
interface ImportTemplateCode {
|
||||
/**
|
||||
* 平台多语言导入模板
|
||||
*/
|
||||
String PROMPT_TEMP = "HPFM.PROMPT";
|
||||
/**
|
||||
* 返回消息管理模板
|
||||
*/
|
||||
String MESSAGE_TEMP = "HPFM.MESSAGE";
|
||||
/**
|
||||
* 值集导入模板
|
||||
*/
|
||||
String LOV_TEMP = "HPFM.LOV";
|
||||
/**
|
||||
* 值集值导入模板
|
||||
*/
|
||||
String LOV_VALUE_TEMP = "HPFM.LOV_VALUE";
|
||||
}
|
||||
|
||||
/**
|
||||
* 审批日志清理类型
|
||||
*/
|
||||
interface ClearLogType {
|
||||
String CODE = "HPFM.AUDIT_LOG.CLEAR_TYPE";
|
||||
String THREE_DAY = "1";
|
||||
String ONE_WEEK = "2";
|
||||
String ONE_MONTH = "3";
|
||||
String THREE_MONTH = "4";
|
||||
String SIX_MONTH = "5";
|
||||
String ONE_YEAR = "6";
|
||||
}
|
||||
|
||||
/**
|
||||
* 在线用户
|
||||
*/
|
||||
interface OnlineUser {
|
||||
/**
|
||||
* 小时数
|
||||
*/
|
||||
Integer HOURS = 24;
|
||||
/**
|
||||
* 初始在线人数
|
||||
*/
|
||||
Long INITIAL_ONLINE = 0L;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package org.skyer.channel.infra.constant;
|
||||
|
||||
public enum DataHierarchyDisplayStyle {
|
||||
MODAL, SELECT
|
||||
}
|
|
@ -0,0 +1,344 @@
|
|||
package org.skyer.channel.infra.constant;
|
||||
|
||||
/**
|
||||
* 基础模块常量
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年6月12日下午2:38:50
|
||||
*/
|
||||
public interface FndConstants {
|
||||
|
||||
/**
|
||||
* 个性化页面值类型
|
||||
*/
|
||||
interface AttributeType {
|
||||
|
||||
/**
|
||||
* 字符串
|
||||
*/
|
||||
String STRING = "STRING";
|
||||
|
||||
/**
|
||||
* 数字
|
||||
*/
|
||||
String NUMBER = "NUMBER";
|
||||
|
||||
/**
|
||||
* boolean
|
||||
*/
|
||||
String BOOLEAN = "BOOLEAN";
|
||||
}
|
||||
|
||||
/**
|
||||
* 个性化页面应用层级
|
||||
*/
|
||||
interface UiDimensionType {
|
||||
|
||||
/**
|
||||
* 平台级
|
||||
*/
|
||||
String SITE = "SITE";
|
||||
|
||||
/**
|
||||
* 租户级
|
||||
*/
|
||||
String TENANT = "TENANT";
|
||||
|
||||
/**
|
||||
* 公司及
|
||||
*/
|
||||
String COMPANY = "COMPANY";
|
||||
|
||||
/**
|
||||
* 用户级
|
||||
*/
|
||||
String USER = "USER";
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存Key
|
||||
*/
|
||||
interface CacheKey {
|
||||
|
||||
/**
|
||||
* 模板配置缓存Key
|
||||
*/
|
||||
String TEMPLATE_CACHE_KEY = Constants.APP_CODE + ":template:";
|
||||
|
||||
/**
|
||||
* 模板配置缓存Key
|
||||
*/
|
||||
String DEFAULT_TEMPLATE_CACHE_KEY = Constants.APP_CODE + ":default-template:";
|
||||
|
||||
/**
|
||||
* 值集缓存
|
||||
*/
|
||||
String LOV_KEY = Constants.APP_CODE + ":lov";
|
||||
|
||||
/**
|
||||
* 配置维护
|
||||
*/
|
||||
String PROFILE_KEY = Constants.APP_CODE + ":profile";
|
||||
|
||||
/**
|
||||
* 事件
|
||||
*/
|
||||
String EVENT_KEY = Constants.APP_CODE + ":event";
|
||||
|
||||
/**
|
||||
* 个性化表格配置
|
||||
*/
|
||||
String CUSTOM_TABLE_KEY = Constants.APP_CODE + ":custom_table";
|
||||
|
||||
/**
|
||||
* 数据屏蔽
|
||||
*/
|
||||
String PERMISSION_KEY = Constants.APP_CODE + ":permission";
|
||||
|
||||
/**
|
||||
* 系统配置 服务级功能,所以不加fnd
|
||||
*/
|
||||
String CONFIG_KEY = Constants.APP_CODE + ":config";
|
||||
|
||||
/**
|
||||
* 多语言描述
|
||||
*/
|
||||
String PROMPT_KEY = Constants.APP_CODE + ":prompt";
|
||||
|
||||
/**
|
||||
* 数据权限数据库关系
|
||||
*/
|
||||
String DATABASE_KEY = Constants.APP_CODE + ":database";
|
||||
|
||||
/**
|
||||
* 数据源服务关系
|
||||
*/
|
||||
String DATASOURCE_KEY = Constants.APP_CODE + ":datasource";
|
||||
|
||||
/**
|
||||
* 静态文本
|
||||
*/
|
||||
String STATIC_TEXT = Constants.APP_CODE + ":text";
|
||||
|
||||
/**
|
||||
* 个性化页面
|
||||
*/
|
||||
String Ui_PAGE = Constants.APP_CODE + ":page";
|
||||
|
||||
/**
|
||||
* 静态文本头
|
||||
*/
|
||||
String STATIC_TEXT_HEAD = STATIC_TEXT + ":head";
|
||||
|
||||
/**
|
||||
* 静态文本行
|
||||
*/
|
||||
String STATIC_TEXT_LINE = STATIC_TEXT + ":line";
|
||||
|
||||
/**
|
||||
* 平台卡片
|
||||
*/
|
||||
String DASHBOARD_CARD_KEY = Constants.APP_CODE + ":dashboard_card";
|
||||
|
||||
/**
|
||||
* 租户卡片分配
|
||||
*/
|
||||
String DASHBOARD_TENANT_CARD_KEY = Constants.APP_CODE + ":dashboard_tenant_card";
|
||||
}
|
||||
|
||||
/**
|
||||
* 值集类型
|
||||
*/
|
||||
interface LovTypeCode {
|
||||
/**
|
||||
* URL型
|
||||
*/
|
||||
String URL = "URL";
|
||||
/**
|
||||
* 自定义SQL型
|
||||
*/
|
||||
String SQL = "SQL";
|
||||
/**
|
||||
* 独立值集型
|
||||
*/
|
||||
String INDEPENDENT = "IDP";
|
||||
}
|
||||
|
||||
/**
|
||||
* 事件调用类型
|
||||
*/
|
||||
interface CallType {
|
||||
/**
|
||||
* 方法
|
||||
*/
|
||||
String METHOD = "M";
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
String API = "A";
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置维护值应用层级
|
||||
*/
|
||||
interface ProfileLevelCode {
|
||||
/**
|
||||
* 配置维护值应用层级-角色级
|
||||
*/
|
||||
String ROLE = "ROLE";
|
||||
|
||||
/**
|
||||
* 配置维护值应用层级-用户级
|
||||
*/
|
||||
String USER = "USER";
|
||||
|
||||
/**
|
||||
* 配置维护值应用层级-全局(对应该租户下的所有)
|
||||
*/
|
||||
String GLOBAL = "GLOBAL";
|
||||
}
|
||||
|
||||
/**
|
||||
* 编码规则应用层级
|
||||
*/
|
||||
interface CodeRuleLevelCode {
|
||||
|
||||
/**
|
||||
* 全局级
|
||||
*/
|
||||
String GLOBAL = "GLOBAL";
|
||||
|
||||
/**
|
||||
* 公司
|
||||
*/
|
||||
String COMPANY = "COM";
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用维度
|
||||
*/
|
||||
interface Level {
|
||||
/**
|
||||
* 应用维度-租户级
|
||||
*/
|
||||
String TENANT = "T";
|
||||
|
||||
/**
|
||||
* 应用维度-平台级
|
||||
*/
|
||||
String PLATFORM = "P";
|
||||
}
|
||||
|
||||
/**
|
||||
* 编码规则段类型
|
||||
*/
|
||||
interface FieldType {
|
||||
/**
|
||||
* 序列
|
||||
*/
|
||||
String SEQUENCE = "SEQUENCE";
|
||||
|
||||
/**
|
||||
* 常量
|
||||
*/
|
||||
String CONSTANT = "CONSTANT";
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
String DATE = "DATE";
|
||||
|
||||
/**
|
||||
* 变量
|
||||
*/
|
||||
String VARIABLE = "VARIABLE";
|
||||
|
||||
/**
|
||||
* uuid
|
||||
*/
|
||||
String UUID = "UUID";
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置频率
|
||||
*/
|
||||
interface ResetFrequency {
|
||||
|
||||
/**
|
||||
* 从不
|
||||
*/
|
||||
String NEVER = "NEVER";
|
||||
|
||||
/**
|
||||
* 每年
|
||||
*/
|
||||
String YEAR = "YEAR";
|
||||
|
||||
/**
|
||||
* 每季
|
||||
*/
|
||||
String QUARTER = "QUARTER";
|
||||
|
||||
/**
|
||||
* 每月
|
||||
*/
|
||||
String MONTH = "MONTH";
|
||||
|
||||
/**
|
||||
* 每天
|
||||
*/
|
||||
String DAY = "DAY";
|
||||
}
|
||||
|
||||
/**
|
||||
* 序列
|
||||
*/
|
||||
interface Sequence {
|
||||
|
||||
/**
|
||||
* 自增步长
|
||||
*/
|
||||
Long STEP = 1L;
|
||||
|
||||
/**
|
||||
* 记录频率
|
||||
*/
|
||||
Long STEP_NUM = 100L;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据来源
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年8月27日下午4:39:03
|
||||
*/
|
||||
interface DataSource {
|
||||
String SKYER = "SKYER";
|
||||
String SRM = "SRM";
|
||||
String ERP = "ERP";
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据屏蔽规则类型代码
|
||||
*/
|
||||
interface PermissionRuleTypeCode {
|
||||
|
||||
/**
|
||||
* sql
|
||||
*/
|
||||
String SQL = "SQL";
|
||||
|
||||
/**
|
||||
* 数据库前缀
|
||||
*/
|
||||
String PREFIX = "PREFIX";
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据源用户密码返回值
|
||||
*/
|
||||
interface DatasourcePassword {
|
||||
/**
|
||||
* 返回前端的密码信息
|
||||
*/
|
||||
String RETURNEDSTRING = "******";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,264 @@
|
|||
package org.skyer.channel.infra.constant;
|
||||
|
||||
/**
|
||||
* 维护返回异常信息
|
||||
*
|
||||
* @author xiaoyu.zhao@hand-china.com 2019/01/17 20:25
|
||||
*/
|
||||
public class HpfmMsgCodeConstants {
|
||||
|
||||
/**
|
||||
* 数据源驱动已经被使用,不可删除
|
||||
*/
|
||||
public static final String ERROR_DELETE_USED_DRIVER = "hpfm.error.deleteUsedDriver";
|
||||
|
||||
/**
|
||||
* 缓存Key所需参数获取失败
|
||||
*/
|
||||
public static final String ERROR_CACHE_DATA_NULL = "hpfm.error.cache_data.null";
|
||||
|
||||
/**
|
||||
* 事件编码已存在
|
||||
*/
|
||||
public static final String ERROR_EVENT_CODE_EXISTS = "hpfm.error.event.code_exists";
|
||||
|
||||
/**
|
||||
* 值集错误:无效的路由名
|
||||
*/
|
||||
public static final String ERROR_LOV_INVALID_ROUTE_NAME = "hpfm.error.lov.invalid_route_name";
|
||||
/**
|
||||
* 当前规则已经被引用,禁止删除
|
||||
*/
|
||||
public static final String ERROR_PERMISSION_RULE_FORBID_DELETE = "hpfm.error.permission_rule_cited";
|
||||
/**
|
||||
* 编码规则未找到
|
||||
*/
|
||||
public static final String ERROR_CODE_RULE_NOT_FOUNT = "hpfm.error.code_rule.not_found";
|
||||
/**
|
||||
* 屏蔽规则类型重复
|
||||
*/
|
||||
public static final String ERROR_PERMISSION_REF_RULE_TYPE_CODE_REPEAT = "hpfm.error.blocking_rule.exist";
|
||||
/**
|
||||
* 租户编码或名称重复
|
||||
*/
|
||||
public static final String ERROR_TENANT_NAME_REPEAT = "hpfm.error.tenant.name_repeat";
|
||||
|
||||
/**
|
||||
* 连接异常:不能建立JDBC连接
|
||||
*/
|
||||
public static final String ERROR_CONNECTION = "hpfm.error.jdbc_connection";
|
||||
/**
|
||||
* 查询异常: 数据库中存在多条记录
|
||||
*/
|
||||
public static final String ERR_REPEAT = "hpfm.error.data_repeat";
|
||||
/**
|
||||
* 查询异常: 没有主键或代码
|
||||
*/
|
||||
public static final String ERR_NO_PRIMARY_KEY = "hpfm.error.no_pk";
|
||||
|
||||
/**
|
||||
* 起始日期 {0} 晚于终止日期 {1}
|
||||
*/
|
||||
public static final String DATE_RANGE_ERROR = "hpfm.error.date.start_later_end";
|
||||
|
||||
/**
|
||||
* 操作异常:不能对公有库进行插入操作
|
||||
*/
|
||||
public static final String ERROR_INSERT_TO_DATABASE = "hpfm.error.can_not_insert";
|
||||
public static final String ERROR_UPDATE_TO_DATABASE = "hpfm.error.can_not_update";
|
||||
public static final String ERROR_DELETE_TO_DATABASE = "hpfm.error.can_not_delete";
|
||||
public static final String ERROR_ALTER_TO_PUBLIC = "hpfm.error.database.can_not_alter";
|
||||
public static final String ERROR_DROP_TO_PUBLIC = "hpfm.error.database.can_not_drop";
|
||||
public static final String ERROR_CREATE_INDEX_TO_PUBLIC = "hpfm.error.database.can_not_create_index";
|
||||
public static final String NO_OPERATION_PERMISSION = "hpfm.error.operation_without_permission";
|
||||
/**
|
||||
* 查询到表提示没有改表
|
||||
*/
|
||||
public static final String ERROR_NOT_EXIST_TABLE = "hpfm.error.table.not_exist";
|
||||
public static final String ERROR_NOT_EXIST_FIELD = "hpfm.error.field.not_exist";
|
||||
|
||||
/**
|
||||
* 同一文本编码有效期重叠
|
||||
*/
|
||||
public static final String REPEAT_DATE = "hpfm.error.text_code.repeat_date";
|
||||
/**
|
||||
* 文本编码不存在
|
||||
*/
|
||||
public static final String TEXT_CODE_NOT_EXISTS = "hpfm.error.text_code.not_exists";
|
||||
/**
|
||||
* 文本编码和语言不存在
|
||||
*/
|
||||
public static final String TEXT_CODE_LANG_NOT_EXISTS = "hpfm.error.text_code_lang.not_exists";
|
||||
/**
|
||||
* saga 发送消息失败
|
||||
*/
|
||||
public static final String SEND_SAGA_MESSAGE_FAIL = "hpfm.error.send_saga_message.fail";
|
||||
/**
|
||||
* 获取规则引擎配置失败
|
||||
*/
|
||||
public static final String GET_RULE_FAILED = "hpfm.error.rule_script.get_rule_failed";
|
||||
/**
|
||||
* 数据为空
|
||||
*/
|
||||
public static final String DASHBOARD_DATA_EMPTY = "hpfm.error.data.empty";
|
||||
/**
|
||||
* 卡片code重复
|
||||
*/
|
||||
public static final String DASHBOARD_CODE_REPEAT = "hpfm.error.code_repeat";
|
||||
/**
|
||||
* 当前角色下已经存在该卡片
|
||||
*/
|
||||
public static final String DASHBOARD_ROLE_CARD_EXISTS = "hpfm.error.role_card.exists";
|
||||
/**
|
||||
* 事件规则数据不匹配
|
||||
*/
|
||||
public static final String ERROR_EVENT_NOT_MATCH = "hpfm.error.event.notMatch";
|
||||
|
||||
/**
|
||||
* saga调用失败回调
|
||||
*/
|
||||
public static final String ERROR_SAGA_START_FAILED = "hpfm.error.saga.start";
|
||||
|
||||
/**
|
||||
* 当前租户与传入值集租户信息不匹配
|
||||
*/
|
||||
public static final String ERROR_LOV_TENANT_NOT_MATCH = "hpfm.error.lov_tenant.not_match";
|
||||
|
||||
/**
|
||||
* 当前租户与传入多语言租户信息不匹配
|
||||
*/
|
||||
public static final String ERROR_PROMPT_TENANT_NOT_MATCH = "hpfm.error.prompt_tenant.not_match";
|
||||
|
||||
/**
|
||||
* 当前租户与传入规则引擎租户信息不匹配
|
||||
*/
|
||||
public static final String ERROR_RULE_SCRIPT_TENANT_NOT_MATCH = "hpfm.error.rule_script.not_match";
|
||||
|
||||
/**
|
||||
* 当前租户与传入数据权限租户信息不匹配
|
||||
*/
|
||||
public static final String ERROR_PERMISSION_RULE_TENANT_NOT_MATCH = "hpfm.error.permission_rule.not_match";
|
||||
/**
|
||||
* 卡片分配租户传入数据存在重复信息
|
||||
*/
|
||||
public static final String ERROR_CARD_TENANT_REPEAT = "hpfm.error.card_tenant.repeat";
|
||||
public static final String ERROR_CARD_CLAUSE_REPEAT = "hpfm.error.card_clause.repeat";
|
||||
/**
|
||||
* 起始时间不能大于截止时间
|
||||
*/
|
||||
public static final String ERROR_DATE_IRREGULARITY = "hpfm.error.date.irregularity";
|
||||
public static final String ERROR_DATA_DISABLED = "hpfm.error.data.disabled";
|
||||
|
||||
/**
|
||||
* 当前租户与传入静态文本租户信息不匹配
|
||||
*/
|
||||
public static final String ERROR_STATIC_TEXT_TENANT_NOT_MATCH = "hpfm.error.static_text.not_match";
|
||||
|
||||
public static final String ERROR_EVENT_TENANT_NOT_MATCH = "hpfm.error.event.not_match";
|
||||
|
||||
/**
|
||||
* 弹性域模型被使用,不可删除
|
||||
*/
|
||||
public static final String FLEX_MODEL_DELETE = "hpfm.flex.model.delete";
|
||||
/**
|
||||
* 弹性域模型字段被使用,不可删除
|
||||
*/
|
||||
public static final String FLEX_MODEL_FIELD_DELETE = "hpfm.flex.model_field.delete";
|
||||
/**
|
||||
* 弹性域规则明细被使用,不可删除
|
||||
*/
|
||||
public static final String FLEX_RULE_DETAIL_DELETE = "hpfm.flex.rule_detail.delete";
|
||||
/**
|
||||
* 弹性域字段初始化失败
|
||||
*/
|
||||
public static final String FLEX_MODEL_FIELD_INIT = "hpfm.flex.model_field.init";
|
||||
public static final String ERROR_LOV_TENANT_REPEAT = "hpfm.lov.tenant.repeat";
|
||||
public static final String ERROR_LOV_SITE_COPY_FAIL = "hpfm.lov.site.copy_fail";
|
||||
public static final String ERROR_LOV_VIEW_TENANT_REPEAT = "hpfm.lov_view.tenant.repeat";
|
||||
public static final String ERROR_LOV_VIEW_SITE_COPY_FAIL = "hpfm.lov_view.site.copy_fail";
|
||||
/**
|
||||
* 模板配置已经存在,不可重复添加
|
||||
*/
|
||||
public static final String ERROR_TEMPLATE_CONFIG_EXISTS = "hpfm.template_config.exists";
|
||||
/**
|
||||
* 当前数据下已经分配该模板,不可重复添加
|
||||
*/
|
||||
public static final String ERROR_TEMPLATE_ASSIGN_EXISTS = "hpfm.template_assign.exists";
|
||||
public static final String ERROR_FORM_HEADER_NULL = "hpfm.error.form_header.null";
|
||||
public static final String ERROR_TEMPLATE_ASSIGN_DELETE_DEFAULT = "hpfm.error.template_assign.delete_default";
|
||||
|
||||
public static final String ERROR_DATASOURCE_REGISTER_FAIL = "hpfm.error.datasource_register.fail";
|
||||
public static final String ERROR_GET_CONNECTION_FAIL = "hpfm.error.get_connection.fail";
|
||||
public static final String ERROR_RELATIONAL_PARAM_ILLEGAL = "hpfm.relational_param.illegal";
|
||||
public static final String ERROR_DATASOURCE_ID_NULL = "hpfm.error.datasource_id.null";
|
||||
|
||||
/**
|
||||
* 数据组,数据已经存在
|
||||
*/
|
||||
public static final String ERROR_GROUP_DATA_EXISTS = "hpfm.error.group_data_exists";
|
||||
public static final String ERROR_TEMPLATE_ALREADY_REFERENCED = "hpfm.error.template.is_referenced";
|
||||
/**
|
||||
* 平台多语言参数校验失败
|
||||
*/
|
||||
public static final String ERROR_PROMPT_PARAM_NOT_NULL = "hpfm.error.prompt.param_not_null";
|
||||
|
||||
/**
|
||||
* 导出错误信息
|
||||
*/
|
||||
public static final String ERROR_EXPORT_TASK_NOT_EXISTS = "hpfm.error.export_task.not_exists";
|
||||
public static final String ERROR_EXPORT_TASK_CANCEL_FAILED = "hpfm.error.export.cancel_failed";
|
||||
public static final String ERROR_DRIVER_EXISTS = "hpfm.error.driver.exists";
|
||||
/**
|
||||
* 自定义驱动无法测试连接
|
||||
*/
|
||||
public static final String ERROR_CUSTOM_DRIVER = "hpfm.error.custom_driver";
|
||||
/**
|
||||
* 父级未启用或父级不允许操作
|
||||
*/
|
||||
public static final String ERROR_PARENT_DISABlE = "error.parent.disable";
|
||||
|
||||
public static final String SEND_SOCKET = "hpfm.error.send_socket";
|
||||
|
||||
public static final String REFRESH_CACHE = "hpfm.error.prompt.refresh_cache";
|
||||
/**
|
||||
* 数据异常:名称重复
|
||||
*/
|
||||
public static final String ERROR_MULTIPLE_NAME = "error.multiple.name";
|
||||
/**
|
||||
* 值集没有父级值集
|
||||
*/
|
||||
public static final String ERROR_LOV_IMPORT_HAVE_NOT_PARENT = "error.lov.import.have_not_parent";
|
||||
/**
|
||||
* 父级值集值不存在或未启用
|
||||
*/
|
||||
public static final String ERROR_LOV_IMPORT_PARENT_VALUE_INVALID = "error.lov.import.parent_value_invalid";
|
||||
/**
|
||||
* 数据层级配置 下拉列表 数量超过最大配置数量
|
||||
*/
|
||||
public static final String ERROR_DATA_HIERARCHY_SELECT_EXCEEDS_MAXIMUM_NUMBER_LIMIT =
|
||||
"error.data_hierarchy.select.exceeds_maximum_number_limit";
|
||||
/**
|
||||
* 数据层级配置显示样式与父级层级不匹配
|
||||
*/
|
||||
public static final String ERROR_PARENT_DISPLAY_NOT_MATCH = "error.data_hierarchy.display.not_match_parent";
|
||||
/**
|
||||
* 数据层级配置显示样式与父级层级不匹配
|
||||
*/
|
||||
public static final String ERROR_CLUSTER_ASSIGN_SERVERS = "hpfm.error.clusterAssignServers";
|
||||
/**
|
||||
* 值集编码为: {0} 的父级值集不存在
|
||||
*/
|
||||
public static final String ERROR_PARENT_LOV_NOT_NULL = "hpfm.error.lov.parentLovNotNull";
|
||||
/**
|
||||
* 值集错误:URL 值集 URL 内容不可为空
|
||||
*/
|
||||
public static final String ERROR_LOV_URL_NOT_NULL = "hpfm.error.lov.urlNotNull";
|
||||
/**
|
||||
* 值集错误:SQL 值集 SQL 内容不可为空
|
||||
*/
|
||||
public static final String ERROR_LOV_SQL_NOT_NULL = "hpfm.error.lov.sqlNotNull";
|
||||
/**
|
||||
* 值集错误:导入值集时不允许更新LovType内容
|
||||
*/
|
||||
public static final String ERROR_LOV_TYPE_NOT_MATCH = "hpfm.error.lovTypeNotMatch";
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package org.skyer.channel.infra.constant;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Hr 业务常量类
|
||||
* </p>
|
||||
*
|
||||
* @author qingsheng.chen 2018/6/22 星期五 14:54
|
||||
*/
|
||||
public class HrConstants {
|
||||
private HrConstants() {}
|
||||
|
||||
public static class LovCode {
|
||||
/**
|
||||
* 数据来源Lov code
|
||||
*/
|
||||
public static final String DATA_SOURCE = "HPFM.DATA_SOURCE";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 维度类型
|
||||
*
|
||||
* @author jian.zhang02@hand-china.com 2018年6月26日下午3:14:53
|
||||
*/
|
||||
public static class DimensionType {
|
||||
/**
|
||||
* 平台级
|
||||
*/
|
||||
public static final String DIMENSION_PLATFORM_TYPE = "platform";
|
||||
/**
|
||||
* 租户级
|
||||
*/
|
||||
public static final String DIMENSION_TENANT_TYPE = "tenant";
|
||||
/**
|
||||
* 公司级
|
||||
*/
|
||||
public static final String DIMENSION_COMPANY_TYPE = "company";
|
||||
/**
|
||||
* 用户级
|
||||
*/
|
||||
public static final String DIMENSION_USER_TYPE = "user";
|
||||
}
|
||||
public static class CodeRule {
|
||||
public static final String QD_WAREHOUSE_CODE = "HPFM.COMPANY";
|
||||
public static final String MOVE_RECORD_CODE = "HPFM.COMPANY";
|
||||
public static final String ADJUST_RECORD_CODE = "HPFM.COMPANY";
|
||||
public static final String DISTRIBUTE_PLAN = "HPFM.COMPANY";
|
||||
public static final String RESERVE_RECORD_CODE = "HPFM.COMPANY";
|
||||
public static final String LOG_CODE = "HPFM.COMPANY";
|
||||
|
||||
}
|
||||
|
||||
public static class LevelValue {
|
||||
public static final String QD_WAREHOUSE_CODE = "HPFM.COMPANY";
|
||||
public static final String ADJUST_RECORD_CODE = "HPFM.COMPANY";
|
||||
public static final String MOVE_RECORD_CODE = "HPFM.COMPANY";
|
||||
public static final String RESERVE_RECORD_CODE ="HPFM.COMPANY";
|
||||
public static final String DISTRIBUTE_PLAN="HPFM.COMPANY";
|
||||
public static final String LOG_LEVEL = "GLOBAL";
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
package org.skyer.channel.infra.convertor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.skyer.core.convert.CommonConverter;
|
||||
|
||||
/**
|
||||
* 通用对象转换工具
|
||||
*
|
||||
* @author min.wang01@hand-china.com 2018/08/08 11:52
|
||||
*/
|
||||
public class CommonConvertor<T, V> {
|
||||
/**
|
||||
* List对象转换
|
||||
*
|
||||
* @param targetClazz 目标对象class
|
||||
* @param sourceList 源对象list
|
||||
* @param <T>
|
||||
* @param <V>
|
||||
* @return
|
||||
*/
|
||||
public static <T, V> List<T> listConvertor(Class<T> targetClazz, List<V> sourceList) {
|
||||
return listConvertor(targetClazz, sourceList, null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* List对象转换
|
||||
*
|
||||
* @param targetClazz
|
||||
* @param sourceList
|
||||
* @param rule 自定义映射规则(target字段,source字段)
|
||||
* @return
|
||||
*/
|
||||
public static <T, V> List<T> listConvertor(Class<T> targetClazz, List<V> sourceList, Map<String, String> rule) {
|
||||
return CommonConverter.listConverter(targetClazz, sourceList, rule);
|
||||
}
|
||||
|
||||
/**
|
||||
* List对象转换(过滤当前多语言)
|
||||
*
|
||||
* @param targetClazz
|
||||
* @param field 多语言字段名
|
||||
* @param sourceList
|
||||
* @return
|
||||
*/
|
||||
public static <T, V> List<T> listConvertor(Class<T> targetClazz, String field, List<V> sourceList) {
|
||||
return listConvertor(targetClazz, field, sourceList, null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* description
|
||||
*
|
||||
* @param targetClazz
|
||||
* @param field 多语言字段名
|
||||
* @param sourceList
|
||||
* @param rule 自定义映射规则(target字段,source字段)
|
||||
* @return
|
||||
*/
|
||||
public static <T, V> List<T> listConvertor(Class<T> targetClazz, String field, List<V> sourceList,
|
||||
Map<String, String> rule) {
|
||||
return CommonConverter.listConverter(targetClazz, field, sourceList, rule);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* javaBean对象转换
|
||||
*
|
||||
* @param targetClazz
|
||||
* @param sourceObject
|
||||
* @param <T>
|
||||
* @param <V>
|
||||
* @return
|
||||
*/
|
||||
public static <T, V> T beanConvert(Class<T> targetClazz, V sourceObject) {
|
||||
return CommonConverter.beanConvert(targetClazz, sourceObject);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package org.skyer.channel.infra.enums;
|
||||
|
||||
/**
|
||||
*
|
||||
* 连接池类型
|
||||
*
|
||||
* @author xianzhi.chen@hand-china.com 2018年10月23日下午2:47:03
|
||||
*/
|
||||
public enum DBPoolTypeEnum {
|
||||
/**
|
||||
* C3p0
|
||||
*/
|
||||
C3P0("C3p0"),
|
||||
|
||||
/**
|
||||
* Dbcp
|
||||
*/
|
||||
DBCP2("Dbcp2"),
|
||||
|
||||
/**
|
||||
* Druid
|
||||
*/
|
||||
DRUID("Druid"),
|
||||
|
||||
/**
|
||||
* No
|
||||
*/
|
||||
NO("No");
|
||||
|
||||
private final String value;
|
||||
|
||||
DBPoolTypeEnum(final String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static DBPoolTypeEnum valueOf2(String arg) {
|
||||
switch (arg) {
|
||||
case "C3p0":
|
||||
return C3P0;
|
||||
case "Dbcp2":
|
||||
return DBCP2;
|
||||
case "Druid":
|
||||
return DRUID;
|
||||
case "No":
|
||||
return NO;
|
||||
default:
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isInEnum(String value) {
|
||||
for (DBPoolTypeEnum dbPoolType : DBPoolTypeEnum.values()) {
|
||||
if (dbPoolType.getValue().equals(value)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package org.skyer.channel.infra.enums;
|
||||
|
||||
import org.skyer.channel.infra.constant.Constants;
|
||||
|
||||
/**
|
||||
*
|
||||
* 数据库类型
|
||||
*
|
||||
* @author xianzhi.chen@hand-china.com 2018年10月23日下午2:47:03
|
||||
*/
|
||||
public enum DatabaseTypeEnum {
|
||||
/**
|
||||
* MySQL
|
||||
*/
|
||||
MYSQL("MYSQL"),
|
||||
|
||||
/**
|
||||
* SqlServer
|
||||
*/
|
||||
SQLSERVER("SQLSERVER"),
|
||||
|
||||
/**
|
||||
* Oracle
|
||||
*/
|
||||
ORACLE("ORACLE"),
|
||||
|
||||
/**
|
||||
* TiDB
|
||||
*/
|
||||
TIDB("TIDB"),
|
||||
|
||||
/**
|
||||
* OtherDB
|
||||
*/
|
||||
OTHERDB("OTHERDB");
|
||||
|
||||
private final String value;
|
||||
|
||||
DatabaseTypeEnum(final String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static DatabaseTypeEnum valueOf2(String arg) {
|
||||
switch (arg) {
|
||||
case Constants.Datasource.DB_MYSQL:
|
||||
return MYSQL;
|
||||
case Constants.Datasource.DB_MSSQL:
|
||||
return SQLSERVER;
|
||||
case Constants.Datasource.DB_ORACLE:
|
||||
return ORACLE;
|
||||
case Constants.Datasource.DB_TIDB:
|
||||
return MYSQL;
|
||||
default:
|
||||
return OTHERDB;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isInEnum(String value) {
|
||||
for (DatabaseTypeEnum databaseType : DatabaseTypeEnum.values()) {
|
||||
if (databaseType.getValue().equals(value)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.skyer.channel.infra.feign;
|
||||
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.skyer.channel.infra.feign.fallback.UserClientImpl;
|
||||
import org.skyer.channel.infra.feign.impl.OrderReportRemoteServiceImpl;
|
||||
import org.skyer.channel.infra.remote.api.dto.SaleOrderOrderApiDTO;
|
||||
import org.skyer.common.SkyerService;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
@Primary
|
||||
@FeignClient(value = SkyerService.Order.NAME, fallback = OrderReportRemoteServiceImpl.class, path = "/v1/order-report")
|
||||
public interface OrderReportRemoteService {
|
||||
|
||||
@PostMapping("/channel-sale-report")
|
||||
ResponseEntity<List<ChannelSaleOrderVO>> queryChannelOrderSaleReport(@RequestBody SaleOrderOrderApiDTO saleOrderOrderApiDTO);
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package org.skyer.channel.infra.feign;
|
||||
|
||||
import org.skyer.channel.infra.feign.fallback.UserClientImpl;
|
||||
import org.skyer.common.SkyerService;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户信息获取
|
||||
* </p>
|
||||
*
|
||||
* @author zhanglb
|
||||
*/
|
||||
@FeignClient(value = SkyerService.Iam.NAME, fallback = UserClientImpl.class, path = "/skyer/v1")
|
||||
public interface UserClient {
|
||||
|
||||
/**
|
||||
* 查询组织ids是否有关联用户
|
||||
* @param companyIds 公司ids
|
||||
* @return Boolean
|
||||
*/
|
||||
@PostMapping("/company/user")
|
||||
ResponseEntity companyUser(@RequestBody List<Long> companyIds);
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package org.skyer.channel.infra.feign.fallback;
|
||||
|
||||
import org.skyer.channel.infra.feign.UserClient;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 用户信息查询失败回调
|
||||
* @author zhanglb
|
||||
*/
|
||||
@Component
|
||||
public class UserClientImpl implements UserClient {
|
||||
private static final Logger logger = LoggerFactory.getLogger(UserClientImpl.class);
|
||||
|
||||
@Override
|
||||
public ResponseEntity companyUser(List<Long> companyIds) {
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package org.skyer.channel.infra.feign.impl;
|
||||
|
||||
import org.skyer.channel.domain.vo.ChannelSaleOrderVO;
|
||||
import org.skyer.channel.infra.feign.OrderReportRemoteService;
|
||||
import org.skyer.channel.infra.remote.api.dto.SaleOrderOrderApiDTO;
|
||||
import org.skyer.core.exception.CommonException;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class OrderReportRemoteServiceImpl implements OrderReportRemoteService {
|
||||
|
||||
@Override
|
||||
public ResponseEntity<List<ChannelSaleOrderVO>> queryChannelOrderSaleReport(SaleOrderOrderApiDTO saleOrderOrderApiDTO) {
|
||||
throw new CommonException("调用订单中心查询报表异常");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package org.skyer.channel.infra.handler;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.skyer.boot.message.constant.WebSocketConstant;
|
||||
import org.skyer.boot.message.entity.Msg;
|
||||
import org.skyer.channel.infra.constant.HpfmMsgCodeConstants;
|
||||
import org.skyer.websocket.helper.SocketMessageHandler;
|
||||
import org.skyer.websocket.vo.MsgVO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import org.skyer.core.exception.CommonException;
|
||||
|
||||
/**
|
||||
* description
|
||||
*
|
||||
* @author shuangfei.zhu@hand-china.com 2019/08/28 19:31
|
||||
*/
|
||||
@Component
|
||||
public class MessageHandler extends SocketMessageHandler {
|
||||
|
||||
/**
|
||||
* Hzero平台HTTP协议,默认http
|
||||
*/
|
||||
@Value("${skyer.platform.httpProtocol:http}")
|
||||
private String skyerPlatformHttpProtocol;
|
||||
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
@Override
|
||||
public boolean needPrincipal() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processMessage(MsgVO msgVO) {
|
||||
String serverName = msgVO.getService();
|
||||
if (StringUtils.isBlank(serverName)) {
|
||||
return;
|
||||
}
|
||||
Msg msg = new Msg();
|
||||
BeanUtils.copyProperties(msgVO, msg);
|
||||
// 获取用户信息
|
||||
msg.setUserDetails(getCustomUserDetails());
|
||||
// 使用restTemplate通知消息客户端
|
||||
String url = this.skyerPlatformHttpProtocol + "://" + serverName + WebSocketConstant.MESSAGE_HANDLER_PATH;
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
|
||||
HttpEntity<Msg> entity = new HttpEntity<>(msg, headers);
|
||||
ResponseEntity response = restTemplate.postForEntity(url, entity, String.class);
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
throw new CommonException(HpfmMsgCodeConstants.SEND_SOCKET);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package org.skyer.channel.infra.mapper;
|
||||
|
||||
|
||||
import org.skyer.channel.domain.entity.Dealer;
|
||||
import org.skyer.mybatis.common.BaseMapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 经销商Mapper
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-17
|
||||
*/
|
||||
public interface DealerMapper extends BaseMapper<Dealer> {
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package org.skyer.channel.infra.mapper;
|
||||
|
||||
import org.skyer.channel.domain.entity.Group;
|
||||
import org.skyer.mybatis.common.BaseMapper;
|
||||
|
||||
/**
|
||||
* Mapper
|
||||
*
|
||||
* @author linzhuanghuang@ebc.com 2021-09-03 16:54:36
|
||||
*/
|
||||
public interface GroupMapper extends BaseMapper<Group> {
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package org.skyer.channel.infra.mapper;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.channel.api.dto.SalesOrganizationListDTO;
|
||||
import org.skyer.channel.domain.entity.SalesOrganization;
|
||||
import org.skyer.channel.domain.vo.SalesOrganizationListVO;
|
||||
import org.skyer.mybatis.common.BaseMapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售组织Mapper
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
public interface SalesOrganizationMapper extends BaseMapper<SalesOrganization> {
|
||||
|
||||
/**
|
||||
* 获取经销商列表
|
||||
* @param salesOrganizationListDTO
|
||||
* @return
|
||||
*/
|
||||
List<SalesOrganizationListVO> pageSalesOrganizationList(SalesOrganizationListDTO salesOrganizationListDTO);
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package org.skyer.channel.infra.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.channel.api.dto.ChannelSaleOrderDTO;
|
||||
import org.skyer.channel.api.dto.OnlineShopShowDTO;
|
||||
import org.skyer.channel.api.dto.PhysicalShopShowDTO;
|
||||
import org.skyer.channel.api.dto.QueryShopListDTO;
|
||||
import org.skyer.channel.domain.entity.Shop;
|
||||
import org.skyer.channel.domain.vo.*;
|
||||
import org.skyer.mybatis.common.BaseMapper;
|
||||
|
||||
/**
|
||||
* Mapper
|
||||
*
|
||||
* @author lixiaoyang 2021-12-10 13:27:14
|
||||
*/
|
||||
public interface ShopMapper extends BaseMapper<Shop> {
|
||||
|
||||
OnlineShopSettingVO getSetting(@Param("id") Long id);
|
||||
|
||||
List<OnlineShopVO> getOnlineShopList(@Param("onlineShopShowDTO") OnlineShopShowDTO onlineShopShowDTO, @Param("tenantId") Long tenantId);
|
||||
|
||||
List<PhysicalShopVO> getPhysicalShopList(@Param("physicalShopDTO") PhysicalShopShowDTO physicalShopShowDTO, @Param("tenantId") Long tenantId);
|
||||
|
||||
|
||||
List<ShopListVO> getShopList(@Param("dto") QueryShopListDTO dto, @Param("tenantId") Long tenantId);
|
||||
|
||||
Shop getShopByNameAndCategoryTypeAndChannelType(@Param("name") String name, @Param("categoryType") String categoryType, @Param("channelType") String channelType, @Param("channelWarehouseName") String channelWarehouseName);
|
||||
|
||||
List<ChannelSaleOrderVO> queryChannelOrderSaleReport(@Param("dto") ChannelSaleOrderDTO dto);
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package org.skyer.channel.infra.mapper;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.channel.api.dto.WarehouseListDTO;
|
||||
import org.skyer.channel.domain.entity.Warehouse;
|
||||
import org.skyer.channel.domain.vo.WarehouseListVO;
|
||||
import org.skyer.mybatis.common.BaseMapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓库 Mapper
|
||||
* </p>
|
||||
*
|
||||
* @author lzh
|
||||
* @since 2021-06-18
|
||||
*/
|
||||
public interface WarehouseMapper extends BaseMapper<Warehouse> {
|
||||
|
||||
/**
|
||||
* 获取渠道仓库列表
|
||||
* @param warehouseListDTO
|
||||
* @return
|
||||
*/
|
||||
List<WarehouseListVO> pageWarehouseList(WarehouseListDTO warehouseListDTO);
|
||||
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
package org.skyer.channel.infra.properties;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* HPFM Properties
|
||||
*
|
||||
* @author gaokuo.dai@hand-china.com 2018年8月20日下午4:24:58
|
||||
*/
|
||||
@ConfigurationProperties(prefix = ChannelProperties.PREFIX)
|
||||
public class ChannelProperties {
|
||||
|
||||
public static final String PREFIX = "skyer.platform";
|
||||
private static final String HTTP_PROTOCOL_SUFFIX = "://";
|
||||
|
||||
/**
|
||||
* 启动时是否刷新缓存,默认true
|
||||
*/
|
||||
private Boolean initCache = true;
|
||||
/**
|
||||
* 平台Http协议,默认http
|
||||
*/
|
||||
private String httpProtocol = "http";
|
||||
/**
|
||||
* 完整平台Http协议,默认http://
|
||||
*/
|
||||
private String fullHttpProtocol = "http://";
|
||||
|
||||
/**
|
||||
* @return 启动时是否刷新缓存,默认true
|
||||
*/
|
||||
public Boolean getInitCache() {
|
||||
return initCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取卡片使用的模板角色Code
|
||||
*/
|
||||
private List<String> roleTemplateCodes;
|
||||
|
||||
private Encrypt encrypt = new Encrypt();
|
||||
|
||||
public List<String> getRoleTemplateCodes() {
|
||||
return roleTemplateCodes;
|
||||
}
|
||||
|
||||
public void setRoleTemplateCodes(List<String> roleTemplateCodes) {
|
||||
this.roleTemplateCodes = roleTemplateCodes;
|
||||
}
|
||||
|
||||
public void setInitCache(Boolean initCache) {
|
||||
this.initCache = initCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 平台Http协议,默认http
|
||||
*/
|
||||
public String getHttpProtocol() {
|
||||
return httpProtocol;
|
||||
}
|
||||
|
||||
public void setHttpProtocol(String httpProtocol) {
|
||||
this.httpProtocol = httpProtocol;
|
||||
this.fullHttpProtocol = httpProtocol + HTTP_PROTOCOL_SUFFIX;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 完整平台Http协议,默认http://
|
||||
*/
|
||||
public String getFullHttpProtocol() {
|
||||
return fullHttpProtocol;
|
||||
}
|
||||
|
||||
public Encrypt getEncrypt() {
|
||||
return encrypt;
|
||||
}
|
||||
|
||||
public void setEncrypt(Encrypt encrypt) {
|
||||
this.encrypt = encrypt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密私钥和公钥
|
||||
*/
|
||||
public static class Encrypt {
|
||||
/**
|
||||
* 密码加密公钥
|
||||
*/
|
||||
private String publicKey =
|
||||
"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIPdTZ1b9Q13Y2YmZ4mjQnFpypCqhV6rjGgsTQMYqC0eVu/je3/L98/4/j3lNePWqwHgCDD0mxISFm44nDKfPbcCAwEAAQ==";
|
||||
/**
|
||||
* 密码加密私钥
|
||||
*/
|
||||
private String privateKey =
|
||||
"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAg91NnVv1DXdjZiZniaNCcWnKkKqFXquMaCxNAxioLR5W7+N7f8v3z/j+PeU149arAeAIMPSbEhIWbjicMp89twIDAQABAkAYAgbLi56GISJ7yqo3KP5D39r9k85MejdKECbFVYvpCsLG51IrwtVcdGJTExmkzIuOWnwqRAYUjpQnVvPvLzZhAiEA/Dyk4j+XZtC7NVxrXjn+PHG0vWZ8x14G5sBL6RfgzEsCIQCF1O0383YF0BbDUGkBoaVGmEc3H0D7FQF5L4gMe5EYxQIgLljOSyw4G5I68+EZcWTijCSweyS7xL5IMlofGKNkkOUCIC+hqdAZEW9eMUvQaZ8QBf/LIMWIlRsHzd9wwE4ZCHo1AiEAqsUlDIIfPOrjQfbeYVWSD+Ac9PzMiFfH9H/WMuaWRtw=";
|
||||
|
||||
|
||||
public String getPublicKey() {
|
||||
return publicKey;
|
||||
}
|
||||
|
||||
public void setPublicKey(String publicKey) {
|
||||
this.publicKey = publicKey;
|
||||
}
|
||||
|
||||
public String getPrivateKey() {
|
||||
return privateKey;
|
||||
}
|
||||
|
||||
public void setPrivateKey(String privateKey) {
|
||||
this.privateKey = privateKey;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package org.skyer.channel.infra.properties;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* @author yuelinsoft
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "skyer.data-hierarchy.display")
|
||||
public class DataHierarchyProperties {
|
||||
private int maxSelectCount = 3;
|
||||
|
||||
public int getMaxSelectCount() {
|
||||
return maxSelectCount;
|
||||
}
|
||||
|
||||
public void setMaxSelectCount(int maxSelectCount) {
|
||||
this.maxSelectCount = maxSelectCount;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package org.skyer.channel.infra.remote.api;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.skyer.boot.api.customize.commons.vo.MethodMetaData;
|
||||
|
||||
/**
|
||||
* 客制化业务方法调用
|
||||
*
|
||||
* @author bojiangzhou 2019/07/04
|
||||
*/
|
||||
public interface RemoteCustomizeService {
|
||||
|
||||
/**
|
||||
* 获取服务的方法
|
||||
*
|
||||
* @param serviceName 服务编码
|
||||
* @param packageNames 包名
|
||||
* @return List<MethodMetaDataDTO>
|
||||
*/
|
||||
List<MethodMetaData> fetchServiceMethods(String serviceName, String packageNames);
|
||||
|
||||
/**
|
||||
* 应用客制化规则
|
||||
*
|
||||
* @param serviceNames 服务名
|
||||
* @param ruleCodes 规则规则
|
||||
*/
|
||||
void applyCustomizeRule(List<String> serviceNames, List<String> ruleCodes);
|
||||
|
||||
/**
|
||||
* 应用客制化规则
|
||||
*
|
||||
* @param serviceName 服务名
|
||||
* @param ruleCodes 规则规则
|
||||
*/
|
||||
void applyCustomizeRule(String serviceName, List<String> ruleCodes);
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package org.skyer.channel.infra.remote.api.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SaleOrderOrderApiDTO {
|
||||
|
||||
@ApiModelProperty("订单开始时间")
|
||||
private Date startDate;
|
||||
|
||||
@ApiModelProperty("订单结束时间")
|
||||
private Date endDate;
|
||||
|
||||
@ApiModelProperty("店铺code")
|
||||
private List<String> storeCode;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue