package inhope.AppBuilder.model; import java.util.AbstractList; import inhope.AppBuilderNew.*; import inhope.AppBuilder.*; import inhope.AppBuilder.model.tmsgtaskModel; import db.PubDB; import inhope.SendMails; import inhope.getMaxID; import inhope.MD5; import java.util.Random; /** *具体的对象模型,自动生产,里面有一些需要自己设置 * 请将该类拷贝到inhope.AppBuilder.model 包下进行编译 */ public class qjuserinfoModel extends DBModel { private NormalField userid=new NormalField(); private NormalField usernamecn=new NormalField(); private NormalField usernameen=new NormalField(); private NormalField password=new NormalField(); private NormalField userflag=new NormalField(); private NormalField usermemo=new NormalField(); private NormalField outdbflag=new NormalField(); private NormalField usershortmemo=new NormalField(); private NormalField ordertag=new NormalField(); private NormalField mp=new NormalField(); private NormalField email=new NormalField(); private NormalField iscanceled=new NormalField(); private NormalField qq=new NormalField(); private NormalField isonline=new NormalField(); private NormalField counttime=new NormalField(); private NormalField webedittag=new NormalField(); private NormalField popusetag=new NormalField(); private NormalField logtype=new NormalField(); private NormalField im_id=new NormalField(); private NormalField im_status=new NormalField(); private NormalField im_latest_time=new NormalField(); private DateField onlinedt =new DateField(new NormalField()); private NormalField userrole=new NormalField(); private NormalField firststate=new NormalField(); /** * 注意1: 如果有外键类型,请手动换成下面的构造。 * 实例 : * private ForeignKey fkid=new ForeignKey(new StudentClass()); * //StudentClass 为外键数据表的模型对象 需创建 * 注意2: 有附件类型,上面的attachname,attachtype需手动换掉,并且删掉type和name的CField构造。 * image类型的,在构造的时候,必须传递数据库中对应的名称,类型,内容的字段名称 **/ public qjuserinfoModel() { this.initField(); } protected void initField() { setFieldProprety(userid,"字段名称","userid"); setFieldProprety(usernamecn,"字段名称","usernamecn"); setFieldProprety(usernameen,"字段名称","usernameen"); setFieldProprety(password,"字段名称","password"); setFieldProprety(userflag,"字段名称","userflag"); setFieldProprety(usermemo,"字段名称","usermemo"); setFieldProprety(outdbflag,"字段名称","outdbflag"); setFieldProprety(usershortmemo,"字段名称","usershortmemo"); setFieldProprety(ordertag,"字段名称","ordertag"); setFieldProprety(mp,"字段名称","mp"); setFieldProprety(email,"字段名称","email"); setFieldProprety(iscanceled,"字段名称","iscanceled"); setFieldProprety(qq,"字段名称","qq"); setFieldProprety(isonline,"字段名称","isonline"); setFieldProprety(counttime,"字段名称","counttime"); setFieldProprety(webedittag,"字段名称","webedittag"); setFieldProprety(popusetag,"字段名称","popusetag"); setFieldProprety(logtype,"字段名称","logtype"); setFieldProprety(im_id,"字段名称","im_id"); setFieldProprety(im_status,"字段名称","im_status"); setFieldProprety(im_latest_time,"字段名称","im_latest_time"); onlinedt.setIsOnly("n"); setFieldProprety(onlinedt,"字段名称","onlinedt"); setFieldProprety(userrole,"字段名称","userrole"); setFieldProprety(firststate,"字段名称","firststate"); userid.setPrimayKey(true); //设置XXXX为主键。很重要,必须的 见注意5 //设置当前应用的主键是否是自增长的。如果不是不用设置,如果是,必须设置 // this.setPKisauto(true); this.setTablename("qjuserinfo"); this.getCFieldList(); this.getListCFieldList(); this.setSearchField(); this.setSqlorderby(""); //自己设置排序 /** * 注意3: 将字段名称,换成你自己定义的字段的名称(汉字) * 实例 : setFieldProprety(sex,"性别","sex"); * 注意4: 自己需要设置结果集列表排序,如果不设置,就无排序 * 实例: this.setSqlorderby(" userid "); //自己设置排序 * 注意5: 自己设置某一条字段为主键,必须设置 * 实例 userid.setPrimayKey(true); //设置userid为主键。很重要,必须的 * 注意6: 如果有外键引入,则必须设置 * 实例: this.setValueField(fkid); typeid为type对应主表的主键 */ } /** *在修改页面中,设置那些只读,不需要修改 */ public void setOnlyReadField(){ //CField.setcanEdit("Y"); 实例,自己设置 //默认是全部可以编辑的,如需不可编辑,设置为Y }; /** *设置那些作为查询条件 */ public void setSearchField(){ //CField.setFieldSearch("1");实例,自己设置 }; /** *返回 返回全部的数据CField对象 不用修改 */ protected void dogetCFieldList(AbstractList al) { al.add(this.getuserid()); al.add(this.getusernamecn()); al.add(this.getusernameen()); al.add(this.getpassword()); al.add(this.getuserflag()); al.add(this.getusermemo()); al.add(this.getoutdbflag()); al.add(this.getusershortmemo()); al.add(this.getordertag()); al.add(this.getmp()); al.add(this.getemail()); al.add(this.getiscanceled()); al.add(this.getqq()); al.add(this.getisonline()); al.add(this.getcounttime()); al.add(this.getwebedittag()); al.add(this.getpopusetag()); al.add(this.getlogtype()); al.add(this.getim_id()); al.add(this.getim_status()); al.add(this.getim_latest_time()); al.add(this.getonlinedt()); al.add(this.getuserrole()); al.add(this.getfirststate()); } /** *返回 列表的表单元素 * 自动生产的是全部表单元素,根据实际应用,手工删除不需要的列表对象 */ public void dogetListCFieldList(AbstractList onlyal){ onlyal.add(this.getuserid()); onlyal.add(this.getusernamecn()); onlyal.add(this.getusernameen()); onlyal.add(this.getpassword()); onlyal.add(this.getuserflag()); onlyal.add(this.getusermemo()); onlyal.add(this.getoutdbflag()); onlyal.add(this.getusershortmemo()); onlyal.add(this.getordertag()); onlyal.add(this.getmp()); onlyal.add(this.getemail()); onlyal.add(this.getiscanceled()); onlyal.add(this.getqq()); onlyal.add(this.getisonline()); onlyal.add(this.getcounttime()); onlyal.add(this.getwebedittag()); onlyal.add(this.getpopusetag()); onlyal.add(this.getlogtype()); onlyal.add(this.getim_id()); onlyal.add(this.getim_status()); onlyal.add(this.getim_latest_time()); onlyal.add(this.getonlinedt()); onlyal.add(this.getuserrole()); onlyal.add(this.getfirststate()); }; /* * 这个函数用来判断用户的账号和输入的手机号相匹配 * 如果相匹配则返回true,否则返回false * 用户输入的数据请从相关字段得到 * 输入的数据包括:用户帐号,手机号。 * 如果匹配,请设置userid的值 */ private boolean CheckUserWithAccountAndMp() { PubDB pdb=new PubDB(); String sql="select userid from qjuserinfo where usernameen='"+usernameen.getValues()+"' and mp='"+mp.getValues()+"'"; sql=pdb.getValue(sql); pdb.close(); pdb=null; this.getuserid().setValues(sql); return !"".equals(sql); } /* * 这个函数用来判断用户的账号和输入的邮箱号相匹配 * 如果相匹配则返回true,否则返回false * 用户输入的数据请从相关字段得到 * 输入的数据包括:用户帐号,邮箱号。 * 如果匹配,请设置userid的值 */ private boolean CheckUserWithAccountAndEmail() { PubDB pdb=new PubDB(); String sql="select userid from qjuserinfo where usernameen='"+usernameen.getValues()+"' and email='"+email.getValues()+"'"; sql=pdb.getValue(sql); pdb.close(); pdb=null; this.getuserid().setValues(sql); return !"".equals(sql); } /* * 这个函数用来更新用户的密码。 * 密码请用随机数生成,并且使用md5加密 * 最后返回设置好的新密码 * */ private String setRandomPassword() { Random aa=new Random(); String msg=""; String pwd=""; String sql=""; PubDB pdb=new PubDB(); pwd="aa"+aa.nextInt(); sql="update qjuserinfo set password='"+MD5.md5(pwd)+"' where usernameen='"+usernameen.getValues()+"'"; msg=pdb.update(sql); pdb.close(); pdb=null; if (!"".equals(msg)) { return ""; } return pwd; } /* * 这个函数用来发送短信,即向message表插入一条新的数据。 * 返回结果为true表示发送成功,false表示发送失败 * 手机号等从相关字段中取得 */ private boolean SendMessage() { String newpwd=setRandomPassword(); //获得随机密码 if ("".equals(newpwd)) { return false; } tmsgtaskModel amsg=new tmsgtaskModel();//产生一个短信类,然后设置其相关属性,最后调用它的save方法 amsg.gettaskid().setValues(""+getMaxID.getMaxID(amsg.getTablename(),"taskid")); amsg.gettoaddress().setValues(mp.getValues()); amsg.gethassent().setValues("n"); amsg.getsubject().setValues("您的密码已经重设为:"+newpwd+",请登录系统后尽快修改密码!"); //amsg.gettaskdt().setValues(); //amsg.getsenddt().setValues(); return amsg.save(); } /* * 这个函数用来发送email * 返回结果为true表示发送成功,false表示发送失败 * 电子邮件等从相关字段中取得 * 发送邮件请使用inhope.sendMail.class类 */ private boolean SendEmail() { String newpwd=setRandomPassword(); //获得随机密码 if ("".equals(newpwd)) { return false; } PubDB pdb=new PubDB(); SendMails sendMail = new SendMails(pdb); String msg=sendMail.sendMails(this.getuserid().getValues(), "OA系统密码重设", "您的密码已经重设为:"+newpwd+",请登录系统后尽快修改密码!"); if(pdb!=null) pdb.close(); if(msg.indexOf("成功")!=-1) return true; else return false; } /* * 检查输入的用户名、手机或者电子邮件是否和数据库中的相匹配 * 如果用户名和手机相匹配,则重置用户的密码为随机数(使用md5加密),该密码随机生成, * 然后将该密码发送到用户的手机上(该操作即添加一条手机短信即可) * 如果用户名和电子邮件相匹配,则发送电子邮件到用户的电子邮箱。 * 发送电子邮件的代码参考。inhope.sendMail.class类即可。 * 函数最后返回操作的信息。内容如下: * 1、您的密码已经发送至xxx手机 * 2、您的密码已经发送至xxx邮箱 * 3、您填写的用户名和邮箱/手机不匹配 */ public String CheckUser() { if (CheckUserWithAccountAndMp()) { if(SendMessage()) { return "您的密码已经发送至"+mp.getValues()+"手机"; } else { return "密码发送至手机失败,请与系统管理员联系!"; } } if (CheckUserWithAccountAndEmail()) { if (SendEmail()) { return "您的密码已经发送至"+email.getValues()+"邮箱"; } else { return "密码发送至邮箱失败,请与系统管理员联系!"; } } return "您填写的用户名和邮箱/手机不匹配"; } public NormalField getuserid(){ return userid; } public NormalField getusernamecn(){ return usernamecn; } public NormalField getusernameen(){ return usernameen; } public NormalField getpassword(){ return password; } public NormalField getuserflag(){ return userflag; } public NormalField getusermemo(){ return usermemo; } public NormalField getoutdbflag(){ return outdbflag; } public NormalField getusershortmemo(){ return usershortmemo; } public NormalField getordertag(){ return ordertag; } public NormalField getmp(){ return mp; } public NormalField getemail(){ return email; } public NormalField getiscanceled(){ return iscanceled; } public NormalField getqq(){ return qq; } public NormalField getisonline(){ return isonline; } public NormalField getcounttime(){ return counttime; } public NormalField getwebedittag(){ return webedittag; } public NormalField getpopusetag(){ return popusetag; } public NormalField getlogtype(){ return logtype; } public NormalField getim_id(){ return im_id; } public NormalField getim_status(){ return im_status; } public NormalField getim_latest_time(){ return im_latest_time; } public DateField getonlinedt(){ return onlinedt; } public NormalField getuserrole(){ return userrole; } public NormalField getfirststate(){ return firststate; } }