@Controller("/control/brand/list")
public class BrandAction extends Action {
@Resource(name="brandServiceBean")
private BrandService brandService;
@Override @Permission(module="brand",privilege="view")
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
BrandForm formbean = (BrandForm) form;
StringBuffer jpql = new StringBuffer("o.visible=?1");
List<Object> params = new ArrayList<Object>();
params.add(true);
if("true".equals(formbean.getQuery())){
jpql.append(" and o.name like ?"+ (params.size()+1));
params.add("%"+ formbean.getName()+ "%");
}
PageView<Brand> pageView = new PageView<Brand>(12, formbean.getPage());
LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
orderby.put("code", "desc");
pageView.setQueryResult(brandService.getScrollData(pageView.getFirstResult(),
pageView.getMaxresult(), jpql.toString(), params.toArray(), orderby));
request.setAttribute("pageView", pageView);
return mapping.findForward("list");
}
}
---------------------------------------------------------------------
/**
* 品牌管理
*
*/
@Controller("/control/brand/manage")
public class BrandManageAction extends DispatchAction {
@Resource(name="brandServiceBean")
private BrandService brandService;
/**
* 品牌查询界面
*/
@Permission(module="brand",privilege="view")
public ActionForward queryUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
return mapping.findForward("query");
}
/**
* 品牌修改界面
*/
@Permission(module="brand",privilege="update")
public ActionForward editUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
BrandForm formbean = (BrandForm) form;
Brand brand = brandService.find(formbean.getCode());
formbean.setName(brand.getName());
formbean.setLogoimagepath(brand.getLogopath());
return mapping.findForward("edit");
}
/**
* 品牌修改
*/
@Permission(module="brand",privilege="update")
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
BrandForm formbean = (BrandForm) form;
if(!BrandForm.validateImageFileType(formbean.getLogofile())){
request.setAttribute("message", "图片格式不正确");
return mapping.findForward("message");
}
Brand brand = brandService.find(formbean.getCode());
brand.setName(formbean.getName());
if(formbean.getLogofile()!=null && formbean.getLogofile().getFileSize()>0){
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd/HH");
String logopathdir = "/images/brand/"+ dateformat.format(new Date());//构建图片保存的目录
//得到图片保存目录的真实路径
String logorealpathdir = request.getSession().getServletContext().getRealPath(logopathdir);
File logosavedir = new File(logorealpathdir);
if(!logosavedir.exists()) logosavedir.mkdirs();//如果目录不存在就创建
String ext = formbean.getLogofile().getFileName().substring(formbean.getLogofile().getFileName().lastIndexOf('.'));
String imagename = UUID.randomUUID().toString()+ ext;//构建文件名称
FileOutputStream fileoutstream = new FileOutputStream(new File(logorealpathdir, imagename));
fileoutstream.write(formbean.getLogofile().getFileData());
fileoutstream.close();
String logopath = logopathdir+"/"+imagename;
brand.setLogopath(logopath);
}
brandService.update(brand);
request.setAttribute("message", "品牌修改成功");
request.setAttribute("urladdress", SiteUrl.readUrl("control.brand.list"));
return mapping.findForward("message");
}
/**
* 品牌添加界面
*/
@Permission(module="brand",privilege="insert")
public ActionForward addUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
return mapping.findForward("add");
}
/**
* 品牌添加
*/
@Permission(module="brand",privilege="insert")
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
BrandForm formbean = (BrandForm) form;
if(!BrandForm.validateImageFileType(formbean.getLogofile())){
System.out.println(formbean.getLogofile().getContentType());
request.setAttribute("message", "图片格式不正确");
return mapping.findForward("message");
}
Brand brand = new Brand();
brand.setName(formbean.getName());
if(formbean.getLogofile()!=null && formbean.getLogofile().getFileSize()>0){
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd/HH");
String logopathdir = "/images/brand/"+ dateformat.format(new Date());//构建图片保存的目录
//得到图片保存目录的真实路径
String logorealpathdir = request.getSession().getServletContext().getRealPath(logopathdir);
File logosavedir = new File(logorealpathdir);
if(!logosavedir.exists()) logosavedir.mkdirs();//如果目录不存在就创建
String ext = formbean.getLogofile().getFileName().substring(formbean.getLogofile().getFileName().lastIndexOf('.'));
String imagename = UUID.randomUUID().toString()+ ext;//构建文件名称
FileOutputStream fileoutstream = new FileOutputStream(new File(logorealpathdir, imagename));
fileoutstream.write(formbean.getLogofile().getFileData());
fileoutstream.close();
String logopath = logopathdir+"/"+imagename;
brand.setLogopath(logopath);
}
brandService.save(brand);
request.setAttribute("message", "品牌添加成功");
request.setAttribute("urladdress", SiteUrl.readUrl("control.brand.list"));
return mapping.findForward("message");
}
}
-------------------------------------------------------
public class BuildHtmlFile {
public static void createProductHtml(ProductInfo product, File saveDir){
try {
if(!saveDir.exists()) saveDir.mkdirs();
VelocityContext context = new VelocityContext();
context.put("product", product);
Template template = Velocity.getTemplate("product/productview.vm");
FileOutputStream outStream = new FileOutputStream(new File(saveDir, product.getId()+".shtml"));
OutputStreamWriter writer = new OutputStreamWriter(outStream,"UTF-8");
BufferedWriter sw = new BufferedWriter(writer);
template.merge(context, sw);
sw.flush();
sw.close();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------------------------------------------------------
@Controller("/product/list/display")
public class FrontProductAction extends Action {
@Resource(name="productInfoServiceBean")
private ProductInfoService productInfoService;
@Resource(name="productTypeServiceBean")
private ProductTypeService productTypeService;
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
FrontProductForm formbean = (FrontProductForm) form;
PageView<ProductInfo> pageView = new PageView<ProductInfo>(2, formbean.getPage());
pageView.setPagecode(20);
int firstindex = (pageView.getCurrentpage()-1)* pageView.getMaxresult();
LinkedHashMap<String, String> orderby = buildOrder(formbean.getSort());
StringBuffer jpql = new StringBuffer("o.visible=?1");
List<Object> params = new ArrayList<Object>();
params.add(true);
List<Integer> typeids = new ArrayList<Integer>();
typeids.add(formbean.getTypeid());
getTypeids(typeids, new Integer[]{formbean.getTypeid()});
StringBuffer n = new StringBuffer();
for(int i=0; i<typeids.size();i++){
n.append('?').append((i+2)).append(',');
}
n.deleteCharAt(n.length()-1);
jpql.append(" and o.type.typeid in("+ n.toString()+ ")");
params.addAll(typeids);
if(formbean.getBrandid()!=null && !"".equals(formbean.getBrandid().trim())){
jpql.append(" and o.brand.code=?").append((params.size()+1));
params.add(formbean.getBrandid());
}
if(formbean.getSex()!=null ){
String sex = formbean.getSex().trim();
if("NONE".equalsIgnoreCase(sex) || "MAN".equalsIgnoreCase(sex) || "WOMEN".equalsIgnoreCase(sex)){
jpql.append(" and o.sexrequest=?").append((params.size()+1));
params.add(Sex.valueOf(formbean.getSex()));
}
}
pageView.setQueryResult(productInfoService.getScrollData(firstindex,
pageView.getMaxresult(), jpql.toString(), params.toArray(), orderby));
for(ProductInfo product : pageView.getRecords()){
Set<ProductStyle> styles = new HashSet<ProductStyle>();
for(ProductStyle style : product.getStyles()){
if(style.getVisible()){
styles.add(style);
break;
}
}
product.setStyles(styles);
//注意:执行此句代码会把修改后的数据同步回数据库,如果不想把数据同步回数据库,请在其后调用productInfoService.clear();
product.setDescription(WebUtil.HtmltoText(product.getDescription()));
}
productInfoService.clear();//让托管状态的实体成为游离状态
request.setAttribute("pageView", pageView);
Integer[] ids = new Integer[typeids.size()];
for(int i=0;i<typeids.size();i++){
ids[i]=typeids.get(i);
}
request.setAttribute("brands", productInfoService.getBrandsByProductTypeid(ids));
if(formbean.getTypeid()!=null && formbean.getTypeid()>0){
ProductType type = productTypeService.find(formbean.getTypeid());
if(type!=null){
List<ProductType> types = new ArrayList<ProductType>();
types.add(type);
ProductType parent = type.getParent();
while(parent!=null){
types.add(parent);
parent = parent.getParent();
}
request.setAttribute("producttype", type);
request.setAttribute("types", types);
}
}
return mapping.findForward(getView(formbean.getStyle()));
}
/**
* 获取显示视图
* @param style 样式
* @return
*/
public String getView(String style){
if("imagetext".equalsIgnoreCase(style)) return "list_imagetext";//图文版
else return "list_image";//图片版
}
/**
* 获取类别下所有子类的id(注:子类级其子类的id都会获取到)
* @param outtypeids
* @param typeids
*/
public void getTypeids(List<Integer> outtypeids, Integer[] typeids){
List<Integer> subtypeids =productTypeService.getSubTypeid(typeids);
if(subtypeids!=null && subtypeids.size()>0){
outtypeids.addAll(subtypeids);
Integer[] ids = new Integer[subtypeids.size()];
for(int i=0;i<subtypeids.size();i++){
ids[i]=subtypeids.get(i);
}
getTypeids(outtypeids, ids);
}
}
/**
* 组拼排序
* @param orderfied
* @return
*/
private LinkedHashMap<String, String> buildOrder(String orderfied){
LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
if("selldesc".equals(orderfied)){
orderby.put("sellcount", "desc");
}else if("sellpricedesc".equals(orderfied)){
orderby.put("sellprice", "desc");
}else if("sellpriceasc".equals(orderfied)){
orderby.put("sellprice", "asc");
}else{
orderby.put("createdate", "desc");
}
return orderby;
}
}
--------------------------------------------------------------------------
/**
* 产品分页列表
*
*/
@Controller("/control/product/list")
public class ProductAction extends Action {
@Resource(name="productInfoServiceBean")
private ProductInfoService productInfoService;
@Override @Permission(module="product",privilege="view")
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
PageView<ProductInfo> pageView = new PageView<ProductInfo>(12, formbean.getPage());
LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
orderby.put("visible", "desc");
orderby.put("id", "desc");
if("true".equals(formbean.getQuery())){
StringBuffer jpql = new StringBuffer("");
List<Object> params = new ArrayList<Object>();
//按产品名称查询
if(formbean.getName()!=null && !"".equals(formbean.getName())){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.name like ?").append((params.size()+1));
params.add("%"+ formbean.getName()+ "%");
}
//按产品类型查询
if(formbean.getTypeid()!=null && formbean.getTypeid()>0){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.type.typeid=?").append((params.size()+1));
params.add(formbean.getTypeid());
}
//按采购价区间查询
if(formbean.getStartbaseprice()!=null && formbean.getStartbaseprice()>0){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.baseprice>=?").append((params.size()+1));
params.add(formbean.getStartbaseprice());
}
if(formbean.getEndbaseprice()!=null && formbean.getEndbaseprice()>0){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.baseprice<=?").append((params.size()+1));
params.add(formbean.getEndbaseprice());
}
//按销售价区间查询
if(formbean.getStartsellprice()!=null && formbean.getStartsellprice()>0){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.sellprice>=?").append((params.size()+1));
params.add(formbean.getStartsellprice());
}
if(formbean.getEndsellprice()!=null && formbean.getEndsellprice()>0){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.sellprice<=?").append((params.size()+1));
params.add(formbean.getEndsellprice());
}
//按货号查询
if(formbean.getCode()!=null && !"".equals(formbean.getCode())){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.code=?").append((params.size()+1));
params.add(formbean.getCode());
}
//按品牌查询
if(formbean.getBrandid()!=null && !"".equals(formbean.getBrandid())){
if(params.size()>0) jpql.append(" and ");
jpql.append(" o.brand.code=?").append((params.size()+1));
params.add(formbean.getBrandid());
}
pageView.setQueryResult(productInfoService.getScrollData(pageView.getFirstResult(),
pageView.getMaxresult(), jpql.toString(), params.toArray(), orderby));
}else{
pageView.setQueryResult(productInfoService.getScrollData(pageView.getFirstResult(),
pageView.getMaxresult(), orderby));
}
request.setAttribute("pageView", pageView);
return mapping.findForward("list");
}
}
------------------------------------------------------------------
@Controller("/control/product/manage")
public class ProductManageAction extends DispatchAction {
@Resource(name="productInfoServiceBean")
private ProductInfoService productInfoService;
@Resource(name="brandServiceBean")
private BrandService brandService;
@Resource(name="productTypeServiceBean")
private ProductTypeService productTypeService;
/**
* 设置产品上架
*/
@Permission(module="product",privilege="visible")
public ActionForward visible(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
productInfoService.setVisibleStatu(formbean.getProductids(), true);
request.setAttribute("message", "设置成功了");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list"));
return mapping.findForward("message");
}
/**
* 设置产品下架
*/
@Permission(module="product",privilege="visible")
public ActionForward disable(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
productInfoService.setVisibleStatu(formbean.getProductids(), false);
request.setAttribute("message", "设置成功了");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list"));
return mapping.findForward("message");
}
/**
* 设置产品为推荐
*/
@Permission(module="product",privilege="commend")
public ActionForward commend(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
productInfoService.setCommendStatu(formbean.getProductids(), true);
request.setAttribute("message", "设置成功了");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list"));
return mapping.findForward("message");
}
/**
* 设置产品为不推荐
*/
@Permission(module="product",privilege="commend")
public ActionForward uncommend(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
productInfoService.setCommendStatu(formbean.getProductids(), false);
request.setAttribute("message", "设置成功了");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list"));
return mapping.findForward("message");
}
/**
* 产品查询界面
*/
@Permission(module="product",privilege="view")
public ActionForward queryUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setAttribute("brands", brandService.getScrollData().getResultlist());
return mapping.findForward("query");
}
/**
* 选择类别
*/
public ActionForward selectUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
String jpql = "o.parent is null and o.visible=true";
Object[] params = new Object[0];
if(formbean.getTypeid()!=null && formbean.getTypeid()>0){
jpql = "o.parent.id=?1";
params = new Object[]{formbean.getTypeid()};
ProductType type = productTypeService.find(formbean.getTypeid());
ProductType parent = type.getParent();
List<ProductType> types = new ArrayList<ProductType>();
types.add(type);
while(parent!=null){
types.add(parent);
parent = parent.getParent();
}
request.setAttribute("menutypes", types);
}
request.setAttribute("types", productTypeService.getScrollData(-1, -1, jpql, params).getResultlist());
return mapping.findForward("typeselect");
}
/**
* 产品添加界面
*/
@Permission(module="product",privilege="insert")
public ActionForward addUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setAttribute("brands", brandService.getScrollData().getResultlist());
return mapping.findForward("add");
}
/**
* 产品添加
*/
@Permission(module="product",privilege="insert")
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
ProductInfo product = new ProductInfo();
product.setName(formbean.getName());
product.setBaseprice(formbean.getBaseprice());
product.setSellprice(formbean.getSellprice());
product.setMarketprice(formbean.getMarketprice());
if(formbean.getBrandid()!=null && !"".equals(formbean.getBrandid().trim())){
product.setBrand(brandService.find(formbean.getBrandid()));
}
product.setBuyexplain(formbean.getBuyexplain());
product.setCode(formbean.getCode());
product.setDescription(formbean.getDescription());
product.setModel(formbean.getModel());
product.setSexrequest(Sex.valueOf(formbean.getSex()));
product.setWeight(formbean.getWeight());
product.setType(productTypeService.find(formbean.getTypeid()));
if(!ProductForm.validateImageFileType(formbean.getImagefile())){
request.setAttribute("message", "文件格式不正确,只允许上传gif/jpg/png/bmp图片");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.add"));
return mapping.findForward("message");
}
if(formbean.getImagefile().getFileSize()>204800){
request.setAttribute("message", "图片不能大于200K");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.add"));
return mapping.findForward("message");
}
String ext = UploadfileForm.getExt(formbean.getImagefile());
String filename = UUID.randomUUID().toString()+ "."+ext;//构建文件名称
product.addProductStyle(new ProductStyle(formbean.getStylename(), filename));
productInfoService.save(product);
ProductForm.saveProductImageFile(request, formbean.getImagefile(),formbean.getTypeid(),
product.getId(), filename);
request.setAttribute("message", "添加成功了");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list"));
//生成的文件存放在网站根目录的html/product/类别id/
File saveDir = new File(request.getSession().getServletContext().getRealPath("/html/product/"+product.getType().getTypeid()));
BuildHtmlFile.createProductHtml(product, saveDir);
return mapping.findForward("message");
}
/**
* 产品修改界面
*/
@Permission(module="product",privilege="update")
public ActionForward editUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
ProductInfo product = productInfoService.find(formbean.getProductid());
formbean.setBaseprice(product.getBaseprice());
if(product.getBrand()!=null) formbean.setBrandid(product.getBrand().getCode());
formbean.setBuyexplain(product.getBuyexplain());
formbean.setCode(product.getCode());
formbean.setDescription(product.getDescription());
formbean.setMarketprice(product.getMarketprice());
formbean.setModel(product.getModel());
formbean.setName(product.getName());
formbean.setSellprice(product.getSellprice());
formbean.setSex(product.getSexrequest().toString());
formbean.setTypeid(product.getType().getTypeid());
formbean.setWeight(product.getWeight());
request.setAttribute("typename", product.getType().getName());
request.setAttribute("brands", brandService.getScrollData().getResultlist());
return mapping.findForward("edit");
}
/**
* 产品修改
*/
@Permission(module="product",privilege="update")
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ProductForm formbean = (ProductForm) form;
ProductInfo product = productInfoService.find(formbean.getProductid());
product.setName(formbean.getName());
product.setBaseprice(formbean.getBaseprice());
product.setSellprice(formbean.getSellprice());
product.setMarketprice(formbean.getMarketprice());
if(formbean.getBrandid()!=null && !"".equals(formbean.getBrandid().trim()) &&
!product.getBrand().getCode().equals(formbean.getBrandid().trim())){
product.setBrand(brandService.find(formbean.getBrandid()));
}
product.setBuyexplain(formbean.getBuyexplain());
product.setCode(formbean.getCode());
product.setDescription(formbean.getDescription());
product.setModel(formbean.getModel());
product.setSexrequest(Sex.valueOf(formbean.getSex()));
product.setWeight(formbean.getWeight());
product.setType(productTypeService.find(formbean.getTypeid()));
productInfoService.update(product);
request.setAttribute("message", "修改成功了");
request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list"));
File saveDir = new File(request.getSession().getServletContext().getRealPath("/html/product/"+product.getType().getTypeid()));
BuildHtmlFile.createProductHtml(product, saveDir);
return mapping.findForward("message");
}
}