您的位置:首页 > 其它

会员卡管理系统技术解析(十七)库存年卡有效期变更

2015-06-01 19:38 337 查看

会员卡管理系统技术解析(十七)库存年卡有效期变更

1.1库存卡有效期变更查询

库存卡有效期变更查询这个模块功能可以查看系统对库存卡有效期变更的所有历史记录。

1.1.1界面效果图



1.1.1(图1)
从界面可以看到本项目这里用到的控件有:

列名
数据类型
主键/外键
说明
StoreCardChangvalidityTimeID
int
主键
库存卡有效期变更记录ID
MembershipCardNum
nchar(50)
 
会员卡号
oldValidityTime
date
 
原有效期
newValidityTime
date
 
现有效期
BianGengTime
nchar(30)
 
变更时间

1.1.2功能实现

第1步:数据库

1、表与关系
表1: 库存卡有效期变更记录表(Pw_StoreCardChangValidityTime)
用于存放库存卡有效期变更记录信息。
列名
数据类型
主键/外键
说明
StoreCardChangvalidityTimeID
int
主键
库存卡有效期变更记录ID
MembershipCardNum
nchar(50)
 
会员卡号
oldValidityTime
date
 
原有效期
newValidityTime
date
 
现有效期
BianGengTime
nchar(30)
 
变更时间

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

在“MEMBCERP.IService”这个包下的“KuCunKaGuanLiIService”类中,定义查询库存卡有效期变更记录相关的方法接口,代码如下:
public List<PwStoreCardChangValidityTime> SelectAllKuCunKaYouXiaoQiBianGengJiLu();			/*查询全部库存卡有效期变更记录*/
public List<PwStoreCardChangValidityTime> MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu(			/*模糊查询全部库存卡有效期变更记录*/
String membershipCardNum);

第3步:服务层(Service)

