diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index a9a34119c..365aa1b92 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -183,8 +183,8 @@ tenant: - sys_tenant_extend - red_packet - red_packet_receive - - commission_template - - commission_rate_range + - sys_commission_template + - sys_commission_rate_range diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java index 4f2e4a6c8..0c0797fc1 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java @@ -114,53 +114,51 @@ public class VlogUploadController extends BaseInfoProperties { log.info("腾讯云 SearchMedia API 调用成功,总记录数: {}", resp.getTotalCount()); // 处理响应结果 + Map result = new HashMap<>(); + result.put("total", resp.getTotalCount()); + result.put("current", vlogBO.getCurrent()); + result.put("size", vlogBO.getSize()); + result.put("pages", (resp.getTotalCount() + vlogBO.getSize() - 1) / vlogBO.getSize()); // 总页数 + List> mediaList = new ArrayList<>(); if (resp.getMediaInfoSet() != null) { for (MediaInfo mediaInfo : resp.getMediaInfoSet()) { Map mediaMap = new HashMap<>(); + // 基础信息 MediaBasicInfo basicInfo = mediaInfo.getBasicInfo(); - - // 1. 映射字段(与表结构一致) - String fileId = mediaInfo.getFileId(); - mediaMap.put("vloger_id", vlogBO.getVlogerId()); - mediaMap.put("url", basicInfo.getMediaUrl()); - mediaMap.put("cover", basicInfo.getCoverUrl()); - mediaMap.put("title", basicInfo.getName()); - mediaMap.put("create_time", basicInfo.getCreateTime()); - mediaMap.put("update_time", basicInfo.getUpdateTime()); + mediaMap.put("fileId", mediaInfo.getFileId()); + mediaMap.put("name", basicInfo.getName()); + mediaMap.put("description", basicInfo.getDescription()); + mediaMap.put("createTime", basicInfo.getCreateTime()); + mediaMap.put("updateTime", basicInfo.getUpdateTime()); + mediaMap.put("expireTime", basicInfo.getExpireTime()); + mediaMap.put("classId", basicInfo.getClassId()); + mediaMap.put("className", basicInfo.getClassName()); + mediaMap.put("classPath", basicInfo.getClassPath()); + mediaMap.put("coverUrl", basicInfo.getCoverUrl()); + mediaMap.put("type", basicInfo.getType()); + mediaMap.put("mediaUrl", basicInfo.getMediaUrl()); mediaMap.put("status", basicInfo.getStatus()); - mediaMap.put("file_id", fileId); - mediaMap.put("first_frame_img", vlogBO.getFirstFrameImg()); + mediaMap.put("storageRegion", basicInfo.getStorageRegion()); + mediaMap.put("category", basicInfo.getCategory()); + mediaMap.put("storageClass", basicInfo.getStorageClass()); + mediaMap.put("tagSet", basicInfo.getTagSet()); + // 获取视频统计信息 + Map statistics = vlogService.getVlogStatistics(mediaInfo.getFileId()); + mediaMap.putAll(statistics); - // 2. 点赞数和评论数从Redis获取 - String likeCountsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + fileId); - Integer likeCounts = 0; - if (StringUtils.isNotBlank(likeCountsStr)) { - try { - likeCounts = Integer.valueOf(likeCountsStr); - } catch (NumberFormatException e) { - log.warn("Redis中视频{}的点赞数格式错误: {}", fileId, likeCountsStr); - likeCounts = 0; - } + // 获取视频上传者信息 + Map uploaderInfo = vlogService.getVlogUploaderInfo(mediaInfo.getFileId()); + if (uploaderInfo != null) { + mediaMap.put("nickname", uploaderInfo.get("name")); + mediaMap.put("mobile", uploaderInfo.get("phone")); } - mediaMap.put("like_counts", likeCounts); - - String commentCountsStr = redis.get(REDIS_VLOG_COMMENT_COUNTS + ":" + fileId); - Integer commentCounts = 0; - if (StringUtils.isNotBlank(commentCountsStr)) { - try { - commentCounts = Integer.valueOf(commentCountsStr); - } catch (NumberFormatException e) { - log.warn("Redis中视频{}的评论数格式错误: {}", fileId, commentCountsStr); - commentCounts = 0; - } - } - mediaMap.put("comments_counts", commentCounts); mediaList.add(mediaMap); } } + result.put("records", mediaList); // 构建Page对象 Page> page = new Page<>(); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/AccountDetailServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/AccountDetailServiceImpl.java index 0bbc0909f..678b4735a 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/AccountDetailServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/AccountDetailServiceImpl.java @@ -43,6 +43,11 @@ public class AccountDetailServiceImpl implements IAccountDetailService { endTime = queryBO.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } + // 记录查询参数日志 + log.info("查询账户明细,参数:memberId={}, accountId={}, changeType={}, source={}, startTime={}, endTime={}", + queryBO.getMemberId(), queryBO.getAccountId(), queryBO.getChangeType(), + queryBO.getSource(), startTime, endTime); + // 查询数据 IPage result = accountChangeRecordMapper.selectAccountDetailPage( page, queryBO.getMemberId(), queryBO.getAccountId(), @@ -61,6 +66,7 @@ public class AccountDetailServiceImpl implements IAccountDetailService { record.setUserTypeDesc(UserTypeEnum.getDesc(userType)); } + log.info("查询账户明细完成,共查询到{}条记录", result.getTotal()); return result; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/utils/UserTypeUtils.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/utils/UserTypeUtils.java new file mode 100644 index 000000000..edbd836e2 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/utils/UserTypeUtils.java @@ -0,0 +1,113 @@ +package com.wzj.soopin.member.utils; + +import lombok.Data; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.core.domain.model.LoginUser; + +/** + * 用户类型工具类 + */ +public class UserTypeUtils { + + @Data + public static class UserInfo { + private Long userId; + private Integer userType; // 1-租户 2-会员 + private String userTypeDesc; + private Long memberId; // 会员ID,如果是会员用户 + private Long tenantId; // 租户ID,如果是租户用户 + private Long accountId; // 账户ID,用于查询 + } + + /** + * 获取当前登录用户信息 + */ + public static UserInfo getCurrentUserInfo() { + LoginUser loginUser = LoginHelper.getLoginUser(); + if (loginUser == null) { + throw new RuntimeException("用户未登录"); + } + + UserInfo userInfo = new UserInfo(); + userInfo.setUserId(loginUser.getUserId()); + + String userType = loginUser.getUserType(); + + if (StringUtils.isNotBlank(userType)) { + if ("member".equalsIgnoreCase(userType) || "2".equals(userType)) { + // 会员用户 + userInfo.setUserType(2); + userInfo.setUserTypeDesc("会员"); + userInfo.setMemberId(loginUser.getUserId()); + userInfo.setAccountId(loginUser.getUserId()); + } else if ("tenant".equalsIgnoreCase(userType) || "1".equals(userType)) { + // 租户用户 + userInfo.setUserType(1); + userInfo.setUserTypeDesc("租户"); + userInfo.setTenantId(loginUser.getUserId()); + userInfo.setAccountId(loginUser.getUserId()); + } else { + // 默认按会员处理 + userInfo.setUserType(2); + userInfo.setUserTypeDesc("会员"); + userInfo.setMemberId(loginUser.getUserId()); + userInfo.setAccountId(loginUser.getUserId()); + } + } else { + // 如果没有用户类型信息,默认按会员处理 + userInfo.setUserType(2); + userInfo.setUserTypeDesc("会员"); + userInfo.setMemberId(loginUser.getUserId()); + userInfo.setAccountId(loginUser.getUserId()); + } + + return userInfo; + } + + /** + * 判断当前用户是否为会员 + */ + public static boolean isMember() { + UserInfo userInfo = getCurrentUserInfo(); + return userInfo.getUserType() == 2; + } + + /** + * 判断当前用户是否为租户 + */ + public static boolean isTenant() { + UserInfo userInfo = getCurrentUserInfo(); + return userInfo.getUserType() == 1; + } + + /** + * 获取当前用户的会员ID(如果是会员) + */ + public static Long getCurrentMemberId() { + UserInfo userInfo = getCurrentUserInfo(); + if (userInfo.getUserType() != 2) { + throw new RuntimeException("当前用户不是会员"); + } + return userInfo.getMemberId(); + } + + /** + * 获取当前用户的租户ID(如果是租户) + */ + public static Long getCurrentTenantId() { + UserInfo userInfo = getCurrentUserInfo(); + if (userInfo.getUserType() != 1) { + throw new RuntimeException("当前用户不是租户"); + } + return userInfo.getTenantId(); + } + + /** + * 获取当前用户的账户ID + */ + public static Long getCurrentAccountId() { + UserInfo userInfo = getCurrentUserInfo(); + return userInfo.getAccountId(); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/CommissionSectionController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/CommissionSectionController.java index 0ae76624c..b7e574f1d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/CommissionSectionController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/CommissionSectionController.java @@ -82,17 +82,22 @@ public class CommissionSectionController { return R.ok(true); } - /** 批量新增分成比例区间 */ - @Operation(summary = "批量新增分成比例区间") + /** 批量新增或修改分成比例区间 */ + @Operation(summary = "批量新增或修改分成比例区间") @Log(title = "分成比例区间", businessType = BusinessType.INSERT) @PostMapping("/batch") - public R batchAdd(@RequestBody CommissionSectionBatchAddDTO dto) { + public R batchAddOrUpdate(@RequestBody CommissionSectionBatchAddDTO dto) { // 反序列化字符串为List List list = cn.hutool.json.JSONUtil.toList(dto.getTemplateList(), CommissionSectionBo.class); // 给每个bo设置templateId for (CommissionSectionBo bo : list) { bo.setTemplateId(dto.getTemplateId()); - commissionSectionService.insertByBo(bo); + // 判断是否有ID,有ID则修改,没有ID则新增 + if (bo.getId() != null) { + commissionSectionService.updateByBo(bo); + } else { + commissionSectionService.insertByBo(bo); + } } return R.ok(true); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionSection.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionSection.java index 6042110b7..9077f1541 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionSection.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionSection.java @@ -20,7 +20,7 @@ import java.time.LocalDateTime; @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -@TableName("commission_rate_range") +@TableName("sys_commission_rate_range") @Schema(name = "CommissionSection", description = "分成比例区间表") public class CommissionSection extends BaseAudit { /** 主键,自增ID */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionTemplate.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionTemplate.java index f6483e390..c3073c22f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionTemplate.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CommissionTemplate.java @@ -19,7 +19,7 @@ import java.time.LocalDateTime; @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -@TableName("commission_template") +@TableName("sys_commission_template") @Schema(name = "CommissionTemplate", description = "分成比例模板表") public class CommissionTemplate extends BaseAudit { /** 主键,自增ID */