会员卡管理系统技术解析(十五)会员卡状态变动

来源:互联网 发布:利用java防御sql注入 编辑:程序博客网 时间:2024/06/09 13:42

会员卡管理系统技术解析(十五)会员卡状态变动


6.2会员卡状态变动

会员卡状态变动界面效果图如下:

6.2(图1)

 

本模块所用到的控件有:

文本框(easyui-textbox)

第一要设置每个控件的id;第二设置大小不设置也有默认;第三(data-options)是数据操作:可以设置控件的一些属性和事件

单选框

按钮(easyui-linkbutton)

表格(easyui-datagrid)

 

第一步: 数据库

查询符合条件的卡,数据库表与表之间的关系如下图:


6.2(图2)

表1:发放明细表(Pw_MembershipCardIssuedDetails)

列名

数据类型

主键/外键

说明

MembershipCardIssuedDetailsID

int

主键

发放明细ID

MembershipCardIssuedID

int

外键

发放记录ID

MembershipCardRecipientsDetailsID

int

外键

领卡明细ID

MemberProfileID

int

外键

会员档案ID

CardType

int

外键

会员卡类型ID

WindowStateID

int

外键

启动状态ID

StateOfTheMembershipCardID

int

外键

会员卡状态ID

ChangeTheMembershipCardID

int

外键

会员卡变更状态ID

FormerRecipientsDetailsID

int

外键

原领卡明细ID

Money

money

 

金额

Integral

nchar(20)

 

积分

SingleKakaFee

money

 

单卡卡费

ActualStartComputingTime

date

 

实际开始时间

ActualEndTime

date

 

实际结束时间

Summary

nchar(50)

 

摘要

Invalid

bit

 

作废否

AllowedToReportTheLossOf

bit

 

挂失否

InternalIssue

bit

 

内部发放否

 

表2:领卡明细表(Pw_MembershipCardRecipientsDetails)

列名

数据类型

主键/外键

说明

MembershipCardRecipientsDetailsID

int

主键

领卡明细ID

MembershipCardRecipientsID

int

外键

领卡记录ID

MembershipCardDetailsID

int

外键

建卡明细ID

ChangeTheMembershipCardID

int

外键

变更会员卡状态ID

RecipientsWhoID

int

外键

领用人ID

 

表3: 建卡明细表(Pw_MembershipCardDetails)

列名

数据类型

主键/外键

说明

MembershipCardDetailsID

int

主键

建卡明细ID

MembershipCardID

int

外键

建卡记录ID

MembershipCardTypeID

int

外键

会员卡种类ID

MembershipCardStorageLocationID

int

外键

保管地点ID

StateOfTheMembershipCardID

int

外键

会员卡状态ID

ChangeTheMembershipCardID

int

外键

变更会员卡状态ID

UpdateRankID

int

外键

会员卡级别ID

KeeperID

int

外键

保管人ID

Remarks

nchar(200)

 

备注

MembershipCardCardNumber

nchar(50)

 

会员卡卡号

SpecifyTheValidityTime

date

 

有效期指定时间

ValidityTime

date

 

有效期时间

WriteCardStatus

nchar(10)

 

写卡状态

WriteTime

date

 

写卡时间

NominalAmount

money

 

面值金额

 

表4:会员档案(MemberProfile)

列名

数据类型

主键/外键

说明

MemberProfileID

int

主键

会员档案ID

MemberAgeID

int

外键

会员年龄段ID

AreaID

int

外键

区域ID

IDTypeID

int

外键

证件类型ID

BookerID

int

外键

登记人ID

MemberOfTheProfessionalID

int

外键

会员职业ID

ClientNatureID

int

外键

客户性质ID

UpdateManID

int

外键

更新人ID

Mail

nchar(30)

 

邮箱

MailingAddress

nchar(50)

 

通讯地址

OfficePhone

nchar(20)

 

办公电话

PrivateCallNumber

nchar(20)

 

私人电话

MobileNumber

nchar(20)

 

手机号码

TimeToMarket

date

 

至商场时间

MembershipDegree

nchar(20)

 

会员学历

MemberOfTheFamilyIncome

nchar(20)

 

会员家庭收入

Vehicle

nchar(20)

 

交通工具

FamilyMembers