在“MEMBCERP.Service”这个包下的“KuCunKaGuanLiService”类中,定义查询库存卡有效期变更记录相关的方法接口实现,代码如下:
/*查询全部库存卡有效期变更记录*/
@Override
public List<PwStoreCardChangValidityTime> SelectAllKuCunKaYouXiaoQiBianGengJiLu(){
/*调用模糊查询方法进行查询*/
return MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu("");
}
/*模糊查询全部库存卡有效期变更记录*/
@Override
public List<PwStoreCardChangValidityTime> MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu(String membershipCardNum){
try {/*尝试运行代码*/
StringBuffer queryString = new StringBuffer();/*实例化StringBuffer*/
/*实例化表*/
queryString.append("FROM PwStoreCardChangValidityTime AS KuCunKaYouXiaoQiBianGengJiLu ");
queryString.append("WHERE KuCunKaYouXiaoQiBianGengJiLu.membershipCardNum  like '%' + ?+'%' ");
return dao.findByHql(queryString.toString(),new Object[]{membershipCardNum});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}

第4步:方法层(Action)

在“MEMBCERP.Action”这个包下的“KuCunKaGuanLiAction”类中,定义查询库存卡有效期变更记录相关的方法,代码如下:
/*查询库存卡有效期变更记录*/
public String getKCKYouXiaoQiBianGeng(){
/*实例化一个Array数组*/
JSONArray jsArr=new JSONArray();
/*实例化一个Object数组*/
JSONObject jsObj=new JSONObject();
/*调用服务层方法,查询全部库存卡有效期变更记录*/
List<PwStoreCardChangValidityTime> lstKCKYouXiaoQiBianGeng = this.kuCunKaGuanLiService.SelectAllKuCunKaYouXiaoQiBianGengJiLu();
/*循环遍历服务层返回的结果集*/
for (int i = 0; i < lstKCKYouXiaoQiBianGeng.size(); i++) {
PwStoreCardChangValidityTime obj = lstKCKYouXiaoQiBianGeng.get(i);
/*清空jsObj数组*/
jsObj.clear();
/*写入参数*/
jsObj.put("HuiYuanKaoHao", obj.getMembershipCardNum());
jsObj.put("oldYouXiaoQi", obj.getOldValidityTime());
jsObj.put("newYouXiaoQi", obj.getNewValidityTime());
jsObj.put("ChangeTime", obj.getBianGengTime());
/*将jsObj数组添加到jsArr数组*/
jsArr.add(jsObj);
}
HashMap<String, Object> jsMap = new HashMap<String, Object>();
/*将jsArr数组写入到jsMap中*/
jsMap.put("rows", jsArr);
/*转换数组类型,并返回数组*/
JSObj=JSONObject.fromObject(jsMap);
return SUCCESS;
}
/*模糊查询库存卡有效期变更记录*/
public String getMHKCKYouXiaoQiBianGeng(){
/*实例化一个Array数组*/
JSONArray jsArr=new JSONArray();
/*实例化一个Object数组*/
JSONObject jsObj=new JSONObject();
String membershipCardNum = this.getRequest().getParameter("membershipCardNum").trim();
/*调用服务层方法,查询全部库存卡有效期变更记录*/
List<PwStoreCardChangValidityTime> lstKCKYouXiaoQiBianGeng = this.kuCunKaGuanLiService.MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu(membershipCardNum);
/*循环遍历服务层返回的结果集*/
for (int i = 0; i < lstKCKYouXiaoQiBianGeng.size(); i++) {
PwStoreCardChangValidityTime obj = lstKCKYouXiaoQiBianGeng.get(i);
/*清空jsObj数组*/
jsObj.clear();
/*写入参数*/
jsObj.put("HuiYuanKaoHao", obj.getMembershipCardNum());
jsObj.put("oldYouXiaoQi", obj.getOldValidityTime());
jsObj.put("newYouXiaoQi", obj.getNewValidityTime());
jsObj.put("ChangeTime", obj.getBianGengTime());
/*将jsObj数组添加到jsArr数组*/
jsArr.add(jsObj);
}
HashMap<String, Object> jsMap = new HashMap<String, Object>();
/*将jsArr数组写入到jsMap中*/
jsMap.put("rows", jsArr);
/*转换数组类型,并返回数组*/
JSObj=JSONObject.fromObject(jsMap);
return SUCCESS;
}

第5步: struts2的配置

<action name="getKCKYouXiaoQiBianGeng" class="KuCunKaGuanLiAction" method="getKCKYouXiaoQiBianGeng">
<result type="json">
<param name="root">JSObj</param>
</result>
</action>
<action name="getMHKCKYouXiaoQiBianGeng" class="KuCunKaGuanLiAction" method="getMHKCKYouXiaoQiBianGeng">
<result type="json">
<param name="root">JSObj</param>
</result>
</action>

第6步:视图层调用

库存卡有效期变更记录:



1.2.6(图1)
HTML代码:

<table id="dgKCKYouXiaoQiBianGeng" class="easyui-datagrid" title="会员卡挂失记录" style="height:530px"
data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',
url:'getKCKYouXiaoQiBianGeng', idField:'KCKYouXiaoQiBianGengID'">
<thead>
<tr>
<th data-options="field:'HuiYuanKaoHao',width:265,align:'center'">会员卡号</th>
<th data-options="field:'oldYouXiaoQi',width:245,align:'center'">原有效期</th>
<th data-options="field:'newYouXiaoQi',width:260,align:'center'">现有效期</th>
<th data-options="field:'ChangeTime',width:300,align:'center'">变更时间</th>
</tr>
</thead>
</table>

搜索库存卡有效期变更记录:



1.2.6(图2)
HTML代码:

<input class="easyui-searchbox" data-options="prompt:'请输入卡号进行模糊查询',searcher:doSearch" style="width:180px" />


JavaScript代码:

//模糊搜索
function doSearch(value){
$('#dgKCKYouXiaoQiBianGeng').datagrid({url:"getMHKCKYouXiaoQiBianGeng?membershipCardNum="+value});
}


1.2库存卡有效期变更记录添加

库存卡有效期变更记录添加这个模块功能可以录入库存卡有效期变更记录。

1.2.1界面效果图



1.2.1(图1)

从界面可以看到本项目这里用到的控件有:
控件名称
说明
级联下拉框(easyui-combobox)
第一要设置每个控件的id,第二设置样式不设置也有默认,第三(data-options)是数据操作:可以设置控件的一些属性和事件
日期控件(easyui-datebox)
文本输入框(表单input)
表格控件(easyui-datagrid)

1.2.2功能实现:

第1步:数据库

1、表与关系



表1:会员卡类型(Sys_ MembershipCardType)

用于存放会员卡类型信息

列名
数据类型
主键/外键
说明
MembershipCardTypeID
int
主键
会员卡类型ID
MembersKakaKindID
int
外键
会员卡卡种ID
MembershipCardLevelID
int
外键
会员卡级别ID
MembershipCardIssuanceID
int
外键
会员卡发行方式ID
UseObjectID
int
外键
使用对象ID
DailyManagementFormID
int
外键
日常管理形式ID
TrackMediumID
int
外键
磁道介质ID
PreferentialWayID
int
外键
优惠方式ID
CardValidityPeriodSpecifiedID
int
外键
卡有效期指定方式ID
HairpinWithFaceValue
bit
 
发卡时有面值否
StoredValueCoupons
bit
 
储值优惠券标记否
ParticipateInTheScore
bit
 
参与消费积分否
leadCode
nchar(10)
 
前导码
PostpositionCode
nchar(10)
 
后置码
RequireTheSystemToMakeCard
bit
 
需要系统制卡否
NeedCompulsoryInspectionCard
bit
 
需要强制验卡否
LengthOfThePeriodOfValidity
nchar(10)
 
有效期长度
TrackContentEncryption
bit
 
磁道内容加密否
Invalid
bit
 
作废否
MembershipCardTypeCode
nchar(10)
 
会员卡类型代码
MembershipCardTypeName
nchar(30)
 
会员卡类型名称
KeepRecordsOfConsumption
bit
 
保存消费记录否
TotalLengthCardNumber
int
 
卡号总长度
OpenTheCouponAccount
bit
 
开通优惠券账户否
表2:会员卡卡种表(Sys_MembersKakaKind)

用于存放会员卡卡种表信息

列名
数据类型
主键/外键
说明
MembersKakaKindID
int
主键
会员卡卡种ID
MembersKakaCode
nchar(10)
 
会员卡卡种代码
MembersKakaKindsOfNames
nchar(30)
 
会员卡卡种名称
Invalid
bit
 
作废否
表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: 库存卡有效期变更记录表(Pw_StoreCardChangValidityTime)

用于存放库存卡有效期变更记录信息。

列名
数据类型
主键/外键
说明
StoreCardChangvalidityTimeID
int
主键
库存卡有效期变更记录ID
MembershipCardNum
nchar(50)
 
会员卡号
oldValidityTime
date
 
原有效期
newValidityTime
date
 
现有效期
BianGengTime
nchar(30)
 
变更时间

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

在“MEMBCERP.IService”这个包下的“KuCunKaGuanLiIService”类中,定义添加库存卡有效期变更相关的方法接口,代码如下:

public List getLeiAllXingKuCunKa(int HuiYuanKaLeiXingID);									/*根据会员卡类型ID查询全部库存卡*/
public int addYouXiaoQiBianGengJiLu(PwStoreCardChangValidityTime entity);					/*新增库存卡有效期变更记录*/

第3步:服务层(Service)

在“MEMBCERP.Service”这个包下的“KuCunKaGuanLiService”类中,定义添加库存卡有效期变更相关的方法接口实现,代码如下:

/*根据会员卡类型ID查询全部库存卡*/
@Override
public List getLeiAllXingKuCunKa(int HuiYuanKaLeiXingID){
try {/*尝试运行代码*/
StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/
/*拼接需要查询的字段*/
queryString.append("SELECT HuiYuKaMingXi.membershipCardDetailsId, " +
"HuiYuKaMingXi.membershipCardCardNumber, HuiYuKaMingXi.nominalAmount, " +
"HuiYuKaMingXi.validityTime ");
/*实例化表*/
queryString.append("FROM PwMembershipCardDetails AS HuiYuKaMingXi, " +
"SysMembershipCardType AS HuiYuanKaLeiXing ");
/*表与关系 满足条件*/
queryString.append("WHERE HuiYuKaMingXi.membershipCardTypeId = ? " +
"AND HuiYuKaMingXi.changeTheMembershipCardId BETWEEN 12 AND 13 " +
"AND HuiYuKaMingXi.membershipCardTypeId = HuiYuanKaLeiXing.membershipCardTypeId " +
"AND HuiYuanKaLeiXing.cardValidityPeriodSpecifiedId = 56 ");
return dao.findByHql(queryString.toString(),new Object[]{HuiYuanKaLeiXingID});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/*新增库存卡有效期变更记录*/
@Override
public int addYouXiaoQiBianGengJiLu(PwStoreCardChangValidityTime entity){
try {/*尝试运行代码*/
return dao.addAndGetId4Integer(entity);
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return 0;
}
}

第4步:方法层(Action)

在“MEMBCERP.Action”这个包下的“KuCunKaGuanLiAction”类中,定义查询库存卡有效期变更相关的方法,代码如下:

/*根据会员卡类型,查询全部对应的库存卡*/
public String getLeiXingKuCunKa() {
JSONArray jsArr=new JSONArray();
JSONObject jsObj=new JSONObject();
int HuiYuanKaLeiXingID=Integer.parseInt(this.getRequest().getParameter("HuiYuanKaLeiXingID").trim());
List lsHuiYuanKaLeiXing = this.kuCunKaGuanLiService.getLeiAllXingKuCunKa(HuiYuanKaLeiXingID);
for (int i = 0; i < lsHuiYuanKaLeiXing.size(); i++) {
Object[] obj=(Object[]) lsHuiYuanKaLeiXing.get(i);
/*清空jsObj数组*/
jsObj.clear();
/*写入参数*/
jsObj.put("HuiYuiKaMingXiID", obj[0]);
jsObj.put("HuiYuanKaHao", obj[1]);
jsObj.put("MianZhiJinE", obj[2]);
jsObj.put("YouXiaoQi", obj[3]);
jsObj.put("BianGengYouXiaoQi","");
/*将jsObj数组添加到jsArr数组*/
jsArr.add(jsObj);
}
HashMap<String, Object> jsMap = new HashMap<String, Object>();
/*将jsArr数组写入到jsMap中*/
jsMap.put("rows", jsArr);
/*转换数组类型,并返回数组*/
JSObj=JSONObject.fromObject(jsMap);
return SUCCESS;
}
/*变更库存卡有效期*/
public String upKuCunKaYouXiaoQiBianGeng() {
try {/*尝试运行代码*/
/*获取页面传递过来的参数*/
String jsArr=this.getRequest().getParameter("jsArr");
/*分解参数*/
String[] param=jsArr.split(">>");
boolean bltmp = false;
/*遍历循环数组*/
for (int i = 1; i < param.length; i++) {
/*分解参数*/
String[] params = param[i].split("<<");
int HuiYuanKaMingXiID = Integer.parseInt(params[0].trim());
/*调用服务层方法,查询需要修改的建卡明细信息*/
List<PwMembershipCardDetails> lstJianKaMingXi=this.kuCunKaGuanLiService.SelectUpdateJianKaMingXi(HuiYuanKaMingXiID);
PwMembershipCardDetails lsJianKaMingXi=lstJianKaMingXi.get(0);
/*实例化表*/
PwMembershipCardDetails JianKaMingXi=new PwMembershipCardDetails();
/*写入参数*/
JianKaMingXi.setMembershipCardDetailsId(HuiYuanKaMingXiID);
JianKaMingXi.setMembershipCardId(lsJianKaMingXi.getMembershipCardId());
JianKaMingXi.setStateOfTheMembershipCardId(lsJianKaMingXi.getStateOfTheMembershipCardId());
JianKaMingXi.setChangeTheMembershipCardId(lsJianKaMingXi.getChangeTheMembershipCardId());
JianKaMingXi.setKeeperId(lsJianKaMingXi.getKeeperId());
JianKaMingXi.setMembershipCardCardNumber(lsJianKaMingXi.getMembershipCardCardNumber());
JianKaMingXi.setMembershipCardStorageLocationId(lsJianKaMingXi.getMembershipCardStorageLocationId());
JianKaMingXi.setMembershipCardTypeId(lsJianKaMingXi.getMembershipCardTypeId());
JianKaMingXi.setNominalAmount(lsJianKaMingXi.getNominalAmount());
JianKaMingXi.setRemarks(lsJianKaMingXi.getRemarks());
/*设置日期格式*/
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
JianKaMingXi.setSpecifyTheValidityTime(df.format(new Date()));
JianKaMingXi.setUpdateRankId(lsJianKaMingXi.getUpdateRankId());
JianKaMingXi.setValidityTime(params[1].trim());
JianKaMingXi.setWriteCardStatus(lsJianKaMingXi.getWriteCardStatus());
JianKaMingXi.setWriteTime(lsJianKaMingXi.getWriteTime());
/*调用服务层方法,修改建卡明细*/
bltmp =this.kuCunKaGuanLiService.EditJianKaMingXi(JianKaMingXi);
/*新增记录库存卡有效期变更的记录*/
PwStoreCardChangValidityTime lstYouXiaoQiBianGengJiLu = new PwStoreCardChangValidityTime();
lstYouXiaoQiBianGengJiLu.setMembershipCardNum(params[2].trim());
lstYouXiaoQiBianGengJiLu.setOldValidityTime(params[3].trim());
lstYouXiaoQiBianGengJiLu.setNewValidityTime(params[1].trim());
lstYouXiaoQiBianGengJiLu.setBianGengTime(df.format(new Date()));
int asd = this.kuCunKaGuanLiService.addYouXiaoQiBianGengJiLu(lstYouXiaoQiBianGengJiLu);
}
MSG=bltmp+"";
} catch (Exception e) {/*若尝试执行代码失败,处理异常*/
MSG="false";
}
return SUCCESS;
}


第5步: struts2的配置

<action name="getLeiXingKuCunKa" class="KuCunKaGuanLiAction" method="getLeiXingKuCunKa">
<result type="json">
<param name="root">JSObj</param>
</result>
</action>
<action name="upKuCunKaYouXiaoQiBianGeng" class="KuCunKaGuanLiAction" method="upKuCunKaYouXiaoQiBianGeng">
<result type="json">
<param name="root">MSG</param>
</result>
</action>


第6步:视图层调用

级联下拉框:



HTML代码:

<fieldset>
<legend>会员卡类型</legend>
<table>
<tr>
<td><input class="easyui-combobox"id="cboHuiYuanKaZhongLei" style="width:110px;"
data-options="url:'getMembersKakaKindSelect',valueField:'HuiYuanKaKaZhongID',
textField:'HuiYuanKaKaZhongMC',onSelect:oncboHuiYuanKaZhongLei" />
<input class="easyui-combobox" id="cboHuiYuanKaLeiXing" style="width:110px;"
data-options="valueField:'HuiYuanKaLeiXingID',textField:'HuiYuanKaLeiXingMC'" />
</td>
</tr>
</table>
</fieldset>


JavaScript代码:

//查询种类
function oncboHuiYuanKaZhongLei() {
$('#cboHuiYuanKaLeiXing').combobox({url : "getMembershipCardTypeSelect?LeiXingID="+ $('#cboHuiYuanKaZhongLei').combobox('getValue')});
}


库存卡有效期变更:



HTML代码:

<div >
<table class="easyui-datagrid" style="height:400px;" id="dgKuCunKaBianGengYouXiaoQi"
data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',onSelect:getSelect" >
<thead>
<tr>
<th data-options="field:'HuiYuanKaHao',width:240,align:'center'">会员卡号</th>
<th data-options="field:'YouXiaoQi',width:180,align:'center'">原有效期</th>
<th data-options="field:'BianGengYouXiaoQi',width:240,align:'center',
editor:{
type:'datebox',
options:{
panelWidth: 200,
formatter:myformatter,
parser:myparser,
required:true
}
}">变更有效期</th>
<th data-options="field:'MianZhiJinE',width:165,align:'center'">余额</th>
<th data-options="field:'HuiYuiKaMingXiID',width:250,align:'center',formatter:btcaoZuo">操作</th>
</tr>
</thead>
</table>
</div>
<div style=" height:100px;">
<center>
<table>
<tr class="xuanZeKuang">
<td colspan="20">
<a onClick="btBianGeng()" class="easyui-linkbutton" data-options="iconCls:'icon-add'">立即变更</a>
<a onClick="btnFangQi()"  class="easyui-linkbutton" data-options="iconCls:'icon-back'">返出</a>
</td>
</tr>
</table>
</center>
</div>


JavaScript代码:

//超链接操作-移除列
function btcaoZuo(HuiYuiKaMingXiID, row, rowIndex) {
return  "<a href='javascript:yiChu(" + HuiYuiKaMingXiID + "," + rowIndex+ ")'>移除</a> ";
}

//移除行,但不删除数据库数据
function yiChu(HuiYuiKaMingXiID, rowIndex){
$('#dgKuCunKaBianGengYouXiaoQi').datagrid('deleteRow',rowIndex);
}
//获取选中行的行号和数据,并开启编辑
var editIndex = undefined;
function getSelect(rowIndex,rowData){
$('#dgKuCunKaBianGengYouXiaoQi').datagrid('endEdit', 0);		//结束编辑
$('#dgKuCunKaBianGengYouXiaoQi').datagrid('endEdit', editIndex);		//结束编辑
$('#dgKuCunKaBianGengYouXiaoQi').datagrid('beginEdit', rowIndex);
editIndex = rowIndex;
}
function btBianGeng(){
if (editIndex == undefined){
alert("请通过点击表格中的数据,选择需要指定变更的具体日期,再操作");
$('#dgKuCunKaBianGengYouXiaoQi').datagrid('beginEdit', 0);
return true;
}
if ($('#dgKuCunKaBianGengYouXiaoQi').datagrid('validateRow', editIndex)){
$('#dgKuCunKaBianGengYouXiaoQi').datagrid('endEdit', editIndex);		//结束编辑
var rowData=$('#dgKuCunKaBianGengYouXiaoQi').datagrid('getChanges','updated');
if(rowData.length>0){
if (confirm('请问是否立即更改已经编辑过的数据?')) {
var jsArr="";
for(var i=0; i<rowData.length; i++){
jsArr=jsArr+">>"+rowData[i].HuiYuiKaMingXiID+"<<"+rowData[i].BianGengYouXiaoQi+"<<"
+rowData[i].HuiYuanKaHao+"<<"+rowData[i].YouXiaoQi+"<<";
}
$.getJSON("upKuCunKaYouXiaoQiBianGeng?jsArr="+jsArr,function(result){
if(result == "true"){
editIndex = undefined;
alert("变更成功");
location.href="KuCunKaGuanLi/AddKuCunKaYouXiaoQiBianGeng.jsp";
return true;
}else{
alert("变更失败,可能是变更日期填写错误或已与主机失去连接");
}
});
}
}
}
}
至此,会员卡管理系统技术解析(十七)库存年卡有效期变更 技术解析完毕。

注意:仅供学习,禁止用于商业用途!否则,后果自负。

@最终解析权归本人所有
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: