Compare commits

...

2 Commits

14 changed files with 201 additions and 146 deletions

View File

@ -7,6 +7,9 @@ import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.R;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.communityCenter.service.InviteService;
import com.mcwl.myInvitation.domain.Consume;
import com.mcwl.myInvitation.service.ConsumeService;
import com.mcwl.resource.domain.ModelProduct;
import com.mcwl.resource.domain.ModelVersion;
import com.mcwl.resource.domain.dto.ModelImagePageRes;
@ -24,6 +27,10 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
/**
@ -51,6 +58,9 @@ public class MallProductController extends BaseController {
@Autowired
private SysUserServiceImpl sysUserService;
@Autowired
private ConsumeService consumeService;
/**
*
@ -70,6 +80,17 @@ public class MallProductController extends BaseController {
RequestModel requestModel = new RequestModel();
ModelProduct modelVersion1 = modelService.getById(id);
Set<Long> productIdSet = consumeService.lambdaQuery()
.eq(Consume::getUserId, SecurityUtils.getUserId())
.eq(Consume::getType, 0)
.list()
.parallelStream()
.map(Consume::getProductId)
.collect(Collectors.toSet());
Optional.ofNullable(modelVersion1)
.filter(m -> productIdSet.contains(m.getId()))
.ifPresent(m -> m.setIsBuy(1));
LambdaQueryWrapper<ModelVersion> modelVersionLambdaQueryWrapper = new LambdaQueryWrapper<>();
modelVersionLambdaQueryWrapper.eq(ModelVersion::getModelId,id);

View File

@ -29,7 +29,7 @@ public class Consume extends BaseEntity {
// 商品id
private Long productId;
// 商品类型
// 商品类型 0模型 1工作流 2图片
private Integer type;
// 消费时间

View File

@ -324,10 +324,6 @@ public class AliPayServiceImpl implements AliPayService {
// 收款方信息
Participant payeeInfo = new Participant();
// 沙箱环境
// payeeInfo.setIdentity("2088722057445020");
// payeeInfo.setIdentityType("ALIPAY_USER_ID");
// 线上环境
payeeInfo.setIdentity(sysUserPayAccount.getOpenId());
payeeInfo.setIdentityType("ALIPAY_OPEN_ID");
@ -550,9 +546,7 @@ public class AliPayServiceImpl implements AliPayService {
// 设置支付宝公钥,因为配置了证书,所以不需要设置支付宝公钥
// config.setAlipayPublicKey(aliConfig.getPublicKey());
// 设置应用公钥证书路径(线上)
// config.setAppCertPath(getClass().getResource("/cert/appCertPublicKey.crt").getPath());
// 设置应用公钥证书路径(沙箱)
// 设置应用公钥证书路径
config.setAppCertPath(aliConfig.getAppCertPath());
// 设置支付宝公钥证书路径

View File

@ -167,4 +167,12 @@ public class ModelProduct extends BaseEntity {
private Integer isLike;
/**
*
*/
@ApiModelProperty(value = "是否购买 0未购买 1购买")
@TableField(exist = false)
private Integer isBuy;
}

View File

@ -48,6 +48,9 @@ public class ModelLikeVo {
@ApiModelProperty(value = "下载数")
private Long downloadNumber;
@ApiModelProperty(value = "点赞数")
private Long likeNumber;
}

View File

@ -1,8 +1,11 @@
package com.mcwl.resource.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mcwl.resource.domain.ModelImage;
import com.mcwl.resource.domain.response.ResponseModelImage;
import com.mcwl.resource.domain.vo.ModelImageLikeVo;
import com.mcwl.resource.domain.vo.PageVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -21,4 +24,11 @@ public interface ModelImageMapper extends BaseMapper<ModelImage> {
List<ResponseModelImage> imageList(PageVo pageVo);
Long sumImageNumber(Long userId);
List<ModelImageLikeVo> selectLikedImagesByUser(
@Param("page") Page<ModelImageLikeVo> page,
@Param("userId") Long userId,
@Param("orderByColumn") String orderByColumn // 新增参数
);
}

View File