nchar(10)

 

家庭成员数量

HobbiesAndInterests

nchar(30)

 

兴趣爱好

Linkman

nchar(20)

 

联系人

UpdateTime

date

 

更新时间

BookTime

date

 

登记时间

Invalid

bit

 

作废否

MenberName

nchar(20)

 

会员姓名

USEX

nchar(10)

 

会员性别

IDNumber

nchar(20)

 

证件号码

Birthday

date

 

出生日期

 

控件的使用方法:

1、文本框(easyui-textbox)

作用:用于数据的存放

 

普通文本框截图:


          6.2(图3)

 

普通文本框界面代码:

<td><input id="txtLingYongRen" style="color:Blue"/></td>


 

  获取界面控件值的代码:

  $('#txtLingYongRen').val();


 

2、单选框

作用:便于选择

 

单选框截图:


     6.2(图4)


单选框界面代码:

<td><input type="radio" name="RadioGroup1"id="rdFaShouKa" checked/>发售卡</td>                 <td><input type="radio" name="RadioGroup1"id="rdYiXiaoFeiKa" />已消费卡</td>


 

获取界面控件值的代码:

document.getElementById("rdFaShouKa").checked;


第二步:服务层接口(IService)


6.2(图5)

public List QuerySelectKa(int ZhuangTaiId);//添加会员卡变动时,查询符合条件的卡public List<PwMembershipCardIssuedDetails> QuerySelectFaFangMingXi(intFaFangMingXiId);//查询发放明细publicbooleanQueryFaFangMingXiEdit(PwMembershipCardIssuedDetails entity);//修改发放明细public List<SysBasicAttributeCollectionDetails> QuerySelectZhuangTai();//查询会员卡状态

第三步:服务层(Service)


6.2(图6)


/*会员卡状态变动,查询符合条件的卡     * ZhuangTaiId 状态id     * */    @Override    public ListQuerySelectKa(intZhuangTaiId){       try {//尝试运行代码           StringBufferqueryString = new StringBuffer();/*实例化StringBuffer*/           queryString.append("SELECTFaFangMingXi.membershipCardIssuedDetailsId,HuiYuanXinXi.menberName,JianKaMingXi.membershipCardCardNumber," +                             "ZhuangTai.basicAttributeCollectionSubsidiaryName");/*拼接需要查询的字段*/           queryString.append("FROMPwMembershipCardIssuedDetails AS FaFangMingXi,SysMemberProfile ASHuiYuanXinXi," +                             "PwMembershipCardRecipientsDetailsAS LingYongMingXi,PwMembershipCardDetails AS JianKaMingXi," +                             "SysBasicAttributeCollectionDetailsAS ZhuangTai ");/*实例化表*/           queryString.append("WHEREFaFangMingXi.memberProfileId = HuiYuanXinXi.memberProfileId " +                             "ANDFaFangMingXi.membershipCardRecipientsDetailsId =LingYongMingXi.membershipCardRecipientsDetailsId " +                             "ANDLingYongMingXi.membershipCardDetailsId = JianKaMingXi.membershipCardDetailsId" +                             "ANDFaFangMingXi.changeTheMembershipCardId = ZhuangTai.basicAttributeCollectionDetailsId" +                             "ANDFaFangMingXi.changeTheMembershipCardId = ?");/*满足条件*/           return dao.findByHql(queryString.toString(),new Object[]{ZhuangTaiId});       }catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/           return null;       }    }       //查询状态    @Override    publicList<SysBasicAttributeCollectionDetails>QuerySelectZhuangTai(){       try {//尝试运行代码           StringBufferqueryString = new StringBuffer();/*实例化StringBuffer*/           queryString.append("FROMSysBasicAttributeCollectionDetails AS zhuangTai ");/*实例化表*/           queryString.append("WHEREzhuangTai.basicAttributeCollectionDetailsId BETWEEN 18 AND 19 " +                             "ORzhuangTai.basicAttributeCollectionDetailsId = 61 " +                            "ORzhuangTai.basicAttributeCollectionDetailsId = 67");/*满足条件*/           return dao.findByHql(queryString.toString());       }catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/           return null;       }    } /*会员卡换卡时,查询发放明细     * FaFangMingXiId 发放明细id     * */    @Override    publicList<PwMembershipCardIssuedDetails> QuerySelectFaFangMingXi(int FaFangMingXiId){       try {//尝试运行代码           StringBufferqueryString = new StringBuffer();/*实例化StringBuffer*/           queryString.append("FROMPwMembershipCardIssuedDetails AS FaFangMingXi ");/*实例化表*/           queryString.append("WHEREFaFangMingXi.membershipCardIssuedDetailsId = ?");/*满足条件*/           return dao.findByHql(queryString.toString(),new Object[]{FaFangMingXiId});       }catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/           return null;       }         } //会员卡换卡时,修改发放明细    @Override    public boolean QueryFaFangMingXiEdit(PwMembershipCardIssuedDetailsentity){       try {//尝试运行代码           return dao.edit(entity);       }catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/           return false;       }    }

第四步:方法层(Action)


6.2(图7)


//添加会员卡变动时,查询符合条件的卡    public StringgetZhuangTaiBianDongSelectKa() {       JSONArrayjsArr = new JSONArray();/*实例化一个Array数组*/       JSONObjectjsObj = new JSONObject();/*实例化一个Object数组*/       intZhuangTai = Integer.parseInt(this.getRequest().getParameter("ZhuangTai"));/*从视图层传来的参数*/       ListlsSelectKa = this.huanKaYuZhuangTaiBianDongService.QuerySelectKa(ZhuangTai);/*调用服务层方法*/       for (int i =0; i < lsSelectKa.size(); i++) {/*循环遍历服务层返回的结果集*/           Object[]obj = (Object[])lsSelectKa.get(i);           jsObj.clear();/*清空jsObj数组*/           jsObj.put("FaFangMingXiID",obj[0]);           jsObj.put("XingMing",obj[1]);           jsObj.put("KaHao",obj[2]);           jsObj.put("YuanZhuangTai",obj[3]);           jsArr.add(jsObj);       }       HashMap<String, Object>jsMap = new HashMap<String, Object>();/*实例化一个哈希表*/       jsMap.put("rows",jsArr);/*将jsArr数组写入到jsMap中*/       JSObj = JSONObject.fromObject(jsMap);/*转换数组类型,并返回数组*/       return SUCCESS;    }       //查询会员卡状态    public StringgetZhuangTai(){       JSONArrayjsArr = new JSONArray();/*实例化一个Array数组*/       JSONObjectjsObj = new JSONObject();/*实例化一个Object数组*/       List<SysBasicAttributeCollectionDetails>lsZhuangTai = this.huanKaYuZhuangTaiBianDongService.QuerySelectZhuangTai();/*调用服务层方法*/       for (int i =0; i < lsZhuangTai.size(); i++) {/*循环遍历服务层返回的结果集*/           SysBasicAttributeCollectionDetails obj= lsZhuangTai.get(i);           jsObj.clear();/*清空jsObj数组*/           jsObj.put("ZhuangTaiId",obj.getBasicAttributeCollectionDetailsId());           jsObj.put("ZhuangTaiMingCheng",obj.getBasicAttributeCollectionSubsidiaryName());           jsArr.add(jsObj);       }       JSArr =jsArr;       return SUCCESS;    }       //新增会员卡状态变动信息    public StringgetGengXinZhuangTaiInsert() {       Stringparam = encodingFunction.getMethodEncoding(this.getRequest().getParameter("param"));/*从视图层传来的参数*/       String[]params = param.split("<>");       for (int i =0; i < params.length;i++) {           String[]paramsObj = params[i].split("<<");           List<PwMembershipCardIssuedDetails>lsFaFangMingXi = this.huanKaYuZhuangTaiBianDongService.QuerySelectFaFangMingXi(Integer.parseInt(paramsObj[0]));/*调用服务层方法*/           PwMembershipCardIssuedDetails obj= lsFaFangMingXi.get(0);           PwMembershipCardIssuedDetailsFaFangMingXi = new PwMembershipCardIssuedDetails();//实例化发放明细表          FaFangMingXi.setMembershipCardIssuedDetailsId(Integer.parseInt(paramsObj[0]));          FaFangMingXi.setActualEndTime(obj.getActualEndTime());          FaFangMingXi.setActualStartComputingTime(obj.getActualStartComputingTime());           FaFangMingXi.setAllowedToReportTheLossOf(obj.getAllowedToReportTheLossOf());          FaFangMingXi.setCardType(obj.getCardType());           FaFangMingXi.setStateOfTheMembershipCardId(Integer.parseInt(paramsObj[3].trim()));           FaFangMingXi.setChangeTheMembershipCardId(Integer.parseInt(paramsObj[1].trim()));          FaFangMingXi.setFormerRecipientsDetailsId(obj.getFormerRecipientsDetailsId());          FaFangMingXi.setIntegral(obj.getIntegral());          FaFangMingXi.setInternalIssue(obj.getInternalIssue());           FaFangMingXi.setInvalid(obj.getInvalid());          FaFangMingXi.setMemberProfileId(obj.getMemberProfileId());          FaFangMingXi.setMembershipCardIssuedId(obj.getMembershipCardIssuedId());          FaFangMingXi.setMembershipCardRecipientsDetailsId(obj.getMembershipCardRecipientsDetailsId());           FaFangMingXi.setMoney(obj.getMoney());          FaFangMingXi.setSingleKakaFee(obj.getSingleKakaFee());          FaFangMingXi.setSummary(paramsObj[2].trim());          FaFangMingXi.setWindowStateId(obj.getWindowStateId());           this.huanKaYuZhuangTaiBianDongService.QueryFaFangMingXiEdit(FaFangMingXi);/*调用服务层方法*/       }       MSG = "OK";       return SUCCESS;    }

第五步:配置struts


6.2(图8)


<action name="getZhuangTaiBianDongSelectKa" class="HuanKaYuZhuangTaiBianDongAction"           method="getZhuangTaiBianDongSelectKa">           <result type="json">              <param name="root">JSObj</param>           </result>       </action>       <action name="getZhuangTai" class="HuanKaYuZhuangTaiBianDongAction"           method="getZhuangTai">           <result type="json">              <param name="root">JSArr</param>           </result>       </action>       <action name="getGengXinZhuangTaiInsert" class="HuanKaYuZhuangTaiBianDongAction"           method="getGengXinZhuangTaiInsert">           <result type="json">              <param name="root">MSG</param>           </result>       </action>

第六步:视图层JSP


6.2(图9)


 Javascript代码:

var ZhuangTai = 0;//定义全局变量      function TianJiaKaPian(){          //获取单选框的值          var FaShouKa = document.getElementById("rdFaShouKa").checked;          if(FaShouKa == true){ZhuangTai = 61;}          var YiXiaoFeiKa =document.getElementById("rdYiXiaoFeiKa").checked;          if(YiXiaoFeiKa == true){ZhuangTai = 18;}          var YiChangKa = document.getElementById("rdYiChangKa").checked;          if(YiChangKa == true){ZhuangTai = 19;}          var TingYongKa = document.getElementById("rdTingYongKa").checked;          if(TingYongKa == true){ZhuangTai = 67;}          if(ZhuangTai != 0){               $('#FromSelectKa').show();//弹窗               $.getJSON("getZhuangTaiBianDongSelectKa?ZhuangTai="+ZhuangTai,function(data){                   if(data){                     $('#dgZhuangTaiBianDongChaXun').datagrid('loadData',data);//绑定数据到datagrid中                     $('#txtKuCunShuLiang').val($('#dgZhuangTaiBianDongChaXun').datagrid('getRows').length);//绑定库存数量                                      }               });          }      }


 

弹窗效果图如下:

 

6.2(图10)

HTML代码:

<div id="FromSelectKa"  class="FromFuHeKaclass">       <div class="easyui-layout FromFuHeKalayout">                    <div data-options="region:'west'" style="width:450px;">              <div class="erJiBiaoTi">***查询结果***</div>              <hr style="border:solid 1px #CCCCCC;"/>              <table id="dgZhuangTaiBianDongChaXun" class="easyui-datagrid" style="height:472px"                  data-options="rownumbers:true,loadMsg:'加载中,请稍后...',idField:'FaFangMingXiID'">                  <thead>                     <tr>                       <th data-options="field:'FaFangMingXiID',width:20,hidden:true,align:'center'">会员卡发放明细ID</th>                       <th data-options="field:'ckXuanZe',checkbox:true"></th>                       <th data-options="field:'KaHao',width:165,align:'center'">会员卡号</th>                         <th data-options="field:'XingMing',width:70,align:'center'">姓名</th>                         <th data-options="field:'YuanZhuangTai',width:115,align:'center'">证件号码</th>                     </tr>                  </thead>              </table>           </div>           <div data-options="region:'center'">              <div class="erJiBiaoTi">***筛选设置***</div>              <hr style="border:solid 1px #CCCCCC;"/>              <center>                <table class="FromFuHeKalayoutRight">                                 <tr>                     <td align="right">开始卡号:</td>                     <td><input id="txtKaiShiKaHao" /></td>                   </tr>                   <tr>                     <td align="right">卡数量:</td>                     <td><input id="txtKaShuLiang" /></td>                   </tr>                    <tr>                     <td align="right">结束卡号:</td>                     <td><input id="txtJieShuKaHao" /></td>                   </tr>                   <tr>                     <td align="right">库存数量:</td>                    <td><input id="txtKuCunShuLiang" style="color:#FF0000" value="0" readonly/></td>                     <td>张</td>                   </tr>                </table>                <table>                   <tr class="xuanZeKuang">                     <td>                     <a onClick="ShuJuZhuanYi()" class="easyui-linkbutton" data-options="iconCls:'icon-ok'">确认</a>                                    <a onClick="$('#FromSelectKa').hide()"class="easyui-linkbutton" data-options="iconCls:'icon-cancel'">取消</a>                                             </td>                  </tr>                </table>              </center>           </div>           </div>        </div>


 

Javascript代码:

//两个datagrid之间的数据转移      function ShuJuZhuanYi(){         var row = $('#dgZhuangTaiBianDongChaXun').datagrid('getChecked');//获取选中的数据         $('#dgBianDongXinXi').datagrid('loadData',row);//把选中的数据绑定到另一个datagrid中         var row = $('#dgBianDongXinXi').datagrid('getRows');          for(var i = 0; i < row.length; i++){              $('#dgBianDongXinXi').datagrid('beginEdit', i);//开启编辑          }          $('#txtKuCunShuLiang').val(row.length);//绑定库存数量         $('#FromSelectKa').hide();//关闭窗口      }       //添加会员卡状态变动信息    function TianJia(){        //获取数据       var YuanZhuangTaiId= ZhuangTai;              var ZhaiYao = $('#txtZhaiYao').val();        var row = $('#dgBianDongXinXi').datagrid('getRows');        var param = "";        var ZhengChangHangShu = 0;        for(var i = 0; i < row.length; i++){           var edCangKu = $('#dgBianDongXinXi').datagrid('getEditor', {index:i,field:'ZhuangTaiId'});          var cangKuMingCheng =$(edCangKu.target).combobox('getText');          if(cangKuMingCheng != ""){            $('#dgBianDongXinXi').datagrid('getRows')[i]['ZhuangTaiMingCheng'] = cangKuMingCheng;         } else {            $('#dgBianDongXinXi').datagrid('getRows')[i]['ZhuangTaiMingCheng'] = "";         }           $('#dgBianDongXinXi').datagrid('endEdit', i);//结束编辑           if(row[i].ZhuangTaiId.trim() != ""){//判断变更状态是否已经填写             param = param +row[i].FaFangMingXiID+"<<"+row[i].ZhuangTaiId+"<<"+ZhaiYao+"<<"+YuanZhuangTaiId+"<>";             ZhengChangHangShu +=  1;           } else {             var j = i + 1;             alert("第"+j+"行,变更状态为空,请您做相对应的修改");//提示你有哪一行尚未填写变更状态             $('#dgBianDongXinXi').datagrid('beginEdit', i);//重新开启编辑           }                  }        if(ZhengChangHangShu == row.length){           $.getJSON("getGengXinZhuangTaiInsert?param="+param,function(data){               alert("新增会员卡状态变更成功");               window.location.href = "HuanKaYuZhuangTaiKongZhi/HuiYuanKaZhuangTaiBianDong.jsp";            });        } else {           alert("由于您操作的问题,不能添加会员卡状态变动信息");        }    }

该资料仅供学习使用,禁止用于商业用途

0 0
原创粉丝点击