serv-学习管理

This commit is contained in:
2025-10-21 16:21:19 +08:00
parent f72a5cec61
commit 9824a7d686
27 changed files with 1192 additions and 336 deletions

View File

@@ -24,6 +24,11 @@
<artifactId>api-news</artifactId>
<version>${school-news.version}</version>
</dependency>
<dependency>
<groupId>org.xyzh</groupId>
<artifactId>api-usercenter</artifactId>
<version>${school-news.version}</version>
</dependency>
<dependency>
<groupId>org.xyzh</groupId>
<artifactId>system</artifactId>

View File

@@ -1,6 +1,7 @@
package org.xyzh.news.controller;
import java.util.Date;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,6 +14,7 @@ import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.core.page.PageRequest;
import org.xyzh.common.dto.resource.TbResource;
import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.usercenter.TbUserCollection;
import org.xyzh.common.utils.TimeUtils;
import org.xyzh.common.vo.ResourceVO;
import org.xyzh.system.utils.LoginUtil;
@@ -137,9 +139,9 @@ public class ResourceController {
/**
* 增加收藏次数
*/
@PostMapping("/resource/{resourceID}/collect")
public ResultDomain<TbResource> incrementCollectCount(@PathVariable("resourceID") String resourceID) {
return resourceService.incrementCollectCount(resourceID);
@PostMapping("/resource/collect")
public ResultDomain<TbResource> resourceCollect(@RequestBody TbUserCollection collection) {
return resourceService.resourceCollect(collection);
}
/**

View File

@@ -163,4 +163,14 @@ public interface ResourceMapper extends BaseMapper<TbResource> {
* @since 2025-10-15
*/
long countResources(TbResource filter);
/**
* @description 更新资源收藏次数
* @param resourceID 资源ID
* @param collectionValue 收藏次数
* @return int 影响行数
* @author yslg
* @since 2025-10-15
*/
int updateResourceCollectCount(@Param("resourceID") String resourceID, @Param("collectionValue") Integer collectionValue);
}

View File

@@ -13,6 +13,7 @@ import org.xyzh.common.dto.resource.TbResource;
import org.xyzh.common.dto.resource.TbResourceTag;
import org.xyzh.common.dto.resource.TbTag;
import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.usercenter.TbUserCollection;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.vo.ResourceVO;
import org.xyzh.common.vo.TagVO;
@@ -20,6 +21,7 @@ import org.xyzh.news.mapper.ResourceMapper;
import org.xyzh.news.mapper.ResourceTagMapper;
import org.xyzh.system.utils.LoginUtil;
import org.xyzh.api.news.resource.ResourceService;
import org.xyzh.api.usercenter.collection.UserCollectionService;
import java.util.ArrayList;
import java.util.Date;
@@ -44,6 +46,9 @@ public class NCResourceServiceImpl implements ResourceService {
@Autowired
private ResourceTagMapper resourceTagMapper;
@Autowired
private UserCollectionService userCollectionService;
@Override
public ResultDomain<TbResource> getResourceList(TbResource filter) {
ResultDomain<TbResource> resultDomain = new ResultDomain<>();
@@ -530,36 +535,57 @@ public class NCResourceServiceImpl implements ResourceService {
@Override
@Transactional(rollbackFor = Exception.class)
public ResultDomain<TbResource> incrementCollectCount(String resourceID) {
public ResultDomain<TbResource> resourceCollect(TbUserCollection collection) {
String resourceID = collection.getCollectionID();
Integer collectionValue = collection.getCollectionValue();
ResultDomain<TbResource> resultDomain = new ResultDomain<>();
TbSysUser user = LoginUtil.getCurrentUser();
if (user == null) {
resultDomain.fail("请先登录");
return resultDomain;
}
collection.setUserID(user.getID());
try {
// 参数验证
if (!StringUtils.hasText(resourceID)) {
resultDomain.fail("资源ID不能为空");
return resultDomain;
}
// 查询资源
TbResource resource = resourceMapper.selectByResourceId(resourceID);
if (resource == null || resource.getDeleted()) {
resultDomain.fail("资源不存在");
if (collectionValue != 1 && collectionValue != -1) {
resultDomain.fail("收藏值错误");
return resultDomain;
}
// 增加收藏次数
Integer currentCount = resource.getCollectCount() != null ? resource.getCollectCount() : 0;
resource.setCollectCount(currentCount + 1);
resource.setUpdateTime(new Date());
int result = resourceMapper.updateResource(resource);
if (result > 0) {
logger.info("增加资源收藏次数成功: {}", resourceID);
// 重新查询返回完整数据
TbResource updated = resourceMapper.selectById(resource.getID());
resultDomain.success("增加收藏次数成功", updated);
ResultDomain<Boolean> isCollected = userCollectionService.isCollected(user.getID(), collection.getCollectionType(), resourceID);
TbResource resource = new TbResource();
resource.setResourceID(resourceID);
if (isCollected.isSuccess() && isCollected.getData() && collectionValue == 1) {
resultDomain.success("已收藏", resource);
return resultDomain;
} else {
resultDomain.fail("增加收藏次数失败");
}
else if (isCollected.isSuccess() && isCollected.getData() && collectionValue == -1) {
ResultDomain<Boolean> removeCollection = userCollectionService.removeCollection(user.getID(), collection.getCollectionType(), resourceID);
if (removeCollection.isSuccess()) {
resourceMapper.updateResourceCollectCount(resourceID, -1);
resultDomain.success("已取消收藏", resource);
return resultDomain;
} else {
resultDomain.fail("取消收藏失败");
return resultDomain;
}
}else if (isCollected.isSuccess() && !isCollected.getData() && collectionValue == 1) {
collection.setID(IDUtils.generateID());
collection.setCreateTime(new Date());
ResultDomain<TbUserCollection> addCollection = userCollectionService.addCollection(collection);
if (addCollection.isSuccess() && addCollection.getData() != null) {
resourceMapper.updateResourceCollectCount(resourceID, 1);
resultDomain.success("已收藏", resource);
return resultDomain;
} else {
resultDomain.fail("收藏失败");
return resultDomain;
}
}else {
resultDomain.success("未收藏", resource);
return resultDomain;
}
} catch (Exception e) {

View File

@@ -303,4 +303,11 @@
<include refid="Where_Clause" />
</select>
<!-- updateResourceCollectCount -->
<update id="updateResourceCollectCount">
UPDATE tb_resource
SET collect_count = collect_count + #{collectionValue}
WHERE resource_id = #{resourceID}
</update>
</mapper>