@ -2,8 +2,11 @@ package com.mcwl.resource.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mcwl.resource.domain.ModelProduct;
import com.mcwl.resource.domain.response.ResponseModelProduct;
import com.mcwl.resource.domain.vo.ModelImageLikeVo;
import com.mcwl.resource.domain.vo.ModelLikeVo;
import com.mcwl.resource.domain.vo.PageVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -22,7 +25,6 @@ import java.util.List;
public interface ModelMapper extends BaseMapper<ModelProduct> {
Long sumNumber(@Param("userId") Long userId);
@ -40,4 +42,8 @@ public interface ModelMapper extends BaseMapper<ModelProduct> {
List<ResponseModelProduct> modelSquare(PageVo pageVo);
Long sumModelNumber(Long userId);
List<ModelLikeVo> selectLikedModelsByUser(@Param("page") Page<ModelLikeVo> page,
@Param("userId") Long userId,
@Param("orderByColumn") String orderByColumn);
}

View File

@ -1,9 +1,12 @@
package com.mcwl.resource.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mcwl.resource.domain.WorkFlow;
import com.mcwl.resource.domain.response.ResponseWorkFlow;
import com.mcwl.resource.domain.vo.ModelLikeVo;
import com.mcwl.resource.domain.vo.PageVo;
import com.mcwl.resource.domain.vo.WorkFlowLikeVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -28,4 +31,8 @@ public interface WorkFlowMapper extends BaseMapper<WorkFlow> {
List<ResponseWorkFlow> workFlowList(PageVo pageVo);
Long sumWorkFlowNumber(Long userId);
List<WorkFlowLikeVo> selectLikedWorkFlowsByUser(@Param("page") Page<WorkFlowLikeVo> page,
@Param("userId") Long userId,
@Param("orderByColumn") String orderByColumn);
}

View File

@ -3,6 +3,7 @@ package com.mcwl.resource.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -33,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
*
@ -71,7 +73,6 @@ public class ModelImageLikeServiceImpl extends ServiceImpl<ModelImageLikeMapper,
}
/**
*
*
@ -81,57 +82,24 @@ public class ModelImageLikeServiceImpl extends ServiceImpl<ModelImageLikeMapper,
@Override
public TableDataInfo listByPage(PageDomain pageDomain) {
Page<ModelImageLike> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
if (StringUtils.isEmpty(pageDomain.getOrderByColumn())) {
pageDomain.setOrderByColumn("create_time");
}
// 设置排序
boolean isAsc = Objects.equals(pageDomain.getIsAsc(), "desc");
OrderItem orderItem = new OrderItem(pageDomain.getOrderByColumn(), isAsc);
page.addOrder(orderItem);
baseMapper.selectPage(page, new LambdaQueryWrapper<ModelImageLike>()
.eq(ModelImageLike::getUserId, SecurityUtils.getUserId()));
// 获取分页数据
List<ModelImageLike> modelImageList = page.getRecords();
// 2. 构建分页对象并设置排序规则
Page<ModelImageLikeVo> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
// ModelImage数据转为ModelImagePageVo
List<ModelImageLikeVo> modelImageLikeVoList = new ArrayList<>();
for (ModelImageLike modelImageLike : modelImageList) {
ModelImageLikeVo modelImageLikeVo = new ModelImageLikeVo();
BeanUtil.copyProperties(modelImageLike, modelImageLikeVo);
List<ModelImageLikeVo> modelImageLikeVoList = modelImageMapper.selectLikedImagesByUser(
page,
SecurityUtils.getUserIdMax(),
pageDomain.getOrderByColumn());
// 获取用户信息
SysUser sysUser = sysUserService.selectUserById(modelImageLike.getUserId());
if (Objects.isNull(sysUser)) {
page.setTotal(page.getTotal() - 1);
continue;
}
modelImageLikeVo.setUserName(sysUser.getNickName());
modelImageLikeVo.setUserAvatar(sysUser.getAvatar());
// 获取图片信息
ModelImage modelImage = modelImageMapper.selectById(modelImageLike.getModelImageId());
if (Objects.isNull(modelImage)) {
page.setTotal(page.getTotal() - 1);
continue;
}
modelImageLikeVo.setDownloadNumber(Long.valueOf(modelImage.getDownloadNum()));
modelImageLikeVo.setImagePaths(modelImage.getImagePaths());
modelImageLikeVo.setLikeNum(modelImage.getLikeNum());
modelImageLikeVoList.add(modelImageLikeVo);
}
// 封装分页数据
// 4. 封装分页结果
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(modelImageLikeVoList);
rspData.setTotal(page.getTotal());
return rspData;
}
@ -170,7 +138,6 @@ public class ModelImageLikeServiceImpl extends ServiceImpl<ModelImageLikeMapper,
}
private void addLikeAdvice(ModelImage modelImage) {
Long userId = SecurityUtils.getUserId();

View File

@ -15,6 +15,7 @@ import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
import com.mcwl.resource.domain.ModelLike;
import com.mcwl.resource.domain.ModelProduct;
import com.mcwl.resource.domain.vo.ModelImageLikeVo;
import com.mcwl.resource.domain.vo.ModelLikeVo;
import com.mcwl.resource.mapper.ModelLikeMapper;
import com.mcwl.resource.mapper.ModelMapper;
@ -58,62 +59,27 @@ public class ModelLikeServiceImpl extends ServiceImpl<ModelLikeMapper, ModelLike
@Override
public TableDataInfo listByPage(PageDomain pageDomain) {
Page<ModelLike> page = initPage(pageDomain);
baseMapper.selectPage(page, new LambdaQueryWrapper<ModelLike>()
.eq(ModelLike::getUserId, SecurityUtils.getUserId()));
List<ModelLike> modelLikeList = page.getRecords();
List<ModelLikeVo> modelLikeVoList = new ArrayList<>();
for (ModelLike modelLike : modelLikeList) {
ModelLikeVo modelLikeVo = new ModelLikeVo();
BeanUtil.copyProperties(modelLike, modelLikeVo);
// 获取用户信息
SysUser sysUser = sysUserService.selectUserById(modelLike.getUserId());
if (Objects.isNull(sysUser)) {
page.setTotal(page.getTotal() - 1);
continue;
}
modelLikeVo.setUserName(sysUser.getNickName());
modelLikeVo.setUserAvatar(sysUser.getAvatar());
// 获取模型信息
ModelProduct modelProduct = modelMapper.selectById(modelLike.getModelId());
if (Objects.isNull(modelProduct)) {
page.setTotal(page.getTotal() - 1);
continue;
}
modelLikeVo.setDownloadNumber(Long.valueOf(modelProduct.getNumbers()));
modelLikeVo.setSurfaceUrl(modelProduct.getSurfaceUrl());
modelLikeVo.setModelName(modelProduct.getModelName());
modelLikeVoList.add(modelLikeVo);
}
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setRows(modelLikeVoList);
tableDataInfo.setTotal(page.getTotal());
tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setMsg("查询成功");
return tableDataInfo;
}
private Page<ModelLike> initPage(PageDomain pageDomain) {
Page<ModelLike> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
if (StringUtils.isBlank(pageDomain.getOrderByColumn())) {
if (StringUtils.isEmpty(pageDomain.getOrderByColumn())) {
pageDomain.setOrderByColumn("create_time");
}
OrderItem orderItem = OrderItem.desc(pageDomain.getOrderByColumn());
page.addOrder(orderItem);
return page;
// 2. 构建分页对象并设置排序规则
Page<ModelLikeVo> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
List<ModelLikeVo> modelLikeVoList = modelMapper.selectLikedModelsByUser(
page,
SecurityUtils.getUserIdMax(),
pageDomain.getOrderByColumn());
// 4. 封装分页结果
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(modelLikeVoList);
rspData.setTotal(page.getTotal());
return rspData;
}

View File

@ -15,6 +15,7 @@ import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
import com.mcwl.resource.domain.WorkFlow;
import com.mcwl.resource.domain.WorkFlowLike;
import com.mcwl.resource.domain.vo.ModelLikeVo;
import com.mcwl.resource.domain.vo.WorkFlowLikeVo;
import com.mcwl.resource.mapper.WorkFlowLikeMapper;
import com.mcwl.resource.mapper.WorkFlowMapper;
@ -65,48 +66,25 @@ public class WorkFlowLikeServiceImpl extends ServiceImpl<WorkFlowLikeMapper, Wor
@Override
public TableDataInfo listByPage(PageDomain pageDomain) {
Page<WorkFlowLike> page = initPage(pageDomain);
baseMapper.selectPage(page, new LambdaQueryWrapper<WorkFlowLike>()
.eq(WorkFlowLike::getUserId, SecurityUtils.getUserId()));
List<WorkFlowLike> workFlowLikeList = page.getRecords();
List<WorkFlowLikeVo> modelLikeVoList = new ArrayList<>();
for (WorkFlowLike workFlowLike : workFlowLikeList) {
WorkFlowLikeVo workFlowLikeVo = new WorkFlowLikeVo();
BeanUtil.copyProperties(workFlowLike, workFlowLikeVo);
// 获取用户信息
SysUser sysUser = sysUserService.selectUserById(workFlowLike.getUserId());
if (Objects.isNull(sysUser)) {
page.setTotal(page.getTotal() - 1);
continue;
}
workFlowLikeVo.setUserName(sysUser.getNickName());
workFlowLikeVo.setUserAvatar(sysUser.getAvatar());
// 获取工作流信息
WorkFlow workFlow = workFlowMapper.selectById(workFlowLike.getWorkFlowId());
if (Objects.isNull(workFlow)) {
page.setTotal(page.getTotal() - 1);
continue;
}
workFlowLikeVo.setDownloadNumber(workFlow.getDownloadNumber());
workFlowLikeVo.setCoverPath(workFlow.getCoverPath());
workFlowLikeVo.setLikeNum(workFlow.getLikeNum());
modelLikeVoList.add(workFlowLikeVo);
if (StringUtils.isEmpty(pageDomain.getOrderByColumn())) {
pageDomain.setOrderByColumn("create_time");
}
// 2. 构建分页对象并设置排序规则
Page<WorkFlowLikeVo> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setRows(modelLikeVoList);
tableDataInfo.setTotal(page.getTotal());
tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setMsg("查询成功");
List<WorkFlowLikeVo> workFlowLikeVoList = workFlowMapper.selectLikedWorkFlowsByUser(
page,
SecurityUtils.getUserIdMax(),
pageDomain.getOrderByColumn());
return tableDataInfo;
// 4. 封装分页结果
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(workFlowLikeVoList);
rspData.setTotal(page.getTotal());
return rspData;
}
@Override

View File

@ -43,4 +43,37 @@
and status in (1, 2)
</select>
<select id="selectLikedImagesByUser" resultType="ModelImageLikeVo">
SELECT
mil.id,
mi.user_id,
u.nick_name AS userName,
u.avatar AS userAvatar,
mi.id AS modelImageId,
mi.image_paths AS imagePaths,
mi.like_num AS likeNum,
mi.download_num AS downloadNumber
FROM
model_image mi
LEFT JOIN
model_image_like mil ON mil.model_image_id = mi.id
LEFT JOIN
sys_user u ON mil.user_id = u.user_id
WHERE
mil.user_id = #{userId}
ORDER BY
<choose>
<when test="orderByColumn == 'create_time'">
mil.create_time
</when>
<when test="orderByColumn == 'like_num'">
mi.like_num
</when>
<otherwise>
mil.create_time
</otherwise>
</choose>
desc
</select>
</mapper>

View File

@ -115,5 +115,36 @@
and del_flag = 0
and audit_status in (1, 2)
</select>
<select id="selectLikedModelsByUser" resultType="com.mcwl.resource.domain.vo.ModelLikeVo">
SELECT ml.id,
m.user_id AS userId,
u.nick_name AS userName,
u.avatar AS userAvatar,
m.id AS modelId,
m.model_name AS modelName,
m.surface_url AS surfaceUrl,
m.numbers AS downloadNumber,
m.like_num AS likeNumber
FROM model as m
LEFT JOIN model_like as ml
ON ml.model_id = m.id
LEFT JOIN sys_user as u
ON ml.user_id = u.user_id
WHERE
ml.user_id = #{userId}
ORDER BY
<choose>
<when test="orderByColumn == 'create_time'">
ml.create_time
</when>
<when test="orderByColumn == 'like_num'">
m.like_num
</when>
<otherwise>
ml.create_time
</otherwise>
</choose>
desc
</select>
</mapper>

View File

@ -71,4 +71,35 @@
and del_flag = '0'
and audit_status in (1, 2)
</select>
<select id="selectLikedWorkFlowsByUser" resultType="com.mcwl.resource.domain.vo.WorkFlowLikeVo">
SELECT
wfl.id,
wfl.user_id AS userId,
u.nick_name AS userName,
u.avatar AS userAvatar,
wf.id AS workFlowId,
wf.cover_path AS coverPath,
wf.like_num AS likeNum,
wf.download_number AS downloadNumber
FROM work_flow as wf
LEFT JOIN work_flow_like as wfl
ON wfl.work_flow_id = wf.id
LEFT JOIN sys_user as u
ON wfl.user_id = u.user_id
WHERE
wfl.user_id = #{userId}
ORDER BY
<choose>
<when test="orderByColumn == 'create_time'">
wfl.create_time
</when>
<when test="orderByColumn == 'like_num'">
wf.like_num
</when>
<otherwise>
wfl.create_time
</otherwise>
</choose>
desc
</select>
</mapper>