You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
/**
|
|
* 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益
|
|
* 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事
|
|
*
|
|
* 如果你尚未加入俱乐部,请立即删除该项目,或者现在加入俱乐部:http://jfinal.com/club
|
|
*
|
|
* 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑,
|
|
* 价值远比仅仅拥有 jfinal club 项目源代码要大得多
|
|
*
|
|
* JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加
|
|
* 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将
|
|
* 首次的尝试扼杀在了摇篮之中
|
|
*/
|
|
|
|
package com.bt.product;
|
|
|
|
import com.bt.common.controller.BaseController;
|
|
import com.bt.common.model.Product;
|
|
import com.bt.common.model.Project;
|
|
import com.bt.common.pageview.PageViewInterceptor;
|
|
import com.bt.my.favorite.FavoriteService;
|
|
import com.bt.my.like.LikeService;
|
|
import com.bt.project.ProjectSeo;
|
|
import com.bt.project.ProjectService;
|
|
import com.jfinal.aop.Before;
|
|
import com.jfinal.aop.Inject;
|
|
import com.jfinal.core.Path;
|
|
import com.jfinal.kit.Ret;
|
|
|
|
/**
|
|
* 项目控制器
|
|
* 项目详情页侧边栏列表放此项目的热门分享
|
|
* 项目列表页侧边栏放热门项目
|
|
*/
|
|
@Path("/product")
|
|
@Before(ProductSeo.class)
|
|
public class ProductController extends BaseController {
|
|
|
|
@Inject
|
|
ProductService srv;
|
|
|
|
@Inject
|
|
FavoriteService favoriteSrv;
|
|
|
|
@Inject
|
|
LikeService likeSrv;
|
|
|
|
public void index() {
|
|
setAttr("productPage", srv.paginate(getParaToInt("p", 1)));
|
|
render("index.html");
|
|
}
|
|
|
|
/**
|
|
* 详情页添加分享与反馈按钮,便于对当前项目时行反馈与分享
|
|
*/
|
|
@Before(PageViewInterceptor.class)
|
|
public void detail() {
|
|
Product product = srv.findById(getParaToInt());
|
|
if (product != null) {
|
|
setAttr("product", product);
|
|
setAttr("hotProject", srv.getHotProject());
|
|
render("detail.html");
|
|
|
|
setLikeAndFavoriteStatus(product);
|
|
} else {
|
|
renderError(404);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 如果用户已登录,则需要显示当前 article 是否已经被该用户点赞、收藏了
|
|
*/
|
|
private void setLikeAndFavoriteStatus(Product product) {
|
|
Ret ret = Ret.create();
|
|
likeSrv.setLikeStatus(getLoginAccount(), "product", product, ret);
|
|
favoriteSrv.setFavoriteStatus(getLoginAccount(), "product", product, ret);
|
|
setAttr("ret", ret);
|
|
}
|
|
}
|
|
|