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

/**
* 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益
* 即便是公司的同事,也请尊重 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);
}
}