From 3adbcc42d5f84c3c83d220543189361add81e04d Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期一, 11 九月 2023 15:22:19 +0800 Subject: [PATCH] bug --- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java | 4 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/FileRecordMapper.java | 16 + ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java | 25 - ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 39 +- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java | 17 + ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/FileRecordMapper.xml | 6 ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java | 20 + ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java | 18 - ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 18 - ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java | 19 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 2 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java | 4 ruoyi-modules/ruoyi-goods/src/main/resources/logback.xml | 2 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java | 51 +++ ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java | 2 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java | 22 - ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/FileRecordService.java | 24 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java | 15 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java | 9 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/FileRecordServiceImpl.java | 31 ++ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 3 ruoyi-modules/ruoyi-shop/src/test/java/com/ruioyi/shop/shopTest.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java | 2 ruoyi-modules/ruoyi-file/pom.xml | 13 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopProportionPageDto.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 298 +++++++++++++++----- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java | 10 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java | 22 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java | 6 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/DelayTask.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java | 4 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/FileRecord.java | 73 +++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java | 4 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml | 6 38 files changed, 600 insertions(+), 201 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java index 10d9f46..7ce265c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java @@ -117,4 +117,8 @@ String BIRTHDAYCARD_NO_GIFT = "请先配置礼物再开启"; String SYSTEM_FAILED = "系统正忙,请稍后再试"; + + String SHOP_NO_VERIFY = "商户暂无核销权限"; + + String SHOP_NO_ACTIVITY = "商户没有参与活动"; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/DelayTask.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/DelayTask.java index 39fc636..ec55c09 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/DelayTask.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/DelayTask.java @@ -32,7 +32,7 @@ * 延时任务id */ @TableId(value = "task_id", type = IdType.AUTO) - private Integer taskId; + private Long taskId; /** * 删除标记 */ diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/FileRecord.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/FileRecord.java new file mode 100644 index 0000000..df2c3cc --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/FileRecord.java @@ -0,0 +1,73 @@ +package com.ruoyi.system.api.domain.poji.config; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author jqs + * @since 2023-09-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_file_record") +public class FileRecord extends Model<FileRecord> { + + private static final long serialVersionUID = 1L; + + /** + * 文件id + */ + @TableId(value = "file_id", type = IdType.AUTO) + private Long fileId; + /** + * 文件名 + */ + @TableField("file_name") + private String fileName; + /** + * 文件路径 + */ + @TableField("file_path") + private String filePath; + /** + * 上传类型1.本地2.OSS3. + */ + @TableField("upload_type") + private Integer uploadType; + /** + * 上传时间 + */ + @TableField("upload_time") + private Date uploadTime; + /** + * 文件大小 + */ + @TableField("file_size") + private Long fileSize; + /** + * 文件类型 + */ + @TableField("file_type") + private String fileType; + + + @Override + protected Serializable pkVal() { + return this.fileId; + } + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java index bef2b9f..06d7049 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java @@ -4,14 +4,11 @@ import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtClassNumDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; -import com.ruoyi.system.api.domain.poji.config.Activeness; -import com.ruoyi.system.api.domain.poji.config.DelayTask; -import com.ruoyi.system.api.domain.poji.config.SysClassification; +import com.ruoyi.system.api.domain.poji.config.*; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.api.service.RemoteConfigService; -import com.ruoyi.system.api.domain.poji.config.SysTag; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -91,6 +88,11 @@ return R.fail("通过id获取员工列表失败:" + throwable.getMessage()); } + @Override + public R createFileRecord(FileRecord fileRecord) { + return R.fail("创建文件上传记录失败:" + throwable.getMessage()); + } + @Override public R<List<SysTag>> listSysTag(Integer tagType) { diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java index 580df0a..15b925d 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java @@ -5,10 +5,7 @@ import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtClassNumDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; -import com.ruoyi.system.api.domain.poji.config.Activeness; -import com.ruoyi.system.api.domain.poji.config.DelayTask; -import com.ruoyi.system.api.domain.poji.config.SysClassification; -import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.config.*; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; @@ -148,4 +145,14 @@ */ @PostMapping("/config/listSysStaffByIds") public R<List<SysStaff>> listSysStaffByIds(@RequestBody List<Long> userIdList); + + /** + * @description 创建文件上传记录 + * @author jqs + * @date 2023/9/11 11:56 + * @param fileRecord + * @return R + */ + @PostMapping("/config/createFileRecord") + public R createFileRecord(@RequestBody FileRecord fileRecord); } diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/ruoyi-file/pom.xml index 9feb214..4683834 100644 --- a/ruoyi-modules/ruoyi-file/pom.xml +++ b/ruoyi-modules/ruoyi-file/pom.xml @@ -42,17 +42,17 @@ </dependency> <!-- FastDFS --> - <dependency> + <!--<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> - </dependency> + </dependency>--> <!-- Minio --> - <dependency> + <!--<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>${minio.version}</version> - </dependency> + </dependency>--> <!-- RuoYi Api System --> <dependency> @@ -60,6 +60,11 @@ <artifactId>ruoyi-api-system</artifactId> </dependency> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-common-security</artifactId> + </dependency> + <!-- RuoYi Common Swagger --> <dependency> diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java index 7aa3acc..0ced422 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java @@ -1,5 +1,7 @@ package com.ruoyi.file; +import com.ruoyi.common.security.annotation.EnableCustomConfig; +import com.ruoyi.common.security.annotation.EnableRyFeignClients; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -10,7 +12,9 @@ * * @author jqs */ +@EnableCustomConfig @EnableCustomSwagger2 +@EnableRyFeignClients @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) public class RuoYiFileApplication { diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java index fba8054..2eb4539 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java @@ -1,37 +1,32 @@ package com.ruoyi.file.config; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import io.minio.MinioClient; - /** * Minio 配置信息 * * @author jqs */ -@Configuration +/*@Configuration @ConfigurationProperties(prefix = "minio") public class MinioConfig { - /** + *//** * 服务地址 - */ + *//* private String url; - /** + *//** * 用户名 - */ + *//* private String accessKey; - /** + *//** * 密码 - */ + *//* private String secretKey; - /** + *//** * 存储桶名称 - */ + *//* private String bucketName; public String getUrl() @@ -79,4 +74,4 @@ { return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build(); } -} +}*/ diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java index 5fe7cba..1008e47 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java @@ -4,7 +4,9 @@ import com.ruoyi.common.core.utils.file.FileUtils; import com.ruoyi.file.service.ISysFileService; import com.ruoyi.file.utils.OBSUploadUtils; +import com.ruoyi.system.api.domain.poji.config.FileRecord; import com.ruoyi.system.api.domain.poji.sys.SysFile; +import com.ruoyi.system.api.service.RemoteConfigService; import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder; import com.wechat.pay.contrib.apache.httpclient.WechatPayUploadHttpPost; import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier; @@ -20,17 +22,18 @@ import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.net.URI; import java.security.PrivateKey; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -52,8 +55,11 @@ private final static String API_V3_KEY = "J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A"; - @Autowired + @Resource private ISysFileService sysFileService; + + @Resource + private RemoteConfigService remoteConfigService; /** * 文件上传请求 @@ -64,10 +70,22 @@ try { // 上传并返回访问地址 + String fileName = file.getOriginalFilename(); + String prefix = fileName.substring(fileName.lastIndexOf(".")); + long fileSize = file.getSize(); String url = sysFileService.uploadFile(file); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); + //创建上传记录 + FileRecord fileRecord = new FileRecord(); + fileRecord.setFileName(fileName); + fileRecord.setFilePath(url); + fileRecord.setUploadType(2); + fileRecord.setUploadTime(new Date()); + fileRecord.setFileSize(fileSize); + fileRecord.setFileType(prefix); + remoteConfigService.createFileRecord(fileRecord); return R.ok(sysFile); } catch (Exception e) @@ -85,9 +103,20 @@ { try { - // // 上传并返回访问地址 + String fileName = file.getOriginalFilename(); + String prefix = fileName.substring(fileName.lastIndexOf(".")); + long fileSize = file.getSize(); String url = OBSUploadUtils.uploadFile(file); + //创建上传记录 + FileRecord fileRecord = new FileRecord(); + fileRecord.setFileName(fileName); + fileRecord.setFilePath(url); + fileRecord.setUploadType(2); + fileRecord.setUploadTime(new Date()); + fileRecord.setFileSize(fileSize); + fileRecord.setFileType(prefix); + remoteConfigService.createFileRecord(fileRecord); return R.ok(url); } catch (Exception e) @@ -100,11 +129,27 @@ @PostMapping("batchUploadOSS") public R<List<String>> batchUploadOSS(@RequestPart("file") MultipartFile[] files) { List<String> urls = new ArrayList<>(); + String fileName; + String prefix; + long fileSize; + FileRecord fileRecord; for (MultipartFile file : files) { try { + fileName = file.getOriginalFilename(); + prefix = fileName.substring(fileName.lastIndexOf(".")); + fileSize = file.getSize(); // 上传并返回访问地址 String url = OBSUploadUtils.uploadFile(file); urls.add(url); + //创建上传记录 + fileRecord = new FileRecord(); + fileRecord.setFileName(fileName); + fileRecord.setFilePath(url); + fileRecord.setUploadType(2); + fileRecord.setUploadTime(new Date()); + fileRecord.setFileSize(fileSize); + fileRecord.setFileType(prefix); + remoteConfigService.createFileRecord(fileRecord); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java index 66d6b30..2e176ad 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java @@ -1,39 +1,29 @@ package com.ruoyi.file.service; -import java.io.InputStream; -import com.alibaba.nacos.common.utils.IoUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import com.github.tobato.fastdfs.domain.fdfs.StorePath; -import com.github.tobato.fastdfs.service.FastFileStorageClient; -import com.ruoyi.common.core.utils.file.FileTypeUtils; - /** * FastDFS 文件存储 * * @author jqs */ -@Service +/*@Service public class FastDfsSysFileServiceImpl implements ISysFileService { - /** + *//** * 域名或本机访问地址 - */ + *//* @Value("${fdfs.domain}") public String domain; @Autowired private FastFileStorageClient storageClient; - /** + *//** * FastDfs文件上传接口 * * @param file 上传的文件 * @return 访问地址 * @throws Exception - */ + *//* @Override public String uploadFile(MultipartFile file) throws Exception { @@ -43,4 +33,4 @@ IoUtils.closeQuietly(inputStream); return domain + "/" + storePath.getFullPath(); } -} +}*/ diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java index 15b7376..bb40606 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java @@ -1,21 +1,11 @@ package com.ruoyi.file.service; -import java.io.InputStream; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import com.alibaba.nacos.common.utils.IoUtils; -import com.ruoyi.file.config.MinioConfig; -import com.ruoyi.file.utils.FileUploadUtils; -import io.minio.MinioClient; -import io.minio.PutObjectArgs; - /** * Minio 文件存储 * * @author jqs */ -@Service +/*@Service public class MinioSysFileServiceImpl implements ISysFileService { @Autowired @@ -24,13 +14,13 @@ @Autowired private MinioClient client; - /** + *//** * Minio文件上传接口 * * @param file 上传的文件 * @return 访问地址 * @throws Exception - */ + *//* @Override public String uploadFile(MultipartFile file) throws Exception { @@ -46,4 +36,4 @@ IoUtils.closeQuietly(inputStream); return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName; } -} +}*/ diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java index 2a2586f..3959fe9 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java @@ -26,6 +26,8 @@ */ public class OBSUploadUtils { + + public static void main(String[] args) throws Exception { String fileUrl = null; File qrCodeFile = new File("/home/image/qrcode.png"); diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/logback.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/logback.xml index 61d523e..7b7b75b 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/logback.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/logback.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 日志存放路径 --> - <property name="log.path" value="logs/ruoyi-order" /> + <property name="log.path" value="logs/ruoyi-goods" /> <!-- 日志输出格式 --> <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java index 5bab29b..73d6b36 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java @@ -36,7 +36,7 @@ /** * 每小时优惠券定时发送 */ - @Scheduled(cron="0 */1 * * * ?") + @Scheduled(cron="0 0 */1 * * ?") private void timingSendCoupon(){ if(schedulerUtils.getSchedulerRun()) { log.info("----------------优惠券定时发放任务开始执行-------------"); @@ -62,7 +62,7 @@ * @param * @return void */ - @Scheduled(cron="3 0 0 * * ?") + @Scheduled(cron="10 0 0 * * ?") private void timinginitIntegralFlag(){ if(schedulerUtils.getSchedulerRun()) { log.info("----------------定时更新用户每日任务标记开始执行----------------"); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java index a504cac..03f6300 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java @@ -86,7 +86,7 @@ } // 获取查询结果 BirthdayCard birthdayCardOld = this.getOne(queryWrapper,false); - // 如果查询结果不为空,则进行更新操作 + // 如果查询结果不为空,则进行更新为历史记录 if (birthdayCardOld!=null) { // 设置删除标志为1 birthdayCardOld.setDelFlag(1); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java index 45b8857..08929a3 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java @@ -171,8 +171,8 @@ @GetMapping("/queryBill") - public R<ProfitSharingResult> queryBill(String transactionId,String outOrderNo) throws WxPayException { - ProfitSharingResult result = orderService.queryBill(transactionId,outOrderNo); + public R<ProfitSharingResult> queryBill(String orderId) throws WxPayException { + ProfitSharingResult result = orderService.queryBill(orderId); return R.ok(result); } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java index fc00ea7..b16c755 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java @@ -80,15 +80,6 @@ Long userId = loginUser.getUserid(); appPlaceOrderDto.setUserId(userId); appPlaceOrderDto.setSpbillCreateIp(loginUser.getIpaddr()); - - if (userId != null) { - Member member = memberService.getMember(userId).getData(); - appPlaceOrderDto.setUserId(userId); - if (member != null) { - appPlaceOrderDto.setOpenid(member.getMiniOpenid()); - appPlaceOrderDto.setShopId(member.getRelationShopId()); - } - } AppPlaceOrderVo appPlaceOrderVo = orderService.placeOrder(appPlaceOrderDto); return R.ok(appPlaceOrderVo); } @@ -98,15 +89,8 @@ public R<AppPlaceOrderVo> placeActivityOrder(@Validated @RequestBody AppPlaceActivityDto appPlaceActivityDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); Long userId = loginUser.getUserid(); + appPlaceActivityDto.setUserId(userId); appPlaceActivityDto.setSpbillCreateIp(loginUser.getIpaddr()); - if (userId != null) { - Member member = memberService.getMember(userId).getData(); - appPlaceActivityDto.setUserId(userId); - if (member != null && member.getRelationShopId() != null) { - appPlaceActivityDto.setOpenid(member.getMiniOpenid()); - appPlaceActivityDto.setShopId(member.getRelationShopId()); - } - } AppPlaceOrderVo appPlaceOrderVo = orderService.placeActivityOrder(appPlaceActivityDto); return R.ok(appPlaceOrderVo); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java index 3f2ea65..fda482f 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java @@ -186,9 +186,26 @@ @TableField("change_receivable_money") private BigDecimal changeReceivableMoney; + /** + * @description 获客标记 + * @author jqs + * @date 2023/9/8 10:45 + * @param null + * @return null + */ @TableField("new_member_flag") private Integer newMemberFlag; + /** + * @description 未绑定标记 + * @author jqs + * @date 2023/9/8 10:45 + * @param null + * @return null + */ + @TableField("unbinding_flag") + private Integer unbindingFlag; + @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java index f47239a..c1e4e85 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java @@ -40,7 +40,7 @@ * @param userId * @return */ - List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, @Param("userId") Long userId); + List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, @Param("param") MerMemberNoClearOrderDto pageMerMemberNoClearOrder); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java index bc97e93..c52258b 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java @@ -24,4 +24,13 @@ * @param result */ void saveProfitSharing(Long shopId, String orderId, BigDecimal orderMoney, ProfitSharingResult result); + + /** + * @description 通过订单id获取 + * @author jqs + * @date 2023/9/8 10:34 + * @param orderId + * @return ProfitSharing + */ + ProfitSharing getByOrderId(String orderId); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java index 799915d..84ec6f5 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java @@ -1,11 +1,11 @@ package com.ruoyi.order.service.impl.account; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult; -import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.order.domain.pojo.account.ProfitSharing; import com.ruoyi.order.mapper.account.ProfitSharingMapper; import com.ruoyi.order.service.account.ProfitSharingService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -51,4 +51,19 @@ this.saveOrUpdate(profitSharing); } + + /** + * @description 通过订单id获取 + * @author jqs + * @date 2023/9/8 10:34 + * @param orderId + * @return ProfitSharing + */ + @Override + public ProfitSharing getByOrderId(String orderId){ + LambdaQueryWrapper<ProfitSharing> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProfitSharing::getDelFlag,0); + queryWrapper.eq(ProfitSharing::getOrderId,orderId); + return this.getOne(queryWrapper,false); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 5e9a8f4..fb7a43d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -1,5 +1,5 @@ package com.ruoyi.order.service.impl.order; -import com.google.common.collect.Lists; + import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -11,6 +11,7 @@ import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; +import com.google.common.collect.Lists; import com.google.gson.Gson; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; @@ -52,7 +53,6 @@ import com.ruoyi.system.api.domain.poji.member.MemberCoupon; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; -import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; @@ -146,8 +146,6 @@ @Resource private OrderRefundService orderRefundService; - @Resource - private RemoteMemberService memberService; /** * @description: buyGoods @@ -517,6 +515,12 @@ public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) { // 获取用户ID Long userId = appPlaceOrderDto.getUserId(); + Member member = remoteMemberService.getMember(userId).getData(); + appPlaceOrderDto.setUserId(userId); + if (member != null) { + appPlaceOrderDto.setOpenid(member.getMiniOpenid()); + appPlaceOrderDto.setShopId(member.getRelationShopId()); + } // 创建下单视图对象 AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); // 创建商品列表 @@ -748,6 +752,11 @@ order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); + if(member.getBindingFlag()==0){ + order.setUnbindingFlag(1); + }else{ + order.setUnbindingFlag(0); + } // 保存订单 this.save(order); appPlaceOrderVo.setOrderId(orderId); @@ -909,6 +918,12 @@ @GlobalTransactional(rollbackFor = Exception.class) public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) { Long userId = appPlaceActivityDto.getUserId(); + Member member = remoteMemberService.getMember(userId).getData(); + appPlaceActivityDto.setUserId(userId); + if (member != null && member.getRelationShopId() != null) { + appPlaceActivityDto.setOpenid(member.getMiniOpenid()); + appPlaceActivityDto.setShopId(member.getRelationShopId()); + } // 创建订单对象 AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); // 定义商品订单对象 @@ -1096,8 +1111,11 @@ order.setOrderRemark(appPlaceActivityDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); - if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){ - order.setNewMemberFlag(1); + //订单是否未绑定时下单 + if(member.getBindingFlag()==0){ + order.setUnbindingFlag(1); + }else{ + order.setUnbindingFlag(0); } // 保存订单 this.save(order); @@ -1187,8 +1205,9 @@ @Override public List<AppUserOrderPageVo> pageUserOrder(Page page, AppUserOrderPageDto appUserOrderPageDto) { Long userId = appUserOrderPageDto.getUserId(); - Member member = memberService.getMember(userId).getData(); + Member member = remoteMemberService.getMember(userId).getData(); List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page, appUserOrderPageDto); + //处理商户名称显示 if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) { Long shopId; String activityId; @@ -1265,7 +1284,7 @@ appUserOrderGetVo.setShopName(shop.getShopName()); appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); appUserOrderGetVo.setVerifyCode("1-" + orderId); - //生成自动取消订单延时任务 + //获取订单取消时间 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); @@ -1286,6 +1305,9 @@ if (order.getOrderStatus() == 0) { throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER); } else if (order.getOrderStatus() == 1) { + //删除待支付超时取消延时任务 + redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); + remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId); this.autoCancelOrder(orderId); } else if (order.getOrderStatus() == 2) { // 2.待核销 -> 订单退款 @@ -1304,21 +1326,31 @@ */ @Override public AppPlaceOrderVo payOrder(String orderId){ + // 根据订单ID获取订单 Order order = this.getById(orderId); - if(order.getOrderStatus()!=1){ + // 如果订单状态不是1(待支付),抛出异常 + if(order.getOrderStatus() != 1){ throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER); } - String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+ "-"+orderId); + // 从缓存中获取支付信息 + String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); + // 如果支付信息为空,抛出异常 if(StringUtils.isBlank(payStr)){ throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER); } + // 默认延迟时间为30分钟 Integer delayTime = 30; + // 如果缓存中存在自动取消订单时间,使用缓存中的值作为延迟时间 if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } + // 创建AppPlaceOrderVo对象 AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); + // 根据未支付订单ID获取订单支付信息 OrderPayment orderPayment = orderPaymentService.getByUnpaidOrderId(orderId); + // 将支付信息拆分为数组 String[] payArr = payStr.split("-"); + // 设置AppPlaceOrderVo对象的属性 appPlaceOrderVo.setOrderId(order.getOrderId()); appPlaceOrderVo.setOrderNo(order.getOrderNo()); appPlaceOrderVo.setPayType(order.getPayType()); @@ -1333,6 +1365,7 @@ appPlaceOrderVo.setSignType(payArr[4]); appPlaceOrderVo.setPaySign(payArr[5]); appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId()); + // 返回AppPlaceOrderVo对象 return appPlaceOrderVo; } @@ -1395,24 +1428,49 @@ if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); } + //判断商户是否有分账权限 + Shop shop = remoteShopService.getShop(shopId).getData(); + if(shop.getAccountFlag()!=1){ + throw new ServiceException(AppErrorConstant.SHOP_NO_VERIFY); + } // 根据订单用户ID获取用户信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); // 根据订单ID获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); - //绑定用户判断核销商户 + //判断用户是否绑定 if(member.getBindingFlag()==1){ - //绑定用户需直接判断商户 - if (!order.getShopId().equals(shopId)) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + //绑定用户判断核销商户 + if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){ + if (!member.getRelationShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + //未绑定时下的活动订单只需要判断店铺是否支持 + String activityId = order.getActivityId(); + MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); + merActivityShopDto.setShopId(shopId); + merActivityShopDto.setActivityId(activityId); + Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); + if(!judge){ + throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY); + } + }else{ + //商城订单和绑定后活动订单判断核销商户和订单商户和用户关联商户是否统一 + if (!order.getShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if (!member.getRelationShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } } }else{ + //未绑定用户判断核销商户 //商城订单需判断商户 if(order.getOrderFrom()==1){ if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } - //未绑定用户需判断活动订单是否支持该店铺 + //未绑定用户的活动订单需判断活动订单是否支持该店铺 if(order.getOrderFrom()==2){ String activityId = order.getActivityId(); MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); @@ -1420,7 +1478,7 @@ merActivityShopDto.setActivityId(activityId); Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); if(!judge){ - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY); } } //未绑定用户需判断核销商城订单判断商品单价和优惠券 @@ -1537,9 +1595,21 @@ List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); //绑定用户判断核销商户 if(member.getBindingFlag()==1){ - //绑定用户需直接判断商户 - if (!order.getShopId().equals(shopId)) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + //未绑定的活动订单只需要判断店铺是否支持 + if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){ + String activityId = order.getActivityId(); + MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); + merActivityShopDto.setShopId(shopId); + merActivityShopDto.setActivityId(activityId); + Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); + if(!judge){ + throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY); + } + }else{ + //绑定用户需直接判断商户一致 + if (!order.getShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } } }else{ //商城订单需判断商户 @@ -1556,7 +1626,7 @@ merActivityShopDto.setActivityId(activityId); Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); if(!judge){ - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY); } } //未绑定用户需判断核销商城订单判断商品单价和优惠券 @@ -1735,9 +1805,17 @@ appMemberBindingDto.setShopId(order.getShopId()); appMemberBindingDto.setUserId(order.getUserId()); appMemberBindingDto.setBindingFlag(1); - appMemberBindingDto.setBindingType(1); + if(order.getOrderFrom()==1){ + appMemberBindingDto.setBindingType(1); + }else if(order.getOrderFrom()==2){ + appMemberBindingDto.setBindingType(2); + } remoteMemberService.updateMemberBinding(appMemberBindingDto); + order.setNewMemberFlag(1); + }else{ + order.setNewMemberFlag(0); } + this.saveOrUpdate(order); // 订单金额大于0时进行分账 if (order.getOnlinePayMoney().compareTo(BigDecimal.ZERO)>0) { submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom()); @@ -1759,6 +1837,17 @@ return merVerifyOrderVo; } + /** + * @description 分账实现 + * @author jqs + * @date 2023/9/8 11:56 + * @param orderId + * @param orderNo + * @param shopId + * @param orderMoney + * @param orderFrom + * @return void + */ private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney, Integer orderFrom) { String sendMessage = ""; String resultMessage = ""; @@ -1952,6 +2041,7 @@ merVerifyMemberCouponDto.setShopId(shopId); remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto); consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); + //绑定未绑定用户 if (member.getBindingFlag() != 1) { AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setBindingFlag(1); @@ -2070,6 +2160,7 @@ merVerifyPrizeFinalDto.setPrizeId(memberGiftRecord.getPrizeId()); merVerifyPrizeFinalDto.setShopId(shop.getShopId()); remoteMemberService.verifyPrize(merVerifyPrizeFinalDto); + //绑定未绑定用户 if (member.getBindingFlag() != 1) { AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setBindingFlag(1); @@ -2094,7 +2185,7 @@ */ @Override public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) { - List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId()); + List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto); if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { BigDecimal zeroBig = new BigDecimal("0.00"); for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) { @@ -2120,6 +2211,7 @@ order.setOfflinePayMoney(order.getOfflinePayMoney().add(merCloseOrderDto.getPayMoney())); order.setOffPayTime(new Date()); order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney())); + //支付金额大于实收金额时结清 if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(1); } else { @@ -2142,6 +2234,8 @@ * @param merNewOrderDto */ @Override + @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public void createNewOrder(MerNewOrderDto merNewOrderDto) { Long userId = merNewOrderDto.getBuyUserId(); Date nowTime = new Date(); @@ -2216,10 +2310,10 @@ OrderGoods orderGoods; String orderGoodsId; GoodsFile goodsFile; - BigDecimal cycleMoney = new BigDecimal("0.00"); - BigDecimal experienceMoney = new BigDecimal("0.00"); - BigDecimal serviceMoney = new BigDecimal("0.00"); - BigDecimal goodsMoney = new BigDecimal("0.00"); + //BigDecimal cycleMoney = new BigDecimal("0.00"); + //BigDecimal experienceMoney = new BigDecimal("0.00"); + //BigDecimal serviceMoney = new BigDecimal("0.00"); + //BigDecimal goodsMoney = new BigDecimal("0.00"); List<OrderGoods> orderGoodsList = new ArrayList<>(); ConsumerGoods consumerGoods; String consumerGoodsId; @@ -2362,7 +2456,7 @@ } //商户变更计算 - switch (orderGoods.getGoodsType()) { + /*switch (orderGoods.getGoodsType()) { case 1: cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney()); break; @@ -2377,7 +2471,7 @@ break; default: break; - } + }*/ } //创建订单 Order order = new Order(); @@ -2429,6 +2523,7 @@ appMemberBindingDto.setBindingType(3); remoteMemberService.updateMemberBinding(appMemberBindingDto); order.setNewMemberFlag(1); + order.setUnbindingFlag(0); } //保存订单和服务 this.save(order); @@ -2592,8 +2687,13 @@ BigDecimal zeroBig = new BigDecimal("0.00"); // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中 for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) { - shopId = mgtMemberOrderPageVo.getShopId(); - set.add(shopId.toString()); + if(mgtMemberOrderPageVo.getShopId()!=null){ + if(mgtMemberOrderPageVo.getShopId()!=null){ + shopId = mgtMemberOrderPageVo.getShopId(); + set.add(shopId.toString()); + } + } + } // 将set中的shopId转换为逗号分隔的字符串 String joinedString = String.join(",", set); @@ -2606,10 +2706,15 @@ .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); // 遍历MgtMemberOrderPageVoList,根据shopId获取对应的MgtSimpleShopVo并将其shopName设置到MgtMemberOrderPageVo中 for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) { - shopId = mgtMemberOrderPageVo.getShopId(); - mgtMemberOrderPageVo.setShopName(map.get(shopId).getShopName()); - BigDecimal unPaidMoney = mgtMemberOrderPageVo.getReceivableMoney().subtract(mgtMemberOrderPageVo.getPayMoney()); - mgtMemberOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney); + if(mgtMemberOrderPageVo.getShopId()!=null){ + if(mgtMemberOrderPageVo.getShopId()!=null){ + shopId = mgtMemberOrderPageVo.getShopId(); + mgtMemberOrderPageVo.setShopName(map.get(shopId).getShopName()); + BigDecimal unPaidMoney = mgtMemberOrderPageVo.getReceivableMoney().subtract(mgtMemberOrderPageVo.getPayMoney()); + mgtMemberOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney); + } + } + } } // 返回MgtMemberOrderPageVoList @@ -2656,7 +2761,10 @@ BigDecimal zeroBig = new BigDecimal("0.00"); // 遍历列表,获取店铺 ID 和用户 ID for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) { - shopIdSet.add(mgtActivityOrderPageVo.getShopId()); + if(mgtActivityOrderPageVo.getShopId()!=null){ + shopIdSet.add(mgtActivityOrderPageVo.getShopId()); + + } userIdSet.add(mgtActivityOrderPageVo.getUserId()); } // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串 @@ -2675,7 +2783,10 @@ .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); // 遍历列表,设置店铺名称、用户名称和未支付金额 for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) { - mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName()); + if(mgtActivityOrderPageVo.getShopId()!=null){ + mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName()); + + } if (userMap.get(mgtActivityOrderPageVo.getUserId()) != null) { mgtActivityOrderPageVo.setNickName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName()); mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getRealName()); @@ -3718,6 +3829,11 @@ return totalActivityTotalVo; } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { + if(shopIdList==null||shopIdList.isEmpty()){ + return totalActivityTotalVo; + } + } if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); @@ -3827,26 +3943,6 @@ totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } - //日期全部时固定为5天 - if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ - mgtBasePlatformDto.setEndDate(DateUtils.getDate()); - mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); - } - //获取订单分布 - List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); - if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { - String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; - Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; - BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; - for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { - orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); - orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); - orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); - } - totalActivityTotalVo.setOrderTotalKey(orderTotalKey); - totalActivityTotalVo.setOrderTotalValue(orderTotalValue); - totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); - } HashSet<String> set = new HashSet<>(); // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中 for (Long shopId : mgtBasePlatformDto.getShopIdList()) { @@ -3899,6 +3995,27 @@ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); mgtBasePlatformDto.setUserIdList(userIdList); } + //日期全部时固定为5天 + if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ + mgtBasePlatformDto.setEndDate(DateUtils.getDate()); + mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + } + //获取订单分布 + List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); + if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { + String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; + Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); + orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); + orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); + } + totalActivityTotalVo.setOrderTotalKey(orderTotalKey); + totalActivityTotalVo.setOrderTotalValue(orderTotalValue); + totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); + } + //参与人数 2023-09-06 另开接口 /*List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); // 将查询结果转为Map @@ -3951,8 +4068,13 @@ @Override public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { //店铺活动返回空 + MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + totalActivityTotalVo.setJoinMemberTotalKey(new String[0]); + totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); + totalActivityTotalVo.setGetMemberTotalKey(new String[0]); + totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]); if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){ - return new MgtPlTotalActivityTotalVo(); + return totalActivityTotalVo; } /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){ return new MgtPlTotalActivityTotalVo(); @@ -3972,22 +4094,34 @@ mgtBasePlatformDto.setUserIdList(userIdList); } }*/ - if(mgtBasePlatformDto.getAgeType()!=null){ - List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); - mgtBasePlatformDto.setUserIdList(userIdList); - } + List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + log.info("shopIdList1-----"+shopIdList.toString()); + log.debug("shopIdList1-----"+shopIdList.toString()); + if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { + log.info("shopIdList2-----"+shopIdList.toString()); + log.debug("shopIdList2-----"+shopIdList.toString()); + if(shopIdList==null||shopIdList.isEmpty()){ + return totalActivityTotalVo; + } + } if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); } mgtBasePlatformDto.setShopIdList(shopIdList); - MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + if(mgtBasePlatformDto.getAgeType()!=null){ + List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); + log.info("userIdList-----"+userIdList.toString()); + log.debug("userIdList-----"+userIdList.toString()); + mgtBasePlatformDto.setUserIdList(userIdList); + } //日期全部时固定为5天 if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ mgtBasePlatformDto.setEndDate(DateUtils.getDate()); mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } + log.info("mgtBasePlatformDto-----"+mgtBasePlatformDto.toString()); //参与人数 List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); // 将查询结果转为Map @@ -4019,8 +4153,13 @@ @Override public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { //店铺活动返回空 + MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + totalActivityTotalVo.setJoinMemberTotalKey(new String[0]); + totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); + totalActivityTotalVo.setGetMemberTotalKey(new String[0]); + totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]); if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){ - return new MgtPlTotalActivityTotalVo(); + return totalActivityTotalVo; } /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){ return new MgtPlTotalActivityTotalVo(); @@ -4040,17 +4179,21 @@ mgtBasePlatformDto.setUserIdList(userIdList); } }*/ - if(mgtBasePlatformDto.getAgeType()!=null){ - List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); - mgtBasePlatformDto.setUserIdList(userIdList); - } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { + if(shopIdList==null||shopIdList.isEmpty()){ + return totalActivityTotalVo; + } + } if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); } mgtBasePlatformDto.setShopIdList(shopIdList); - MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + if(mgtBasePlatformDto.getAgeType()!=null){ + List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); + mgtBasePlatformDto.setUserIdList(userIdList); + } //日期全部时固定为5天 if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ mgtBasePlatformDto.setEndDate(DateUtils.getDate()); @@ -4867,8 +5010,6 @@ } activityTotalChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityTotal(activityTotalChangeDto); - - //活动订单进行分账 /*ProfitSharingApplyRequest request=new ProfitSharingApplyRequest(); request.setAppid(this.appId); @@ -4878,7 +5019,6 @@ } //修改支付记录生成支付记录 orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId()); - PayRecord payRecord = new PayRecord(); payRecord.setDelFlag(0); payRecord.setOrderId(orderId); @@ -4886,6 +5026,9 @@ payRecord.setPayTime(order.getPayTime()); payRecord.setPayType(1); payRecordService.save(payRecord); + //删除超时取消延时任务 + redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); + remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId); } @Override @@ -5059,6 +5202,7 @@ // 更新会员统计信息 remoteMemberService.changeMemberTotal(memberTotalChangeDto); // 如果订单来源于活动,则更新活动统计信息 + //TODO 可考虑改成定时任务统一查询后增加 减少服务器压力但会增加延后性 if (order.getOrderFrom() == 2) { ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto(); activityTotalChangeDto.setActivityId(order.getActivityId()); @@ -5693,9 +5837,6 @@ List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto); if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { Long userId; - Member member; - Integer orderFrom; - String orderFromDesc; BigDecimal zeroBig = new BigDecimal("0.00"); StringJoiner userIdSj = new StringJoiner(","); for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { @@ -5774,11 +5915,14 @@ } @Override - public ProfitSharingResult queryBill(String transactionId,String outOrderNo) throws WxPayException { + public ProfitSharingResult queryBill(String orderId) throws WxPayException { + OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId); + ProfitSharing profitSharing = profitSharingService.getByOrderId(orderId); + ProfitSharingQueryRequest request = new ProfitSharingQueryRequest(); request.setSubMchid("1650744551"); - request.setTransactionId(transactionId); - request.setOutOrderNo(outOrderNo); + request.setTransactionId(orderPayment.getTransactionId()); + request.setOutOrderNo(profitSharing.getShareId()); ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request); return profitSharingResult; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index a187676..be5d986 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -588,5 +588,5 @@ MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto); - ProfitSharingResult queryBill(String transactionId,String outOrderNo) throws WxPayException; + ProfitSharingResult queryBill(String orderId) throws WxPayException; } diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index ab841af..694d882 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml @@ -348,7 +348,7 @@ toc.create_time createTime, toc.close_flag closeFlag FROM t_order toc - WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 3 + WHERE toc.del_flag = 0 AND toc.user_id = #{param.memberUserId} AND toc.order_status = 3 <if test="param.closeFlag != null and param.closeFlag != ''"> AND toc.close_flag = #{param.closeFlag} </if> @@ -455,7 +455,7 @@ WHEN 2 THEN "待核销" WHEN 3 THEN "已完成" END orderStatus, - toc.shop_id shopId, + CASE WHEN toc.unbinding_flag = 0 THEN toc.shop_id WHEN toc.unbinding_flag = 1 AND toc.order_from = 1 THEN toc.shop_id WHEN toc.order_status = 3 THEN toc.shop_id ELSE NULL END shopId, toc.order_money orderGoodsMoney, toc.discount_money discountMoney, toc.receivable_money receivableMoney, @@ -475,7 +475,7 @@ AND toc.order_status = #{param.orderStatus} </if> <if test="param.shopId != null and param.shopId != ''"> - AND toc.shop_id = #{param.shopId} + AND toc.shop_id = #{param.shopId} AND (toc.unbinding_flag = 0 OR (toc.unbinding_flag = 1 AND toc.order_from = 1) OR (toc.unbinding_flag = 1 AND toc.order_from = 2 AND toc.order_status = 3)) </if> <if test="param.orderFrom != null and param.orderFrom != ''"> AND toc.order_from = #{param.orderFrom} @@ -524,7 +524,7 @@ toc.receivable_money receivableMoney, toc.create_time createTime, toc.pay_money payMoney, - toc.shop_id shopId, + CASE WHEN toc.unbinding_flag = 0 THEN toc.shop_id WHEN toc.unbinding_flag = 1 AND toc.order_from = 1 THEN toc.shop_id WHEN toc.order_status = 3 THEN toc.shop_id ELSE NULL END shopId, toc.use_time verifyTime FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id @@ -536,7 +536,7 @@ AND tog.goods_type = #{param.goodsType} </if> <if test="param.shopId != null and param.shopId != ''"> - AND toc.shop_id = #{param.shopId} + AND toc.shop_id = #{param.shopId} AND (toc.unbinding_flag = 0 OR (toc.unbinding_flag = 1 AND toc.order_from = 1) OR (toc.unbinding_flag = 1 AND toc.order_from = 2 AND toc.order_status = 3)) </if> <if test="param.shopIds != null and param.shopIds != ''"> AND FIND_IN_SET(toc.shop_id, #{param.shopIds}) > 0 @@ -705,7 +705,7 @@ toc.receivable_money receivableMoney, toc.create_time createTime, toc.pay_money payMoney, - toc.shop_id shopId, + CASE WHEN toc.unbinding_flag = 0 THEN toc.shop_id WHEN toc.unbinding_flag = 1 AND toc.order_from = 1 THEN toc.shop_id WHEN toc.order_status = 3 THEN toc.shop_id ELSE NULL END shopId, toc.use_time verifyTime, CASE toc.order_from WHEN 1 THEN '小程序' WHEN 2 THEN '秒杀活动' WHEN 3 THEN '线下创建' END orderFrom, #{param.keyword} AS keyword @@ -718,7 +718,7 @@ AND tog.goods_type = #{param.goodsType} </if> <if test="param.shopId != null and param.shopId != ''"> - AND toc.shop_id = #{param.shopId} + AND toc.shop_id = #{param.shopId} AND (toc.unbinding_flag = 0 OR (toc.unbinding_flag = 1 AND toc.order_from = 1) OR (toc.unbinding_flag = 1 AND toc.order_from = 2 AND toc.order_status = 3)) </if> <if test="param.shopIds != null and param.shopIds != ''"> AND FIND_IN_SET(toc.shop_id, #{param.shopIds}) > 0 @@ -893,7 +893,7 @@ END mapKey, IFNULL(SUM(CASE WHEN toc.pay_type = 1 THEN toc.change_receivable_money WHEN toc.pay_type = 2 THEN toc.change_receivable_money + toc.online_pay_money ELSE 0 END),0) mapValue FROM t_order toc - WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) + WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -912,7 +912,7 @@ COUNT(CASE WHEN order_status = 3 THEN order_id ELSE NULL END) orderTotal, IFNULL(SUM(CASE WHEN order_status = 3 AND pay_type = 1 THEN change_receivable_money WHEN order_status = 3 AND pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) orderMoney, COUNT(DISTINCT user_id) orderJoinPerson - FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) AND shop_id = #{param.shopId} + FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status =3 AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -1001,7 +1001,7 @@ COUNT(DISTINCT CASE WHEN tog.goods_type = 4 THEN toc.user_id ELSE NULL END) goodsPerson, COUNT(DISTINCT CASE WHEN tog.goods_type = 4 THEN toc.order_id ELSE NULL END) goodsNumber FROM t_order toc - INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id + INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -1063,7 +1063,7 @@ COUNT(DISTINCT toc.order_id) orderCount FROM t_order toc INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id - WHERE toc.del_flag = 0 AND tog.goods_type = 1 + WHERE toc.del_flag = 0 AND tog.goods_type = 1 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -1104,7 +1104,7 @@ INNER JOIN (SELECT toc.user_id, toc.pay_time FROM t_order toc INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id - WHERE toc.del_flag = 0 AND tog.goods_type = 1 + WHERE toc.del_flag = 0 AND tog.goods_type = 1 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -1221,7 +1221,7 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) + WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1291,7 +1291,7 @@ COUNT(CASE WHEN order_status = 3 THEN order_id ELSE NULL END) orderTotal, IFNULL(SUM(CASE WHEN order_status = 3 AND pay_type = 1 THEN change_receivable_money WHEN order_status = 3 AND pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) orderMoney, COUNT(DISTINCT user_id) orderJoinPerson - FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) + FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> @@ -1459,7 +1459,7 @@ <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT shop_id AS mapKey, - COUNT(order_id) AS mapValue + COUNT(DISTINCT activity_id) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> @@ -1983,7 +1983,7 @@ COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status IN (2,3) + WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} </if> @@ -2017,12 +2017,9 @@ COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.del_flag = 0 AND toc.order_from = 2 - <if test="param.shopId == null"> - AND toc.order_status IN (2,3) AND toc.shop_id = #{param.shopId} - </if> + WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> - AND toc.order_status = 3 AND toc.shop_id = #{param.shopId} + AND toc.shop_id = #{param.shopId} </if> <if test="param.userIdList !=null and param.userIdList.size()>0"> AND toc.user_id IN diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopProportionPageDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopProportionPageDto.java index fd99b79..4a100e2 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopProportionPageDto.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopProportionPageDto.java @@ -17,5 +17,6 @@ @ApiModelProperty(value = "商户类型1经销商2代理商") private Integer shopType ; - + @ApiModelProperty(value = "商户名称") + private String shopName ; } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java index 062f682..c148a91 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java @@ -29,7 +29,7 @@ /** * 每天凌晨定时检查今日跟进任务状态 */ - @Scheduled(cron="5 0 * * * ?") + @Scheduled(cron="0 1 0 * * ?") private void timingCheckMemberCoupon(){ if(schedulerUtils.getSchedulerRun()) { log.info("--------------------定时检查跟进任务状态任务开始执行--------------------"); diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index ad97639..dbec3f1 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml @@ -454,6 +454,9 @@ FROM t_shop ts INNER JOIN t_shop_proportion tsp ON ts.shop_id = tsp.shop_id AND tsp.del_flag = 0 WHERE ts.del_flag = 0 AND ts.shop_type = #{param.shopType} + <if test="param.shopName!=null and param.shopName!=''"> + AND ts.shop_name LIKE CONCAT('%',#{param.shopName},'%') + </if> </select> <update id="deleteShopTag"> diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml index 8fe82fb..e91339a 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml @@ -123,7 +123,7 @@ <update id="checkShopTaskStatus"> UPDATE t_shop_task SET task_status = CASE - WHEN task_date = CURDATE() THEN 1 + WHEN task_date = CURDATE() AND task_status = 0 THEN 1 WHEN task_date < CURDATE() AND task_status < 2 THEN 3 ELSE task_status END @@ -132,7 +132,7 @@ <update id="checkMemberTaskStatus"> UPDATE t_member_task SET task_status = CASE - WHEN task_date = CURDATE() THEN 1 + WHEN task_date = CURDATE() AND task_status = 0 THEN 1 WHEN task_date < CURDATE() AND task_status < 2 THEN 3 ELSE task_status END @@ -141,7 +141,7 @@ <update id="checkAgencyTaskStatus"> UPDATE t_agency_task SET task_status = CASE - WHEN task_date = CURDATE() THEN 1 + WHEN task_date = CURDATE() AND task_status = 0 THEN 1 WHEN task_date < CURDATE() AND task_status < 2 THEN 3 ELSE task_status END diff --git a/ruoyi-modules/ruoyi-shop/src/test/java/com/ruioyi/shop/shopTest.java b/ruoyi-modules/ruoyi-shop/src/test/java/com/ruioyi/shop/shopTest.java index b7c3bc5..8553ae1 100644 --- a/ruoyi-modules/ruoyi-shop/src/test/java/com/ruioyi/shop/shopTest.java +++ b/ruoyi-modules/ruoyi-shop/src/test/java/com/ruioyi/shop/shopTest.java @@ -11,7 +11,7 @@ /** * @ClassName systemTest - * @Description TODO + * @Description * @Author jqs * @Date 2023/6/7 10:57 * @Version 1.0 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java index 3a1b395..b4ce83d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java @@ -44,7 +44,7 @@ DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL); dataSourceConfig.setTypeConvert(new MySqlTypeConvert()); - dataSourceConfig.setUrl("jdbc:mysql://47.109.78.184:10010/hrt_shop?tinyInt1isBit=false"); + dataSourceConfig.setUrl("jdbc:mysql://47.109.78.184:10010/hrt_sys?tinyInt1isBit=false"); dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); dataSourceConfig.setUsername("root"); dataSourceConfig.setPassword("hrt123456"); @@ -53,7 +53,7 @@ // 包名配置 PackageConfig packageConfig = new PackageConfig(); // 父包和子包名分开处理 - packageConfig.setParent("com.ruoyi.shop"); + packageConfig.setParent("com.ruoyi.system"); packageConfig.setController("app"); packageConfig.setEntity("domain.pojo"); packageConfig.setMapper("mapper"); @@ -74,7 +74,7 @@ strategy.setControllerMappingHyphenStyle(true); //表和前缀处理 String[] table = { - "t_shop_customer" + "t_file_record" }; strategy.setInclude(table); String[] tablePre = new String[]{"t_"}; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java index b9771d8..7afe3fc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java @@ -4,10 +4,7 @@ import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtClassNumDto; import com.ruoyi.system.api.domain.dto.MgtUserIdByDept; -import com.ruoyi.system.api.domain.poji.config.Activeness; -import com.ruoyi.system.api.domain.poji.config.DelayTask; -import com.ruoyi.system.api.domain.poji.config.SysClassification; -import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.config.*; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; @@ -55,6 +52,9 @@ @Resource private SysStaffService sysStaffService; + + @Resource + private FileRecordService fileRecordService; /** @@ -237,4 +237,18 @@ List<SysStaff> sysStaffList = sysStaffService.listSysStaffByIds(userIdList); return R.ok(sysStaffList); } + + /** + * @description 创建文件上传记录 + * @author jqs + * @date 2023/9/11 11:56 + * @param fileRecord + * @return R + */ + @PostMapping("/createFileRecord") + public R createFileRecord(@RequestBody FileRecord fileRecord) + { + fileRecordService.createFileRecord(fileRecord); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/FileRecordMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/FileRecordMapper.java new file mode 100644 index 0000000..9bddff2 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/FileRecordMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.mapper.config; + +import com.ruoyi.system.api.domain.poji.config.FileRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-09-11 + */ +public interface FileRecordMapper extends BaseMapper<FileRecord> { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/FileRecordService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/FileRecordService.java new file mode 100644 index 0000000..93def02 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/FileRecordService.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.service.config; + +import com.ruoyi.system.api.domain.poji.config.FileRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * 服务类 + * </p> + * + * @author jqs + * @since 2023-09-11 + */ +public interface FileRecordService extends IService<FileRecord> { + + /** + * @description 创建文件上传记录 + * @author jqs + * @date 2023/9/11 11:53 + * @param fileRecord + * @return void + */ + void createFileRecord(FileRecord fileRecord); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/FileRecordServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/FileRecordServiceImpl.java new file mode 100644 index 0000000..3cb2f93 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/FileRecordServiceImpl.java @@ -0,0 +1,31 @@ +package com.ruoyi.system.service.impl.config; + +import com.ruoyi.system.api.domain.poji.config.FileRecord; +import com.ruoyi.system.mapper.config.FileRecordMapper; +import com.ruoyi.system.service.config.FileRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 服务实现类 + * </p> + * + * @author jqs + * @since 2023-09-11 + */ +@Service +public class FileRecordServiceImpl extends ServiceImpl<FileRecordMapper, FileRecord> implements FileRecordService { + + /** + * @description 创建文件上传记录 + * @author jqs + * @date 2023/9/11 11:53 + * @param fileRecord + * @return void + */ + @Override + public void createFileRecord(FileRecord fileRecord){ + this.saveOrUpdate(fileRecord); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java index c69d991..a3facc5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java @@ -200,7 +200,8 @@ mgtShopStaffEditDto.setStaffAvatar(sysStaff.getStaffAvatar()); remoteShopService.editMgtShopStaff(mgtShopStaffEditDto); //如果wxUserId和wxDeptId不为空 同步到企业微信 - if(mgtStaffEditDto.getWxUserId()!=null&&sysDept.getWxDeptId()!=null){ + if(sysStaff.getWxUserId()!=null&&sysDept.getWxDeptId()!=null){ + log.debug("同步员工到企业微信:"+mgtStaffEditDto.getStaffName()); MgtWxCPStaffDto mgtWxCPStaffDto = new MgtWxCPStaffDto(); mgtWxCPStaffDto.setWxDeptId(sysDept.getWxDeptId()); mgtWxCPStaffDto.setWxUserId(mgtStaffEditDto.getWxUserId()); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java index cd8a981..ca76233 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java @@ -141,7 +141,7 @@ private WxCpUser getWxCpUser(String wxUserId){ WxCpUser wxCpUser = null; try { - wxCpUser = adWxCpService.getUserService().getById(wxUserId); + wxCpUser = wxCpService.getUserService().getById(wxUserId); } catch (WxErrorException e) { throw new RuntimeException(e); } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/FileRecordMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/FileRecordMapper.xml new file mode 100644 index 0000000..6fe55d2 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/FileRecordMapper.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.system.mapper.config.FileRecordMapper"> + + +</mapper> diff --git a/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java b/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java index 3c0ecdf..b7f172b 100644 --- a/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java +++ b/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java @@ -1,7 +1,10 @@ package com.ruoyi.system; +import com.ruoyi.system.domain.dto.MgtStaffEditDto; +import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; +import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -22,4 +25,21 @@ @Resource private SysWxCpService sysWxCpService; + @Resource + private SysStaffService sysStaffService; + + @Test + public void main() { + MgtStaffEditDto mgtStaffEditDto = new MgtStaffEditDto(); + mgtStaffEditDto.setDeptId(2051L); + mgtStaffEditDto.setSysUserId(146L); + mgtStaffEditDto.setStaffName("江秋实1号"); + mgtStaffEditDto.setStaffMobile("13882237106"); + mgtStaffEditDto.setStaffPost("开发"); + mgtStaffEditDto.setHeadFlag("1"); + mgtStaffEditDto.setUserId(146L); + sysStaffService.mgtStaffEdit(mgtStaffEditDto); + + } + } -- Gitblit v1.7.1