協調フィルタリングアルゴリズム | 映画推薦システム | ユーザーの嗜好に基づく映画推薦システムの設計・開発

著者ホームページ:プログラミングコンパス

著者について: Java 分野の高品質クリエイター、CSDN ブログ エキスパート、CSDN コンテンツ パートナー、Nuggets の招待著者、Alibaba Cloud ブログ エキスパート、51CTO 招待著者、長年のアーキテクト設計経験、Tencent 教室の常駐講師

主な内容:Javaプロジェクト、Pythonプロジェクト、フロントエンドプロジェクト、人工知能とビッグデータ、卒業設計、履歴書テンプレート、教材、面接質問バンク、技術相互支援

お気に入り、いいね、迷わず作者フォローすると良いです

記事の最後にあるソースコードを入手してください 

商品番号:BS-PT-106

1. 環境紹介

ロケール: Java: jdk1.8

データベース: MySQL: mysql5.7

アプリケーションサーバー: Tomcat: tomcat8.5.31

開発ツール: IDEA または eclipse

開発技術:SSMフレームワーク+JSP+協調フィルタリングアルゴリズム+地図測位システムなど

2. プロジェクト紹介

情報技術の応用は多くの恩恵をもたらしましたが、同時に情報とデータの大爆発ももたらしました。情報不足の時代、人々は世界を理解するためにより多くの情報やデータを取得することを期待しますが、データ爆発の時代では、人々は自分たちにとって役に立たないデータをどのようにフィルタリングして除外するかについて困惑することがよくあります。有効なデータを取得します。このトピックの研究は、映画推薦システムを推薦するためのユーザーの好みに基づいています。このシステムは主に、プラットフォーム上のユーザーの操作行動記録に基づいて、設定された関連ルールに従ってユーザーの好みを判断し、協調フィルタリングアルゴリズムを使用して、ユーザーの対応するデータ推奨事項。同時に、ユーザーが操作データの記録を持っていない場合、つまり、一般的に使用されるデータが沈黙している場合、ユーザーにとって有用なデータを見つけるために、対応するルールに従って動画データをユーザーに推奨します。 。

このシステムは主に Java 開発テクノロジ プラットフォームに基づいてシステム開発を実現し、SSM フレームワークを使用して映画推薦システムのバックグラウンド サービス インターフェイス開発とビジネス ロジック処理を完了し、JSP ページを使用してデータ表示を完了し、AJAX と JQUERY を使用します。人間とコンピュータの対話の非同期データ要求を実現します。特定のデータ推奨では、主にデータ推奨用の協調フィルタリング アルゴリズムのデータ モデルが使用されます。システムの全体的な機能は完成しており、インターフェイスは美しくエレガントで、人間とコンピューターの相互作用効果は良好です。

市場調査やユーザーインタビュー、分析によると、今回設計・実装した映画推薦システムにはフロントエンドユーザーと管理者ユーザーの2種類のユーザーが存在することがわかっています。これら 2 つのタイプのユーザーは、異なる役割と操作機能権限を持っています。これらをユースケース図の形で以下に示します。

フロントエンド ユーザーのユースケース図を以下の図 1 に示します。

図 1 フロントエンド ユーザーのユースケース図

フロントエンドユーザーのユースケース説明:フロントエンドユーザーは登録・ログイン後、主にオンラインでのニュース情報の閲覧、カテゴリー別の映画情報の閲覧、映画レビュー情報、ユーザーが公開した映画の攻略情報の閲覧、おすすめ映画情報の閲覧、映画の作成などを行うことができます。オンラインでのフィードバックメッセージ、映画チケットの予約などを行うことができ、同時にパーソナルセンターでは映画ガイドの公開、個人のコレクション情報、予約情報などの閲覧も可能です。

管理者ユーザーの操作ユースケース図を以下の図 2 に示します。

図 2 管理者ユーザーの使用例図

管理者ユーザーのユースケース図の説明: 管理者は映画推薦システムにログインし、フロントエンドの登録ユーザー情報管理、カルーセル マップ管理、情報管理、映画管理、ジャンル管理、映画説明レビュー管理、クレーム管理、予約注文管理、戦略管理など

映画推薦システム全体の完全な需要分析とアーキテクチャ設計の後、開発および設計された映画推薦システムによって達成される機能目標が最終的に決定されます。以下に、映画推薦のフロントエンドユーザー機能アーキテクチャとバックグラウンド管理を示します。システムの機能アーキテクチャ図。フロントエンド ユーザーの機能を以下の図 3 に示します。

 図3 フロントエンドユーザー機能の構成図

フロントエンドユーザー向けの機能モジュールの紹介:

   (1) 登録・ログイン機能モジュールの設計

 フロントエンドユーザーは、関連業務を行う際にオンライン会員登録が必要となり、個人アカウント情報や個人情報を入力し、登録が完了するとログインが可能となります。

   (2) 個人情報管理機能モジュールの設計

ユーザーがシステムにログインした後、システム管理に入り、パスワードを変更し、古いパスワード、新しいパスワードを入力し、パスワードを確認することができます。新しいパスワードが確認されたパスワードと一致する場合、変更は成功です。矛盾している場合、変更は失敗します。

   (3) 情報閲覧機能モジュール

フロントエンドユーザーは、映画プラットフォーム上で映画情報、関連映画解説情報、映画戦略情報、業界情報などを閲覧したり、各種情報の詳細を閲覧したり、オンラインでコメントしたりすることができます。お気に入り。

   (4) オンライン予約機能モジュール

フロントエンド ユーザーはログイン後、映画紹介の詳細ページに入り、予約ボタンをクリックしてオンラインで映画を予約し、予約した映画をパーソナル センターで管理します。バックグラウンド管理者の承認後、予約は成功したとみなされます。 。

   (5) 映画戦略モジュール

ユーザーは、観た映画の感想や、ある映画の攻略情報などをネット上に投稿したり、自分の投稿をネット上で管理したりすることができます。

   (6) パーソナライズされたレコメンドモジュール

映画管理プラットフォーム システムは、ユーザーの閲覧記録に基づいて関連する計算を実行し、協調フィルタリング アルゴリズムを使用して、さまざまなユーザーに対応する情報を推奨します。現在のデータ モデルは、主にユーザーが閲覧する映画の特性に基づいており、関連する映画情報を照合します。をクリックし、ホームページの推奨モジュールに推奨を表示します。

   (7) 全文検索モジュール

    映画管理プラットフォームシステムでは、フロントエンドユーザーが関連キーワードに基づいて検索し、映画情報や映画解説情報などの全文照合、タイトル説明に応じたあいまい照合を行い、検索された情報を表示します。

   (8) 苦情及び提案

オンラインコメントやお気に入りなどのインタラクティブな機能をユーザーに提供するだけでなく、苦情や提案モジュールも提供するため、ユーザーは関連する意見をタイムリーにフィードバックでき、バックグラウンド管理者がそれらを処理します。

バックエンドユーザー向けの機能モジュールの紹介:

   (1) 個人情報の管理:管理者はバックグラウンドでログインすることにより、個人情報に関する適切な管理操作を行うことができます。

   (2) ユーザー管理: 管理者は、フロントエンドに登録されたユーザー情報に対して、対応する管理操作を実行できます。

   (3) カルーセル マップ管理: フロントエンド ホームページ上のカルーセル マップ情報に対して対応する管理操作を実行し、必要に応じてカルーセル マップを置き換えます。

   (4) 業界情報管理:主に映画業界の関連する動的なニュース情報を管理および公開します。

   (5) 映画管理: 主に公開された映画情報を管理し、映画の価格や特徴などを詳細に紹介し、背景にある映画館マップの位置座標を指定します。これにより、フロントエンド ユーザーは映画の場所を直接見つけることができます。百度地図を通じて映画館にアクセスしてください。

   (6) 映画解説管理:主に映画周辺の関連映画解説情報を管理し、映画解説情報の追加、削除、修正、確認などの操作を完了します。

   (7) 注文管理: 主にフロントエンドユーザーの注文情報を管理し、フロントエンドメンバーが映画を予約した後、バックグラウンドで管理者がレビューする必要があり、時間が経過してからのみ使用できます。効果。

   (8) レイダー管理:主にフロントエンドムービーメンバーのユーザーリリースとムービーガイド情報を管理します。

   (9) 苦情および提案: フロントエンドユーザーから発行された苦情および提案に対して関連する管理操作を実行します。

三、システム表示

3.1フロントエンド機能モジュールの表示

3.1.1 登録とログイン

映画推薦システムは、フロントエンドユーザーに登録とログインという基本的な機能を提供しますが、これはユーザーがオンライン予約を行う際のデータセキュリティとデータ対応を確保するためでもあります。ユーザーログインの基本的なプロセスは、以下の図 3.1 に示されています。

 

図3.1 ログインフローチャート

ユーザー ログイン インターフェイスを以下の図 5.2 に示します。

 

図 3.2 ユーザーログイン

ログインにはアカウント情報の登録が前提となりますが、ユーザー登録の基本的な流れは以下の図 3.3 のようになります。

 

図3.3 フロントエンドユーザー登録フローチャート

 映画推薦システムのフロントエンド ユーザー登録インターフェイスを以下の図 3.4 に示します。

 

図 3.4 フロントエンドのユーザー登録インターフェイス

3.1.2 映画カテゴリの参照

システムにログインすると、ユーザーはオンラインで公開された映画情報を閲覧できるようになり、プラットフォームでは映画名によるグローバル検索操作が可能になると同時に、以下の図 35 に示すように、映画の種類に応じて分類およびクエリを行うことができます。

図 3.5 映画カテゴリの閲覧

   ユーザーが興味のある映画をクリックすると、映画の詳細インターフェイスに入り、映画の詳細では、映画に関連する特定の情報 (監督、脚本家、主演、紹介など) が表示され、次のことができます。また、オンライン予約、コレクション、コメントなども行うことができます。以下の図 3.6 に示すように、対話型操作が可能です。

 図 3.6 ムービー詳細の閲覧

3.1.3 映画の推薦

 ユーザーがシステムにログインすると、システムは、ユーザーの操作行動のデータ記録とシステムが使用する協調フィルタリング アルゴリズムに基づいて、関連する映画情報をユーザーに推奨し、それをホームページに直接表示します。具体的な表示を図 3.7 に示します。

 

図 3.7 映画の推薦

3.1.4業界ニュースの閲覧

システムにログインした後、ユーザーはブログ投稿をクリックしてブログ モジュールに入ることができ、以下の図 4.8 に示すように、ユーザーがオンラインで公開したブログ情報を表示できます。

 

図 3.8 映画ニュースの閲覧

3.1.5監視戦略

システムにログインした後、ユーザーは映画ガイドをクリックすると、各ユーザーが共有する映画ガイド情報が表示され、以下の図 3.9 に示すように、プラットフォーム上で各映画鑑賞ガイドの詳細を公開することができます。

 

図 3.9 ムービーガイド

 3.1.6映画のレビュー

映画解説では主に映画に関する有名人のコメントや分析情報が表示されます. ユーザーはこれらのモジュールでそれらを閲覧することができます. 映画解説の具体的な実装は以下の図 3.10 に示されています.

 

図3.10 個人情報の管理

4番目、コアコード表示

package com.sys.controller.admin;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;

import javax.servlet.http.HttpServletRequest;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.sys.controller.MyController;
import com.sys.controller.suanfa.Aprioti;
import com.sys.controller.suanfa.Itemset;
import com.sys.controller.xietong.XietongUtil;
import com.sxl.util.RandomValidateCode;
import com.sxl.util.StringHelper;

@Controller("frontController")
@RequestMapping(value = "/front")
public class FrontController extends MyController {

	/**
	 * 使用协同过滤算法进行相关推荐
	 * @param model
	 * @param request
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/index")
	public String frame(Model model, HttpServletRequest request)
			throws Exception {
		String sql = "";
		sql = "select * from t_lbt";
		List list3 = db.queryForList(sql);
		request.setAttribute("list3", list3);

		sql = "select a.* from t_product a where typesId=1 order by id desc limit 3";
		List listb = db.queryForList(sql);
		request.setAttribute("listb", listb);
        //查询电影类型
		sql = "select * from t_types";
		model.addAttribute("typesList", db.queryForList(sql));
		//协同过滤推荐算法
		if(getCustomer(request)!=null){
			//如果该用户登录了,身份确定了, 则可以用协同过滤推荐

			List<Map> customerList = db.queryForList("select * from t_customer");
			List<Map> dataList = db.queryForList("select distinct productId, customerId  from t_productclick where productId is not null and customerId is not null ");
			int usersize = customerList.size();
			String customerId = getCustomer(request).get("id").toString();
			/**
			 * 输入用户-->物品条目  一个用户对应多个物品
			 * 用户ID	物品ID集合
			 *   A		a b d
			 *   B		a c
			 *   C		b e
			 *   D		c d e
			 */
			String[] userdata = new String[customerList.size()];
			for (int i = 0; i < customerList.size(); i++) {
				String customerid = customerList.get(i).get("id").toString();
				String aa="A"+customerid+"";
				for (int j = 0; j < dataList.size(); j++) {
					if(customerid.equals(dataList.get(j).get("customerId").toString())){
						aa+="@"+dataList.get(j).get("productId").toString();
					}
				}
				userdata[i]= aa+="@0";
				System.out.println("******"+aa);
			}
			String out = XietongUtil.xietongjob(usersize, userdata, "A"+customerId);


			String sqlall="select a.*  from t_product a where typesId=1 ";
			 sql=sqlall;
			if(out!=null&&!"".equals(out)){
				sql+=" and id in ("+out.substring(1,out.length())+")";
			}
			sql+="  order by rand() limit 8 ";
			//以上推荐算法最总结果在根据随机安排推荐

			//注!为了应对一开始人员访问数据量不够推荐算法使用的情况,就进行了数据补足,这个业务逻辑就非常完美了。
			List tuijianList = db.queryForList(sql);
			int a = 8;
			int b = 0;
			if(tuijianList==null||tuijianList.size()<8){
				if(tuijianList!=null){
					b = 8-tuijianList.size();
				}
				List list2 = db.queryForList(sqlall+" order by rand() limit "+b);
				tuijianList.addAll(list2);
			}else{

			}
			request.setAttribute("tuijianList", tuijianList);




		}else{
			//也就是说,如果网站用户未登录,则不能身份确认,所以用aprio算法
			//aprio推荐算法
			tuijiansuanfa(request);
		}




		return "/front/index";
	}


	/**
	 * 专门有个算法包
	 * 然后算法的逻辑也在这里,
	 * 而且把算法之外额逻辑也加了
	 * 注!为了应对一开始人员访问数据量不够推荐算法使用的情况,就进行了数据补足,这个业务逻辑就非常完美了。
	 *
	 * java推荐算法
	 * @param request
	 */
	public void tuijiansuanfa(HttpServletRequest request){
			Itemset originalItem = new Itemset();
			List<Map> lista = db.queryForList("select * from t_customer");
			for (int i = 0; i < lista.size(); i++) {
				TreeSet<String> itemset = new TreeSet<String>();
				List<Map> listb = db.queryForList("select * from t_productclick where customerId=?",new Object[]{lista.get(i).get("id")});
				for (int j = 0; j < listb.size(); j++) {
					itemset.add(listb.get(j).get("productId")+"");
				}
				originalItem.itemset.add(itemset);
			}
			Aprioti.originalItem=originalItem;
			List<Long> outList = Aprioti.aprioriProcess();
			String in ="";
			if(outList!=null&&outList.size()>0){
				for (int i = 0; i < outList.size(); i++) {
					in+=","+outList.get(i);
				}
			}
			String sqlall="select a.*  from t_product a where 1=1 ";
			String sql=sqlall;
			if(in!=null&&!"".equals(in)){
				sql+=" and id in ("+in.substring(1,in.length())+")";
			}
			sql+="  order by rand() limit 8 ";
			//以上推荐算法最总结果在根据随机安排推荐

			//注!为了应对一开始人员访问数据量不够推荐算法使用的情况,就进行了数据补足,这个业务逻辑就非常完美了。
			List tuijianList = db.queryForList(sql);
			int a = 8;
			int b = 0;
			if(tuijianList==null||tuijianList.size()<8){
				if(tuijianList!=null){
					b = 8-tuijianList.size();
				}
				List list2 = db.queryForList(sqlall+" order by rand() limit "+b);
				tuijianList.addAll(list2);
			}else{

			}
			request.setAttribute("tuijianList", tuijianList);
	}




	@RequestMapping(value = "/baidu1")
	public String baidu1(Model model, HttpServletRequest request)
			throws Exception {
		return "/front/baidu1";
	}

	@RequestMapping(value = "/baidu2")
	public String baidu2(Model model, HttpServletRequest request)
			throws Exception {
		return "/front/baidu2";
	}

	@RequestMapping(value = "/daohang1")
	public String daohang1(Model model, HttpServletRequest request,String id)
			throws Exception {
		Map map = db.queryForMap("select * from t_product where id="+id);
		model.addAttribute("map", map);
		return "/front/daohang1";
	}

	public String getjwd(HttpServletRequest request){
		Object jwdd= request.getSession().getAttribute("yhjwd");
		if(jwdd!=null){
			return jwdd.toString();
		}else{
			return "116.438189,39.9125";
		}
	}

	@RequestMapping(value = "/daohang2")
	public String daohang2(Model model, HttpServletRequest request,String id)
			throws Exception {
		Map map = db.queryForMap("select *from t_zx where id="+id);

		map = new HashMap();
		map.put("jwd", "116.661256,39.975119");


		model.addAttribute("map", map);



		String jwd = getjwd(request);
		System.out.println(jwd);
		System.out.println(map.get("jwd"));
		model.addAttribute("jwd", jwd);
		return "/front/daohang2";
	}






	@RequestMapping(value = "/login")
	public String login(Model model, HttpServletRequest request)
			throws Exception {
		return "/front/login";
	}

	public void saveClick(HttpServletRequest request,Long id){
		String sql="insert into t_productclick(productId,customerId,insertDate) values(?,?,now())";
		Map customer = getCustomer(request);
		if(customer!=null&&customer.size()>0){
			db.update(sql, new Object[]{id,getCustomer(request).get("id")});
		}
	}

	/**
	 * 查询信息
	 * @param model
	 * @param request
	 * @param typesId
	 * @param productName
	 * @param px
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/all")
	public String all(Model model, HttpServletRequest request,Long typesId,String productName,String px,Integer bqid)
			throws Exception {

		String sql="select a.* from t_types a where 1=1";
			sql+=" order by id desc";
			List typesList = db.queryForList(sql);
			request.setAttribute("typesList", typesList);
			 sql="select a.*,(select typesName from t_types b where a.typesId=b.id) typesName  from t_product a where 1=1";

			 if(typesId!=null&&!"".equals(typesId)){
				 sql+=" and a.typesId="+typesId;
			 }
			 if(productName!=null&&!"".equals(productName)){
				 sql+=" and a.productName like '%"+productName+"%' ";
			 }
			 if(bqid!=null){
				 sql+=" and bqid="+bqid;
			 }
			 if("1".equals(px)){
				 sql+=" order by id desc";
			 }else  if("2".equals(px)){
				 sql+=" order by price asc";
			 }else  if("3".equals(px)){
				 sql+=" order by price desc";
			 }else  if("4".equals(px)){
				 sql+=" order by djl desc";
			 }

				List list = db.queryForList(sql);
				request.setAttribute("list", list);

		return "/front/all";
	}

	@RequestMapping(value = "/jfdh")
	public String jfdh(Model model, HttpServletRequest request)
			throws Exception {

		String sql="select a.* from t_jfdh a where 1=1";

			sql+=" order by id desc";
			List list = db.queryForList(sql);
			request.setAttribute("list", list);
		return "/front/jfdh";
	}
	@RequestMapping(value = "/dhjfSave")
	public ResponseEntity<String> dhjfSave(Model model,
			HttpServletRequest request,Long id) throws Exception {
		Map map = db.queryForMap("select * from t_jfdh where id="+id);
		String jf = map.get("jfCost").toString();
		String jfName = map.get("jfName").toString();
		//订单
		String sql = "insert into t_order(orderNum,customerId,productDetail,allPrice,status,insertDate) values(?,?,?,?,?,now())";
		int result = db.update(sql, new Object[] { System.currentTimeMillis()+"",
				getCustomer(request).get("id").toString(), jfName+"积分兑换["+jf+"]", 0+"", "兑换完成" });
		sql="update t_customer set jf = jf-"+jf+" where id="+getCustomer(request).get("id");
		db.update(sql);

		//积分减少
		return renderData(true, "操作成功", null);
	}


	@RequestMapping(value = "/register")
	public String register(Model model, HttpServletRequest request)
			throws Exception {
		System.out.println("112312312");
		return "/front/register";
	}


	@RequestMapping(value = "/detail")
	public String detail(Model model, HttpServletRequest request, Long id)
			throws Exception {
		//保存点击
		saveClick(request, id);


		String sql = "select a.*,(select typesName from t_types b where a.typesId=b.id) typesName " +
				" from t_product a where id=" + id;
		Map map = db.queryForMap(sql);
		request.setAttribute("map", map);
		String sql2="select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName from t_pinglun_product a where productId=? order by id desc";
		List<Map> list = db.queryForList(sql2,new Object[]{id});
		model.addAttribute("list", list);
		db.update("update t_product set djl=djl+1 where id="+id);

		int scNum = db.queryForInt("select count(1) from t_sc where productId="+id);
		model.addAttribute("scNum", scNum);



		return "/front/detail";
	}

	@RequestMapping(value = "/myOrder")
	public String myOrder(Model model, HttpServletRequest request)
			throws Exception {
		String sql = "select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName  from t_order a where 1=1 ";

		if (1 == 1) {
			sql += "and customerId=" + getCustomer(request).get("id") + " ";
		}
		sql += " order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("orderList", list);
		return "/front/myOrder";
	}


	@RequestMapping(value = "/deleteOneOrder")
	public ResponseEntity<String> deleteOneOrder(Model model,
			HttpServletRequest request,Long id) throws Exception {
		String sql="delete from t_order where id="+id;
		db.update(sql);
		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/pjSave")
	public ResponseEntity<String> pjSave(Model model,
			HttpServletRequest request,Long id,String pj) throws Exception {
		String sql="update t_order set pj='"+pj+"'  where id="+id;
		db.update(sql);
		return renderData(true, "操作成功", null);
	}



	@RequestMapping(value = "/deletesc")
	public ResponseEntity<String> deletesc(Model model,
			HttpServletRequest request,Long id) throws Exception {
		String sql="delete from t_sc where id="+id;
		db.update(sql);
		return renderData(true, "操作成功", null);
	}
	@RequestMapping(value = "/deletexiaoxi")
	public ResponseEntity<String> deletexiaoxi(Model model,
			HttpServletRequest request,Long id) throws Exception {
		String sql="delete from t_xiaoxi where id="+id;
		db.update(sql);
		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/addShopcar")
	public ResponseEntity<String> addShopcar(Model model,
			HttpServletRequest request, Long id, Integer num) throws Exception {
		int result = 0;
		db.update("delete from t_shopcar where customerId="+getCustomer(request).get("id"));
		String sql = "insert into t_shopcar(productId,num,customerId) values(?,?,?)";
		result = db.update(sql, new Object[] { id, 1,
				getCustomer(request).get("id").toString() });
		return renderData(true, "操作成功", null);
	}


	@RequestMapping(value = "/pay3")
	public ResponseEntity<String> pay3(Model model, HttpServletRequest request,Long address)
			throws Exception {
		String sql = "select a.*,(select productName from t_product b where a.productId=b.id) productName,"
				+ "(select price from t_product b where a.productId=b.id) price,(select jf from t_product b where a.productId=b.id) jf  from t_shopcar a where customerId="
				+ getCustomer(request).get("id");
		sql += " order by id desc";
		List<Map> list = db.queryForList(sql);
		int total = 0;
		int jf = 0;
		String productDetail = "";
		String productId="";
		for (int i = 0; i < list.size(); i++) {
			productId = list.get(i).get("productId").toString();
			productDetail += "," + list.get(i).get("productName") + "["
					+ list.get(i).get("num") + "]";
			total += Integer.parseInt(list.get(i).get("price").toString())
					* Integer.parseInt(list.get(i).get("num").toString());

//			jf+=Integer.parseInt(list.get(i).get("jf").toString())
//					* Integer.parseInt(list.get(i).get("num").toString());

			String sql2="update t_product set nums=nums-"+list.get(i).get("num").toString()+" where id="+list.get(i).get("productId").toString();
			db.update(sql2);
		}

		Map addressMap = db.queryForMap("select * from t_address where id=?",new Object[]{address});
		sql = "insert into t_order(orderNum,customerId,productDetail,allPrice,status,insertDate,lxr,lxfs,address,productId) values(?,?,?,?,?,now(),?,?,?,?)";
		int result = db.update(sql, new Object[] { System.currentTimeMillis()+"",
				getCustomer(request).get("id").toString(),  productDetail.subSequence(1, productDetail.length()), total+"", "等待处理",addressMap.get("lxr"),addressMap.get("phone"),addressMap.get("xxdz"),productId });

		sql = "delete from t_shopcar where customerId="
				+ getCustomer(request).get("id");
		db.update(sql);
		if (result == 1) {
			return renderData(true, "操作成功", null);
		} else {
			return renderData(false, "操作失败", null);
		}
	}

//	@RequestMapping(value = "/addShopcar")
//	public ResponseEntity<String> addShopcar(Model model,
//			HttpServletRequest request, Long id, Integer num) throws Exception {
//		int result = 0;
//		// 判断该用户是否
//		String sql = "select * from t_shopcar where  productId=? and customerId=?";
//		Map map = db.queryForMap(sql, new Object[] { id.toString(),
//				getCustomer(request).get("id").toString() });
//		if (map != null && map.size() > 0) {
//			sql = "update t_shopcar set productId=?,num=num+" + num
//					+ " where id=?";
//			result = db.update(sql, new Object[] { id, map.get("id") });
//		} else {
//			sql = "insert into t_shopcar(productId,num,customerId) values(?,?,?)";
//			result = db.update(sql, new Object[] { id, num,
//					getCustomer(request).get("id").toString() });
//		}
//		if (result == 1) {
//			return renderData(true, "操作成功", null);
//		} else {
//			return renderData(false, "操作失败", null);
//		}
//	}

	@RequestMapping(value = "/checkIsLogin")
	public ResponseEntity<String> checkIsLogin(Model model,
			HttpServletRequest request) throws Exception {
		Map customer = getCustomer(request);
		if (customer != null && customer.size() > 0) {
			return renderData(true, "操作成功", null);
		} else {
			return renderData(false, "操作失败", null);
		}
	}

	@RequestMapping(value = "/pay")
	public ResponseEntity<String> pay(Model model, HttpServletRequest request,Long address)
			throws Exception {
		String orderDate = request.getParameter("orderDate");
		String zffs = request.getParameter("zffs");
		String sql = "select a.*,(select productName from t_product b where a.productId=b.id) productName,"
				+ "(select price from t_product b where a.productId=b.id) price,(select jf from t_product b where a.productId=b.id) jf  from t_shopcar a where customerId="
				+ getCustomer(request).get("id");
		sql += " order by id desc";
		List<Map> list = db.queryForList(sql);
		int total = 0;
		int jf = 0;
		String productDetail = "";
		String productId="";
		for (int i = 0; i < list.size(); i++) {
			productId = list.get(i).get("productId").toString();
			productDetail = list.get(i).get("productName").toString() ;

			sql = "insert into t_order(orderNum,customerId,productDetail,allPrice,status,insertDate,lxr,lxfs,address,productId,orderDate,zffs) values(?,?,?,?,?,now(),?,?,?,?,?,?)";
			db.update(sql, new Object[] { System.currentTimeMillis()+"",
					getCustomer(request).get("id").toString(),  productDetail, list.get(i).get("price").toString()+"", "等待处理",null,null,null,productId ,orderDate,zffs});
		}
		sql = "delete from t_shopcar where customerId="
				+ getCustomer(request).get("id");
		db.update(sql);
		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/shopcar")
	public String shopcar(Model model, HttpServletRequest request)
			throws Exception {

		Map customer = getCustomer(request);
		if (customer != null && customer.size() > 0) {
		} else {
			return "redirect:/front/register.html";
		}
		String sql="select a.* from t_address a where 1=1";
		if(1==1){sql+=" and customerId="+getCustomer(request).get("id") +" ";}
		sql+=" order by id desc";
		List addressList = db.queryForList(sql);
		request.setAttribute("addressList", addressList);

		 sql = "select b.*,a.id ids,a.num num   from t_shopcar a left join t_product b on a.productId=b.id  where 1=1 and customerId="
				+ getCustomer(request).get("id");
		sql += " order by id desc";
		System.out.println(sql);
		List<Map> list = db.queryForList(sql);
		request.setAttribute("list", list);
		System.out.println(list);
		int total = 0;
		if(list!=null&&list.size()>0){
			for (int i = 0; i < list.size(); i++) {
				total += Integer.parseInt(list.get(i).get("price").toString())
						* Integer.parseInt(list.get(i).get("num").toString());
			}
		}

		request.setAttribute("total", total);
		return "/front/shopcar";
	}

	@RequestMapping(value = "/save")
	public ResponseEntity<String> loginSave(Model model,
			HttpServletRequest request, String username, String password)
			throws Exception {
		String sql = "select * from t_customer where username=?";
		List<Map> list = db.queryForList(sql, new Object[] { username });
		String result = "1";
		if (list != null && list.size() > 0) {
			Map map = list.get(0);
			if (StringHelper.get(map, "password").equals(password)) {
				request.getSession().setMaxInactiveInterval(60 * 60 * 24);
				request.getSession().setAttribute("customerBean", map);
				result = "1";
			} else {
				result = "0";
			}
		} else {
			result = "0";
		}
		return renderData(true, result, null);
	}


	@RequestMapping(value = "/deleteOneShopCar")
	public ResponseEntity<String> deleteOneShopCar(Model model,
			HttpServletRequest request,Long id)
			throws Exception {
		String sql="delete from t_shopcar where id="+id;
		db.update(sql);
		return renderData(true, "", null);
	}

	@RequestMapping(value = "/updateShopCar")
	public ResponseEntity<String> updateShopCar(Model model,
			HttpServletRequest request,Long id,Integer num)
			throws Exception {
		String sql="update t_shopcar set num="+num+" where id="+id;
		System.out.println(sql);
		db.update(sql);
		return renderData(true, "", null);
	}

	@RequestMapping(value = "/registerSave")
	public ResponseEntity<String> registerSave(Model model,
			HttpServletRequest request, Long id, String username,
			String password, String customerName, String sex, String address,String headPic,
			String phone) throws Exception {
		String yzm = request.getParameter("yzm");
		String yzmnow = request.getSession().getAttribute(RandomValidateCode.RANDOMCODEKEY).toString().toUpperCase();
		if(!yzmnow.equals(yzm.toUpperCase())){
			return renderData(false, "5", null);
		}
		int a = db.queryForInt("select count(1) from t_customer where username=?",new Object[]{username});
		if(a>0){
			return renderData(false, "1", null);
		}
		int result = 0;
		if(headPic==null||"".equals(headPic)){
			headPic ="resource/front4/123.jpg";
		}
		String sql = "insert into t_customer(username,password,customerName,sex,address,phone,headPic) values(?,?,?,?,?,?,?)";
		result = db.update(sql, new Object[] { username, password, customerName, sex,
				address, phone,headPic });
		sql = "select * from t_customer order by id desc limit 1";
		List<Map> list = db.queryForList(sql);
		request.getSession().setMaxInactiveInterval(60 * 60 * 24);
		request.getSession().setAttribute("customerBean", list.get(0));

		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/out")
	public String out(Model model, HttpServletRequest request) throws Exception {
		request.getSession().removeAttribute("customerBean");
		return "redirect:/front/login.html";
	}

	@RequestMapping(value = "/mine")
	public String mine(Model model, HttpServletRequest request)
			throws Exception {
		Map customer = getCustomer(request);
		Map map = db.queryForMap("select * from t_customer where id=?",
				new Object[] { customer.get("id") });
		model.addAttribute("customer", map);
		return "/front/mine";
	}

	@RequestMapping(value = "/mineSave")
	public ResponseEntity<String> mineSave(Model model,
			HttpServletRequest request, Long id, String username,
			String password, String customerName, String sex, String address,String headPic,
			String phone) throws Exception {
		int result = 0;
		String sql = "update t_customer set customerName=?,sex=?,address=?,phone=?,headPic=? where id=?";
		result = db.update(sql, new Object[] { customerName, sex, address, phone,headPic, id });


		sql = "select * from t_customer where id="+id;
		List<Map> list = db.queryForList(sql);
		request.getSession().setMaxInactiveInterval(60 * 60 * 24);
		request.getSession().setAttribute("customerBean", list.get(0));


		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/password")
	public String password(Model model, HttpServletRequest request)
			throws Exception {
		return "/front/password";
	}

	@RequestMapping(value = "/changePassword")
	public ResponseEntity<String> changePassword(Model model,
			HttpServletRequest request, String oldPassword, String newPassword)
			throws Exception {
		Map customer = getCustomer(request);
		if (oldPassword.equals(customer.get("password").toString())) {
			String sql = "update t_customer set password=? where id=?";
			db.update(sql, new Object[] { newPassword, customer.get("id") });
			return renderData(true, "1", null);
		} else {
			return renderData(false, "1", null);
		}
	}



	@RequestMapping(value = "/scSave")
	public ResponseEntity<String> scSave(Model model,
			HttpServletRequest request, Long id, String pl) throws Exception {
		int result = 0;
		String customerId = getCustomer(request).get("id").toString();
		db.update("delete from t_sc  where productId=? and customerId=? ", new Object[] {id,customerId });
		String sql = "insert into t_sc(productId,customerId,insertDate) values(?,?,now())";
		result = db.update(sql, new Object[] {id,customerId });
		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/plSave")
	public ResponseEntity<String> plSave(Model model,
			HttpServletRequest request, Long id, String pl) throws Exception {
		int result = 0;
		String sql = "update t_order set pl=? where id=?";
		result = db.update(sql, new Object[] { pl, id });
		if (result == 1) {
			return renderData(true, "操作成功", null);
		} else {
			return renderData(false, "操作失败", null);
		}
	}

	@RequestMapping(value = "/contact")
	public String fk(Model model, HttpServletRequest request) throws Exception {
		return "/front/contact";
	}

	@RequestMapping(value = "/contactSave")
	public ResponseEntity<String> contactSave(Model model,
			HttpServletRequest request, String content, String phone)
			throws Exception {
		int result = 0;
		String sql = "insert into t_contact(customerId,phone,content,insertDate) values(?,?,?,now())";
		result = db.update(sql, new Object[] { getCustomer(request).get("id"),
				phone, content });
		if (result == 1) {
			return renderData(true, "操作成功", null);
		} else {
			return renderData(false, "操作失败", null);
		}
	}

	@RequestMapping(value = "/message")
	public String message(Model model, HttpServletRequest request)
			throws Exception {

		String sql = "select a.*,(select max(name) from t_customer b where a.customerId=b.id) customerName  from t_message a where 1=1 ";
		sql += " and customerId=" + getCustomer(request).get("id") + " ";
		sql += " order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		System.out.println(list);
		return "/front/message";
	}

	@RequestMapping(value = "/saveMessageContent")
	public ResponseEntity<String> saveMessageContent(Model model,
			HttpServletRequest request, String messageContent) throws Exception {
		Map customer = getCustomer(request);

		String sql = "insert into t_message(customerId,messageContent,insertDate,types) values(?,?,now(),1)";//1代表我
		int result = db
				.update(sql, new Object[] { getCustomer(request).get("id"),
						messageContent });
		return renderData(true, "1", null);
	}

	///前端增删改查例子开始//
	@RequestMapping(value = "/test")
	public String test(Model model, HttpServletRequest request,String flag,String testName)throws Exception {
		String sql="select a.*,(select max(name) from t_customer b where a.customerId=b.id) customerName  from t_test a where 1=1";
		if(testName!=null&&!"".equals(testName)){
			sql+=" and testName like '%"+testName+"%' ";
		}
		sql+="  and customerId="+getCustomer(request).get("id");
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		return "/front/test";
	}

	@RequestMapping(value = "/testaddSave")
	public ResponseEntity<String> testaddSave(Model model,HttpServletRequest request,Long id,String flag
		,Integer customerId,String testName,String testContent,String testSex,String testDay,String testPic,String insertDate) throws Exception{
		int result = 0;
		if(id!=null){
			String sql="update t_test set testName=?,testContent=?,testSex=?,testDay=?,testPic=? where id=?";
			result = db.update(sql, new Object[]{testName,testContent,testSex,testDay,testPic,id});
		}else{
			String sql="insert into t_test(customerId,testName,testContent,testSex,testDay,testPic,insertDate) values(?,?,?,?,?,?,now())";
			result = db.update(sql, new Object[]{getCustomer(request).get("id"),testName,testContent,testSex,testDay,testPic});
		}
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}

	@RequestMapping(value = "/testDelete")
	public ResponseEntity<String> testDelete(Model model,HttpServletRequest request,Long id,String flag) throws Exception {

		String sql="delete from t_test where id=?";
		int result = db.update(sql, new Object[]{id});
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}

	}

	@RequestMapping(value = "/testadd")
	public String testadd(Model model, HttpServletRequest request,Long id,String flag)throws Exception {
		if(id!=null){
			//修改
			String sql="select * from t_test where id=?";
			Map map = db.queryForMap(sql,new Object[]{id});
			model.addAttribute("map", map);
		}String sql="";
		return "/front/testadd";
	}



	///前端增删改查例子结束/

	@RequestMapping(value = "/find")
	public String find(Model model, HttpServletRequest request)
			throws Exception {
		return "/front/find";
	}


	@RequestMapping(value = "/findSave")
	public ResponseEntity<String> findSave(Model model,
			HttpServletRequest request, String username, String phone)
			throws Exception {
		String sql = "select * from t_customer where username=? and phone=?";
		List<Map> list = db.queryForList(sql, new Object[] { username,phone });
		System.out.println(list);
		String result = "1";
		if (list != null && list.size() > 0) {
			Map map = list.get(0);
			return renderData(true, result, null);
		} else {
			return renderData(false, result, null);
		}

	}

	@RequestMapping(value = "/findSaveConfirm")
	public ResponseEntity<String> findSaveConfirm(Model model,
			HttpServletRequest request, String username, String phone,String password)
			throws Exception {
		String sql = "update t_customer set password=? where  username=? and phone=?";
		db.update(sql, new Object[] {password, username,phone });
		return renderData(true, "", null);
	}


	@RequestMapping(value = "/lt")
	public String lt(Model model, HttpServletRequest request,String searchName,Long oneClassifyId)
			throws Exception {
		Map customer = getCustomer(request);


		String sql="select a.*,(select max(customerName) from t_customer b where b.id=a.customerId) customerName," +
				"(select count(1) from t_pinglun b where b.wdxxId=a.id) nums from t_wdxx a where 1=1  ";
		if(searchName !=null&&!"".equals(searchName)){
			sql+=" and a.title like '%"+searchName+"%'";
		}
		if(customer==null||customer.size()==0){
			sql+=" and a.nologin='是' ";
		}
		sql+=" order by id desc";
		List<Map> list = db.queryForList(sql);
		model.addAttribute("list", list);
		return "/front/lt";
	}

	@RequestMapping(value = "/wdxxList")
	public String wdxxList(Model model, HttpServletRequest request,String flag,String title)throws Exception {
		String sql="select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName  from t_wdxx a where 1=1";

		if(1==1){sql+=" and customerId="+getCustomer(request).get("id") +" ";}
	if(title!=null&&!"".equals(title)){
			sql+=" and title like '%"+title+"%'";
		}
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		return "/front/wdxxList";
	}

	@RequestMapping(value = "/mineaddress")
	public String mineaddress(Model model, HttpServletRequest request,String flag,String title)throws Exception {
		String sql="select a.* from t_address a where 1=1";

		if(1==1){sql+=" and customerId="+getCustomer(request).get("id") +" ";}
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		return "/front/mineaddress";
	}


	@RequestMapping(value = "/minesc")
	public String minesc(Model model, HttpServletRequest request,String flag,String title)throws Exception {
		String sql="select (select max(productName) from t_product b where b.id=a.productId) productName,(select max(productPic1) from t_product b where b.id=a.productId) productPic1,id,productId  from t_sc a where 1=1";
if(1==1){sql+=" and customerId="+getCustomer(request).get("id") +" ";}
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		System.out.println(sql);
		request.setAttribute("list", list);
		return "/front/minesc";
	}

	@RequestMapping(value = "/minexiaoxi")
	public String minexiaoxi(Model model, HttpServletRequest request,String flag,String title)throws Exception {
		String sql=" select * from t_xiaoxi a where 1=1";
if(1==1){sql+=" and customerId="+getCustomer(request).get("id") +" ";}
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		return "/front/minexiaoxi";
	}

	@RequestMapping(value = "/hywdxxList")
	public String hywdxxList(Model model, HttpServletRequest request,String flag,String title)throws Exception {
		Map customer = getCustomer(request);
		String sql="select a.*,(select max(name) from t_customer b where a.customerId=b.id) customerName  from t_wdxx a where 1=1";
		sql+=" and exists(select 1 from t_wdhy b where a.customerId=b.hhId and b.customerId="+customer.get("id")+") ";
	if(title!=null&&!"".equals(title)){
			sql+=" and title like '%"+title+"%'";
		}
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		return "/front/wdxxList";
	}

	@RequestMapping(value = "/wdxxEditSave")
	public ResponseEntity<String> editSave(Model model,HttpServletRequest request,Long id,String flag
		,Integer customerId,String title,String pic,String content,Integer zan,String insertDate,String nologin,Long bkId) throws Exception{
		int result = 0;
		if(id!=null){
			String sql="update t_wdxx set title=?,pic=?,content=?,nologin=?,bkId=? where id=?";
			result = db.update(sql, new Object[]{title,pic,content,nologin,bkId,id});
		}else{
			String sql="insert into t_wdxx(customerId,title,pic,content,zan,insertDate,nologin,bkId) values(?,?,?,?,?,now(),?,?)";
			result = db.update(sql, new Object[]{getCustomer(request).get("id"),title,pic,content,0,nologin,bkId});
		}
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}


	@RequestMapping(value = "/mineaddressEditSave")
	public ResponseEntity<String> mineaddressEditSave(Model model,HttpServletRequest request,Long id,String province,String city,String area,String phone,String lxr,String xxdz) throws Exception{
		int result = 0;
		if(id!=null){
			String sql="update t_address set province=?,city=?,area=?,phone=?,lxr=?,xxdz=? where id=?";
			result = db.update(sql, new Object[]{province,city,area,phone,lxr,xxdz,id});
		}else{
			String sql="insert into t_address(customerId,province,city,area,phone,lxr,xxdz) values(?,?,?,?,?,?,?)";
			result = db.update(sql, new Object[]{getCustomer(request).get("id"),province,city,area,phone,lxr,xxdz});
		}
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}

	@RequestMapping(value = "/wdxxEditDelete")
	public ResponseEntity<String> editDelete(Model model,HttpServletRequest request,Long id,String flag) throws Exception {

		String sql="delete from t_wdxx where id=?";
		int result = db.update(sql, new Object[]{id});
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}

	}

	@RequestMapping(value = "/wdxxEdit")
	public String wdxxEdit(Model model, HttpServletRequest request,Long id,String flag)throws Exception {
		if(id!=null){
			//修改
			String sql="select * from t_wdxx where id=?";
			Map map = db.queryForMap(sql,new Object[]{id});
			model.addAttribute("map", map);
		}String sql="";

		return "/front/wdxxEdit";
	}

	@RequestMapping(value = "/mineaddressEdit")
	public String mineaddressEdit(Model model, HttpServletRequest request,Long id,String flag)throws Exception {
		if(id!=null){
			//修改
			String sql="select * from t_address where id=?";
			Map map = db.queryForMap(sql,new Object[]{id});
			model.addAttribute("map", map);
		}String sql="";

		return "/front/mineaddressEdit";
	}

	@RequestMapping(value = "/wdxxShow")
	public String wdxxShow(Model model, HttpServletRequest request,Long id,String flag)throws Exception {
		if(id!=null){
			//修改
			String sql="select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName,(select count(1) from t_pinglun b where b.wdxxId=a.id) nums from t_wdxx a where id=?";
			Map map = db.queryForMap(sql,new Object[]{id});
			model.addAttribute("map", map);
		}
		String sql="select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName,(select max(headPic) from t_customer b where a.customerId=b.id) headPic from t_pinglun a where wdxxId=? order by id desc";
		List<Map> list = db.queryForList(sql,new Object[]{id});
		model.addAttribute("list", list);




		 sql="select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName  from t_wdxx a where 1=1 order by zan desc limit 4";
		List list3 = db.queryForList(sql);
		request.setAttribute("list3", list3);

		sql="select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName  from t_wdxx a where 1=1 order by id desc limit 4";
		List list4 = db.queryForList(sql);
		request.setAttribute("list4", list4);
		return "/front/wdxxShow";
	}

	@RequestMapping(value = "/wdxxDelete")
	public ResponseEntity<String> wdxxDelete(Model model,
			HttpServletRequest request, Long id) throws Exception {
		Map customer = getCustomer(request);
		String sql="delete from t_wdxx where  id=?";
		db.update(sql, new Object[]{id});
		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/addressDelete")
	public ResponseEntity<String> addressDelete(Model model,
			HttpServletRequest request, Long id) throws Exception {
		Map customer = getCustomer(request);
		String sql="delete from t_address where  id=?";
		db.update(sql, new Object[]{id});
		return renderData(true, "操作成功", null);
	}

	@RequestMapping(value = "/pinglunSave")
	public ResponseEntity<String> pinglunSave(Model model,HttpServletRequest request,Long id,String flag
		,String wdxxId,Integer customerId,String content,String insertDate) throws Exception{
		int result = 0;
		String sql="insert into t_pinglun(wdxxId,customerId,content,insertDate) values(?,?,?,now())";
		result = db.update(sql, new Object[]{wdxxId,getCustomer(request).get("id"),content});
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}


	@RequestMapping(value = "/productPinglunSave")
	public ResponseEntity<String> productPinglunSave(Model model,HttpServletRequest request,Long id,String flag
		,String productId,Integer customerId,String content,String insertDate) throws Exception{
		int result = 0;
		String sql="insert into t_pinglun_product(productId,customerId,content,insertDate) values(?,?,?,now())";
		result = db.update(sql, new Object[]{productId,getCustomer(request).get("id"),content});
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}

	@RequestMapping(value = "/zanSave")
	public ResponseEntity<String> zanSave(Model model,HttpServletRequest request,Long id) throws Exception{
		int result = 0;
		String sql="update t_wdxx set zan=zan+1 where id=?";
		result = db.update(sql, new Object[]{id});
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}


	@RequestMapping(value = "/zxList")
	public String zxList(Model model, HttpServletRequest request,String flag,String title)throws Exception {

		String sql="select a.* from t_zx a where 1=1 ";


	if(title!=null&&!"".equals(title)){
			sql+=" and title like '%"+title+"%'";
		}
		sql+=" order by id desc";
		List list = db.queryForList(sql);
		request.setAttribute("list", list);
		return "/front/zxList";
	}



	@RequestMapping(value = "/zxShow")
	public String zxShow(Model model, HttpServletRequest request,Long id,String flag)throws Exception {
		String sql="select * from t_zx where id=?";
		Map map = db.queryForMap(sql,new Object[]{id});
		model.addAttribute("map", map);
		 sql="select a.* from t_zx a where 1=1 ";
			sql+=" order by id desc limit 3";
			List list = db.queryForList(sql);
			request.setAttribute("list", list);
		return "/front/zxShow";
	}

	@RequestMapping(value = "/ltjlDelete")
	public ResponseEntity<String> ltjlDelete(Model model,HttpServletRequest request,Long id,String pl,String flag) throws Exception {
		System.out.println("getCustomer(request).get()==================="+getCustomer(request).get("id"));
		db.update("delete from t_liaotian where customerId=? or toId=?", new Object[]{getCustomer(request).get("id"),getCustomer(request).get("id")});
		return renderData(true,"操作成功",null);
	}

	@RequestMapping(value = "/liaotian")
	public String liaotian(Model model, HttpServletRequest request,Long id,String flag,Long toId)throws Exception {
		Map customer = getCustomer(request);
		if (customer != null && customer.size() > 0) {
		} else {
			return "redirect:/front/register.html";
		}


		String customerId = getCustomer(request).get("id").toString();
		String batchNum1 = customerId+"&&"+toId;
		String batchNum2 = toId+"&&"+customerId;
		List list = db.queryForList("select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName1," +
				"(select max(name) from t_user c where a.toId=c.id) customerName2 from t_liaotian a where batchNum in ('"+batchNum1+"','"+batchNum2+"') order by id asc");
		System.out.println("select a.*,(select max(customerName) from t_customer b where a.customerId=b.id) customerName1," +
				"(select max(name) from t_user c where a.toId=c.id) customerName2 from t_liaotian a where batchNum in ('"+batchNum1+"','"+batchNum2+"') order by id asc");
		model.addAttribute("list", list);


		System.out.println(list);
		return "/front/liaotian";
	}

	@RequestMapping(value = "/woxiaoxi")
	public String woxiaoxi(Model model, HttpServletRequest request,Long id,String flag,Long toId)throws Exception {
		String customerId = getCustomer(request).get("id").toString();
		String sql="select customerId,(select max(customerName) from t_customer b where b.id=a.customerId) customerName  from t_liaotian a where toId="+customerId+" group by customerId ";
		System.out.println(db.queryForList(sql));
		model.addAttribute("list", db.queryForList(sql));
		return "/front/woxiaoxi";
	}


	@RequestMapping(value = "/liaotianSave")
	public ResponseEntity<String> liaotianSave(Model model,HttpServletRequest request,Long toId,String content) throws Exception {
		String customerId = getCustomer(request).get("id").toString();
		String batchNum = customerId+"&&"+toId;
		db.update("insert into t_liaotian(customerId,toId,content,insertDate,batchNum,fq) values(?,?,?,now(),?,1)", new Object[]{customerId,toId,content,batchNum});
		return renderData(true,"操作成功",null);

	}


}

V. プロジェクトの概要

このトピックは主にユーザーの好みに基づいた映画情報推薦システムを実装します。関連分析によると、このシステムは主にフロントエンド ユーザーとバックグラウンド管理ユーザーの 2 つの役割の関連操作機能を実現し、具体的にはオンライン閲覧、収集、コメント機能を実現します映画情報の予約機能を追加し、ユーザーの操作記録に応じた映画情報のデータ推薦機能を完成させます。主に以下の章で構成されています。

最初の部分では、主に導入を通じてこのレコメンドシステム開発の基本的な背景と意義を説明し、その後、国内外のレコメンドシステムのさまざまな研究状況と、関連する協調フィルタリングアルゴリズムアプリケーションの導入と現状について説明します。

2 番目のパートでは、このシステムで使用されている SSM フレームワーク、システム全体のアーキテクチャ モデル、使用されているデータベースの種類を詳しく紹介します。

第三部では、主にシステムの要件を多面的かつ総合的に分析し、システム技術や運用の実現可能性、システムに求められる機能点や非機能要件を示します。

4 番目の部分では、主にシステムの要件に基づいてシステム全体のアーキテクチャ、機能アーキテクチャ、ビジネス ロジックを設計し、各小さなモジュールの設計を詳しく説明します。また、システムのデータベース設計と実装についても説明します。

5 番目のパートでは、主にシステムの各機能モジュールを実装し、前のパートのシステム設計に基づいてフロントエンド ページを示します。

テストの 6 番目の部分では、テストの目的と方法を明確にして、システムの機能テストを完了するためのテスト環境を構築し、テスト ケースを作成します。

おすすめ

転載: blog.csdn.net/whirlwind526/article/details/131199942