




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、開(kāi)發(fā)流程 1. 創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表 2. 項(xiàng)目命名并創(chuàng)建項(xiàng)目目錄 3. 創(chuàng)建控制器類 4. 創(chuàng)建模型類 5. 創(chuàng)建模板文件 6. 運(yùn)行和調(diào)試 開(kāi)發(fā)需求和開(kāi)發(fā)目標(biāo) 我們的禮物應(yīng)用需要實(shí)現(xiàn)以下的功能: 1. 用戶可以給關(guān)注的人或粉絲發(fā)送禮物 2. 用戶可以看到自己送出去的全部禮物 3. 用戶可以看到別人送給自己的全部禮物 4. 用戶可以回贈(zèng)禮物給好友 5. 用戶發(fā)送禮物時(shí)能同時(shí)發(fā)送通知信息 6. 用戶發(fā)送禮物成功后可發(fā)送微博分享消息 7. 管理員可在后臺(tái)增加,修改,刪除禮物及禮物種類 8. 管理員可在后臺(tái)配置禮物的積分消費(fèi)種類:積分?經(jīng)驗(yàn)? 9. 實(shí)現(xiàn)完善的積分消費(fèi)功能,如果用戶積分不足則不能贈(zèng)送
2、 創(chuàng)建數(shù)據(jù)表 根據(jù)上面的需求分析可知,我們需要設(shè)計(jì)三張數(shù)據(jù)表,一個(gè)用來(lái)保存禮物的分類信息,另一個(gè)用來(lái)保存禮物的信息,還有一張用來(lái)保存用戶之間的送禮記錄。增加數(shù)據(jù)表請(qǐng)注意表DB_PREFIX 常量已經(jīng)定義。 增加禮物分類表: 字段 類型 說(shuō)明 id int name varchar 分類名 status tinyint 是否啟用 0禁用 1啟用(默認(rèn)) cTime int 創(chuàng)建時(shí)間 增加兩個(gè)默認(rèn)分類:熱門禮物、最新上架 增加禮物信息表: 字段 類型 說(shuō)明 id int categoryId int 分類ID,對(duì)應(yīng)上面的分類表的ID name varchar 禮物名 num int 庫(kù)存 pric
3、e int 價(jià)格 img varchar 禮物圖片 status tinyint 是否啟用0 禁用1 啟用(默認(rèn)) cTime int 創(chuàng)建時(shí)間 在這里我們當(dāng)然也要預(yù)先準(zhǔn)備好部分禮物,即初始化的禮物信息。 增加送禮記錄表: 字段 類型 說(shuō)明 id int fromUserId int 送禮人ID toUserId int 送禮對(duì)象 giftPrice int 價(jià)格 giftImg varchar 禮物圖片 sendInfo text 附加信息 sendWay tinyint 贈(zèng)送的方式:1 公開(kāi)2 私下3 匿名 cTime int 創(chuàng)建時(shí)間 到此,數(shù)據(jù)表設(shè)計(jì)完畢。 在應(yīng)用程序目錄下的/gift
4、/Appinfo/文件夾里的install.sql文件包含了上述建表和插入預(yù)定義數(shù)據(jù)的sql語(yǔ)句。 創(chuàng)建應(yīng)用目錄 gift Appinfo Common Conf Language Lib Tpl我們先在/apps/目錄下增加禮物目錄gift,然后在/apps/gift/目錄下創(chuàng)建上圖所示的目錄(請(qǐng)注意大小寫(xiě))。 . 應(yīng)用程序目錄Lib: 應(yīng)用程序目錄下存放的是Action控制器和Model模型的文件。 . 應(yīng)用模板目錄Tpl: 由于本次禮物應(yīng)用只有一套模板,因此我們直接在Tpl/目錄創(chuàng)建默認(rèn)模板目錄default/,然后在default/目錄下添加我們需要的Index 模板和一個(gè)公共模板目錄
5、Public/。 . 公共函數(shù)目錄Common: 這里可以存放本次應(yīng)用的公共函數(shù),文件名為common.php,該文件會(huì)在執(zhí)行過(guò)程中自動(dòng)加載,這些函數(shù)在Action/ 和Model/目下的文件里可以直接使用,無(wú)需再次引入文件。 . 應(yīng)用配置目錄Conf: 如果應(yīng)用里有需要修改系統(tǒng)默認(rèn)的常量或者在里面添加項(xiàng)目需要的一些配置參數(shù),就需要在項(xiàng)目的Conf/目錄下面,創(chuàng)建一個(gè)名稱是config.php 的配置文件,該文件也會(huì)自動(dòng)加載。公共函數(shù)目錄和應(yīng)用配置目錄非必需的目錄,視應(yīng)用開(kāi)發(fā)決定是否需要。本次禮物開(kāi)發(fā)中只用到公共函數(shù)文件夾。 . 語(yǔ)言目錄Language: 用以保存應(yīng)用的系統(tǒng)通知模板和動(dòng)態(tài)模板
6、。本次禮物開(kāi)發(fā)中將用到系統(tǒng)通知模板。在Language/目錄下創(chuàng)建中文語(yǔ)言包目錄cn/,然后添加通知模板文件notify.php (動(dòng)態(tài)是同樣的道理,只是文件名為:feed.php)。 . 安裝包目錄Appinfo: 用于在系統(tǒng)管理后臺(tái)的應(yīng)用安裝/卸載操作,必須包含info.php文件(用以獲卸載時(shí)自動(dòng)調(diào)用。 開(kāi)始編程 . 公共函數(shù)層 在Common/目錄下,新建common.php文件(注意文件名的大小寫(xiě)),寫(xiě)入所需函數(shù),如獲取應(yīng)用配置參數(shù)的函數(shù): function getConfig($key=NULL) 詳細(xì)代碼請(qǐng)參見(jiàn)該文件。 這個(gè)文件里的函數(shù)在Action/ 、Model/ 和Tpl/
7、目錄下的文件都可以直接使用。 . MODEL層 class GiftCategoryModel extends Model class GiftModel extends Model class UserGiftModel extends Model 通過(guò)以上步驟,我們現(xiàn)在已將數(shù)據(jù)庫(kù)表和模型類建立了關(guān)聯(lián)關(guān)系。在項(xiàng)目的Action 類和Model 類中,已可以直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)操作。 有些人習(xí)慣在Model 類里封裝一些方法,這樣更符合MVC 規(guī)范,也有一些人習(xí)慣把方法都寫(xiě)在Action 里,方便程序的閱讀,這主要看個(gè)人習(xí)慣。本次開(kāi)發(fā)將基本方法寫(xiě)進(jìn)入Model 層里。詳細(xì)代碼請(qǐng)參見(jiàn)相應(yīng)文件。
8、. ACTION層 class IndexAction extends Action 詳細(xì)代碼參加該文件。 . 模板層 我們?cè)赥pl/default/目錄下需要兩個(gè)文件夾:Index和Public。Index文件Tpl/default/Public/目錄下,比如禮物應(yīng)用的禮物圖片、JS文件、CSS文件、應(yīng)用頭文件_mainNav.html等。當(dāng)然,這些目錄的設(shè)置完全由開(kāi)發(fā)者自己決定,只要保證調(diào)用文件的路徑正確就可以了。 <!-引入系統(tǒng)頭文件-> <include file="_THEME_/header" /> <!-引入樣式文件區(qū)->
9、<!-引入JS 文件區(qū)-> <!-引入應(yīng)用頭文件-> <include file="./Public/_mainNav" /> <!- 內(nèi)容begin -> <div class="content"> <div class="main no_l"> <div class="mainbox"> <!- 畫(huà)布begin -> <div class="mainbox_C no_r"> </
10、div> <!- 畫(huà)布end -> <div class="c"></div><!- 分隔層-> </div> </div> </div> <!- 內(nèi)容end -> <!-引入系統(tǒng)尾文件-> <include file="_THEME_/footer" /> 詳細(xì)內(nèi)容請(qǐng)參閱具體代碼。下面介紹模板文件中幾處有學(xué)習(xí)價(jià)值的代碼。 1. 系統(tǒng)在頭文件里已經(jīng)引入jQuery 庫(kù),開(kāi)發(fā)人員不必重復(fù)引入。 2. Tpl/default/Inde
11、x/目錄下的index.html文件,這是禮物中心的模板,里面選擇發(fā)送好友的功能用到好友選擇widget,只需要在模板里增加:W("SelectFriend"),然后用$_POST'fri_ids'就可以獲得選擇的好友ID. 3. 因?yàn)槲覀兪怯胒indPage()方式獲取收到和送出的禮物列表,故返回的數(shù)據(jù)已經(jīng)有分頁(yè)的變量了,只要在模板合適的地方增加如下的代碼即可: <div id="Pagination" class="pagination">$gifts.html</div> 增加積分消費(fèi)功能
12、 上面的程序基本完成了禮物的全部操作,接下來(lái)我們要增加積分消費(fèi)功能。至于禮物消費(fèi)的積分類型,是積分或者還是經(jīng)驗(yàn),可以在后臺(tái)設(shè)置,詳細(xì)請(qǐng)看后臺(tái)程序說(shuō)明。首先在發(fā)送禮物頁(yè)面增加顯示當(dāng)前用戶所擁有多少積分的功能,我們只要在/獲取當(dāng)前用戶的積分 $money = X('Credit')->getUserCredit($this->mid); $moneyType = getConfig('credit'); $this->assign('money',$money$moneyType); 在發(fā)送禮物的模板里增加以下一行代碼: 我目前擁有
13、的 $money.alias是:$money.credit 扣除所選禮物的相應(yīng)積分程序: /扣除相應(yīng)積分 $giftPrice = intval($giftInfo'price'); $prices = $userNum*$giftPrice; $moneyType = getConfig('credit'); /積分操作 $setCredit = X('Credit'); /檢測(cè)積分是否足夠 $userCredit = $setCredit->getUserCredit($fromUid); if($userCredit$moneyTyp
14、e'credit'<$prices) return $userCredit$moneyType'alias'.'不足,贈(zèng)送失敗' $setCredit->setUserCredit($fromUid,array($moneyType=>$prices),-1); 這里調(diào)用了公共類庫(kù)services中的積分操作類,即X('Credit')。 到這里積分消費(fèi)功能增加完畢。 增加發(fā)通知功能 首先需要增加禮物的通知模板。在Language/目錄下創(chuàng)建一個(gè)文件夾cn,再在cn文件夾下創(chuàng)建通知模板文件notify.php,代
15、碼如下: <?php return array( 'gift_send' => array( 'title' => 'actor給您送了一個(gè)禮物', 'body' => $img.'<br />'.$sendback.'<br /> <div class="quote"> <p><span class="quoteR">'.$content.'</span>
16、</p> </div><br /> <a href="'.U('gift/Index/receivebox').'" target="_blank"> 去看看 </a>', ), ); ?> 在發(fā)送禮物成功后增加以下程序: /給接收人發(fā)送通知 $this->_doNotify($toUser,$sendInfo,$giftInfo,$fromUid,$appId); _doNotify() 方法的實(shí)現(xiàn)請(qǐng)參閱具體代碼。 這里調(diào)用了公共類庫(kù)serv
17、ices中的系統(tǒng)通知類,即X('Notify')。 到這里發(fā)通知功能完成了。 增加發(fā)送動(dòng)態(tài)功能 發(fā)送動(dòng)態(tài)的機(jī)制與發(fā)送通知的機(jī)制完全相同,區(qū)別只有如下兩點(diǎn): . 通知使用/Language/cn/feed.php,而動(dòng)態(tài)使用/Language/cn/notify.php . 通知服務(wù)使用X('Notify')或service('Notify'),而動(dòng)態(tài)使用X('Feed')或service('Feed') 由于禮物應(yīng)用沒(méi)有用到動(dòng)態(tài),這里也不再贅述。 增加微博分享功能 首先我們需要在“管理后臺(tái) -內(nèi)容 - 模板管理”增
18、加一個(gè)禮物贈(zèng)送的模板: 在組裝通知數(shù)據(jù)前,初始化一個(gè)獲贈(zèng)對(duì)象變量: / 贈(zèng)送的對(duì)象名稱 用于公開(kāi)贈(zèng)送微博 $toUserName = NULL; 在組裝公開(kāi)贈(zèng)送的通知信息中添加如下代碼,用以 到各個(gè)獲贈(zèng)用戶: / 贈(zèng)送對(duì)象名稱 $toUserName .= ''.getUserName($fid).' ' 在通知信息組裝結(jié)束后,添加如下代碼,將微博信息暫存于SESSION中: / 公開(kāi)則發(fā)微薄 if($toUserName) $_SESSION'gift_send_weibo' = urlencode ( serialize ( array( &
19、#39;user' => $toUserName, 'title' => $giftInfo'name', 'content' => $data'content', 'url' => U('gift/Index/index', array( 'uid' =>$fid, 'type' =>1, 'type_data'=>realityImageURL($giftInfo'img'), );
20、 碼: /判斷是否有公開(kāi)贈(zèng)送信息,存在,則賦值給模板,用于發(fā)微薄 if(isset($_SESSION'gift_send_weibo')&&!empty($_SESSION'gift_send_weibo') $this->assign('tpl_data',$_SESSION'gift_send_weibo'); unset($_SESSION'gift_send_weibo'); 在Tpl/default/Index/目錄下送出的禮物sendbox.html模板文件里,添加WeiboWi
21、dget引用(只有發(fā)送微博的信息存在時(shí)才加載),如下: <if condition="$tpl_data"> :W('Weibo',array( 'tpl_name'=>'gift_send_weibo', 'button_title'=>'分享', ) <script>_widget_weibo_start('', '$tpl_data');</script> </if> 到這里公開(kāi)贈(zèng)送發(fā)微博功能完成了
22、。 增加應(yīng)用后臺(tái) 系統(tǒng)為應(yīng)用增加管理后臺(tái)的方法很簡(jiǎn)單,直接在應(yīng)用的Action/目錄下增加管理: <?php /引入后臺(tái)管理類 class AdminAction extends AdministratorAction function _initialize() / 管理權(quán)限判定 parent:_initialize(); ?> 注意:在_initialize函數(shù)里,首先要執(zhí)行parent:_initialize(),進(jìn)行管理權(quán)限判定。 更多詳細(xì)代碼請(qǐng)見(jiàn)具體文件。 接著我們?cè)黾訉?duì)應(yīng)的管理頁(yè)面的模板,Tpl/default/目錄下增加Admin/目錄,然后在該目錄下增加_heade
23、r.html, _footer.html, _tab.html, index.html, giftlist.html, category.html, edit_gift_tab.html, edit_category_tab.html幾個(gè)模板文件。模板開(kāi)發(fā)方式同前臺(tái)的模板一樣,在此不再重復(fù)。 制作安裝/卸載包 在應(yīng)用的目錄下增加安裝信息目錄,命名為Appinfo,然后在該目錄下增加應(yīng)用圖標(biāo)(ico_app.gif、ico_app_large.gif)、應(yīng)用配置文件(info.php)、應(yīng)用安裝文件(install.php)、應(yīng)用數(shù)據(jù)庫(kù)文件(install.sql)和應(yīng)用卸載文件(uninsta
24、ll.php)。 . 配置文件內(nèi)容: <?php if (!defined('SITE_PATH') exit(); return array( / 應(yīng)用名稱 必填 'NAME' => '禮物', / 應(yīng)用簡(jiǎn)介 必填 'DESCRIPTION' => '禮物贈(zèng)送', / 托管類型 必填(0:本地應(yīng)用,1:遠(yuǎn)程應(yīng)用) 'HOST_TYPE' => '0', / 前臺(tái)入口 必填(格式:Action/act) 'APP_ENTRY' =>
25、39;Index/index', / 應(yīng)用圖標(biāo) 必填 'ICON_URL' => SITE_URL . '/apps/gift/Appinfo/ico_app.gif', / 應(yīng)用圖標(biāo) 必填 'LARGE_ICON_URL' => SITE_URL . '/apps/gift/Appinfo/ico_app_large.gif', / 后臺(tái)入口 選填 'ADMIN_ENTRY' => 'Admin/index', / 統(tǒng)計(jì)入口 選填(格式:Model/method)
26、9;STATISTICS_ENTRY' => 'GiftStatistics/statistics', ); ?> 注意:其中的SITE _URL是站點(diǎn)根目錄網(wǎng)址,如果直接使用它本身的話程序會(huì)自動(dòng)解釋成絕對(duì)網(wǎng)址,還有一個(gè)好處就是網(wǎng)站轉(zhuǎn)移的時(shí)候這些信息都不需要修改,程序會(huì)自動(dòng)解釋出新的網(wǎng)址賦值給它。當(dāng)然,你也可以使用絕對(duì)網(wǎng)址。 . 安裝文件內(nèi)容: 數(shù)據(jù)庫(kù)操作的語(yǔ)句均統(tǒng)一放在數(shù)據(jù)庫(kù)文件install.sql中,install.php的功能就是執(zhí)行該文件: <?php if (!defined('SITE_PATH') exit(); hea
27、der('Content-Type: text/html; charset=utf-8'); $sql_file = APPS_PATH.'/gift/Appinfo/install.sql' /執(zhí)行sql文件 $res = M('')->executeSqlFile($sql_file); if(!empty($res)/錯(cuò)誤 echo $res'error_code' echo '<br />' echo $res'error_sql' /清除已導(dǎo)入的數(shù)據(jù) include_on
28、ce(APPS_PATH.'/gift/Appinfo/uninstall.php'); exit; ?> . 數(shù)據(jù)庫(kù)文件內(nèi)容: 首先,寫(xiě)入該應(yīng)用三張數(shù)據(jù)表的添加語(yǔ)句;然后,再加入應(yīng)用系統(tǒng)配置信息和微博模板的插入語(yǔ)句,若有設(shè)定積分規(guī)則的應(yīng)用,也加上積分規(guī)則的插入語(yǔ)句,可以參見(jiàn)日志、相冊(cè)等應(yīng)用的數(shù)據(jù)庫(kù)文件,代碼如下: SET FOREIGN_KEY_CHECKS=0; 三張數(shù)據(jù)表及其預(yù)設(shè)信息的sql語(yǔ)句 #添加ts_system_data數(shù)據(jù) REPLACE INTO ts_system_data (uid,list,key,value,mtime) VALUES (0,
29、'gift', 'credit', 's:5:"score"', '2010-12-24 11:22:17'); #模板數(shù)據(jù) DELETE FROM ts_template WHERE name = 'gift_send_weibo' INSERT INTO ts_template (name, alias, title, body, lang, type, type2, is_cache, ctime) VALUES ('gift_send_weibo', '禮物贈(zèng)送', '','我送給user 一份禮物:【title】content 參與送禮url', 'zh', 'g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3949-2020普通國(guó)省干線綠色公路建設(shè)技術(shù)規(guī)程
- DB32/T 3725-2020屋久島紫薇硬枝扦插育苗技術(shù)規(guī)程
- DB32/T 3720-2020開(kāi)放式綜合公園服務(wù)規(guī)范
- DB32/T 3677-2019高速兒童汽車安全座椅技術(shù)規(guī)范
- DB31/T 856-2014陸上公共貨運(yùn)標(biāo)志
- DB31/T 714-2013假肢矯形器裝配機(jī)構(gòu)服務(wù)規(guī)范
- DB31/T 299-2018鄉(xiāng)村民宿服務(wù)質(zhì)量要求
- DB31/T 1346-2022規(guī)模化畜禽養(yǎng)殖場(chǎng)主要?jiǎng)游镆卟艋镜渍{(diào)查技術(shù)規(guī)范
- DB31/T 1237-2020空壓機(jī)系統(tǒng)運(yùn)行能效評(píng)估技術(shù)規(guī)范
- DB31/T 1205-2020醫(yī)務(wù)社會(huì)工作基本服務(wù)規(guī)范
- 化工設(shè)計(jì)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋浙江大學(xué)
- 新人教版八年級(jí)美術(shù)下冊(cè)教案《情感的抒發(fā)與理念的表達(dá)》教學(xué)設(shè)計(jì)
- 小學(xué)數(shù)學(xué)北師大五年級(jí)上冊(cè)數(shù)學(xué)好玩已修改《點(diǎn)陣中的規(guī)律》
- 社會(huì)過(guò)程研究方法(簡(jiǎn)版)課件
- 替莫唑胺與惡性膠質(zhì)瘤課件
- 腹腔鏡器械清洗流程圖
- 學(xué)校食堂餐廳紫外線燈消毒記錄表
- 工會(huì)文體活動(dòng)管理制度范文
- 第6章_射線與物質(zhì)的相互作用
- 3D打印介紹PPT精選文檔課件
- 鋼結(jié)構(gòu)吊裝施工方案-
評(píng)論
0/150
提交評(píng)論