10月27日工作日志

上午: 昨天晚上在家里研究李总说的aupair付费以及约束,发现在BasePage中有一些代买是永远不会被执行的,但是看上去又好象是有用的, 于是夜探葛鹏,询问之,果然是但是设计的上的遗留问题,那么这里的代码我就进行了修改,李总说可能别人的代码已经是很好的, 而且经过测试,所以保留原来代码不变,这里只是添加我所修改后的逻辑。---未测试,待修改权限后再测试。 李总说的权限问题不是很简单,但是也有设计上的技巧可言: 如果这样考虑: 1、用户是否交费 2、交费用户是否到期 3、缴费用户交费后,未用完就再次续费,如何累计,如何计算。 4、.... 如果这样考虑: 1、交费用户是否到期 当然是第二种考虑要好,而且还简单,不用改库中的很多的表,每个表添加若干字段,思路: 1、用户注册的时候,默认还是可用,但是这个可用并不是真正去享受服务,而是可以登录,用户到期日期也正好是这个时候。 那么这样就解决了:是否交费,是否到期的问题,而且不用添加很多字段,只要一个到期时间来和登录时间进行对比即可。 2、用户交费,续费的问题,只要你交一次费用那么到期日期就向后推迟交费金额对应的时间, 解决了剩余费用和续费带来的大量判断。 考试修改user表,这里的表不知当时是怎么设计的,好像不是很合理,但是我暂时说不出来是哪里。 在user表中添加一个chargeDate(充值日期) 类型 date,使用phpMyAdmin执行sql,语句如下: ALTER TABLE users ADD chargeDate DATE 修改成功。 下午: 李总来了新的需求: 1、 Browse a Book 2、 Username | Password Admin | Adminuab 3、 Users Email Address Firstname Surname Action (Deactivate/Activate) 4、 Manage Pages Home Page Edit Save Publish 分析李总的新任务: 1、编写用户图书发布的功能,用户可以通过搜索功能来找到一本公开的书。 2、管理员只有一个。 3、编写uab的后台管理,是后台用户的管理。 4、编写uab的后台管理,主页内容的管理,主页内容可以编辑但不发布,也可以编辑完直接发布。 安排工作计划: 1、先实现Public按钮的添加,和js事件的添加,使用Yzlib中的js框架来进行ajax调用。 一下操作在MyBooks.tpl文件中进行修改。 遇到的问题: 添加超链接没有作用,这里尝试使用普通标签,如label标签。 但是样式和超链接不一致,定义其样式,伪造一个超链接的样式,具体代码如下: <label style="color:blue;cursor: pointer;" mce_style="color:blue;cursor: pointer;" onclick="publicbook('+book.BookId+');">Publish</label> 调用Yzlib中的Ajax框架中的方法更新books表中的IsSafety字段值为2,实现public功能。 遇到的问题,不能返回值过来,或者返回来的值我不知道该怎么解析,ajax代码如下: var rowcount=Yz.xmlhttp.syncRequest("BookHelper.html?a=pubbooks?bookid="+bookid); alert("rowcount: "+rowcount); if(rowcount>0) { alert("Public Successfully"); } else { alert("Failure to Public"); } var rowcount=Yz.xmlhttp.syncRequest("BookHelper.html?a=pubbooks&bookid="+bookid); 20分钟浪费在了一个连字符上,应该是 '&' 而我写成了'?',这样低级的错误,如果总是犯的话。。。 2、在表中添加一条记录,用户名Admin,密码Adminuab。 具体操作:在前台注册一个普通用户,在phpMyAdmin中进行编辑。 将邮箱地址改变为Admin。 密码已经通过php程序加密,值为:Adminuab。 测试登录,成功,下面进行管理界面的编写。 晚上: 赵坚的建议: 使用IsPublic字段,而不是原来的字段,lock,unlock,这样就不用添加数据库字段,而只是在工程中添加逻辑即可。 因为原来的字段可能有写业务逻辑是要依赖的这里我要添加一个功能,那么就自己添加这个功能所依赖的数据。 赵坚帮我调试YzLib中的ajax,因为我写错了一个连字符,当时赵坚打开记事本,我觉得挺笨的。 本来可以复制粘贴,原来他在检查ajax请求中的url参数是不是正确,这样手写检查应该是比只用眼来扫描可靠。 赵坚提议在mysql中使用枚举类型enum("true","flase"), mysql没有实现check约束,只是相当于注释,但是枚举类型应该可以弥补这点不足。 和赵坚交流每次都能学到不少东西,因为我问的是一个点,但是他讲的总是一个面。 快吃饭的时候来了一个外国客人,介绍一款神奇的笔,很智能,通过一种特制的纸张,上面有坐标, 客人的比喻是他们的纸张永远也用不完,因为它可以像中国那么幅员辽阔。能将记录扫描成pdf,通过点出pdf来听取视频会议, 还支持在线收听会议,因为这个笔在网络上有数据存储服务器,能搜索关键字,即使那些关键字是手写体。能翻译,能做智能向导, 教你画一个钢琴的琴键,当你点击琴键的时候还会发出对应的音乐,功能是凡所应有,无所不有,李总指出要自己制作纸张。 3、添加一个用户管理界面。 添加一个Admin.class.php到Page目录下面,添加一个Admin.tpl到template目录下面。 在用户登录的时候首先判断是否为超级管理员,如果是超级管理员那么跳转到Admin.html中,就好象是aupair中的权限认证。 这里根据IsAdmin来进行判断,0代表普通用户,1代表管理员。业务判断加到Admin.class.php中。 如果是管理员那么就跳转到管理界面。 这个页面加载所有用户的信息,同时可以编辑如下内容: Email Address Firstname Surname Action(Deactivate/Activate) 这里可以仿照MyBooks.tpl中的写法来处理用户的编辑。 然后是ajax请求数据 然后是js绘制table 这里先根据需要绘制一个静态的table字段包括如下: Email Address Firstname Surname Action(Deactivate/Activate) 数据库中的字段为 Email CountryId Firstname FamilyName Action 向后台发送ajax请求 var list=Yz.xmlhttp.syncRequest('UserHelper.html?a=getusers'); 返回数据为: { "_item_15":{ "UserId":"24", "Firstname":"", "FamilyName":"", "Email":"Admin", "Passwd":"a9277c34936ec3b1b958a77f4121f8f0", "CountryId":"China", "DateOfBirth":"2009-01-01 00:00:00", "SelectedQuestion":null, "SelectedAnswer":null, "RegisteredOn":"2009-10-27 16:34:30", "IsAdmin":"1", "PhotoAlbumPageId":"121", "MediaLibraryPageId":"122", "VideoPageId":null, "MiscPhotoFolderId":"45" }..... } 这里的返回值还仅仅是一个字符串,使用eval函数将其转换成对象并存储到list中,代码如下: eval('list='+list); 然后可以通过list._item_.Email的方式进行属性的读取。 然后是Action按钮事件 4、添加一个主页管理界面。 

你可能感兴趣的:(10月27日工作日志)