diff --git a/CatmDogd-Mall-Front-test/.env.development b/CatmDogd-Mall-Front-test/.env.development index 04a898d..d8a74eb 100644 --- a/CatmDogd-Mall-Front-test/.env.development +++ b/CatmDogd-Mall-Front-test/.env.development @@ -6,9 +6,9 @@ VUE_APP_TITLE = 下单伴宠师综合管理平台 # 若依管理系统/开发环境 https://pet-admin.hhlm1688.com/api # VUE_APP_BASE_API = 'https://api.catmdogd.com' -VUE_APP_BASE_API = 'https://pet-admin.hhlm1688.com/api/' +# VUE_APP_BASE_API = 'https://pet-admin.hhlm1688.com/api/' # VUE_APP_BASE_API = 'http://h5.xzaiyp.top' -# VUE_APP_BASE_API = 'http://localhost:8002' +VUE_APP_BASE_API = 'http://localhost:8002' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/CatmDogd-Mall-Front-test/src/api/model/appletOrderDateFrequency.js b/CatmDogd-Mall-Front-test/src/api/model/appletOrderDateFrequency.js new file mode 100644 index 0000000..c3ddd8f --- /dev/null +++ b/CatmDogd-Mall-Front-test/src/api/model/appletOrderDateFrequency.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 查询日订单列表 +export function listAppletOrderDateFrequency(query) { + return request({ + url: '/model/appletOrderDateFrequency/list', + method: 'get', + params: query + }) +} + +// 查询日订单详细 +export function getAppletOrderDateFrequency(id) { + return request({ + url: '/model/appletOrderDateFrequency/' + id, + method: 'get' + }) +} + +// 查询日订单详细 +export function getAppletOrderDateFrequencyCheck(id) { + return request({ + url: '/model/appletOrderDateFrequency/check/' + id, + method: 'get' + }) +} + +// 新增日订单 +export function addAppletOrderDateFrequency(data) { + return request({ + url: '/model/appletOrderDateFrequency', + method: 'post', + data: data + }) +} + +// 修改日订单 +export function updateAppletOrderDateFrequency(data) { + return request({ + url: '/model/appletOrderDateFrequency', + method: 'put', + data: data + }) +} + +// 删除日订单 +export function delAppletOrderDateFrequency(id) { + return request({ + url: '/model/appletOrderDateFrequency/' + id, + method: 'delete' + }) +} + +// 导出日订单 +export function exportAppletOrderDateFrequency(query) { + return request({ + url: '/model/appletOrderDateFrequency/export', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/CatmDogd-Mall-Front-test/src/components/CheckinDialog.vue b/CatmDogd-Mall-Front-test/src/components/CheckinDialog.vue new file mode 100644 index 0000000..6a4a9bd --- /dev/null +++ b/CatmDogd-Mall-Front-test/src/components/CheckinDialog.vue @@ -0,0 +1,540 @@ + + + + + \ No newline at end of file diff --git a/CatmDogd-Mall-Front-test/src/components/DictTag/index.vue b/CatmDogd-Mall-Front-test/src/components/DictTag/index.vue index 5e3e7df..dcccad5 100644 --- a/CatmDogd-Mall-Front-test/src/components/DictTag/index.vue +++ b/CatmDogd-Mall-Front-test/src/components/DictTag/index.vue @@ -1,29 +1,30 @@ diff --git a/CatmDogd-Mall-Front-test/src/views/model/AppletIcon/index.vue b/CatmDogd-Mall-Front-test/src/views/model/AppletIcon/index.vue index d53a2fe..bc8341d 100644 --- a/CatmDogd-Mall-Front-test/src/views/model/AppletIcon/index.vue +++ b/CatmDogd-Mall-Front-test/src/views/model/AppletIcon/index.vue @@ -1,310 +1,277 @@ diff --git a/CatmDogd-Mall-Front-test/src/views/model/appletOrderDateFrequency/index.vue b/CatmDogd-Mall-Front-test/src/views/model/appletOrderDateFrequency/index.vue new file mode 100644 index 0000000..9a69524 --- /dev/null +++ b/CatmDogd-Mall-Front-test/src/views/model/appletOrderDateFrequency/index.vue @@ -0,0 +1,453 @@ + + + diff --git a/CatmDogd-Mall-Front-test/vue.config.js b/CatmDogd-Mall-Front-test/vue.config.js index e548de9..8921c8e 100644 --- a/CatmDogd-Mall-Front-test/vue.config.js +++ b/CatmDogd-Mall-Front-test/vue.config.js @@ -35,7 +35,7 @@ module.exports = { proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://localhost:8080`, + target: `http://localhost:8002`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/AppletTechnicianInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/AppletTechnicianInterceptor.java new file mode 100644 index 0000000..d7a699d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/AppletTechnicianInterceptor.java @@ -0,0 +1,99 @@ +package com.ruoyi.web.core.config; + +import com.cyl.manager.staff.domain.Staff; +import com.cyl.manager.staff.service.IStaffService; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.service.MemberService; +import com.cyl.manager.ums.service.MemberWechatService; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.framework.config.LocalDataUtil; +import com.ruoyi.framework.web.service.TokenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +//@Configuration +public class AppletTechnicianInterceptor extends HandlerInterceptorAdapter { + + @Autowired + private TokenService tokenService; + + @Autowired + private MemberService memberService; + + @Autowired + private MemberWechatService memberWechatService; + + @Autowired + private IStaffService iStaffService; + + private static String[] WHITE_PATHS = { + "/h5/sms/login", + "/h5/wechat/login", + "/h5/account/login", + "/h5/register", + "/h5/validate", + "/h5/staff", + "/h5/order/listByOpenid", + "/h5/system", + "/h5/oss/upload", + "/h5/companion/staff/getTrainAnswerRecord", + }; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + String requestUri = request.getRequestURI(); + boolean flag = true; + if (requestUri.startsWith("/h5/")) { + return super.preHandle(request, response, handler); + } + if (!requestUri.startsWith("/applet/")) { + return super.preHandle(request, response, handler); + } + + for (String s : WHITE_PATHS) { + if (requestUri.startsWith(s)) { + flag = false; + break; + } + } + if (!flag) { + return super.preHandle(request, response, handler); + } + LoginMember loginMember = tokenService.getLoginMember(request); + if (loginMember == null) { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + tokenService.verifyMemberToken(loginMember); + if (new Integer(1).equals(loginMember.getSourceType())) { + //伴宠师 + Staff staff = iStaffService.getById(loginMember.getMemberId()); + + if (staff == null) { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + //将员工信息存放至全局 + LocalDataUtil.setVar(Constants.STAFF_INFO, staff); + }else { + //获取会员信息 + Member member = memberService.selectById(loginMember.getMemberId()); + if (member == null || member.getStatus() == 0) { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + //将会员信息存放至全局 + LocalDataUtil.setVar(Constants.MEMBER_INFO, member); + } + + + return super.preHandle(request, response, handler); + } + + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java index 61dffda..9251674 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java @@ -53,6 +53,9 @@ public class H5MemberInterceptor extends HandlerInterceptorAdapter { if (!requestUri.startsWith("/h5/")) { return super.preHandle(request, response, handler); } +// if (requestUri.startsWith("/applet/")) { +// return super.preHandle(request, response, handler); +// } for (String s : WHITE_PATHS) { if (requestUri.startsWith(s)) { diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 94054cf..ffe4615 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -1,100 +1,96 @@ # 数据源配置 spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - driverClassName: com.mysql.cj.jdbc.Driver - druid: - # 主库数据源 jdbc:mysql://localhost:3306/catmdogf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true - master: - url: jdbc:mysql://124.222.255.146:3306/catmdogf?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true - username: root - password: Tc$GePcZ - # 从库数据源 - slave: - # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: - statViewServlet: - # 控制台管理用户名和密码 - login-username: ruoyi - login-password: 123456 - # redis 配置 - redis: - # 地址 - host: 124.222.255.146 - # 端口,默认为6379 - port: 6379 - # 数据库索引 - database: 5 - # 密码 - password: Abc.123456 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 jdbc:mysql://localhost:3306/catmdogf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true + master: + url: jdbc:mysql://47.97.158.59:3306/catmdogf_prod20225?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true + username: root + password: Qweruiop@123 + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + statViewServlet: + # 控制台管理用户名和密码 + login-username: ruoyi + login-password: 123456 + # redis 配置 + redis: + # 地址 + host: 47.97.158.59 + # 端口,默认为6379 + port: 6379 + # 数据库索引 + database: 5 + # 密码 + password: Qweruiop@123 redisson: - address: "redis://124.222.255.146" - password: "Abc.123456" # 如果有密码的话 - connectionPoolSize: 10 - idleConnectionTimeout: 10000 - timeout: 3000 + address: "47.97.158.59" + password: "Qweruiop@123" # 如果有密码的话 + connectionPoolSize: 10 + idleConnectionTimeout: 10000 + timeout: 3000 ruoyi: - # 文件路径 示例( Windows配置C:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: /Users/daixiande/Work/ruoyi/uploadPath + # 文件路径 示例( Windows配置C:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) + profile: /Users/daixiande/Work/ruoyi/uploadPath scheduling: - enabled: false -#aliyun: -# accessKeyId: LTAI5tQSs47izVy8DLVdwUU9 # 阿里云的accessKeyId -# secretAccessKey: qHI7C3PaXYZySr84HTToviC71AYlFq # accessKey 密码 -# oss: -# endPoint: oss-cn-shenzhen.aliyuncs.com # Endpoint:在阿里云oss控制台查看自己使用的endpoint -# bucketName: hanhaiimage # bucket 名称 -# cdnName: image.hhlm1688.com + enabled: false #操作oss需要的一些参数 aliyun: - accessKeyId: LTAI5tD3bjTBDvgmgXLTKL5X # 阿里云的accessKeyId - secretAccessKey: wCPlCO5nnnqBekd3wxAPU6CSUto6fQ # accessKey 密码 - oss: - endPoint: oss-cn-shanghai.aliyuncs.com # Endpoint:在阿里云oss控制台查看自己使用的endpoint - bucketName: catmdogf # bucket 名称 - cdnName: cdn.catmdogd.com + accessKeyId: LTAI5tQSs47izVy8DLVdwUU9 # 阿里云的accessKeyId + secretAccessKey: qHI7C3PaXYZySr84HTToviC71AYlFq # accessKey 密码 + oss: + endPoint: oss-cn-shenzhen.aliyuncs.com # Endpoint:在阿里云oss控制台查看自己使用的endpoint + bucketName: hanhaiimage # bucket 名称 + cdnName: image.hhlm1688.com wechat: - enabled: true - appId: wxd1a6ba7b5e17a5b6 - secret: 你的微信服务号密钥 - merchantId: 1665639691 - privateKeyPath: /root/pem/apiclient_key.pem -# privateKeyPath: F:\\java_work\\team_work_java\\pet-admin-25-01-25\\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem - #privateKeyPath: /Users/daixiande/Work/杂七杂八/1665639691_20240111_cert/apiclient_key.pem - merchantSerialNumber: 6050244FC18200362585F1F9FD6557A1B291E8C0 - apiV3key: 19971022197001121966060120240731 - apiV2key: 19961022196901121965060120230731 - # notifyUrl: https://api.catmdogd.com/prod-api/no-auth/wechat/notify - # notifyUrlForBCHSH: https://api.catmdogd.com/prod-api/no-auth/wechat/notifyForBCHSH - notifyUrl: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notify - notifyUrlForBCHSH: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notifyForBCHSH - # notifyUrl: http://h5.xzaiyp.top/no-auth/wechat/notify - # notifyUrlForBCHSH: http://h5.xzaiyp.top/no-auth/wechat/notifyForBCHSH - miniProgramAppId: wxd1a6ba7b5e17a5b6 - miniProgramSecret: 06e946a2c9010f8eb9e306018a779a7f - staffAppId: wx01f0f43759922fda - staffSecret: b0a5617e6e4c387262a32af2b355c8b6 - pay: - v3: - # 租户id - miniapp: - # 应用appId 服务商模式下为服务商的appid 必填 - app-id: wxd1a6ba7b5e17a5b6 - # v2 api 密钥 1.0.5版本以后如果用到V2的接口时必填 - app-secret: 06e946a2c9010f8eb9e306018a779a7f - # api v3 密钥 必填 - app-v3-secret: 19971022197001121966060120240731 - # 微信支付商户号 服务商模式下为服务商的mchid 必填 - mch-id: 1665639691 - # 商户服务器域名 用于回调 需要放开回调接口的安全策略 必填 - domain: https://api-test.catmdogd.com - # 商户 api 证书路径 必填 填写classpath路径 位于 maven项目的resources文件下 - cert-path: apiclient_cert.p12 - #cert-path: /data/software/app/key/apiclient_cert.p12 + enabled: true + appId: wxd1a6ba7b5e17a5b6 + secret: 你的微信服务号密钥 + merchantId: 1665639691 +# privateKeyPath: /data/software/app/key/apiclient_key.pem +# privateKeyPath: /root/pem/apiclient_key.pem +# privateKeyPath: E:\\file\\2025\\1\\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_cert.p12 + privateKeyPath: E:\\file\\2025\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem +# privateKeyPath: F:\\java_work\\team_work_java\\pet-admin-25-01-25\\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem + #privateKeyPath: /Users/daixiande/Work/杂七杂八/1665639691_20240111_cert/apiclient_key.pem + merchantSerialNumber: 6050244FC18200362585F1F9FD6557A1B291E8C0 + apiV3key: 19971022197001121966060120240731 + apiV2key: 19961022196901121965060120230731 +# notifyUrl: https://api.catmdogd.com/prod-api/no-auth/wechat/notify +# notifyUrlForBCHSH: https://api.catmdogd.com/prod-api/no-auth/wechat/notifyForBCHSH +# notifyUrl: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notify +# notifyUrlForBCHSH: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notifyForBCHSH + notifyUrl: http://h5.xzaiyp.top/no-auth/wechat/notify + notifyUrlForBCHSH: http://h5.xzaiyp.top/no-auth/wechat/notifyForBCHSH + miniProgramAppId: wxd1a6ba7b5e17a5b6 + miniProgramSecret: 06e946a2c9010f8eb9e306018a779a7f + staffAppId: wx01f0f43759922fda + staffSecret: b0a5617e6e4c387262a32af2b355c8b6 + pay: + v3: + # 租户id + miniapp: + # 应用appId 服务商模式下为服务商的appid 必填 + app-id: wxd1a6ba7b5e17a5b6 + # v2 api 密钥 1.0.5版本以后如果用到V2的接口时必填 + app-secret: 06e946a2c9010f8eb9e306018a779a7f + # api v3 密钥 必填 + app-v3-secret: 19971022197001121966060120240731 + # 微信支付商户号 服务商模式下为服务商的mchid 必填 + mch-id: 1665639691 + # 商户服务器域名 用于回调 需要放开回调接口的安全策略 必填 + domain: https://api-test.catmdogd.com + # 商户 api 证书路径 必填 填写classpath路径 位于 maven项目的resources文件下 + cert-path: apiclient_cert.p12 + #cert-path: /data/software/app/key/apiclient_cert.p12 sms: @@ -120,38 +116,38 @@ aes: # 伴宠师-相关配置信息 wechat-admin: - enabled: true - appId: wx01f0f43759922fda - secret: b0a5617e6e4c387262a32af2b355c8b6 - merchantId: 1665639691 - privateKeyPath: ruoyi-admin/src/main/resources/apiclient_cert.p12 - #privateKeyPath: /Users/daixiande/Work/杂七杂八/1665639691_20240111_cert/apiclient_key.pem - merchantSerialNumber: 6050244FC18200362585F1F9FD6557A1B291E8C0 - apiV3key: 19971022197001121966060120240731 - apiV2key: 19961022196901121965060120230731 - notifyUrl: https://api.catmdogd.com/prod-api/no-auth/wechat/notify - notifyUrlForBCHSH: https://api.catmdogd.com/prod-api/no-auth/wechat/notifyForBCHSH - miniProgramAppId: wxd1a6ba7b5e17a5b6 - miniProgramSecret: 06e946a2c9010f8eb9e306018a779a7f - staffAppId: wx01f0f43759922fda - staffSecret: b0a5617e6e4c387262a32af2b355c8b6 - pay: - v3: - # 租户id - miniapp: - # 应用appId 服务商模式下为服务商的appid 必填 - app-id: wxd1a6ba7b5e17a5b6 - # v2 api 密钥 1.0.5版本以后如果用到V2的接口时必填 - app-secret: 06e946a2c9010f8eb9e306018a779a7f - # api v3 密钥 必填 - app-v3-secret: 19971022197001121966060120240731 - # 微信支付商户号 服务商模式下为服务商的mchid 必填 - mch-id: 1665639691 - # 商户服务器域名 用于回调 需要放开回调接口的安全策略 必填 - domain: https://api-test.catmdogd.com - # 商户 api 证书路径 必填 填写classpath路径 位于 maven项目的resources文件下 - cert-path: apiclient_cert.p12 - #cert-path: /data/software/app/key/apiclient_cert.p12 + enabled: true + appId: wx01f0f43759922fda + secret: b0a5617e6e4c387262a32af2b355c8b6 + merchantId: 1665639691 + privateKeyPath: ruoyi-admin/src/main/resources/apiclient_cert.p12 + #privateKeyPath: /Users/daixiande/Work/杂七杂八/1665639691_20240111_cert/apiclient_key.pem + merchantSerialNumber: 6050244FC18200362585F1F9FD6557A1B291E8C0 + apiV3key: 19971022197001121966060120240731 + apiV2key: 19961022196901121965060120230731 + notifyUrl: https://api.catmdogd.com/prod-api/no-auth/wechat/notify + notifyUrlForBCHSH: https://api.catmdogd.com/prod-api/no-auth/wechat/notifyForBCHSH + miniProgramAppId: wxd1a6ba7b5e17a5b6 + miniProgramSecret: 06e946a2c9010f8eb9e306018a779a7f + staffAppId: wx01f0f43759922fda + staffSecret: b0a5617e6e4c387262a32af2b355c8b6 + pay: + v3: + # 租户id + miniapp: + # 应用appId 服务商模式下为服务商的appid 必填 + app-id: wxd1a6ba7b5e17a5b6 + # v2 api 密钥 1.0.5版本以后如果用到V2的接口时必填 + app-secret: 06e946a2c9010f8eb9e306018a779a7f + # api v3 密钥 必填 + app-v3-secret: 19971022197001121966060120240731 + # 微信支付商户号 服务商模式下为服务商的mchid 必填 + mch-id: 1665639691 + # 商户服务器域名 用于回调 需要放开回调接口的安全策略 必填 + domain: https://api-test.catmdogd.com + # 商户 api 证书路径 必填 填写classpath路径 位于 maven项目的resources文件下 + cert-path: apiclient_cert.p12 + #cert-path: /data/software/app/key/apiclient_cert.p12 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 6f94617..fab82c0 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -20,7 +20,7 @@ ruoyi: # 开发环境配置.0 server: # 服务器的HTTP端口,默认为8080 - port: 8001 + port: 8002 servlet: # 应用的访问路径 context-path: / @@ -45,7 +45,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: druid + active: dev # 文件上传 servlet: multipart: diff --git a/ruoyi-admin/src/test/java/com/fjp/lc/test/common/CommonTest.java b/ruoyi-admin/src/test/java/com/fjp/lc/test/common/CommonTest.java index fd6d4c8..6b1511c 100644 --- a/ruoyi-admin/src/test/java/com/fjp/lc/test/common/CommonTest.java +++ b/ruoyi-admin/src/test/java/com/fjp/lc/test/common/CommonTest.java @@ -36,6 +36,7 @@ public class CommonTest { log.info("end {}", System.currentTimeMillis() - start); }*/ + @Test public void test4() throws IOException { String f1 = "D:/build/tt.jpg"; @@ -109,4 +110,6 @@ public class CommonTest { System.out.println(ans); } + + } diff --git a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java index 9650331..8bafcea 100644 --- a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java +++ b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java @@ -1,11 +1,13 @@ package com.fjp.lc.test.service; +import cn.hutool.core.img.ImgUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.symmetric.AES; import com.cyl.h5.pojo.dto.PayNotifyMessageDTO; +import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.service.H5OrderService; import com.cyl.manager.aws.domain.SystemStatistics; import com.cyl.manager.aws.mapper.SystemStatisticsMapper; @@ -18,6 +20,7 @@ import com.ruoyi.RuoYiApplication; import com.ruoyi.common.config.properties.SmsProperties; import com.ruoyi.common.core.sms.AliyunSmsTemplate; import com.ruoyi.common.core.sms.SmsTemplate; +import com.ruoyi.model.service.IAppletOrderDateFrequencyService; import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import lombok.extern.slf4j.Slf4j; import org.junit.Test; @@ -29,6 +32,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; +import java.io.File; +import java.io.IOException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -57,6 +62,9 @@ public class ServiceTest { @Autowired private SystemStatisticsMapper systemStatisticsMapper; + @Autowired + private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; + @Test public void test1() { memberCartService.mineCartNum(); @@ -131,4 +139,9 @@ public class ServiceTest { SystemStatistics data = systemStatisticsService.stat(startTime, endTime); systemStatisticsMapper.insert(data); } + + + @Test + public void aceptOrdersGenerateDayOrdersByOrderVO() throws IOException { + } } diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkInController.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkInController.java index 1102977..1fbd21c 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkInController.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkInController.java @@ -26,6 +26,9 @@ public class ApiAppletHhrWorkInController extends BaseController { @Autowired private IAppBannerService appletBannerService; + @Autowired + private IAppletIconService appletIconService; + @ApiOperation("轮播图列表") @GetMapping("/bannerList") public AjaxResult bannerList(){ @@ -36,6 +39,11 @@ public class ApiAppletHhrWorkInController extends BaseController { @ApiOperation("已加入的工作台图标配置查询") @GetMapping("/indexConfig") public TableDataInfo getIndexConfig(){ + +// return getDataTable(appletIconService.list()); + +// /* + List list = new ArrayList<>(); AppletIconVo icon1 = new AppletIconVo(); icon1.setType(0); @@ -107,6 +115,8 @@ public class ApiAppletHhrWorkInController extends BaseController { return getDataTable(list); + +// */ } @ApiOperation("申请加入合伙人") diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java index bd8bc76..abf6d27 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletOrderController.java @@ -31,6 +31,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.Synchronized; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; @@ -83,6 +84,9 @@ public class ApiAppletOrderController extends BaseController { private OmsOrderServiceMapper omsOrderServiceMapper; + @Autowired + private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; + @ApiOperation("接单大厅列表-带分页") @GetMapping("/list") public AjaxResult outDateList(AppletOrder appletOrder){ @@ -423,6 +427,7 @@ public class ApiAppletOrderController extends BaseController { @ApiOperation("接单大厅 - 立即接单") @PostMapping("/startByOrderId") @Synchronized + @Transactional public AjaxResult startByOrderId(@RequestBody AppletOrder appletOrder){ if(appletOrder.getId() == null){ return AjaxResult.error("订单标识不能为空"); @@ -546,7 +551,7 @@ public class ApiAppletOrderController extends BaseController { - + appletOrderDateFrequencyService.aceptOrdersGenerateDayOrdersByOrderVO(h5OrderVO, appletOrder.getUserId()); diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletOrderDateFrequencyAppletController.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletOrderDateFrequencyAppletController.java new file mode 100644 index 0000000..d31f0dd --- /dev/null +++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletOrderDateFrequencyAppletController.java @@ -0,0 +1,87 @@ +package com.ruoyi.applet.contoller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.cyl.h5.config.SecurityUtil; +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.mapper.OrderItemMapper; +import com.cyl.manager.ums.domain.Member; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.model.domain.AppletOrderDateFrequency; +import com.ruoyi.model.domain.AppletOrderItemDateLog; +import com.ruoyi.model.service.IAppletOrderDateFrequencyService; +import com.ruoyi.model.service.IAppletOrderItemDateLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 新版本小程序日订单Controller + * + * @author daixiande + * @date 2025-05-28 + */ +@RestController +@RequestMapping("/applet/appletOrderDateFrequency") +public class AppletOrderDateFrequencyAppletController extends BaseController { + + @Autowired + private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; + + @Autowired + private IAppletOrderItemDateLogService appletOrderItemDateLogService; + + /** + * 查询日订单列表 + */ + @GetMapping("/list") + public AjaxResult list(AppletOrderDateFrequency frequency) { + + List list = appletOrderDateFrequencyService.selectAppletOrderDateFrequencyList(frequency); + + // 按日期分组 + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + Map> groupedByDate = list.stream() + .collect(Collectors.groupingBy(item -> formatter.format(item.getServiceDate()))); + + // 转换为目标格式,按日期排序 + List> result = new ArrayList<>(); + groupedByDate.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .forEach(entry -> { + Map group = new HashMap<>(); + group.put("date", entry.getKey()); + group.put("list", entry.getValue()); + result.add(group); + }); + + return success(result); + } + + /** + * 获取日订单详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + AppletOrderDateFrequency frequency = appletOrderDateFrequencyService.selectAppletOrderDateFrequencyById(id); + AppletOrderItemDateLog check = appletOrderItemDateLogService.selectAppletOrderItemDateLogByItemDateId(id); + HashMap map = new HashMap<>(); + map.put("frequency", frequency); + map.put("check", check); + return AjaxResult.success(map); + } + + /** + * 获取日订单详细信息 + */ + @PostMapping(value = "/check") + public AjaxResult check(@RequestBody AppletOrderItemDateLog log) { + return AjaxResult.success(appletOrderDateFrequencyService.check(log)); + } + +} diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java index 43d7a46..03d7857 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java @@ -179,7 +179,7 @@ public class IApiMallOrderServiceImpl implements IApiMallOrderService { OmsOrderService omsOrderService = new OmsOrderService(); omsOrderService.setOrderId(item.getOrderId()); - List orderServiceList = omsOrderServiceMapper.selectList(omsOrderService); + List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService); @@ -229,7 +229,7 @@ public class IApiMallOrderServiceImpl implements IApiMallOrderService { //组装order_service OmsOrderService omsOrderService = new OmsOrderService(); omsOrderService.setOrderId(orderId); - List orderServiceList = omsOrderServiceMapper.selectList(omsOrderService); + List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService); order.setOrderServiceList(orderServiceList); diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletOrderDateFrequencyController.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletOrderDateFrequencyController.java new file mode 100644 index 0000000..7c42cbc --- /dev/null +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletOrderDateFrequencyController.java @@ -0,0 +1,114 @@ +package com.ruoyi.model.controller; + +import java.util.List; + +import com.ruoyi.model.domain.AppletOrderItemDateLog; +import com.ruoyi.model.service.IAppletOrderItemDateLogService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.model.domain.AppletOrderDateFrequency; +import com.ruoyi.model.service.IAppletOrderDateFrequencyService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 日订单Controller + * + * @author daixiande + * @date 2025-05-28 + */ +@RestController +@RequestMapping("/model/appletOrderDateFrequency") +public class AppletOrderDateFrequencyController extends BaseController { + + @Autowired + private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; + + @Autowired + private IAppletOrderItemDateLogService appletOrderItemDateLogService; + + /** + * 查询日订单列表 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:list')") + @GetMapping("/list") + public TableDataInfo list(AppletOrderDateFrequency appletOrderDateFrequency) { + startPage(); + List list = appletOrderDateFrequencyService.selectAppletOrderDateFrequencyList(appletOrderDateFrequency); + list.forEach(appletOrderDateFrequencyService::buildUserData); + return getDataTable(list); + } + + /** + * 导出日订单列表 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:export')") + @Log(title = "日订单", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(AppletOrderDateFrequency appletOrderDateFrequency) { + List list = appletOrderDateFrequencyService.selectAppletOrderDateFrequencyList(appletOrderDateFrequency); + ExcelUtil util = new ExcelUtil(AppletOrderDateFrequency.class); + return util.exportExcel(list, "日订单数据"); + } + + /** + * 获取日订单详细信息 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(appletOrderDateFrequencyService.selectAppletOrderDateFrequencyById(id)); + } + + /** + * 获取日订单打卡详细信息 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:query')") + @GetMapping(value = "/check/{id}") + public AjaxResult getCheck(@PathVariable("id") Long id) { + AppletOrderItemDateLog check = appletOrderItemDateLogService.selectAppletOrderItemDateLogByItemDateId(id); + return AjaxResult.success(check); + } + + /** + * 新增日订单 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:add')") + @Log(title = "日订单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AppletOrderDateFrequency appletOrderDateFrequency) { + return toAjax(appletOrderDateFrequencyService.insertAppletOrderDateFrequency(appletOrderDateFrequency)); + } + + /** + * 修改日订单 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:edit')") + @Log(title = "日订单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AppletOrderDateFrequency appletOrderDateFrequency) { + return toAjax(appletOrderDateFrequencyService.updateAppletOrderDateFrequency(appletOrderDateFrequency)); + } + + /** + * 删除日订单 + */ + @PreAuthorize("@ss.hasPermi('model:appletOrderDateFrequency:remove')") + @Log(title = "日订单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(appletOrderDateFrequencyService.deleteAppletOrderDateFrequencyByIds(ids)); + } +} diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderDateFrequency.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderDateFrequency.java new file mode 100644 index 0000000..2f3abd5 --- /dev/null +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderDateFrequency.java @@ -0,0 +1,107 @@ +package com.ruoyi.model.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.Pet; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * 日订单对象 applet_order_date_frequency + * + * @author daixiande + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AppletOrderDateFrequency { + private static final long serialVersionUID = 1L; + + /** 编号 */ + private Long id; + + /** 下单端订单ID */ + @Excel(name = "下单端订单ID") + private Long orderId; + + /** 服务日期 */ + @Excel(name = "服务日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date serviceDate; + + /** 期望上门时间 */ + private String serviceExpected; + + /** 关联宠物直接用json保存他以及服务内容 */ + private String petId; + + /** 省份 */ + @Excel(name = "省份") + private String receiverProvince; + + /** 城市 */ + @Excel(name = "城市") + private String receiverCity; + + /** 区县 */ + @Excel(name = "区县") + private String receiverDistrict; + + /** 详细地址 */ + private String receiverDetailAddress; + + /** 当日上门的第几次 */ + private Integer dayNumber; + + /** 伴宠师 */ + @Excel(name = "伴宠师") + private Long masterId; + + /** 下单用户 */ + @Excel(name = "下单用户") + private Long userId; + + /** 完成状态 */ + @Excel(name = "完成状态") + private String status; + + /** 完成时间 */ + @Excel(name = "完成时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") + private Date completionTime; + + /** 项目ids多个,号隔开 */ + private String projectIds; + + /** 创建者 */ + private Long createBy; + + /** 创建时间 */ + private String createTime; + + /** 更新者 */ + private Long updateBy; + + /** 更新时间 */ + private String updateTime; + + @TableField(exist = false) + private List pets; + + // 伴宠师 + @TableField(exist = false) + private AppUsers master; + + // 下单用户 + @TableField(exist = false) + private Member user; + +} diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItem.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItem.java index d6f9921..71bab8e 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItem.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItem.java @@ -43,7 +43,7 @@ public class AppletOrderItem { @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private LocalDateTime payTime; - /** 订单状态 */ + /** 订单状态类型 在接单大厅使用 */ @Excel(name = "订单状态") private Integer status; @@ -107,7 +107,7 @@ public class AppletOrderItem { @Excel(name = "伴宠师电话") private String phone; - /** 订单状态 */ + /** 订单状态 0待服务 1进行中 2已完成 */ @Excel(name = "订单状态") private Integer orderStatus; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItemDateLog.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItemDateLog.java index d08cbbf..5bdd29a 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItemDateLog.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletOrderItemDateLog.java @@ -68,7 +68,7 @@ public class AppletOrderItemDateLog { @Excel(name = "盆/尿垫前后对比-后") private String basinAfter; - /** 溜狗 */ + /** 溜狗 定制服务的信息以json格式保存在这里 */ @Excel(name = "溜狗") private String workDogImage; @@ -80,11 +80,11 @@ public class AppletOrderItemDateLog { @Excel(name = "备注") private String notes; - /** 日订单标识 */ + /** 日订单标识, 新版本指向AppletOrderDateFrequency表id */ @Excel(name = "日订单标识") private Long itemDateId; - /** 总订单标识 */ + /** 总订单标识, 新版本不使用,而是使用orderId */ @Excel(name = "总订单标识") private Long itemOrderId; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppBannerMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppBannerMapper.java index f996972..f177e05 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppBannerMapper.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppBannerMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.model.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.model.domain.AppBanner; /** @@ -9,8 +11,7 @@ import com.ruoyi.model.domain.AppBanner; * @author ruoyi * @date 2025-03-04 */ -public interface AppBannerMapper -{ +public interface AppBannerMapper { /** * 查询轮播图 * diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletIconMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletIconMapper.java index 8afc549..6e9e9fa 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletIconMapper.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletIconMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.model.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.model.domain.AppletIcon; /** @@ -9,8 +11,7 @@ import com.ruoyi.model.domain.AppletIcon; * @author ruoyi * @date 2025-03-30 */ -public interface AppletIconMapper -{ +public interface AppletIconMapper extends BaseMapper { /** * 查询跳转图标菜单 * diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderDateFrequencyMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderDateFrequencyMapper.java new file mode 100644 index 0000000..82928eb --- /dev/null +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderDateFrequencyMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.model.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.model.domain.AppletOrderDateFrequency; + +/** + * 日订单Mapper接口 + * + * @author daixiande + */ +public interface AppletOrderDateFrequencyMapper extends BaseMapper { +} diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderItemDateLogMapper.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderItemDateLogMapper.java index d1f718e..0edfbbb 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderItemDateLogMapper.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppletOrderItemDateLogMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.model.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.model.domain.AppletOrderItemDateLog; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -10,7 +12,7 @@ import org.apache.ibatis.annotations.Select; * * @author daixiande */ -public interface AppletOrderItemDateLogMapper { +public interface AppletOrderItemDateLogMapper extends BaseMapper { /** * 查询订单信息表 * diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletIconService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletIconService.java index e253c9e..6269cca 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletIconService.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletIconService.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.model.domain.AppletIcon; /** @@ -9,8 +11,7 @@ import com.ruoyi.model.domain.AppletIcon; * @author ruoyi * @date 2025-03-30 */ -public interface IAppletIconService -{ +public interface IAppletIconService extends IService { /** * 查询跳转图标菜单 * diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderDateFrequencyService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderDateFrequencyService.java new file mode 100644 index 0000000..15db4a6 --- /dev/null +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderDateFrequencyService.java @@ -0,0 +1,78 @@ +package com.ruoyi.model.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cyl.h5.pojo.vo.H5OrderVO; +import com.ruoyi.model.domain.AppletOrderDateFrequency; +import com.ruoyi.model.domain.AppletOrderItemDateLog; + +/** + * 日订单Service接口 + * + * @author daixiande + */ +public interface IAppletOrderDateFrequencyService extends IService { + /** + * 查询日订单 + * + * @param id 日订单主键 + * @return 日订单 + */ + AppletOrderDateFrequency selectAppletOrderDateFrequencyById(Long id); + + /** + * 查询日订单列表 + * + * @param appletOrderDateFrequency 日订单 + * @return 日订单集合 + */ + List selectAppletOrderDateFrequencyList(AppletOrderDateFrequency appletOrderDateFrequency); + + /** + * 新增日订单 + * + * @param appletOrderDateFrequency 日订单 + * @return 结果 + */ + int insertAppletOrderDateFrequency(AppletOrderDateFrequency appletOrderDateFrequency); + + /** + * 修改日订单 + * + * @param appletOrderDateFrequency 日订单 + * @return 结果 + */ + int updateAppletOrderDateFrequency(AppletOrderDateFrequency appletOrderDateFrequency); + + /** + * 批量删除日订单 + * + * @param ids 需要删除的日订单主键集合 + * @return 结果 + */ + int deleteAppletOrderDateFrequencyByIds(Long[] ids); + + + + void buildPetData(AppletOrderDateFrequency frequency); + + /** + * 删除日订单信息 + * + * @param id 日订单主键 + * @return 结果 + */ + int deleteAppletOrderDateFrequencyById(Long id); + + /** + * 接单生成日订单 + * @param h5OrderVO 下单端订单信息 + * @param masterId 伴宠师ID + */ + void aceptOrdersGenerateDayOrdersByOrderVO(H5OrderVO h5OrderVO, Long masterId); + + void buildUserData(AppletOrderDateFrequency frequency); + + int check(AppletOrderItemDateLog log); +} diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderItemService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderItemService.java index a054b99..fc1f180 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderItemService.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletOrderItemService.java @@ -6,7 +6,7 @@ import com.ruoyi.model.domain.AppletOrderItem; import java.util.List; /** - * 订单信息Service接口 + * 接单端总订单信息Service接口 * * @author ruoyi * @date 2025-03-28 diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletIconServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletIconServiceImpl.java index ee18cf1..3884bce 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletIconServiceImpl.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletIconServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.model.service.impl; import java.util.List; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,8 +17,7 @@ import com.ruoyi.model.service.IAppletIconService; * @date 2025-03-30 */ @Service -public class AppletIconServiceImpl implements IAppletIconService -{ +public class AppletIconServiceImpl extends ServiceImpl implements IAppletIconService { @Autowired private AppletIconMapper appletIconMapper; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderDateFrequencyServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderDateFrequencyServiceImpl.java new file mode 100644 index 0000000..f3755f3 --- /dev/null +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderDateFrequencyServiceImpl.java @@ -0,0 +1,382 @@ +package com.ruoyi.model.service.impl; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cyl.h5.pojo.vo.H5OrderVO; +import com.cyl.h5.service.H5MemberService; +import com.cyl.manager.oms.domain.OmsOrderService; +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.mapper.OmsOrderServiceMapper; +import com.cyl.manager.oms.mapper.OrderItemMapper; +import com.cyl.manager.oms.service.OmsOrderServiceService; +import com.cyl.manager.ums.domain.Pet; +import com.cyl.manager.ums.mapper.PetMapper; +import com.cyl.manager.ums.service.MemberService; +import com.cyl.manager.ums.service.PetService; +import com.ruoyi.model.domain.*; +import com.ruoyi.model.mapper.AppletOrderItemMapper; +import com.ruoyi.model.service.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.model.mapper.AppletOrderDateFrequencyMapper; +import org.springframework.transaction.annotation.Transactional; + +import static org.apache.ibatis.ognl.OgnlOps.in; + +/** + * 日订单Service业务层处理 + * + * @author daixiande + */ +@Service +public class AppletOrderDateFrequencyServiceImpl extends ServiceImpl implements IAppletOrderDateFrequencyService { + + @Autowired + private AppletOrderDateFrequencyMapper appletOrderDateFrequencyMapper; + + @Autowired + private PetMapper petMapper; + + @Autowired + private OrderItemMapper orderItemMapper; + + @Autowired + private OmsOrderServiceMapper omsOrderServiceMapper; + + @Autowired + private IAppUsersService appUsersService; + + @Autowired + private MemberService memberService; + + @Autowired + private IAppletOrderItemDateLogService appletOrderItemDateLogService; + + @Autowired + private AppletOrderItemMapper appletOrderItemMapper; + + @Autowired + private IAppletAmountLogService appletAmountLogService; + + /** + * 查询日订单 + * + * @param id 日订单主键 + * @return 日订单 + */ + @Override + public AppletOrderDateFrequency selectAppletOrderDateFrequencyById(Long id) { + AppletOrderDateFrequency appletOrderDateFrequency = appletOrderDateFrequencyMapper.selectById(id); + buildPetData(appletOrderDateFrequency); + return appletOrderDateFrequency; + } + + /** + * 查询日订单列表 + * + * @param frequency 日订单 + * @return 日订单 + */ + @Override + public List selectAppletOrderDateFrequencyList(AppletOrderDateFrequency frequency) { + + LambdaQueryChainWrapper qw = lambdaQuery() + .eq(frequency.getOrderId() != null, AppletOrderDateFrequency::getOrderId, frequency.getOrderId()) + .eq(frequency.getMasterId() != null, AppletOrderDateFrequency::getMasterId, frequency.getMasterId()) + .orderByAsc(AppletOrderDateFrequency::getServiceDate); + + if (frequency.getStatus() != null){ + qw.in(AppletOrderDateFrequency::getStatus, + Arrays.asList(frequency.getStatus().split(","))); + } + + List list = qw.list(); + + list.forEach(this::buildPetData); + + return list; + } + + @Override + public void buildPetData(AppletOrderDateFrequency frequency){ + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + + + String[] split = frequency.getPetId().split(","); + + List pets = petMapper.selectList(Wrappers.lambdaQuery() + .in(Pet::getId, split)); + + frequency.setPets(pets); + + if(frequency.getProjectIds() == null){ + return; + } + + pets.forEach(pet -> { + + LambdaQueryWrapper omsOrderServiceQW = Wrappers.lambdaQuery() + .eq(OmsOrderService::getPetId, pet.getId()) + .eq(OmsOrderService::getOrderId, frequency.getOrderId()) + .eq(OmsOrderService::getServiceDate, formatter.format(frequency.getServiceDate())) + .select(OmsOrderService::getId); + + List omsOrderServiceIds = omsOrderServiceMapper.selectList(omsOrderServiceQW).stream().map(n -> n.getId()) + .collect(Collectors.toList()); + + LambdaQueryWrapper qw = Wrappers.lambdaQuery() + .in(OrderItem::getOrderServiceId, omsOrderServiceIds) + .in(OrderItem::getId, Arrays.asList(frequency.getProjectIds().split(","))); + + List orderItemList = orderItemMapper.selectList(qw); + + pet.setOrderItemList(orderItemList); + + }); + } + + /** + * 新增日订单 + * + * @param appletOrderDateFrequency 日订单 + * @return 结果 + */ + @Override + public int insertAppletOrderDateFrequency(AppletOrderDateFrequency appletOrderDateFrequency) { + return appletOrderDateFrequencyMapper.insert(appletOrderDateFrequency); + } + + /** + * 修改日订单 + * + * @param appletOrderDateFrequency 日订单 + * @return 结果 + */ + @Override + public int updateAppletOrderDateFrequency(AppletOrderDateFrequency appletOrderDateFrequency) { + return appletOrderDateFrequencyMapper.updateById(appletOrderDateFrequency); + } + + /** + * 批量删除日订单 + * + * @param ids 需要删除的日订单主键 + * @return 结果 + */ + @Override + public int deleteAppletOrderDateFrequencyByIds(Long[] ids) { + return appletOrderDateFrequencyMapper.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 删除日订单信息 + * + * @param id 日订单主键 + * @return 结果 + */ + @Override + public int deleteAppletOrderDateFrequencyById(Long id) { + return appletOrderDateFrequencyMapper.deleteById(id); + } + /** + * 接单生成日订单 + * 以下是新的日订单代码 + * @param masterId 伴宠师ID + */ + @Override + public void aceptOrdersGenerateDayOrdersByOrderVO(H5OrderVO h5OrderVO, Long masterId) { + //生成按照次数完成打卡的日订单 + ArrayList frequencies = new ArrayList<>(); + + //提取去重的日期列表。避免重复添加 + List orderServiceSet = h5OrderVO.getOrderServiceList().stream() + .filter(service -> service.getServiceDate() != null) + .collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> + new TreeSet<>(Comparator.comparing(OmsOrderService::getServiceDate))), + ArrayList::new)); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + + + for (OmsOrderService service : orderServiceSet) { + + // 当前订单生成数 + int index = 0; + // 订单最大生成数 + int maxIndex = 3; + + + //找出符合当前日期时间的服务列表 + List serviceList = h5OrderVO.getOrderServiceList().stream(). + filter(n -> n.getServiceDate().equals(service.getServiceDate())) + .map(n -> { + n.setOrderItems(new ArrayList<>()); + return n; + }) + .collect(Collectors.toList()); + + + //取出当前日期所对应的项目 + List orderItemList = h5OrderVO.getOrderItemList().stream(). + filter(n -> { + for (OmsOrderService omsOrderService : serviceList) { + if(n.getOrderServiceId().equals(omsOrderService.getId())){ + omsOrderService.getOrderItems().add(n); + return true; + } + } + return false; + }).collect(Collectors.toList()); + + // 找出最大次数,生成对应个数的日订单 + for (OrderItem orderItem : orderItemList) { + maxIndex = Math.max(maxIndex, orderItem.getQuantity()); + } + + // 根据次数生成 + while (index < maxIndex){ + + //当前次数对应的项目 + HashSet projectIds = new HashSet<>(); + + //当前次数对应的宠物 + HashSet petIds = new HashSet<>(); + + for (OmsOrderService omsOrderService : serviceList) { + //找出最大次数,最大次数符合的才能添加宠物 + int oIndex = 0; + for (OrderItem orderItem : omsOrderService.getOrderItems()) { + + oIndex = Math.max(oIndex, orderItem.getQuantity()); + + //找出符合次数的项目 + if (orderItem.getQuantity() > index){ + projectIds.add(orderItem.getId()); + } + } + + //最大次数符合当前次数内,添加宠物id + if (oIndex > index){ + petIds.add(omsOrderService.getPetId()); + } + } + + //如果当前次数没有需要服务的宠物了,则直接跳过 + if (petIds.isEmpty()){ + break; + } + + Date serviceDate; + + try { + serviceDate = formatter.parse(service.getServiceDate()); + } catch (ParseException e) { + throw new RuntimeException("日期解析失败"); + } + + frequencies.add(AppletOrderDateFrequency.builder() + .serviceDate(serviceDate) + .receiverCity(h5OrderVO.getReceiverCity()) + .receiverProvince(h5OrderVO.getReceiverProvince()) + .receiverDistrict(h5OrderVO.getReceiverDistrict()) + .receiverDetailAddress(h5OrderVO.getReceiverDetailAddress()) + .userId(h5OrderVO.getMemberId()) + .masterId(masterId) + .orderId(service.getOrderId()) + .dayNumber(index + 1) + .petId(String.join(",", petIds.stream() + .map(String::valueOf).collect(Collectors.toList()))) + .projectIds(String.join(",", projectIds.stream() + .map(String::valueOf).collect(Collectors.toList()))) + .build()); + + index++; + } + + } + + saveBatch(frequencies); + } + + @Override + public void buildUserData(AppletOrderDateFrequency frequency) { + frequency.setMaster(appUsersService.selectAppUsersByUserId(frequency.getMasterId())); + frequency.setUser(memberService.selectById(frequency.getUserId())); + } + + @Override + @Transactional + public int check(AppletOrderItemDateLog log) { + + AppletOrderDateFrequency byId = getById(log.getItemDateId()); + + if(byId == null){ + throw new RuntimeException("无效日订单"); + } + + byId.setStatus(String.valueOf(log.getSubmitFlag())); + + if(log.getSubmitFlag() == 2){ + byId.setCompletionTime(new Date()); + } + + updateById(byId); + + log.setOrderId(byId.getOrderId()); + + //当所有的日订单完成,就将订单状态修改完成 + Integer count = lambdaQuery() + .eq(AppletOrderDateFrequency::getOrderId, byId.getOrderId()) + .in(AppletOrderDateFrequency::getStatus, Arrays.asList("0,1".split(","))) + .count(); + + //总订单 + AppletOrderItem appletOrderItem = appletOrderItemMapper + .selectAppletOrderItemByOrderIdUserId(byId.getOrderId(), byId.getMasterId()); + + + //订单完成 + if(count == 0){ + appletOrderItem.setOrderStatus(2); + appletOrderItemMapper.updateAppletOrderItem(appletOrderItem); + + //根据订单中的用户id查询用户信息 + AppUsers user = appUsersService.selectAppUsersByUserId(appletOrderItem.getUserId()); + //增加伴宠师流水 + + // 记录日志 + AppletAmountLog moneyLog = new AppletAmountLog(); + moneyLog.setUserId(user.getUserId()); + moneyLog.setTitle("伴宠师佣金"); + moneyLog.setAmount(appletOrderItem.getOrderGivePrice()); + moneyLog.setType(0); //收入 + moneyLog.setState(1); //到账 + moneyLog.setCreateTime(LocalDateTime.now()); + moneyLog.setMoneyType(1);//钱包类型 + int i = appletAmountLogService.insertAppletAmountLog(moneyLog); + user.setPrice(user.getPrice().add(appletOrderItem.getOrderGivePrice())); + appUsersService.updateAppUsers(user); + + }else if (appletOrderItem.getOrderStatus() == 0){//修改成订单进行中 + appletOrderItem.setOrderStatus(1); + appletOrderItemMapper.updateAppletOrderItem(appletOrderItem); + } + + + if(log.getId() == null){ + return appletOrderItemDateLogService.insertAppletOrderItemDateLog(log); + }else { + return appletOrderItemDateLogService.updateAppletOrderItemDateLog(log); + } + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java index e13a055..f709d59 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java @@ -89,6 +89,7 @@ public class H5OrderVO { @TableField(exist = false) private List petVOList; + //接单的伴宠师 private Long teacherId; private Integer companionLevel; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java index 74e5a3f..610531e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java @@ -775,7 +775,7 @@ public class H5OrderService { OmsOrderService omsOrderService = new OmsOrderService(); omsOrderService.setOrderId(item.getOrderId()); - List orderServiceList = omsOrderServiceMapper.selectList(omsOrderService); + List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService); @@ -826,7 +826,7 @@ public class H5OrderService { //组装order_service OmsOrderService omsOrderService = new OmsOrderService(); omsOrderService.setOrderId(orderId); - List orderServiceList = omsOrderServiceMapper.selectList(omsOrderService); + List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService); order.setOrderServiceList(orderServiceList); // 如果未付款,计算倒计时 diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OmsOrderService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OmsOrderService.java index e526244..727f5dd 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OmsOrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OmsOrderService.java @@ -10,6 +10,8 @@ import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; + /** * 预约订单服务详细信息记录表对象 oms_order_service * @@ -69,4 +71,7 @@ public class OmsOrderService extends BaseAudit { @TableField(exist = false) private Pet pets; + @TableField(exist = false) + private List orderItems; + } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OmsOrderServiceMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OmsOrderServiceMapper.java index 96b565b..103ca7e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OmsOrderServiceMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OmsOrderServiceMapper.java @@ -25,7 +25,7 @@ public interface OmsOrderServiceMapper extends BaseMapper { * @param omsOrderService 预约订单服务详细信息记录表 * @return 预约订单服务详细信息记录表集合 */ - List selectList(OmsOrderService omsOrderService); + List selectListBySql(OmsOrderService omsOrderService); /** * 新增预约订单服务详细信息记录表 diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OmsOrderServiceService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OmsOrderServiceService.java index d9a51f2..98ea339 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OmsOrderServiceService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OmsOrderServiceService.java @@ -33,7 +33,7 @@ public class OmsOrderServiceService { public OmsOrderService selectByOrderId(Long id) { OmsOrderService omsOrderService = new OmsOrderService(); omsOrderService.setOrderId(id); - List orderServiceList = omsOrderServiceMapper.selectList(omsOrderService); + List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService); if (CollectionUtils.isEmpty(orderServiceList)){ return null; @@ -46,7 +46,7 @@ public class OmsOrderServiceService { public List selectListByOrderId(Long id) { OmsOrderService omsOrderService = new OmsOrderService(); omsOrderService.setOrderId(id); - List orderServiceList = omsOrderServiceMapper.selectList(omsOrderService); + List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService); if (CollectionUtils.isEmpty(orderServiceList)){ return null; @@ -63,7 +63,7 @@ public class OmsOrderServiceService { * @return 预约订单服务详细信息记录表集合 */ public List selectOmsOrderServiceList(OmsOrderService omsOrderService){ - return omsOrderServiceMapper.selectList(omsOrderService); + return omsOrderServiceMapper.selectListBySql(omsOrderService); } /** diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Pet.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Pet.java index 49945cb..8e38e3a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Pet.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Pet.java @@ -1,8 +1,12 @@ package com.cyl.manager.ums.domain; import java.math.BigDecimal; +import java.util.List; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.cyl.manager.oms.domain.OmsOrderService; +import com.cyl.manager.oms.domain.OrderItem; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseAudit; @@ -84,4 +88,9 @@ public class Pet extends BaseAudit { /** 删除标志(0代表存在 2代表删除)*/ private Integer delFlag = 0; + @TableField(exist = false) + private List services; + + @TableField(exist = false) + private List orderItemList; } diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderServiceMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderServiceMapper.xml index 5445061..d453db2 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderServiceMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderServiceMapper.xml @@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, order_id, pet, service_frequency, service_date, service_time_first, service_time_second, create_by, create_time, update_by, update_time, del_flag , create_by, create_time, update_by, update_time, feed_count, pet_id, expect_service_time from oms_order_service - and order_id = #{orderId}