From c31674603a048a12c59c65ce6f8a468f310f1626 Mon Sep 17 00:00:00 2001 From: ieaii <1069385070@qq.com> Date: Thu, 6 Mar 2025 17:43:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=B8=80=E4=B8=8B=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin-hanhai-vue/.env.production | 2 +- .../src/views/xcx/ClockinTeamLogList.vue | 10 + .../mapper/ClockInProjectItemMapper.java | 4 +- .../service/IClockInProjectItemService.java | 2 +- .../impl/ClockInProjectItemServiceImpl.java | 4 +- .../xcx/auth/service/impl/AuthServiceImpl.java | 1 + .../clockin/service/impl/ClockinServiceImpl.java | 18 +- .../src/main/resources/application-prod.yml | 346 +++++++++++++++++++++ 8 files changed, 379 insertions(+), 8 deletions(-) create mode 100644 jeecg-boot-module-system/src/main/resources/application-prod.yml diff --git a/admin-hanhai-vue/.env.production b/admin-hanhai-vue/.env.production index 928549d..314b72a 100644 --- a/admin-hanhai-vue/.env.production +++ b/admin-hanhai-vue/.env.production @@ -1,5 +1,5 @@ NODE_ENV=production -VUE_APP_API_BASE_URL=https://clockin.java996.icu/clockin-api/ +VUE_APP_API_BASE_URL=https://admin.ptchemicalscc.com/clockin-api/ VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview VUE_APP_MAP_KEY=WPKBZ-OKICI-ZAIGE-U6TQ4-RPQIV-OXBJO diff --git a/admin-hanhai-vue/src/views/xcx/ClockinTeamLogList.vue b/admin-hanhai-vue/src/views/xcx/ClockinTeamLogList.vue index 8304a2e..8a4647a 100644 --- a/admin-hanhai-vue/src/views/xcx/ClockinTeamLogList.vue +++ b/admin-hanhai-vue/src/views/xcx/ClockinTeamLogList.vue @@ -4,6 +4,16 @@
+ + + + + + + + + +
diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java index 17c806b..94d1c0e 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java @@ -22,7 +22,7 @@ public interface ClockInProjectItemMapper extends BaseMapper * @param projectId * @return */ - @Select("SELECT * FROM clock_in_project_item WHERE del_flag = 0 AND clock_start_time <= #{time} AND clock_end_time >= #{time} AND project_id = #{projectId} ") - ClockInProjectItem getValidClockInTime(@Param("time") String time,@Param("projectId") String projectId); + @Select("SELECT * FROM clock_in_project_item WHERE del_flag = 0 AND clock_start_time <= #{time} AND clock_end_time >= #{time} AND project_id = #{projectId} AND type in ('${type},2') ") + ClockInProjectItem getValidClockInTime(@Param("time") String time,@Param("projectId") String projectId,@Param("type") Integer type); } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/IClockInProjectItemService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/IClockInProjectItemService.java index 9fb67ed..b890f7d 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/IClockInProjectItemService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/IClockInProjectItemService.java @@ -18,6 +18,6 @@ public interface IClockInProjectItemService extends IService * @param projectId * @return */ - ClockInProjectItem getValidClockInTime(String time, String projectId); + ClockInProjectItem getValidClockInTime(String time, String projectId,Integer type); } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/impl/ClockInProjectItemServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/impl/ClockInProjectItemServiceImpl.java index d998683..d4fb7bb 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/impl/ClockInProjectItemServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/service/impl/ClockInProjectItemServiceImpl.java @@ -17,7 +17,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; public class ClockInProjectItemServiceImpl extends ServiceImpl implements IClockInProjectItemService { @Override - public ClockInProjectItem getValidClockInTime(String time, String projectId) { - return baseMapper.getValidClockInTime(time, projectId); + public ClockInProjectItem getValidClockInTime(String time, String projectId,Integer type) { + return baseMapper.getValidClockInTime(time, projectId,type); } } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/auth/service/impl/AuthServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/auth/service/impl/AuthServiceImpl.java index 00816e5..709da56 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/auth/service/impl/AuthServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/auth/service/impl/AuthServiceImpl.java @@ -62,6 +62,7 @@ public class AuthServiceImpl implements IAuthService { clockinAuth.setUserId(hanHaiMember.getId()); clockinAuth.setName(applyAuthReq.getName()); clockinAuth.setCardNo(applyAuthReq.getCardNo()); + log.error("图片地址:"+applyAuthReq.getPic()); clockinAuth.setPic(applyAuthReq.getPic()); clockinAuth.setStatus(1); IdCardVerificationRequest req = new IdCardVerificationRequest(); diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java index 57b8757..3bd5eea 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java @@ -90,7 +90,14 @@ public class ClockinServiceImpl implements IClockinService { .eq(ClockInTimeZone::getId, clockInProject.getTimeZone()) .one(); String zonedDateTimeNow = DateUtils2.getZonedDateTimeNow(clockInTimeZone.getTimeZone()); - ClockInProjectItem validClockInTime = clockInProjectItemService.getValidClockInTime(zonedDateTimeNow, clockInProject.getId()); + String zonedDateTimeNowYYYYMMDD = DateUtils2.getZonedDateTimeNowYYYYMMDD(clockInTimeZone.getTimeZone()); + Date date2 = DateUtils2.getDate(zonedDateTimeNowYYYYMMDD + " 23:59:59"); + LocalDateTime localDateTime2 = DateUtils2.dateToDateTime(date2); + Integer type = 0; + if(DayOfWeek.SATURDAY.equals(localDateTime2.getDayOfWeek()) || DayOfWeek.SUNDAY.equals(localDateTime2.getDayOfWeek())){ + type = 1; + } + ClockInProjectItem validClockInTime = clockInProjectItemService.getValidClockInTime(zonedDateTimeNow, clockInProject.getId(),type); if(validClockInTime == null){ log.info("时间:"+zonedDateTimeNow+"项目id:"+clockInProject.getId()); throw new JeecgBootException("当前未到打卡时间"); @@ -283,7 +290,14 @@ public class ClockinServiceImpl implements IClockinService { .eq(ClockInTimeZone::getId, clockInProject.getTimeZone()) .one(); String zonedDateTimeNow = DateUtils2.getZonedDateTimeNow(clockInTimeZone.getTimeZone()); - ClockInProjectItem validClockInTime = clockInProjectItemService.getValidClockInTime(zonedDateTimeNow, clockInProject.getId()); + String zonedDateTimeNowYYYYMMDD = DateUtils2.getZonedDateTimeNowYYYYMMDD(clockInTimeZone.getTimeZone()); + Date date2 = DateUtils2.getDate(zonedDateTimeNowYYYYMMDD + " 23:59:59"); + LocalDateTime localDateTime2 = DateUtils2.dateToDateTime(date2); + Integer type = 0; + if(DayOfWeek.SATURDAY.equals(localDateTime2.getDayOfWeek()) || DayOfWeek.SUNDAY.equals(localDateTime2.getDayOfWeek())){ + type = 1; + } + ClockInProjectItem validClockInTime = clockInProjectItemService.getValidClockInTime(zonedDateTimeNow, clockInProject.getId(),type); if(validClockInTime == null){ log.info("时间:"+zonedDateTimeNow+"项目id:"+clockInProject.getId()); throw new JeecgBootException("当前未到打卡时间"); diff --git a/jeecg-boot-module-system/src/main/resources/application-prod.yml b/jeecg-boot-module-system/src/main/resources/application-prod.yml new file mode 100644 index 0000000..7c07f19 --- /dev/null +++ b/jeecg-boot-module-system/src/main/resources/application-prod.yml @@ -0,0 +1,346 @@ +server: + port: 8083 + tomcat: + max-swallow-size: -1 + error: + include-exception: true + include-stacktrace: ALWAYS + include-message: ALWAYS + servlet: + context-path: /clockin-api + compression: + enabled: true + min-response-size: 1024 + mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/* + +management: + endpoints: + web: + exposure: + include: metrics,httptrace + +spring: + servlet: + multipart: + max-file-size: 10MB + max-request-size: 10MB + mail: + host: smtp.qq.com + username: + password: + properties: + mail: + smtp: + auth: true + starttls: + enable: true + required: true + ## quartz定时任务,采用数据库方式 + quartz: + job-store-type: jdbc + initialize-schema: embedded + #定时任务启动开关,true-开 false-关 + auto-startup: true + #启动时更新己存在的Job + overwrite-existing-jobs: true + properties: + org: + quartz: + scheduler: + instanceName: MyScheduler + instanceId: AUTO + jobStore: + class: org.springframework.scheduling.quartz.LocalDataSourceJobStore + driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate + tablePrefix: QRTZ_ + isClustered: true + misfireThreshold: 60000 + clusterCheckinInterval: 10000 + threadPool: + class: org.quartz.simpl.SimpleThreadPool + threadCount: 10 + threadPriority: 5 + threadsInheritContextClassLoaderOfInitializingThread: true + #json 时间戳统一转换 + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + jpa: + open-in-view: false + activiti: + check-process-definitions: false + #启用作业执行器 + async-executor-activate: false + #启用异步执行器 + job-executor-activate: false + aop: + proxy-target-class: true + #配置freemarker + freemarker: + # 设置模板后缀名 + suffix: .ftl + # 设置文档类型 + content-type: text/html + # 设置页面编码格式 + charset: UTF-8 + # 设置页面缓存 + cache: false + prefer-file-system-access: false + # 设置ftl文件路径 + template-loader-path: + - classpath:/templates + # 设置静态文件路径,js,css等 + mvc: + static-path-pattern: /** + #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher + pathmatch: + matching-strategy: ant_path_matcher + resource: + static-locations: classpath:/static/,classpath:/public/ + autoconfigure: + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure + datasource: + druid: + stat-view-servlet: + enabled: true + loginUsername: admin + loginPassword: 123456 + allow: + web-stat-filter: + enabled: true + dynamic: + druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) + # 连接池的配置信息 + # 初始化大小,最小,最大 + initial-size: 5 + min-idle: 5 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: stat,wall,slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + # connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + datasource: + master: + url: jdbc:mysql://43.143.235.33:3306/clockin?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false + username: root + password: em#g*mGZ + driver-class-name: com.mysql.cj.jdbc.Driver + # 多数据源配置 + #multi-datasource1: + #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + #username: root + #password: root + #driver-class-name: com.mysql.cj.jdbc.Driver + #redis 配置 + redis: + database: 0 + host: 43.143.235.33 + lettuce: + pool: + max-active: -1 #最大连接数据库连接数,设 -1 为没有限制 + max-idle: 0 #最大等待连接中的数量,设 0 为没有限制 + max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 + min-idle: 0 #最小等待连接中的数量,设 0 为没有限制 + shutdown-timeout: 1000ms + password: 'em#g*mGZ' + port: 6379 +#mybatis plus 设置 +mybatis-plus: + mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml + global-config: + # 关闭MP3.0自带的banner + banner: false + db-config: + #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)"; + id-type: ASSIGN_ID + # 默认数据库表下划线命名 + table-underline: true + configuration: + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 返回类型为Map,显示null对应的字段 + call-setters-on-nulls: true +#jeecg专用配置 +minidao : + base-package: org.jeecg.modules.jmreport.* +jeecg : + # 是否启用安全模式 + safeMode: false + # 签名密钥串(前后端要一致,正式发布请自行修改) + signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a + # 本地:local\Minio:minio\阿里云:alioss + uploadType: alioss + path : + #文件上传根目录 设置 + upload: /opt/upFiles + #webapp文件路径 + webapp: /opt/webapp + shiro: + excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/** + #阿里云oss存储和大鱼短信秘钥配置 + oss: + accessKey: LTAI5tA1mo2mRHVwKLLE2V7Y + secretKey: PBs2Dx3mTuVSH7ReWkiZGW3Vc9i22I + endpoint: oss-cn-beijing.aliyuncs.com + bucketName: ptchemicalscc + staticDomain: https://image.ptchemicalscc.com + # ElasticSearch 6设置 + elasticsearch: + cluster-name: jeecg-ES + cluster-nodes: 127.0.0.1:9200 + check-enabled: false + # 表单设计器配置 + desform: + # 主题颜色(仅支持 16进制颜色代码) + theme-color: "#1890ff" + # 文件、图片上传方式,可选项:qiniu(七牛云)、system(跟随系统配置) + upload-type: system + map: + # 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home + baidu: ?? + # 在线预览文件服务器地址配置 + file-view-domain: 127.0.0.1:8012 + # minio文件上传 + minio: + minio_url: http://minio.jeecg.com + minio_name: ?? + minio_pass: ?? + bucketName: otatest + #大屏报表参数设置 + jmreport: + mode: dev + #数据字典是否进行saas数据隔离,自己看自己的字典 + saas: false + #是否需要校验token + is_verify_token: true + #必须校验方法 + verify_methods: remove,delete,save,add,update + #自定义项目前缀 + customPrePath: + pageSize: + - 10 + - 20 + - 30 + - 40 + #Wps在线文档 + wps: + domain: https://wwo.wps.cn/office/ + appid: ?? + appsecret: ?? + #xxl-job配置 + xxljob: + enabled: false + adminAddresses: http://127.0.0.1:9080/xxl-job-admin + appname: ${spring.application.name} + accessToken: '' + address: 127.0.0.1:30007 + ip: 127.0.0.1 + port: 30007 + logPath: logs/jeecg/job/jobhandler/ + logRetentionDays: 30 + route: + config: + data-id: jeecg-gateway-router + group: DEFAULT_GROUP + #自定义路由配置 yml nacos database + data-type: database + #分布式锁配置 + redisson: + address: 127.0.0.1:6379 + password: + type: STANDALONE + enabled: true +#cas单点登录 +cas: + prefixUrl: http://cas.example.org:8443/cas +#Mybatis输出sql日志 +logging: + level: + org.jeecg.modules.system.mapper : info +#swagger +knife4j: + #开启增强配置 + enable: true + #开启生产环境屏蔽 + production: false + basic: + enable: false + username: jeecg + password: jeecg1314 +#第三方登录 +justauth: + enabled: true + type: + GITHUB: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback + WECHAT_ENTERPRISE: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback + agent-id: ?? + DINGTALK: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback + WECHAT_OPEN: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback + cache: + type: default + prefix: 'demo::' + timeout: 1h +#第三方APP对接 +third-app: + enabled: false + type: + #企业微信 + WECHAT_ENTERPRISE: + enabled: false + #CORP_ID + client-id: ?? + #SECRET + client-secret: ?? + #自建应用id + agent-id: ?? + #自建应用秘钥(新版企微需要配置) + # agent-app-secret: ?? + #钉钉 + DINGTALK: + enabled: false + # appKey + client-id: ?? + # appSecret + client-secret: ?? + agent-id: ?? + +weixin: + mpAppId: wx69aadfc270684d2e + mpAppSecret: bdc1855fdeaf7ad88f338e865b65d7ca + orderNotifyUrl: https://admin.ptchemicalscc.com/hotel/order/notify + replaceOrderNotifyUrl: https://admin.ptchemicalscc.com/hotel/order/replace/notify + +tencent: + cloud: + appId: 1330380503 + secretId: AKIDCHUaSI1Vr00pTu89xZzDG9rM2WouoW2L + secretKey: DE3g9QXTFTWO7f2EF7HQQNG1eTVYTDqK + face: + groupName: test + region: ap-beijing + endpoint: faceid.tencentcloudapi.com