上图分别是优惠券的展示,新增,编辑,删除等等。
下面我们开始来进行分析优惠券发行的一些细节,以及如何具体实现的业务逻辑。
下满先把全部的代码贴一下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="ctx" value="${pageContext.request.contextPath}" /> <jsp:include page="/jsp/common/header.jsp"></jsp:include> <script src="${ctx }/js/promote/ec_coupon_publish.js"></script> <body> <table class="queryTable" width="100%" > <tr> <td class="queryTitle" width="100">发行批次</td> <td class="queryContent" width="100"> <input class="inputText" type="text" id="publishId_s" /> </td> <td class="queryTitle" width="100">优惠券类型</td> <td class="queryContent" width="100"> <select id="couponTypeId_s" class="easyui-combobox" style="width: 100px" panelHeight="auto"> <option value="">请选择</option> <c:forEach var="couponType" items="${couponTypeList }"> <option value="${couponType.couponTypeId}">${couponType.couponTypeName}</option> </c:forEach> </select> </td> <td class="queryTitle" width="100">发行张数</td> <td class="queryContent" width="100"> <input class="inputText" type="text" id="publishAmount_s" /> </td> <td class="queryTitle" width="100">优惠券预警</td> <td class="queryContent" width="100"> <select id="remindTypeSelect" name='remindTypeSelect' class="easyui-combobox" style="width: 100px" panelHeight="auto"> <option value="">请选择</option> <option value="1">已设置</option> <option value="0">无</option> </select> </td> <td> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="doQuery()" iconCls="icon-search" >查询</a> </td> </tr> </table> <table id="couponPublishGrid" ></table> <input type="hidden" id="publishId" name="publishId" /> <!-- 优惠券发行--编辑 --> <div id="addCouponPublishDlg" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;"> <div class="easyui-layout" fit="true"> <div region="center" border="false" style="background:#fff;border:1px solid #ccc;"> <form id="addCouponPublishForm" method="POST"> <table class="queryTable" width="100%" > <tr> <td class="queryTitle" width="100">发行券种</td> <td class="queryContent" width="100"> <select id="couponTypeId" class="easyui-combobox" style="width: 100px" panelHeight="auto"> <option value="">请选择</option> <c:forEach var="couponType" items="${couponTypeList }"> <option value="${couponType.couponTypeId}">${couponType.couponTypeName}</option> </c:forEach> </select> <label id="couponTypeNot" style="color: red;display: none;">* 发行券种不能为空</label> </td> <td class="queryTitle" width="100">生成张数</td> <td class="queryContent" width="100"> <input class="inputText" type="text" id="publishAmount" /> <label id="publishAmountNot" style="color: red;display: none;">* 生成张数不能为空</label> </td> </tr> <tr> <td class="queryTitle" width="80px">开始日期</td> <td class="queryContent"> <input class="inputText easyui-datebox" type="text" id="beginDate" style="width:125px" editable="false" /> <label id="beginDateNot" style="color: red;display: none;">* 开始日期不能为空</label> </td> <td class="queryTitle" width="80px">结束日期</td> <td class="queryContent"> <input class="inputText easyui-datebox" type="text" id="endDate" style="width:125px" editable="false" /> <label id="endDateNot" style="color: red;display: none;">* 结束日期不能为空</label> </td> </tr> <tr> <td class="queryTitle" width="100">券号前缀</td> <td class="queryContent" width="100"> <input class="inputText" type="text" id="numberPrefix" /> <label id="numberPrefixNot" style="color: red;display: none;">* 券号前缀不能为空</label> <label id="numberPrefixLimit" style="color: red;display: none;">* 券号前缀为2~4位</label> </td> <td class="queryTitle" width="100">券号长度</td> <td class="queryContent" width="100"> <input class="inputText" type="text" id="numberLength" /> <label id="numberLengthNot" style="color: red;display: none;">* 券号长度不能为空</label> <label id="numberLengthLimit" style="color: red;display: none;">* 券号长度应该在6~16位</label> </td> </tr> <tr> <td class="queryTitle" width="100">优惠券预警</td> <td class="queryContent" width="100" colspan="3"> 剩余优惠券少于 <input class="inputText" type="text" id="warnNum" /> 张 <label id="warnNumRemind" style="color: red;display: none;"></label> </td> </tr> <tr> <td class="queryTitle" width="100">预警方式</td> <td class="queryContent" width="100" colspan="3"> <input type='radio' name="remindType" id="remindTypeId" value="email" onclick="showVal()"/> 邮件提示 <input class="inputText" type="text" id="remindPath" /> <input type='hidden' id="remindTypeIdValue" /> <label id="remindPathRemind" style="color: red;display: none;"></label> </td> </tr> <tr> <td class="queryTitle" >发行描述</td> <td class="queryContent" colspan="3"> <textarea id="publishNotes" name="publishNotes" rows="5" cols="10" style="width: 480px;" class="inputText"></textarea> </td> </tr> </table> </form> </div> <div region="south" border="false" style="text-align:center;height:30px;line-height:30px;"> <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0)" onclick="saveCouponPublish()">开始生成优惠券</a> <a class="easyui-linkbutton" iconCls="icon-cancel" href="javascript:void(0)" onclick="closeAddCouponPublishDlg()">取消</a> </div> </div> </div> <!-- 优惠券明细 --> <div id="showCouponsDlg" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;"> <div class="easyui-layout" fit="true"> <div region="center" border="false" style="background:#fff;border:1px solid #ccc;"> <table id="queryCouponsGrid"></table> </div> </div> </div> <!-- 优惠券预览 --> <div id="previewCouponsDlg" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;"> <div class="easyui-layout" fit="true"> <div region="center" border="false" style="background:#fff;border:1px solid #ccc;"> <div id="showCoupon"></div> </div> </div> </div> </body>
var appPath = getAppPath(); $(function(){ $('#addCouponPublishDlg').window('close'); $('#showCouponsDlg').window('close'); $('#previewCouponsDlg').window('close'); couponPublisGrid(); }); function couponPublisGrid(){ $('#couponPublishGrid').datagrid({ url:appPath+'/page/couponPublish/list', method:'post', // queryParams:getQueryParam(), height:'full', width:'full', singleSelect:true, striped: true, remoteSort:false, checkbox:false, idField:'publishId', frozenColumns:[[ {field:'id',title:'操作',width:'80',align:'left', formatter:function(value,rowData,rowIndex){ var dataStr = JSON.stringify(rowData); return "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/pencil.png' title='编辑' onClick='showEdit("+dataStr+")'/></a> " + "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/cancel.png' title='删除' onClick='del("+dataStr+")'/></a> "+ "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' title='券明细' onClick='queryCoupons("+dataStr+")'/></a> "; } } ]], columns:[[ {field:'publishId',title:'发行批次号',styler:function(index,row){ if (row.remindSuccess=="1"){ return 'background-color:red;'; } }, width:80,align:'center',sortable:true}, {field:'couponTypeName',title:'优惠券类型',width:120,align:'center',sortable:true}, {field:'publishAmount',title:'发行张数',width:80,align:'center',sortable:true}, {field:'userRealName',title:'发行人',width:80,align:'center',sortable:true}, {field:'publishTime',title:'发行时间',width:120,align:'center',sortable:true}, {field:'numberPrefix',title:'券号前缀',width:80,align:'center',sortable:true}, {field:'numberLength',title:'券号长度',width:80,align:'center',sortable:true}, {field:'beginDate',title:'有效开始日期',width:120,align:'center',sortable:true}, {field:'endDate',title:'有效截止日期',width:120,align:'center',sortable:true}, {field:'remindTypeName',title:'优惠券预警',formatter:function(value){return remindTypeName(value); },width:120,align:'center',sortable:true}, {field:'remindType',title:'预警提醒方式',formatter:function(value){return remindType(value); },width:120,align:'center',sortable:true} ]], pagination:true, rownumbers:true, toolbar:[{ id:'btnadd', text:'新增发行', iconCls:'icon-add', handler:function(){ addGoodsDlg(); } } ] }); } function remindTypeName(value){ if(value ==1 )return '已设置' else return '无'; } function remindType(value){ if(value=='email') return'邮箱提醒' else return '无'; } function doQuery(){ var param = $('#couponPublishGrid').datagrid('options').queryParams; param.couponTypeId = $("#couponTypeId_s").combobox("getValue"); param.publishId = $.trim($('#publishId_s').val()); param.publishAmount = $.trim($('#publishAmount_s').val()); param.remindType = $("input[name=remindTypeSelect]").val(); $("#couponPublishGrid").datagrid('unselectAll'); $("#couponPublishGrid").datagrid('load',param); } //添加商品弹出框 function addGoodsDlg(){ $('#publishId').val(''); $("#couponTypeId").combobox('select',''); $('#publishAmount').val(''); $('#beginDate').datebox('setValue',''); $('#endDate').datebox('setValue',''); $('#numberPrefix').val(''); $('#numberLength').val(''); $('#publishNotes').val(''); $('#warnNum').val(''); $("input[name=remindType]").attr("checked",false); $("#remindTypeIdValue").val(''); $('#remindPath').val(''); $('#addCouponPublishDlg').window({ title:'优惠券发行--编辑', iconCls:'icon-add', width:693, height:300, left:100, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#addCouponPublishDlg').window('move',{top:0}); $('#addCouponPublishDlg').window('open'); } function closeAddCouponPublishDlg(){ $('#addCouponPublishDlg').window('close'); } //保存优惠券发行数据 function saveCouponPublish(){ //发行券种 var couponTypeId = $("#couponTypeId").combobox("getValue"); //生成张数 var publishAmount = $('#publishAmount').val(); //开始日期 var beginDate = $('#beginDate').datebox("getValue"); //结束日期 var endDate = $('#endDate').datebox("getValue"); //券号前缀 var numberPrefix = $('#numberPrefix').val(); //券号长度 var numberLength = $('#numberLength').val(); //发行描述 var publishNotes = $('#publishNotes').val(); //预警数 var warnNum = $("#warnNum").val(); //预警方式 var remindType =$("#remindTypeIdValue").val(); //预警途径 var remindPath = $("#remindPath").val(); if(couponTypeId==''){ $('#couponTypeNot').css('display',''); return; }else{ $('#couponTypeNot').css('display','none'); } if(publishAmount==''){ $('#publishAmountNot').css('display',''); return; }else{ $('#publishAmountNot').css('display','none'); } if(isNaN(publishAmount)){ $.messager.alert('提示信息','生成张数请输入数字!','info'); return; } if(beginDate==''){ $('#beginDateNot').css('display',''); return; }else{ $('#beginDateNot').css('display','none'); } if(endDate==''){ $('#endDateNot').css('display',''); return; }else{ $('#endDateNot').css('display','none'); } if(beginDate && endDate && parseFloat(beginDate.replace(/\-/g,""))>parseFloat(endDate.replace(/\-/g,""))){ $.messager.alert('提示信息','开始日期要小于或等于结束日期','info'); return; } if(numberPrefix==''){ $('#numberPrefixNot').css('display',''); return; }else{ $('#numberPrefixNot').css('display','none'); } if(numberPrefix.length<2 || numberPrefix.length>4){ $('#numberPrefixLimit').css('display',''); return; }else{ $('#numberPrefixLimit').css('display','none'); } if(numberLength==''){ $('#numberLengthNot').css('display',''); return; }else{ $('#numberLengthNot').css('display','none'); } if(isNaN(numberLength)){ $.messager.alert('提示信息','券号长度请输入数字!','info'); return; } if(parseInt(numberLength)<6 || parseInt(numberLength)>16){ $('#numberLengthLimit').css('display',''); return; }else{ $('#numberLengthLimit').css('display','none'); } if($.trim(warnNum) !='' && warnNum!=null){ if(!checkNumber(warnNum)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; }else if(parseInt(warnNum) > parseInt(publishAmount)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; } else $('#warnNumRemind').css('display','none'); if(remindType ==''){ $('#remindPathRemind').html('请选择预警提示方式'); $('#remindPathRemind').css('display',''); return; }else if(remindPath ==''){ $('#remindPathRemind').html('请填写预警提示方式途径'); $('#remindPathRemind').css('display',''); return; }else if(!CheckMail(remindPath)){ $('#remindPathRemind').html('请填写正确的邮箱格式'); $('#remindPathRemind').css('display',''); return; } else{ $('#warnNumRemind').css('display','none'); $('#remindPathRemind').css('display','none'); } }else{ $('#warnNumRemind').css('display','none'); } if(remindType !='' &&remindType != null){ if(!checkNumber(warnNum)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; }else if(parseInt(warnNum) > parseInt(publishAmount)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; } else $('#warnNumRemind').css('display','none'); if(remindPath ==''){ $('#remindPathRemind').html('请填写预警提示方式途径'); $('#remindPathRemind').css('display',''); return; }else if(!CheckMail(remindPath)){ $('#remindPathRemind').html('请填写正确的邮箱格式'); $('#remindPathRemind').css('display',''); return; } else{ $('#warnNumRemind').css('display','none'); $('#remindPathRemind').css('display','none'); } }else{ $('#remindPathRemind').css('display','none'); } if($.trim(remindPath) !='' && remindPath!=null){ if(!checkNumber(warnNum)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; }else if(parseInt(warnNum) > parseInt(publishAmount)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; } else $('#warnNumRemind').css('display','none'); if(remindType ==''){ $('#remindPathRemind').html('请选择预警提示方式'); $('#remindPathRemind').css('display',''); return; }else if(!CheckMail(remindPath)){ $('#remindPathRemind').html('请填写正确的邮箱格式'); $('#remindPathRemind').css('display',''); return; } else{ $('#warnNumRemind').css('display','none'); $('#remindPathRemind').css('display','none'); } }else{ $('#remindPathRemind').css('display','none'); } var type = "save"; if($('#publishId').val()!=''){ type = "update"; } var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:9100'>" + "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成优惠券</div>" + "<div class='window-mask' style='z-index:9100'></div>"); mod.appendTo('body'); var data = {publishId:$('#publishId').val(),type:type,couponTypeId:couponTypeId,publishAmount:publishAmount, beginDate:beginDate,endDate:endDate,numberPrefix:numberPrefix,numberLength:numberLength, warnNum:warnNum,remindType:remindType,remindPath:remindPath, publishNotes:publishNotes,isDelete:'N'}; doAjax({ url:appPath+'/page/couponPublish/updateCouponPublish', type:'post', data:data, success:function(data){ mod.remove(); if(data=='ok'){ $.messager.alert('提示信息','保存成功','info'); } doCouponPublishReload(); $('#addCouponPublishDlg').window('close'); }, error:function(XMLHttpRequest, textStatus, errorThrown){ mod.remove(); $.messager.alert('提示信息','抱歉,保存失败,'+textStatus,'error'); doCouponPublishReload(); } }); } function CheckMail(mail) { var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (filter.test(mail)) return true; else return false; } function doCouponPublishReload(){ $('#couponPublishGrid').datagrid('unselectAll'); $('#couponPublishGrid').datagrid('reload'); $('#addCouponPublishDlg').window('close'); } //删除数据 function del(rowData){ $.messager.confirm('提示信息','您确定要删除这条记录?',function(r){ if(r){ doAjax({ url:appPath+'/page/couponPublish/delEcCouponPublish', type:'post', data:{publishId:rowData.publishId,isDelete:'Y'}, success:function(data){ if(data='ok'){ $.messager.alert('提示信息','删除成功!','info'); } doCouponPublishReload(); }, error:function(XMLHttpRequest, textStatus, errorThrown){ $.messager.alert('提示信息','删除失败!','info'); doCouponPublishReload(); } }); } }); } //显示编辑页面 function showEdit(rowData){ $('#addCouponPublishForm').form('clear'); $('#addCouponPublishForm').form('load',rowData); $('#publishId').val(rowData.publishId); $("#couponTypeId").combobox('select',rowData.couponTypeId); $('#publishAmount').val(rowData.publishAmount); $('#beginDate').datebox('setValue',rowData.beginDate); $('#endDate').datebox('setValue',rowData.endDate); $('#numberPrefix').val(rowData.numberPrefix); $('#numberLength').val(rowData.numberLength); $('#publishNotes').val(rowData.publishNotes); $('#warnNum').val(rowData.warnNum); $('#remindPath').val(rowData.remindPath); $("input[name='remindType']").each(function(){ if($(this).val()==rowData.remindType){ $(this).attr("checked","true"); } }); $("#warnNum").val(rowData.warnNum); $("#remindPath").val(rowData.remindPath); $('#addCouponPublishDlg').window({ title:'优惠券发行--编辑', iconCls:'icon-add', width:693, height:300, left:100, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#addCouponPublishDlg').window('move',{top:0}); $('#addCouponPublishDlg').window('open'); } //券明细弹出框 function queryCoupons(rowData){ $('#showCouponsDlg').window({ title:'优惠券发行--券明细', iconCls:'icon-add', width:993, height:400, left:50, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#showCouponsDlg').window('move',{top:0}); $('#showCouponsDlg').window('open'); couponsGrid(rowData.publishId); $('#publishId').val(rowData.publishId); } function couponsGrid(publishId){ $('#queryCouponsGrid').datagrid({ url:appPath+'/page/couponsQuery/couponsList', method:'post', queryParams:{publishId:publishId}, height:'350', width:'full', singleSelect:true, striped: true, remoteSort:false, checkbox:false, idField:'couponNo', frozenColumns:[[ {field:'id',title:'操作',width:'40',align:'center', formatter:function(value,rowData,rowIndex){ var dataStr = JSON.stringify(rowData); return "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' title='预览' onClick='preview("+dataStr+")'/></a> "; } } ]], columns:[[ {field:'publishId',title:'发行批次号',width:80,align:'center',sortable:true}, {field:'couponNo',title:'券号',width:80,align:'center',sortable:true}, {field:'couponTypeName',title:'优惠券类型',width:120,align:'center',sortable:true}, {field:'couponFee',title:'面额',width:80,align:'center',sortable:true}, {field:'discountFee',title:'优惠额',width:60,align:'center',sortable:true}, {field:'orderFeeLimit',title:'订单限额',width:120,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.orderFeeLimit=='0'){ return '无'; }else{ return rowData.orderFeeLimit; } } }, {field:'useAmountLimit',title:'限用张数',width:60,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.useAmountLimit=='0'){ return '无'; }else{ return rowData.useAmountLimit; } } }, {field:'isLimitGoods',title:'适用商品',width:60,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.isLimitGoods=='N'){ return '全部商品'; }else{ return '指定商品'; } } }, {field:'couponState',title:'优惠券状态',width:70,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.couponState=='create'){ return '已发行'; }else if(rowData.couponState=='assign'){ return '已分发'; }else if(rowData.couponState=='used'){ return '已使用'; }else if(rowData.couponState=='expired'){ return '已过期'; } } }, {field:'publishTime',title:'发行日期',width:120,align:'center',sortable:true}, {field:'beginDate',title:'生效日期',width:120,align:'center',sortable:true}, {field:'endDate',title:'失效日期',width:120,align:'center',sortable:true}, {field:'assignType',title:'分发方式',width:60,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.assignType=='auto'){ return '自动'; }else if(rowData.couponState=='byhand'){ return '手工'; } } }, {field:'assignTime',title:'分发日期',width:120,align:'center',sortable:true}, {field:'usedTime',title:'使用日期',width:120,align:'center',sortable:true}, {field:'loginName',title:'使用会员',width:80,align:'center',sortable:true}, {field:'orderId',title:'使用订单号',width:80,align:'center',sortable:true} ]], pagination:true, rownumbers:true, toolbar:[{ id:'btnExcel', text:'导出Excel', iconCls:'icon-exportExcel', handler:function(){ exportOrderExcel(); } },{ id:'btnPDF', text:'导出PDF', iconCls:'icon-exportPDF', handler:function(){ exportOrderPdf(); } }] }); } /** * 导出订单Excel */ function exportOrderExcel(){ $.messager.confirm('提示信息','您确定要导出到Excel?',function(r){ if(r){ var columns = $("#queryCouponsGrid").datagrid("options").columns[0]; //--------把标题grid标题和grid的field,拼接成字符串----------- var stringTitle = ""; var stringFields = ""; for(var i = 0; i < columns.length; i++){ stringTitle = stringTitle + columns[i].title + ","; stringFields = stringFields + columns[i].field + ","; } if(stringTitle.lastIndexOf(",") == (stringTitle.length-1)){ stringTitle = stringTitle.substring(0, stringTitle.lastIndexOf(",")); } if(stringFields.lastIndexOf(",") == (stringFields.length-1)){ stringFields = stringFields.substring(0, stringFields.lastIndexOf(",")); } var queryParams = $("#queryCouponsGrid").datagrid("options").queryParams; queryParams.gridTitle = stringTitle; queryParams.gridField = stringFields; queryParams.moduleName = "优惠券查询.xls"; var formObj = $("<form></form>").attr("method","post").attr("action",appPath+"/page/export/exportCouponsList"); formObj.append("<input type='text' name='gridTitle'>") .append("<input type='text' name='gridField'>") .append("<input type='text' name='moduleName'>") .append("<input type='text' name='publishId'>") .append("<input type='text' name='couponNo'>") .append("<input type='text' name='couponTypeName'>") .append("<input type='text' name='couponFee'>") .append("<input type='text' name='discountFee'>") .append("<input type='text' name='orderFeeLimit'>") .append("<input type='text' name='useAmountLimit'>") .append("<input type='text' name='isLimitGoods'>") .append("<input type='text' name='couponState'>") .append("<input type='text' name='publishTime'>") .append("<input type='text' name='beginDate'>") .append("<input type='text' name='endDate'>") .append("<input type='text' name='assignType'>") .append("<input type='text' name='assignTime'>") .append("<input type='text' name='usedTime'>") .append("<input type='text' name='realName'>") .append("<input type='text' name='orderId'>") .css('display','none') .appendTo("body"); formObj.form("load",queryParams); formObj.submit(); formObj.remove(); } }); } /** * 导出pdf * @param rowData */ function exportOrderPdf(rowData){ var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:1100'>" + "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成打印文件</div>" + "<div class='window-mask' style='z-index:10'></div>"); mod.appendTo('body'); var publishId = $('#publishId').val(); doAjax({ url : appPath + "/page/couponPublish/printPdf", data : {publishId:publishId}, type : "post", timeout : 1000*60*10, success:function(data){ mod.remove(); var code = data.code; switch(code){ case 0: $.messager.alert('提示信息',data.msg,'error'); break; case 1: $.messager.alert('提示信息','打印文件生成,请下载','info',function(){ window.location.href = appPath+"/download.jsp?fileName="+data.fileUrl; }); break; default: $.messager.alert('提示信息',data,'error'); break; } }, error:function(XMLHttpRequest, textStatus, errorThrown){ mod.remove(); $.messager.alert('提示信息','打印失败'+textStatus,'error'); } }); } //优惠券预览 function preview(rowData){ $('#previewCouponsDlg').window({ title:'优惠券预览', iconCls:'icon-add', width:300, height:300, left:100, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#previewCouponsDlg').window('move',{top:0}); $('#previewCouponsDlg').window('open'); var picUrl = "<img width='100px' height='100px' style='border:0px;' src='"+appPath+rowData.couponPicUrl+"'/>"; document.getElementById('showCoupon').innerHTML=picUrl; } function showVal(){ $("#remindTypeIdValue").val('email'); }
package com.founder.ec.promote.action; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cfca.util.GUID; import com.founder.ec.base.action.BaseAction; import com.founder.ec.common.utils.DateUtils; import com.founder.ec.order.model.OrderShipping; import com.founder.ec.promote.model.EcCouponPublish; import com.founder.ec.promote.model.EcCouponType; import com.founder.ec.promote.model.EcCouponTypeGoods; import com.founder.ec.promote.model.EcCouponTypeGoodsTemp; import com.founder.ec.promote.model.EcCoupons; import com.founder.ec.promote.service.EcCouponPublishService; @Controller @RequestMapping(value = "/couponPublish") public class EcCouponPublishAction extends BaseAction { @Autowired private EcCouponPublishService ecCouponPublishService; /** * 转到查询页面 * @param request * @return */ @RequestMapping(value="/queryPage") public String toQueryPage(HttpServletRequest request){ EcCouponType ecCouponType = new EcCouponType(); List<HashMap<String,Object>> couponTypeList = ecCouponPublishService.getCouponTypeList(ecCouponType); request.setAttribute("couponTypeList", couponTypeList); return "/jsp/promote/ec_coupon_publish.jsp"; } /** * 优惠券类型列表 * @param request * @param ecCouponType * @return */ @RequestMapping(value="/list") @ResponseBody public Map<String,Object> memberPointList(HttpServletRequest request,EcCouponPublish ecCouponPublish) { String pageNo = request.getParameter("page"); String pageSize = request.getParameter("rows"); return ecCouponPublishService.queryEcCouponPublishPage(ecCouponPublish, Integer.parseInt(pageNo),Integer.parseInt(pageSize)); } /** * 保存优惠券发行信息 * @param request * @param EcPromoteRule * @return */ @RequestMapping(value="/updateCouponPublish") @ResponseBody public String updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish) { Integer userId = (Integer)request.getSession().getAttribute("userId"); if(!ecCouponPublish.getRemindType().equals("email"))ecCouponPublish.setRemindType(null); if("save".equals(ecCouponPublish.getType())){ ecCouponPublish.setPublishUserId(userId); ecCouponPublish.setAddUserId(userId); ecCouponPublish.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis())); ecCouponPublish.setPublishTime(DateUtils.longToDateAll(System.currentTimeMillis())); ecCouponPublish.setPublishType("general"); }else{ ecCouponPublish.setEditUserId(userId); ecCouponPublish.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis())); } ecCouponPublishService.updateEcCouponPublish(request,ecCouponPublish); return "ok"; } /** * 删除发行数据 * @param request * @param EcPromoteRule * @return */ @RequestMapping(value="/delEcCouponPublish") @ResponseBody public String delEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish) { Integer userId = (Integer)request.getSession().getAttribute("userId"); ecCouponPublish.setEditUserId(userId); ecCouponPublish.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis())); ecCouponPublishService.delEcCouponPublish(ecCouponPublish); return "ok"; } /** * 发运单批量打印 * @param request * @param shipping * @return */ @RequestMapping(value="/printPdf") @ResponseBody public HashMap<String,Object> batchPrint(HttpServletRequest request,EcCoupons ecCoupons){ String absolutePath = request.getSession().getServletContext().getRealPath("download"); return ecCouponPublishService.doPrintPdf(ecCoupons, absolutePath,request); } }
package com.founder.ec.promote.service; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.founder.ec.base.service.BaseService; import com.founder.ec.promote.model.EcCouponPublish; import com.founder.ec.promote.model.EcCouponType; import com.founder.ec.promote.model.EcCoupons; public interface EcCouponPublishService extends BaseService { /** * 获取优惠券类型列表 * @param ecCouponType * @return */ public List<HashMap<String, Object>> getCouponTypeList(EcCouponType ecCouponType); /** * 优惠券发行列表 * @param ecCouponType * @param pageNo * @param pageSize * @return */ public Map<String, Object> queryEcCouponPublishPage(EcCouponPublish ecCouponPublish, int pageNo, int pageSize); /** * 更新优惠券发行 * @param ecCouponType */ public void updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish); /** * 删除优惠券类型 * @param ecCouponType * @param ecCouponTypeGoods */ public void delEcCouponPublish(EcCouponPublish ecCouponPublish); /** * 导出PDF * @param param * @param printTemplateId * @param absolutePath * @return */ public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request); /** * 查询优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的批次优惠券 * @param ecCouponPublish * @return */ public List<EcCouponPublish> getEcCouponPublishTime(EcCouponPublish ecCouponPublish); /** * 查询可用优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的可用批次优惠券 * @param ecCouponPublish * @return */ public List<EcCouponPublish> getUnUsedEcCouponPublishTime(EcCouponPublish ecCouponPublish); }
package com.founder.ec.promote.service.impl; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cfca.util.GUID; import com.founder.ec.base.service.impl.BaseServiceImpl; import com.founder.ec.common.aop.Cached; import com.founder.ec.common.dao.CommonDao; import com.founder.ec.common.page.JspPage; import com.founder.ec.common.utils.DateUtils; import com.founder.ec.common.utils.FileUtil; import com.founder.ec.common.utils.PropertyUtil; import com.founder.ec.promote.model.EcCouponPublish; import com.founder.ec.promote.model.EcCouponType; import com.founder.ec.promote.model.EcCoupons; import com.founder.ec.promote.service.EcCouponPublishService; import com.founder.ec.utils.PropertyConfigurer; import com.itextpdf.text.Document; import com.itextpdf.text.Font; import com.itextpdf.text.Image; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; @Service public class EcCouponPublishServiceImpl extends BaseServiceImpl implements EcCouponPublishService { @Autowired private CommonDao commonDao; /** * 获取优惠券类型列表 * @param ecCouponType * @return */ //@Cached(name="ecCouponType") public List<HashMap<String, Object>> getCouponTypeList(EcCouponType ecCouponType) { return commonDao.queryForList("EcCouponType.getValidRules", ecCouponType); } /** * 优惠券发行列表 * @param ecCouponType * @param pageNo * @param pageSize * @return */ public Map<String, Object> queryEcCouponPublishPage(EcCouponPublish ecCouponPublish, int pageNo, int pageSize){ JspPage page = (JspPage)commonDao.pageQuery("ecCouponPublish.getEcCouponPublishCount","ecCouponPublish.getEcCouponPublishList", ecCouponPublish, pageNo, pageSize); List<EcCouponPublish> list = (List<EcCouponPublish>) page.getData(); List<EcCouponPublish> newlist = new ArrayList<EcCouponPublish>(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(!list.isEmpty()){ for(EcCouponPublish ec:list){ try { if(null !=ec.getEndDate() && !ec.getEndDate().equals("")){ Date date = sdf.parse(ec.getEndDate()+" 23:59:59"); if(date.after(new Date())){ EcCouponPublish e = (EcCouponPublish) commonDao.queryForObject("ecCouponPublish.surplusNum",ec); if(null != ec.getWarnNum()&&Integer.parseInt(e.getRestNum())<Integer.parseInt(ec.getWarnNum())) ec.setRemindSuccess("1"); } } newlist.add(ec); } catch (ParseException e1) { e1.printStackTrace(); } } } Map<String,Object> resMap = new HashMap<String, Object>(); resMap.put("total", page.getTotalCount()); resMap.put("rows", newlist); return resMap; } /** * 更新优惠券发行 * @param ecCouponPublish */ public void updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish){ Integer userId = (Integer)request.getSession().getAttribute("userId"); if("save".equals(ecCouponPublish.getType())){ commonDao.save("ecCouponPublish.insert",ecCouponPublish); }else{ commonDao.update("ecCouponPublish.updateByPrimaryKeySelective", ecCouponPublish); EcCoupons ecCoupons = new EcCoupons(); ecCoupons.setIsDelete("Y"); ecCoupons.setPublishId(ecCouponPublish.getPublishId()); commonDao.update("ecCoupons.updateByPublishId", ecCoupons); } //保存优惠券数据 if(null!=ecCouponPublish.getPublishAmount() && 0!=ecCouponPublish.getPublishAmount() && !"".equals(ecCouponPublish.getPublishAmount().toString())){//发行数不为空 List<String> couponNoList = new ArrayList<String>(); String numberPrefix = ecCouponPublish.getNumberPrefix(); int numberLength = ecCouponPublish.getNumberLength(); //查询数据库中已经存在的优惠券 // EcCoupons coupons = new EcCoupons(); // List<EcCoupons> couponList = (List<EcCoupons>)commonDao.queryForList("ecCoupons.getAllCouponsList",coupons); //去除重复的优惠券号 boolean flag = true;//是否有重复 do{ Set<String> ss = new HashSet<String>(); ss.addAll(couponNoList); couponNoList.clear(); couponNoList.addAll(ss); //判断数据库中是否已经存在 // for(int i=0;i<couponList.size();i++){ // EcCoupons coupon = couponList.get(i); // for(int j=0;j<couponNoList.size();j++){ // String couponNo = couponNoList.get(j); // if(couponNo.equals(coupon.getCouponNo())){ // couponList.remove(i); // break; // } // } // } int cfCount = ecCouponPublish.getPublishAmount()-couponNoList.size();//重复的数量 if(cfCount>0){ for(int i=0;i<cfCount;i++){ String couponNo = creCouponNo(numberPrefix, numberLength); couponNoList.add(couponNo); } }else{ flag = false; } }while(flag); List<EcCoupons> couponsList = new ArrayList<EcCoupons>(); for(String couponNo : couponNoList){ EcCoupons ecCoupons = new EcCoupons(); ecCoupons.setCouponNo(couponNo); ecCoupons.setCouponTypeId(Long.valueOf(ecCouponPublish.getCouponTypeId())); ecCoupons.setPublishId(ecCouponPublish.getPublishId()); ecCoupons.setBeginDate(ecCouponPublish.getBeginDate()); ecCoupons.setEndDate(ecCouponPublish.getEndDate()); ecCoupons.setCouponState("create"); ecCoupons.setIsDelete("N"); ecCoupons.setAddUserId(userId); ecCoupons.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis())); couponsList.add(ecCoupons); } commonDao.batchInsert("ecCoupons.insert", couponsList); } } /** * 生成优惠券号 * @param numberPrefix * @param numberLength * @return */ public String creCouponNo(String numberPrefix,int numberLength){ String myGuid = GUID.generateGUID(); myGuid.replaceAll(myGuid, "o"); myGuid.replaceAll(myGuid, "O"); myGuid.replaceAll(myGuid, "l"); myGuid.replaceAll(myGuid, "L"); myGuid.replaceAll(myGuid, "i"); myGuid.replaceAll(myGuid, "I"); myGuid.replaceAll(myGuid, "0"); myGuid.replaceAll(myGuid, "1"); myGuid = myGuid.substring((myGuid.length()-numberLength), myGuid.length()); String couponNo = numberPrefix+myGuid; return couponNo; } /** * 删除优惠券类型 * @param ecCouponType * @param ecCouponTypeGoods */ public void delEcCouponPublish(EcCouponPublish ecCouponPublish){ commonDao.update("ecCouponPublish.updateByPrimaryKeySelective",ecCouponPublish); EcCoupons ecCoupons = new EcCoupons(); ecCoupons.setIsDelete("Y"); ecCoupons.setPublishId(ecCouponPublish.getPublishId()); commonDao.update("ecCoupons.updateByPublishId", ecCoupons); } public List<EcCouponPublish> getEcCouponPublishTime(EcCouponPublish ecCouponPublish){ return commonDao.queryForList("ecCouponPublish.getEcCouponPublishTime", ecCouponPublish); } /** * 导出PDF * @param param * @param printTemplateId * @param absolutePath * @return */ public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request) { HashMap<String,Object> rslt = new HashMap<String, Object>(); List<Object> couponsList = commonDao.queryForList("ecCoupons.getEcCouponsList", ecCoupons); if(null!=couponsList && !couponsList.isEmpty()){ try { Document document = new Document(); // String propertisFileName = "/itext.properties"; // String outPutFile = PropertyUtil.getPropertyValue(propertisFileName, "ec_coupons_outputFolder") ; String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_outputFolder"); FileUtil.createFolder(absolutePath + "/"+ outPutFile); String fileName = absolutePath + "/"+ outPutFile+"/"+ DateUtils.getCurrentDateString().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")+".pdf"; PdfWriter.getInstance(document, new FileOutputStream(fileName)); document.open(); this.generateDelivery(document, couponsList,request); // Image bmp = Image.getInstance("E:\\sunset.jpg"); // // // 缩小到原来的25% // // bmp.scalePercent(25f); // // 关闭文档 document.close(); rslt.put("code", 1); rslt.put("fileUrl", fileName); } catch (Exception e) { rslt.put("code", 0); rslt.put("msg", e.getMessage()); e.printStackTrace(); } } return rslt; } private void generateDelivery(Document document,List<Object> couponsList,HttpServletRequest request)throws Exception{ DecimalFormat df = new DecimalFormat("#.00"); document.newPage();//新建一页 // String propertisFileName = "/itext.properties"; String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_fontFile"); BaseFont cf = BaseFont.createFont(outPutFile, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font chFont = new Font(cf,12,Font.NORMAL); // String orderIdString = String.valueOf(coupons.getOrderId()); // orderIdString = orderIdString.substring(orderIdString.length()-4); // Paragraph noPara = new Paragraph(orderIdString,chFont); // noPara.setAlignment(2); // noPara.setSpacingAfter(12f); // document.add(noPara); Font tableFont = new Font(cf,9,Font.NORMAL); float w = 0.1f; //第一行 //货品明细列表 PdfPTable itemTable = new PdfPTable(2); // itemTable.setWidthPercentage(100f); // itemTable.setWidths(new float[]{60f,60f}); // itemTable.setSpacingBefore(20f); itemTable.getDefaultCell().setBorder(0); PdfPCell itemTitleCell = new PdfPCell(); //itemTitleCell.setBorderColor(new BaseColor(153,187,232));//边框颜色 // itemTitleCell.setFixedHeight(18f); // itemTitleCell.setVerticalAlignment(1);//居中 // itemTitleCell.setHorizontalAlignment(1);//居中 //标题行 // itemTitleCell.setPhrase(new Phrase("序号",tableFont)); // this.setCellBorder(itemTitleCell, w, w, w, w); // itemTable.addCell(itemTitleCell); // // itemTitleCell.setPhrase(new Phrase("货品名称",tableFont)); // this.setCellBorder(itemTitleCell, w, w, 0, w); // itemTable.addCell(itemTitleCell); if(null!=couponsList && couponsList.size()>1){ EcCoupons coupon = (EcCoupons)couponsList.get(0); HashMap<String,Object> param = new HashMap<String, Object>(); param.put("couponTypeId", coupon.getCouponTypeId()); List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param); EcCouponType ecCouponType = null; if(null!=typeList && !typeList.isEmpty()){ ecCouponType = (EcCouponType)typeList.get(0); } if(couponsList.size()%2==0){ for(int i=0;i<couponsList.size();i+=2){ EcCoupons coupons = (EcCoupons)couponsList.get(i); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1); BufferedImage image2 = passSy(coupons2,ecCouponType,request); Image imageRight2 = Image.getInstance(image2, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight2); } }else{ for(int i=0;i<couponsList.size()-1;i+=2){ EcCoupons coupons = (EcCoupons)couponsList.get(i); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1); BufferedImage image2 = passSy(coupons2,ecCouponType,request); Image imageRight2 = Image.getInstance(image2, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight2); } EcCoupons coupons = (EcCoupons)couponsList.get(couponsList.size()-1); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); itemTable.addCell(""); } }else if(null!=couponsList && couponsList.size()==1){ EcCoupons coupon = (EcCoupons)couponsList.get(0); HashMap<String,Object> param = new HashMap<String, Object>(); param.put("couponTypeId", coupon.getCouponTypeId()); List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param); EcCouponType ecCouponType = null; if(null!=typeList && !typeList.isEmpty()){ ecCouponType = (EcCouponType)typeList.get(0); } EcCoupons coupons = (EcCoupons)couponsList.get(0); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); itemTable.addCell(""); } document.add(itemTable); } /** * 打水印 * @param coupons * @return */ public BufferedImage passSy(EcCoupons coupons,EcCouponType ecCouponType,HttpServletRequest request){ BufferedImage image = null; try{ String saveFolder = request.getSession().getServletContext().getRealPath("upload")+"/promote"; String newFileNamePath = ecCouponType.getCouponPicUrl(); if(null!=newFileNamePath && !"".equals(newFileNamePath)){ String name[] = newFileNamePath.split("/"); File img = new File(saveFolder+"/"+name[name.length-1]); // File img = new File("E:\\sunset.jpg"); java.awt.Image src = ImageIO.read(img); int width = src.getWidth(null); int height = src.getHeight(null); image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); g.drawImage(src, 0, 0, width, height, null); g.setColor(Color.black); g.setFont(new java.awt.Font("宋体", 12, 12)); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.6f)); String couponNo = coupons.getCouponNo(); if(couponNo.length()==16){ couponNo = couponNo.substring(0, 4)+"-"+couponNo.substring(4, 8)+"-"+couponNo.substring(8, 12)+"-"+couponNo.substring(12, 16); } g.drawString(couponNo, 30, 80);//水印打的位置 // g.drawString(pressText, wideth - fontSize - x, height - // fontSize/2 - y); g.dispose(); } }catch (Exception e) { e.printStackTrace(); } return image; } public static int getLength(String text) { int length = 0; for (int i = 0; i < text.length(); i++) { if (new String(text.charAt(i) + "").getBytes().length > 1) { length += 2; } else { length += 1; } } return length / 2; } private void setCellBorder(PdfPCell cell,float r,float b,float l,float t){ cell.setBorderWidthRight(r); cell.setBorderWidthBottom(b); cell.setBorderWidthLeft(l); cell.setBorderWidthTop(t); } private int getItextAlign(String alignCode){ if("center".equals(alignCode)){ return PdfContentByte.ALIGN_CENTER; }else if("right".equals(alignCode)){ return PdfContentByte.ALIGN_RIGHT; }else{ return PdfContentByte.ALIGN_LEFT; } } @Override public List<EcCouponPublish> getUnUsedEcCouponPublishTime( EcCouponPublish ecCouponPublish) { return commonDao.queryForList("ecCouponPublish.getUnUsedEcCouponPublishTime", ecCouponPublish); } }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="ecCouponPublish"> <typeAlias alias="EcCouponPublish" type="com.founder.ec.promote.model.EcCouponPublish"/> <resultMap id="ecCouponPublishResult" class="EcCouponPublish"> <result column="PUBLISH_ID" property="publishId" /> <result column="COUPON_TYPE_ID" property="couponTypeId" /> <result column="PUBLISH_AMOUNT" property="publishAmount" /> <result column="PUBLISH_USER_ID" property="publishUserId" /> <result column="PUBLISH_TIME" property="publishTime" /> <result column="BEGIN_DATE" property="beginDate" /> <result column="END_DATE" property="endDate" /> <result column="NUMBER_PREFIX" property="numberPrefix" /> <result column="NUMBER_LENGTH" property="numberLength" /> <result column="IS_DELETE" property="isDelete" /> <result column="ADD_USER_ID" property="addUserId" /> <result column="ADD_TIME" property="addTime" /> <result column="EDIT_USER_ID" property="editUserId" /> <result column="EDIT_TIME" property="editTime" /> <result column="PUBLISH_NOTES" property="publishNotes" /> <result column="PUBLISH_TYPE" property="publishType" /> <result column="WRAN_NUM" property="warnNum" /> <result column="REMIND_TYPE_NAME" property="remindTypeName" /> <result column="REMIND_TYPE" property="remindType" /> <result column="REMIND_PATH" property="remindPath" /> <result column="REMIND_SUCCESS" property="remindSuccess" /> </resultMap> <resultMap id="ecCouponPublishResult" class="EcCouponPublish" extends = "ecCouponPublishResult"> <result column="coupon_type_name" property="couponTypeName" /> <result column="user_real_name" property="userRealName" /> </resultMap> <insert id="insert" parameterClass="EcCouponPublish"> <selectKey resultClass="int" keyProperty="publishId" > SELECT COUPON_PUBLISH_SEQ.nextval AS publishId from dual </selectKey> insert into EC_COUPON_PUBLISH (PUBLISH_ID, COUPON_TYPE_ID, PUBLISH_AMOUNT, PUBLISH_USER_ID, PUBLISH_TIME, BEGIN_DATE, END_DATE, NUMBER_PREFIX, NUMBER_LENGTH, IS_DELETE, ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME,PUBLISH_NOTES,PUBLISH_TYPE,WRAN_NUM,REMIND_TYPE,REMIND_PATH,REMIND_SUCCESS) values (#publishId#, #couponTypeId#, #publishAmount#, #publishUserId#, #publishTime#, #beginDate#, #endDate#, #numberPrefix#, #numberLength#, #isDelete#, #addUserId#, #addTime#, #editUserId#, #editTime#,#publishNotes#,#publishType#,#warnNum#,#remindType#,#remindPath#,#remindSuccess#) </insert> <update id="updateByPrimaryKey" parameterClass="EcCouponPublish"> update EC_COUPON_PUBLISH set COUPON_TYPE_ID = #couponTypeId#, PUBLISH_AMOUNT = #publishAmount#, PUBLISH_USER_ID = #publishUserId#, PUBLISH_TIME = #publishTime#, BEGIN_DATE = #beginDate#, END_DATE = #endDate#, NUMBER_PREFIX = #numberPrefix#, NUMBER_LENGTH = #numberLength#, IS_DELETE = #isDelete#, ADD_USER_ID = #addUserId#, ADD_TIME = #addTime#, EDIT_USER_ID = #editUserId#, EDIT_TIME = #editTime#, PUBLISH_NOTES = #publishNotes#, PUBLISH_TYPE = #publishType#, <!-- WRAN_NUM= #warnNum#, REMIND_TYPE=#remindType#, REMIND_PATH=#remindPath#, REMIND_SUCCESS=#remindSuccess# --> where PUBLISH_ID = #publishId# </update> <update id="updateByPrimaryKeySelective" parameterClass="EcCouponPublish"> update EC_COUPON_PUBLISH <dynamic prepend="set"> <isNotNull prepend="," property="couponTypeId"> COUPON_TYPE_ID = #couponTypeId# </isNotNull> <isNotNull prepend="," property="publishAmount"> PUBLISH_AMOUNT = #publishAmount# </isNotNull> <isNotNull prepend="," property="publishUserId"> PUBLISH_USER_ID = #publishUserId# </isNotNull> <isNotNull prepend="," property="publishTime"> PUBLISH_TIME = #publishTime# </isNotNull> <isNotNull prepend="," property="beginDate"> BEGIN_DATE = #beginDate# </isNotNull> <isNotNull prepend="," property="endDate"> END_DATE = #endDate# </isNotNull> <isNotNull prepend="," property="numberPrefix"> NUMBER_PREFIX = #numberPrefix# </isNotNull> <isNotNull prepend="," property="numberLength"> NUMBER_LENGTH = #numberLength# </isNotNull> <isNotNull prepend="," property="isDelete"> IS_DELETE = #isDelete# </isNotNull> <isNotNull prepend="," property="addUserId"> ADD_USER_ID = #addUserId# </isNotNull> <isNotNull prepend="," property="addTime"> ADD_TIME = #addTime# </isNotNull> <isNotNull prepend="," property="editUserId"> EDIT_USER_ID = #editUserId# </isNotNull> <isNotNull prepend="," property="editTime"> EDIT_TIME = #editTime# </isNotNull> <isNotNull prepend="," property="publishNotes"> PUBLISH_NOTES = #publishNotes# </isNotNull> <isNotNull prepend="," property="publishType"> PUBLISH_TYPE = #publishType# </isNotNull> <isNotNull prepend="," property="warnNum"> WRAN_NUM= #warnNum# </isNotNull> <isNotNull prepend="," property="remindType"> REMIND_TYPE=#remindType# </isNotNull> <isNotNull prepend="," property="remindPath"> REMIND_PATH=#remindPath# </isNotNull> <isNotNull prepend="," property="remindSuccess"> REMIND_SUCCESS=#remindSuccess# </isNotNull> </dynamic> where PUBLISH_ID = #publishId# </update> <delete id="deleteByPrimaryKey" parameterClass="EcCouponPublish"> delete from EC_COUPON_PUBLISH where PUBLISH_ID = #publishId# </delete> <select id="getByPrimaryKey" resultMap="ecCouponPublishResult" parameterClass="EcCouponPublish"> select PUBLISH_ID, COUPON_TYPE_ID, PUBLISH_AMOUNT, PUBLISH_USER_ID, PUBLISH_TIME, BEGIN_DATE, END_DATE, NUMBER_PREFIX, NUMBER_LENGTH, IS_DELETE, ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME from EC_COUPON_PUBLISH where PUBLISH_ID = #publishId# </select> <!-- 查询优惠券发行列表List --> <select id="getEcCouponPublishList" resultMap="ecCouponPublishResult" parameterClass="EcCouponPublish"> select p.*, c.coupon_type_name,m.user_real_name from (select case when remind_type is not null then '1' when remind_type is null then '0' end as remind_type_name, ep.* from EC_COUPON_PUBLISH ep) p left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id and c.is_delete='N' left join sys_user m on p.publish_user_id=m.user_id and m.is_delete='N' where p.is_delete='N' <isNotEmpty prepend="and" property="couponTypeId"> p.COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> <isNotEmpty prepend="and" property="publishId"> p.PUBLISH_ID = #publishId# </isNotEmpty> <isNotEmpty prepend="and" property="publishAmount"> p.PUBLISH_AMOUNT = #publishAmount# </isNotEmpty> <isNotEmpty prepend="and" property="remindType"> p.REMIND_TYPE_NAME = #remindType# </isNotEmpty> order by p.PUBLISH_TIME desc </select> <!-- 查询优惠券发行列表count --> <select id="getEcCouponPublishCount" resultClass="Integer" parameterClass="EcCouponPublish"> select count(1) from (select case when remind_type is not null then '1' when remind_type is null then '0' end as remind_type_name, ep.* from EC_COUPON_PUBLISH ep) p left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id and c.is_delete='N' left join sys_user m on p.publish_user_id=m.user_id and m.is_delete='N' where p.is_delete='N' <isNotEmpty prepend="and" property="couponTypeId"> p.COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> <isNotEmpty prepend="and" property="publishId"> p.PUBLISH_ID = #publishId# </isNotEmpty> <isNotEmpty prepend="and" property="publishAmount"> p.PUBLISH_AMOUNT = #publishAmount# </isNotEmpty> <isNotEmpty prepend="and" property="remindType"> p.REMIND_TYPE_NAME = #remindType# </isNotEmpty> </select> <resultMap id="ecCouponPublishResultObj" class="EcCouponPublish"> <result column="PUBLISH_ID" property="publishId" /> <result column="publishAmount" property="publishAmount" /> </resultMap> <!-- 查询优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的批次优惠券) --> <select id="getEcCouponPublishTime" resultMap="ecCouponPublishResultObj" parameterClass="EcCouponPublish"> select p.publish_id,round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') -sysdate)*24) publishAmount from EC_COUPON_PUBLISH p left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id where c.is_delete='N' and p.is_delete='N' and round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') -sysdate)*24)>720 <isNotEmpty prepend="and" property="couponTypeId"> p.COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> order by round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') -sysdate)*24) </select> <resultMap id="needSendEmailResult" class="EcCouponPublish" > <result column="PUBLISH_ID" property="publishId" /> <result column="COUPON_TYPE_ID" property="couponTypeId" /> <result column="PUBLISH_AMOUNT" property="publishAmount" /> <result column="PUBLISH_USER_ID" property="publishUserId" /> <result column="PUBLISH_TIME" property="publishTime" /> <result column="BEGIN_DATE" property="beginDate" /> <result column="END_DATE" property="endDate" /> <result column="NUMBER_PREFIX" property="numberPrefix" /> <result column="NUMBER_LENGTH" property="numberLength" /> <result column="IS_DELETE" property="isDelete" /> <result column="ADD_USER_ID" property="addUserId" /> <result column="ADD_TIME" property="addTime" /> <result column="EDIT_USER_ID" property="editUserId" /> <result column="EDIT_TIME" property="editTime" /> <result column="PUBLISH_NOTES" property="publishNotes" /> <result column="PUBLISH_TYPE" property="publishType" /> <result column="WRAN_NUM" property="warnNum" /> <result column="REMIND_TYPE" property="remindType" /> <result column="REMIND_PATH" property="remindPath" /> <result column="REMIND_SUCCESS" property="remindSuccess" /> <result column="rest_num" property="restNum" /> <result column="coupon_type_name" property="couponTypeName" /> </resultMap> <select id="needSendEmail" resultMap="needSendEmailResult" parameterClass="EcCouponPublish"> select * from (select p.*, c.coupon_type_name from EC_COUPON_PUBLISH p left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id and c.is_delete='N') pb , (select count(1) as rest_num ,publish_id from (select publish_id from EC_COUPONS where COUPON_STATE = 'create' and is_delete ='N' and publish_id in (select publish_id from EC_COUPON_PUBLISH WHERE REMIND_TYPE ='email'AND REMIND_SUCCESS IS NULL )) GROUP BY PUBLISH_ID) n where pb.wran_num >= n.rest_num and pb.publish_id = n.publish_id </select> <resultMap id="surplusNumResult" class="EcCouponPublish" > <result column="rest_num" property="restNum" /> </resultMap> <select id="surplusNum" resultMap="surplusNumResult" parameterClass="EcCouponPublish"> select count(1) as rest_num from EC_COUPONS where COUPON_STATE = 'create' and is_delete ='N' and publish_id = #publishId# </select> <resultMap id="unUsedEcCouponPublishResult" class="EcCouponPublish"> <result column="PUBLISH_ID" property="publishId" /> </resultMap> <!-- 查询可用优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的可用批次优惠券) --> <select id="getUnUsedEcCouponPublishTime" resultMap="unUsedEcCouponPublishResult" parameterClass="EcCouponPublish"> select p.publish_id from EC_COUPON_PUBLISH p left join ec_coupon_type c on p.coupon_type_id = c.coupon_type_id where c.is_delete = 'N' and p.is_delete = 'N' and round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') - sysdate) * 24) > 720 <isNotEmpty prepend="and" property="couponTypeId"> p.COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> and (select count(1) from ec_coupons t, EC_COUPON_PUBLISH ecp where t.publish_id = ecp.publish_id and p.publish_id = ecp.publish_id and t.coupon_state in ('create') and t.is_delete = 'N') > 0 order by round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') - sysdate) * 24) </select> </sqlMap>
优惠券类型是下拉列表
实现方式如下:
/** * 转到查询页面 * @param request * @return */ @RequestMapping(value="/queryPage") public String toQueryPage(HttpServletRequest request){ EcCouponType ecCouponType = new EcCouponType(); //将查询出来的数据放在request 中 List<HashMap<String,Object>> couponTypeList = ecCouponPublishService.getCouponTypeList(ecCouponType); request.setAttribute("couponTypeList", couponTypeList); return "/jsp/promote/ec_coupon_publish.jsp"; }
<!-- 从request遍历取出数据, --> <td class="queryTitle" width="100">优惠券类型</td> <td class="queryContent" width="100"> <select id="couponTypeId_s" class="easyui-combobox" style="width: 100px" panelHeight="auto"> <option value="">请选择</option> <c:forEach var="couponType" items="${couponTypeList }"> <option value="${couponType.couponTypeId}">${couponType.couponTypeName}</option> </c:forEach> </select>
</td>
<tr>
<td class="queryTitle" width="80px">活动状态</td>
<td class="queryContent">
<select class="inputText easyui-combobox" id="addisStatus" style="width: 150px" panelHeight="auto">
<c:forEach var="weixinStatus" items="${weixinStatusList }">
<option value="${weixinStatus }">${weixinStatus.code }</option>
</c:forEach>
</select>
</td>
查询条件,获取列表下拉菜单:
function doQuery(){ var param = $('#couponPublishGrid').datagrid('options').queryParams; param.couponTypeId = $("#couponTypeId_s").combobox("getValue"); param.publishId = $.trim($('#publishId_s').val()); param.publishAmount = $.trim($('#publishAmount_s').val()); param.remindType = $("input[name=remindTypeSelect]").val(); $("#couponPublishGrid").datagrid('unselectAll'); $("#couponPublishGrid").datagrid('load',param); }
分析新增:
toolbar:[{ id:'btnadd', text:'新增发行', iconCls:'icon-add', handler:function(){ addGoodsDlg(); } } //添加商品弹出框 function addGoodsDlg(){ $('#publishId').val(''); $("#couponTypeId").combobox('select',''); $('#publishAmount').val(''); $('#beginDate').datebox('setValue',''); $('#endDate').datebox('setValue',''); $('#numberPrefix').val(''); $('#numberLength').val(''); $('#publishNotes').val(''); $('#warnNum').val(''); $("input[name=remindType]").attr("checked",false); $("#remindTypeIdValue").val(''); $('#remindPath').val(''); $('#addCouponPublishDlg').window({ title:'优惠券发行--编辑', iconCls:'icon-add', width:693, height:300, left:100, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#addCouponPublishDlg').window('move',{top:0}); $('#addCouponPublishDlg').window('open'); } ////对比微信 toolbar : [ { id : 'btnadd', text : '新增微信团', iconCls : 'icon-add', handler : function() { showWin(null,null); } } ] /** * 编辑 * * @param id */ function showWin(id,isStatus) { if (id != null && isStatus!=null) { // 不同的活动状态不同的编辑字段 if(isStatus !=null){ if (isStatus == 'finished'||isStatus=='stopped' ) { $.messager.alert('提示', "此活动状态不可编辑", 'info'); return; } if (isStatus =='activated') { $("#addstartTime").datetimebox("disable"); $("#addendTime").datetimebox("disable"); $("#form_edit").find("input[id=addweixinName]").attr( "disabled", "disabled"); //隐藏照片的上传按钮 $("#fsUploadDiv").css("display","none"); $("#form_edit").find("input[id=addgroupPrice]").attr( "disabled", "disabled"); $("#form_edit").find("input[id=adddiscountLab]").attr( "disabled", "disabled"); $("#form_edit").find("input[id=addminimumJoinMemberNum]").attr( "disabled", "disabled"); $("#form_edit").find("input[id=addbeginWaitTime]").attr( "disabled", "disabled"); $("#form_edit").find("input[id=addorderBy]").attr("disabled", "disabled"); }else{ $("#fsUploadDiv").css("display","block"); $("#addstartTime").datetimebox("enable"); $('#addendTime').datetimebox("enable"); $('#addweixinName').removeAttr("disabled"); $('#addgroupPrice').removeAttr("disabled"); $('#adddiscountLab').removeAttr("disabled"); $('#addminimumJoinMemberNum').removeAttr("disabled"); $('#addbeginWaitTime').removeAttr("disabled"); $('#addorderBy').removeAttr("disabled"); } } }else{ $("#fsUploadDiv").css("display","block"); $("#addstartTime").datetimebox("enable"); $('#addendTime').datetimebox("enable"); $('#addweixinName').removeAttr("disabled"); $('#addgroupPrice').removeAttr("disabled"); $('#adddiscountLab').removeAttr("disabled"); $('#addminimumJoinMemberNum').removeAttr("disabled"); $('#addbeginWaitTime').removeAttr("disabled"); $('#addorderBy').removeAttr("disabled"); } /** * 三种方法移除disabled属性 * $('#form_edit').attr("enable",true); * $('#form_edit').attr("disabled",false); * $('#addweixinName').removeAttr("disabled"); * $('#form_edit').attr("disabled",""); */ $("#fileList").html(""); $("#idHidden").val(""); $("#adddiscountLab").val(""); $("#addweixinName").val(""); // 团长开团等待时间 #12327 修复 $("#addbeginWaitTime").val("24"); $("#addgroupPrice").val(""); $("#addminimumJoinMemberNum").val(""); $("#addstartTime").datebox("setValue",""); $("#addendTime").datebox("setValue",""); // $("#addbeginTime").datebox("setValue",""); // $("#addendTime").datebox("setValue",""); $("#addorderBy").val(""); $("#addisStatus").combobox("setValue", 'nonactivated'); $("#imgUrlHidden").val(""); var iconStr = "icon-add"; var title = "新增微信团"; var urlList; if (id != null) { iconStr = "icon-edit"; title = "编辑微信团"; $.post(appPath + "/page/weixinActivityAct/getBean/" + id, {}, function( data) { $("#idHidden").val(data.weixinId); $("#adddiscountLab").val(data.discountLab); $("#addweixinName").val(data.weixinName); $("#addbeginWaitTime").val(data.beginWaitTime); $("#addgroupPrice").val(data.groupPrice); $("#addminimumJoinMemberNum").val(data.minimumJoinMemberNum); // $("#addbeginTime").datebox("setValue",data.beginTime); $("#addendTime").datebox("setValue", data.endTime); $("#addstartTime").datebox("setValue", data.startTime); $("#addTimeweixin").val(data.addTimeweixin); $("#addorderBy").val(data.sortBy); $("#addisStatus").combobox('setValue', data.isStatus); // $("#editWeixinStatus").val(data.editWeixinStatus); $("#editWeixinStatus").val(data.isStatus); if (data.bannerImgUrl != null && data.bannerImgUrl !=""){ $("#imgUrlHidden").val(data.bannerImgUrl+";"); //获取Img标签Url urlList = data.bannerImgUrl.split(';'); } if(urlList!=null && urlList!=''){ for (var i=0;i<urlList.length;i++){ // 获取当前时间作为随机值,用于img标签ID var randomVal = getTimestamp(); //读取每个Url,并创建Img标签 $("#fileList") .append("<div id = 'div"+randomVal+"' style='display: inline'><img id='img"+ randomVal+ "' style='border: solid 1px #ccc; padding: 3px; width: 70px; height: 50px; cursor: hand;' /> " + "<a id='a"+randomVal+"' href='javascript:void(0)' οnclick='deleteImg(this)'>删除</a> </div>"); //设置Src属性 $("#img" + randomVal).attr("src", urlList[i]); } //激活状态下,隐藏删除<a>标签 if (isStatus =='activated') { $("#form_edit a").hide(); }else{ $("#form_edit a").show(); } } }, "json"); } $('#opreateHtml').window({ title : title, iconCls : iconStr, width : 888, height : 500, left : 200, modal : true, shadow : true, collapsible : false, minimizable : false, maximizable : false }); $('#opreateHtml').window('move', { top : 20 }); $('#opreateHtml').window('open'); } function closeWin(id) { $('#opreateHtml').window('close'); }
//优惠券的保存
//保存优惠券发行数据 function saveCouponPublish(){ //发行券种 var couponTypeId = $("#couponTypeId").combobox("getValue"); //生成张数 var publishAmount = $('#publishAmount').val(); //开始日期 var beginDate = $('#beginDate').datebox("getValue"); //结束日期 var endDate = $('#endDate').datebox("getValue"); //券号前缀 var numberPrefix = $('#numberPrefix').val(); //券号长度 var numberLength = $('#numberLength').val(); //发行描述 var publishNotes = $('#publishNotes').val(); //预警数 var warnNum = $("#warnNum").val(); //预警方式 var remindType =$("#remindTypeIdValue").val(); //预警途径 var remindPath = $("#remindPath").val(); if(couponTypeId==''){ $('#couponTypeNot').css('display',''); return; }else{ $('#couponTypeNot').css('display','none'); } if(publishAmount==''){ $('#publishAmountNot').css('display',''); return; }else{ $('#publishAmountNot').css('display','none'); } if(isNaN(publishAmount)){ $.messager.alert('提示信息','生成张数请输入数字!','info'); return; } if(beginDate==''){ $('#beginDateNot').css('display',''); return; }else{ $('#beginDateNot').css('display','none'); } if(endDate==''){ $('#endDateNot').css('display',''); return; }else{ $('#endDateNot').css('display','none'); } if(beginDate && endDate && parseFloat(beginDate.replace(/\-/g,""))>parseFloat(endDate.replace(/\-/g,""))){ $.messager.alert('提示信息','开始日期要小于或等于结束日期','info'); return; } if(numberPrefix==''){ $('#numberPrefixNot').css('display',''); return; }else{ $('#numberPrefixNot').css('display','none'); } if(numberPrefix.length<2 || numberPrefix.length>4){ $('#numberPrefixLimit').css('display',''); return; }else{ $('#numberPrefixLimit').css('display','none'); } if(numberLength==''){ $('#numberLengthNot').css('display',''); return; }else{ $('#numberLengthNot').css('display','none'); } if(isNaN(numberLength)){ $.messager.alert('提示信息','券号长度请输入数字!','info'); return; } if(parseInt(numberLength)<6 || parseInt(numberLength)>16){ $('#numberLengthLimit').css('display',''); return; }else{ $('#numberLengthLimit').css('display','none'); } if($.trim(warnNum) !='' && warnNum!=null){ if(!checkNumber(warnNum)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; }else if(parseInt(warnNum) > parseInt(publishAmount)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; } else $('#warnNumRemind').css('display','none'); if(remindType ==''){ $('#remindPathRemind').html('请选择预警提示方式'); $('#remindPathRemind').css('display',''); return; }else if(remindPath ==''){ $('#remindPathRemind').html('请填写预警提示方式途径'); $('#remindPathRemind').css('display',''); return; }else if(!CheckMail(remindPath)){ $('#remindPathRemind').html('请填写正确的邮箱格式'); $('#remindPathRemind').css('display',''); return; } else{ $('#warnNumRemind').css('display','none'); $('#remindPathRemind').css('display','none'); } }else{ $('#warnNumRemind').css('display','none'); } if(remindType !='' &&remindType != null){ if(!checkNumber(warnNum)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; }else if(parseInt(warnNum) > parseInt(publishAmount)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; } else $('#warnNumRemind').css('display','none'); if(remindPath ==''){ $('#remindPathRemind').html('请填写预警提示方式途径'); $('#remindPathRemind').css('display',''); return; }else if(!CheckMail(remindPath)){ $('#remindPathRemind').html('请填写正确的邮箱格式'); $('#remindPathRemind').css('display',''); return; } else{ $('#warnNumRemind').css('display','none'); $('#remindPathRemind').css('display','none'); } }else{ $('#remindPathRemind').css('display','none'); } if($.trim(remindPath) !='' && remindPath!=null){ if(!checkNumber(warnNum)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; }else if(parseInt(warnNum) > parseInt(publishAmount)){ $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数'); $('#warnNumRemind').css('display',''); return; } else $('#warnNumRemind').css('display','none'); if(remindType ==''){ $('#remindPathRemind').html('请选择预警提示方式'); $('#remindPathRemind').css('display',''); return; }else if(!CheckMail(remindPath)){ $('#remindPathRemind').html('请填写正确的邮箱格式'); $('#remindPathRemind').css('display',''); return; } else{ $('#warnNumRemind').css('display','none'); $('#remindPathRemind').css('display','none'); } }else{ $('#remindPathRemind').css('display','none'); } var type = "save"; if($('#publishId').val()!=''){ type = "update"; } var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:9100'>" + "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成优惠券</div>" + "<div class='window-mask' style='z-index:9100'></div>"); mod.appendTo('body'); var data = {publishId:$('#publishId').val(),type:type,couponTypeId:couponTypeId,publishAmount:publishAmount, beginDate:beginDate,endDate:endDate,numberPrefix:numberPrefix,numberLength:numberLength, warnNum:warnNum,remindType:remindType,remindPath:remindPath, publishNotes:publishNotes,isDelete:'N'}; doAjax({ url:appPath+'/page/couponPublish/updateCouponPublish', type:'post', data:data, success:function(data){ mod.remove(); if(data=='ok'){ $.messager.alert('提示信息','保存成功','info'); } doCouponPublishReload(); $('#addCouponPublishDlg').window('close'); }, error:function(XMLHttpRequest, textStatus, errorThrown){ mod.remove(); $.messager.alert('提示信息','抱歉,保存失败,'+textStatus,'error'); doCouponPublishReload(); } });
}
对应的java
/** * 保存优惠券发行信息 * @param request * @param EcPromoteRule * @return */ @RequestMapping(value="/updateCouponPublish") @ResponseBody public String updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish) { Integer userId = (Integer)request.getSession().getAttribute("userId"); if(!ecCouponPublish.getRemindType().equals("email"))ecCouponPublish.setRemindType(null); if("save".equals(ecCouponPublish.getType())){ ecCouponPublish.setPublishUserId(userId); ecCouponPublish.setAddUserId(userId); ecCouponPublish.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis())); ecCouponPublish.setPublishTime(DateUtils.longToDateAll(System.currentTimeMillis())); ecCouponPublish.setPublishType("general"); }else{ ecCouponPublish.setEditUserId(userId); ecCouponPublish.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis())); } ecCouponPublishService.updateEcCouponPublish(request,ecCouponPublish); return "ok"; }
//编辑页面
//显示编辑页面 function showEdit(rowData){ $('#addCouponPublishForm').form('clear'); $('#addCouponPublishForm').form('load',rowData); $('#publishId').val(rowData.publishId); $("#couponTypeId").combobox('select',rowData.couponTypeId); $('#publishAmount').val(rowData.publishAmount); $('#beginDate').datebox('setValue',rowData.beginDate); $('#endDate').datebox('setValue',rowData.endDate); $('#numberPrefix').val(rowData.numberPrefix); $('#numberLength').val(rowData.numberLength); $('#publishNotes').val(rowData.publishNotes); $('#warnNum').val(rowData.warnNum); $('#remindPath').val(rowData.remindPath); $("input[name='remindType']").each(function(){ if($(this).val()==rowData.remindType){ $(this).attr("checked","true"); } }); $("#warnNum").val(rowData.warnNum); $("#remindPath").val(rowData.remindPath); $('#addCouponPublishDlg').window({ title:'优惠券发行--编辑', iconCls:'icon-add', width:693, height:300, left:100, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#addCouponPublishDlg').window('move',{top:0}); $('#addCouponPublishDlg').window('open'); }
//券明细弹出框 function queryCoupons(rowData){ $('#showCouponsDlg').window({ title:'优惠券发行--券明细', iconCls:'icon-add', width:993, height:400, left:50, modal: true, shadow: true, collapsible:false, minimizable:false, maximizable:false }); $('#showCouponsDlg').window('move',{top:0}); $('#showCouponsDlg').window('open'); couponsGrid(rowData.publishId); $('#publishId').val(rowData.publishId); }
function couponsGrid(publishId){ $('#queryCouponsGrid').datagrid({ url:appPath+'/page/couponsQuery/couponsList', method:'post', queryParams:{publishId:publishId}, height:'350', width:'full', singleSelect:true, striped: true, remoteSort:false, checkbox:false, idField:'couponNo', frozenColumns:[[ {field:'id',title:'操作',width:'40',align:'center', formatter:function(value,rowData,rowIndex){ var dataStr = JSON.stringify(rowData); return "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' title='预览' onClick='preview("+dataStr+")'/></a> "; } } ]], columns:[[ {field:'publishId',title:'发行批次号',width:80,align:'center',sortable:true}, {field:'couponNo',title:'券号',width:80,align:'center',sortable:true}, {field:'couponTypeName',title:'优惠券类型',width:120,align:'center',sortable:true}, {field:'couponFee',title:'面额',width:80,align:'center',sortable:true}, {field:'discountFee',title:'优惠额',width:60,align:'center',sortable:true}, {field:'orderFeeLimit',title:'订单限额',width:120,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.orderFeeLimit=='0'){ return '无'; }else{ return rowData.orderFeeLimit; } } }, {field:'useAmountLimit',title:'限用张数',width:60,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.useAmountLimit=='0'){ return '无'; }else{ return rowData.useAmountLimit; } } }, {field:'isLimitGoods',title:'适用商品',width:60,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.isLimitGoods=='N'){ return '全部商品'; }else{ return '指定商品'; } } }, {field:'couponState',title:'优惠券状态',width:70,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.couponState=='create'){ return '已发行'; }else if(rowData.couponState=='assign'){ return '已分发'; }else if(rowData.couponState=='used'){ return '已使用'; }else if(rowData.couponState=='expired'){ return '已过期'; } } }, {field:'publishTime',title:'发行日期',width:120,align:'center',sortable:true}, {field:'beginDate',title:'生效日期',width:120,align:'center',sortable:true}, {field:'endDate',title:'失效日期',width:120,align:'center',sortable:true}, {field:'assignType',title:'分发方式',width:60,align:'center',sortable:true, formatter:function(value,rowData,rowIndex){ if(rowData.assignType=='auto'){ return '自动'; }else if(rowData.couponState=='byhand'){ return '手工'; } } }, {field:'assignTime',title:'分发日期',width:120,align:'center',sortable:true}, {field:'usedTime',title:'使用日期',width:120,align:'center',sortable:true}, {field:'loginName',title:'使用会员',width:80,align:'center',sortable:true}, {field:'orderId',title:'使用订单号',width:80,align:'center',sortable:true} ]], pagination:true, rownumbers:true, toolbar:[{ id:'btnExcel', text:'导出Excel', iconCls:'icon-exportExcel', handler:function(){ exportOrderExcel(); } },{ id:'btnPDF', text:'导出PDF', iconCls:'icon-exportPDF', handler:function(){ exportOrderPdf(); } }] }); }
//导出
从上可以看出导出的button是在查看明细的弹出界面里面
/** * 导出订单Excel */ function exportOrderExcel(){ $.messager.confirm('提示信息','您确定要导出到Excel?',function(r){ if(r){ var columns = $("#queryCouponsGrid").datagrid("options").columns[0]; //--------把标题grid标题和grid的field,拼接成字符串----------- var stringTitle = ""; var stringFields = ""; for(var i = 0; i < columns.length; i++){ stringTitle = stringTitle + columns[i].title + ","; stringFields = stringFields + columns[i].field + ","; } if(stringTitle.lastIndexOf(",") == (stringTitle.length-1)){ stringTitle = stringTitle.substring(0, stringTitle.lastIndexOf(",")); } if(stringFields.lastIndexOf(",") == (stringFields.length-1)){ stringFields = stringFields.substring(0, stringFields.lastIndexOf(",")); } var queryParams = $("#queryCouponsGrid").datagrid("options").queryParams; queryParams.gridTitle = stringTitle; queryParams.gridField = stringFields; queryParams.moduleName = "优惠券查询.xls"; var formObj = $("<form></form>").attr("method","post").attr("action",appPath+"/page/export/exportCouponsList"); formObj.append("<input type='text' name='gridTitle'>") .append("<input type='text' name='gridField'>") .append("<input type='text' name='moduleName'>") .append("<input type='text' name='publishId'>") .append("<input type='text' name='couponNo'>") .append("<input type='text' name='couponTypeName'>") .append("<input type='text' name='couponFee'>") .append("<input type='text' name='discountFee'>") .append("<input type='text' name='orderFeeLimit'>") .append("<input type='text' name='useAmountLimit'>") .append("<input type='text' name='isLimitGoods'>") .append("<input type='text' name='couponState'>") .append("<input type='text' name='publishTime'>") .append("<input type='text' name='beginDate'>") .append("<input type='text' name='endDate'>") .append("<input type='text' name='assignType'>") .append("<input type='text' name='assignTime'>") .append("<input type='text' name='usedTime'>") .append("<input type='text' name='realName'>") .append("<input type='text' name='orderId'>") .css('display','none') .appendTo("body"); formObj.form("load",queryParams); formObj.submit(); formObj.remove(); } }); } /** * 导出pdf * @param rowData */ function exportOrderPdf(rowData){ var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:1100'>" + "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成打印文件</div>" + "<div class='window-mask' style='z-index:10'></div>"); mod.appendTo('body'); var publishId = $('#publishId').val(); doAjax({ url : appPath + "/page/couponPublish/printPdf", data : {publishId:publishId}, type : "post", timeout : 1000*60*10, success:function(data){ mod.remove(); var code = data.code; switch(code){ case 0: $.messager.alert('提示信息',data.msg,'error'); break; case 1: $.messager.alert('提示信息','打印文件生成,请下载','info',function(){ window.location.href = appPath+"/download.jsp?fileName="+data.fileUrl; }); break; default: $.messager.alert('提示信息',data,'error'); break; } }, error:function(XMLHttpRequest, textStatus, errorThrown){ mod.remove(); $.messager.alert('提示信息','打印失败'+textStatus,'error'); } }); }
/** * 发运单批量打印 * @param request * @param shipping * @return */ @RequestMapping(value="/printPdf") @ResponseBody public HashMap<String,Object> batchPrint(HttpServletRequest request,EcCoupons ecCoupons){ String absolutePath = request.getSession().getServletContext().getRealPath("download"); return ecCouponPublishService.doPrintPdf(ecCoupons, absolutePath,request); }
/** * 导出PDF * @param param * @param printTemplateId * @param absolutePath * @return */ public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request) { HashMap<String,Object> rslt = new HashMap<String, Object>(); List<Object> couponsList = commonDao.queryForList("ecCoupons.getEcCouponsList", ecCoupons); if(null!=couponsList && !couponsList.isEmpty()){ try { Document document = new Document(); // String propertisFileName = "/itext.properties"; // String outPutFile = PropertyUtil.getPropertyValue(propertisFileName, "ec_coupons_outputFolder") ; String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_outputFolder"); FileUtil.createFolder(absolutePath + "/"+ outPutFile); String fileName = absolutePath + "/"+ outPutFile+"/"+ DateUtils.getCurrentDateString().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")+".pdf"; PdfWriter.getInstance(document, new FileOutputStream(fileName)); document.open(); this.generateDelivery(document, couponsList,request); // Image bmp = Image.getInstance("E:\\sunset.jpg"); // // // 缩小到原来的25% // // bmp.scalePercent(25f); // // 关闭文档 document.close(); rslt.put("code", 1); rslt.put("fileUrl", fileName); } catch (Exception e) { rslt.put("code", 0); rslt.put("msg", e.getMessage()); e.printStackTrace(); } } return rslt; }
/** * 导出PDF * @param param * @param printTemplateId * @param absolutePath * @return */ public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request);
private void generateDelivery(Document document,List<Object> couponsList,HttpServletRequest request)throws Exception{ DecimalFormat df = new DecimalFormat("#.00"); document.newPage();//新建一页 // String propertisFileName = "/itext.properties"; String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_fontFile"); BaseFont cf = BaseFont.createFont(outPutFile, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font chFont = new Font(cf,12,Font.NORMAL); // String orderIdString = String.valueOf(coupons.getOrderId()); // orderIdString = orderIdString.substring(orderIdString.length()-4); // Paragraph noPara = new Paragraph(orderIdString,chFont); // noPara.setAlignment(2); // noPara.setSpacingAfter(12f); // document.add(noPara); Font tableFont = new Font(cf,9,Font.NORMAL); float w = 0.1f; //第一行 //货品明细列表 PdfPTable itemTable = new PdfPTable(2); // itemTable.setWidthPercentage(100f); // itemTable.setWidths(new float[]{60f,60f}); // itemTable.setSpacingBefore(20f); itemTable.getDefaultCell().setBorder(0); PdfPCell itemTitleCell = new PdfPCell(); //itemTitleCell.setBorderColor(new BaseColor(153,187,232));//边框颜色 // itemTitleCell.setFixedHeight(18f); // itemTitleCell.setVerticalAlignment(1);//居中 // itemTitleCell.setHorizontalAlignment(1);//居中 //标题行 // itemTitleCell.setPhrase(new Phrase("序号",tableFont)); // this.setCellBorder(itemTitleCell, w, w, w, w); // itemTable.addCell(itemTitleCell); // // itemTitleCell.setPhrase(new Phrase("货品名称",tableFont)); // this.setCellBorder(itemTitleCell, w, w, 0, w); // itemTable.addCell(itemTitleCell); if(null!=couponsList && couponsList.size()>1){ EcCoupons coupon = (EcCoupons)couponsList.get(0); HashMap<String,Object> param = new HashMap<String, Object>(); param.put("couponTypeId", coupon.getCouponTypeId()); List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param); EcCouponType ecCouponType = null; if(null!=typeList && !typeList.isEmpty()){ ecCouponType = (EcCouponType)typeList.get(0); } if(couponsList.size()%2==0){ for(int i=0;i<couponsList.size();i+=2){ EcCoupons coupons = (EcCoupons)couponsList.get(i); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1); BufferedImage image2 = passSy(coupons2,ecCouponType,request); Image imageRight2 = Image.getInstance(image2, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight2); } }else{ for(int i=0;i<couponsList.size()-1;i+=2){ EcCoupons coupons = (EcCoupons)couponsList.get(i); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1); BufferedImage image2 = passSy(coupons2,ecCouponType,request); Image imageRight2 = Image.getInstance(image2, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight2); } EcCoupons coupons = (EcCoupons)couponsList.get(couponsList.size()-1); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); itemTable.addCell(""); } }else if(null!=couponsList && couponsList.size()==1){ EcCoupons coupon = (EcCoupons)couponsList.get(0); HashMap<String,Object> param = new HashMap<String, Object>(); param.put("couponTypeId", coupon.getCouponTypeId()); List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param); EcCouponType ecCouponType = null; if(null!=typeList && !typeList.isEmpty()){ ecCouponType = (EcCouponType)typeList.get(0); } EcCoupons coupons = (EcCoupons)couponsList.get(0); BufferedImage image = passSy(coupons,ecCouponType,request); Image imageRight = Image.getInstance(image, null, false); imageRight.scalePercent(100f); itemTable.addCell(imageRight); itemTable.addCell(""); } document.add(itemTable); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="EcCouponType"> <typeAlias alias="EcCouponType" type="com.founder.ec.promote.model.EcCouponType"/> <typeAlias alias="EcCouponPublishExpand" type="com.founder.ec.promote.model.EcCouponPublishExpand"/> <resultMap id="ecCouponTypeResult" class="EcCouponType"> <result column="COUPON_TYPE_ID" property="couponTypeId" /> <result column="COUPON_TYPE_NO" property="couponTypeNo" /> <result column="COUPON_TYPE_NAME" property="couponTypeName" /> <result column="COUPON_TYPE_NOTES" property="couponTypeNotes" /> <result column="COUPON_PIC_URL" property="couponPicUrl" /> <result column="COUPON_FEE" property="couponFee" /> <result column="DISCOUNT_FEE" property="discountFee" /> <result column="CONVERT_POINTS" property="convertPoints" /> <result column="IS_LIMIT_GOODS" property="isLimitGoods" /> <result column="ORDER_FEE_LIMIT" property="orderFeeLimit" /> <result column="ORDER_TYPE_LIMIT" property="orderTypeLimit" /> <result column="USE_AMOUNT_LIMIT" property="useAmountLimit" /> <result column="IS_DELETE" property="isDelete" /> <result column="ADD_USER_ID" property="addUserId" /> <result column="ADD_TIME" property="addTime" /> <result column="EDIT_USER_ID" property="editUserId" /> <result column="EDIT_TIME" property="editTime" /> <result column="IS_E_CUPON" property="isECupon" /> <result column="IS_REUSE" property="isReuse" /> <result column="IS_MULTI_USE" property="isMultiUse" /> <result column="USE_TYPE" property="useType" /> <result column="is_limit_pay" property="isLimitPay" /> <result column="payment_type_nos" property="paymentTypeNos" /> <result column="standby1" property="standby1" /> <result column="standby2" property="standby2" /> <result column="standby3" property="standby3" /> <result column="standby4" property="standby4" /> <result column="standby5" property="standby5" /> <result column="member_ship" property="memberShip" /> <result column="limit_member_roleIds" property="limitMemberRoleIds" /> </resultMap> <resultMap id="ecCouponTypeNameByPublishId" class="EcCouponType"> <result column="COUPON_TYPE_NAME" property="couponTypeName" /> <result column="COUPON_FEE" property="couponFee" /> <result column="DISCOUNT_FEE" property="discountFee" /> <result column="USE_TYPE" property="useType" /> <result column="IS_DELETE" property="isDelete" /> </resultMap> <sql id="Base_sql"> COUPON_TYPE_ID, COUPON_TYPE_NO, COUPON_TYPE_NAME, COUPON_TYPE_NOTES, COUPON_PIC_URL, COUPON_FEE, DISCOUNT_FEE, CONVERT_POINTS, IS_LIMIT_GOODS, ORDER_FEE_LIMIT, ORDER_TYPE_LIMIT, USE_AMOUNT_LIMIT, IS_DELETE, ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME,IS_E_CUPON,IS_REUSE,IS_MULTI_USE,USE_TYPE, is_limit_pay,payment_type_nos,standby1, standby2,standby3,standby4,standby5,member_ship,limit_member_roleIds </sql> <select id="getCouponTypeId" resultClass="Integer"> SELECT COUPON_TYPE_SEQ.nextval from dual </select> <insert id="insert" parameterClass="EcCouponType"> insert into EC_COUPON_TYPE (COUPON_TYPE_ID, COUPON_TYPE_NO, COUPON_TYPE_NAME, COUPON_TYPE_NOTES, COUPON_PIC_URL, COUPON_FEE, DISCOUNT_FEE, CONVERT_POINTS, IS_LIMIT_GOODS, ORDER_FEE_LIMIT,ORDER_TYPE_LIMIT, USE_AMOUNT_LIMIT, IS_DELETE, ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME,IS_E_CUPON,IS_REUSE,IS_MULTI_USE,USE_TYPE, is_limit_pay,payment_type_nos,standby1, standby2,standby3,standby4,standby5,member_ship,limit_member_roleIds,yw_catalog_ids) values (#couponTypeId#, #couponTypeNo#, #couponTypeName#, #couponTypeNotes#, #couponPicUrl#, #couponFee#, #discountFee#, #convertPoints#, #isLimitGoods#, #orderFeeLimit#, #orderTypeLimit#, #useAmountLimit#, #isDelete#, #addUserId#, #addTime#, #editUserId#, #editTime#,#isECupon#,#isReuse#,#isMultiUse#,#useType#, #isLimitPay#,#paymentTypeNos#,#standby1#,#standby2#,#standby3#,#standby4#,#standby5#,#memberShip#,#limitMemberRoleIds#,#ywCatalogIds#) </insert> <update id="updateById" parameterClass="EcCouponType"> update EC_COUPON_TYPE <dynamic prepend="set"> <isNotNull prepend="," property="couponTypeNo"> COUPON_TYPE_NO = #couponTypeNo# </isNotNull> <isNotNull prepend="," property="couponTypeName"> COUPON_TYPE_NAME = #couponTypeName# </isNotNull> <isNotNull prepend="," property="couponTypeNotes"> COUPON_TYPE_NOTES = #couponTypeNotes# </isNotNull> <isNotNull prepend="," property="couponPicUrl"> COUPON_PIC_URL = #couponPicUrl# </isNotNull> <isNotNull prepend="," property="couponFee"> COUPON_FEE = #couponFee# </isNotNull> <isNotNull prepend="," property="discountFee"> DISCOUNT_FEE = #discountFee# </isNotNull> <isNotNull prepend="," property="convertPoints"> CONVERT_POINTS = #convertPoints# </isNotNull> <isNotNull prepend="," property="isLimitGoods"> IS_LIMIT_GOODS = #isLimitGoods# </isNotNull> <isNotNull prepend="," property="orderFeeLimit"> ORDER_FEE_LIMIT = #orderFeeLimit# </isNotNull> <isNotNull prepend="," property="orderTypeLimit"> ORDER_TYPE_LIMIT = #orderTypeLimit# </isNotNull> <isNotNull prepend="," property="useAmountLimit"> USE_AMOUNT_LIMIT = #useAmountLimit# </isNotNull> <isNotNull prepend="," property="isDelete"> IS_DELETE = #isDelete# </isNotNull> <isNotNull prepend="," property="addUserId"> ADD_USER_ID = #addUserId# </isNotNull> <isNotNull prepend="," property="addTime"> ADD_TIME = #addTime# </isNotNull> <isNotNull prepend="," property="editUserId"> EDIT_USER_ID = #editUserId# </isNotNull> <isNotNull prepend="," property="editTime"> EDIT_TIME = #editTime# </isNotNull> <isNotNull prepend="," property="isECupon"> IS_E_CUPON = #isECupon# </isNotNull> <isNotNull prepend="," property="isReuse"> IS_REUSE = #isReuse# </isNotNull> <isNotNull prepend="," property="isMultiUse"> IS_MULTI_USE = #isMultiUse# </isNotNull> <isNotNull prepend="," property="useType"> USE_TYPE = #useType# </isNotNull> <isNotNull prepend="," property="isLimitPay"> is_Limit_Pay = #isLimitPay# </isNotNull> <isNotNull prepend="," property="paymentTypeNos"> payment_type_nos = #paymentTypeNos# </isNotNull> <isNotNull prepend="," property="standby1"> standby1 = #standby1# </isNotNull> <isNotNull prepend="," property="standby2"> standby2 = #standby2# </isNotNull> <isNotNull prepend="," property="standby3"> standby3 = #standby3# </isNotNull> <isNotNull prepend="," property="standby4"> standby4 = #standby4# </isNotNull> <isNotNull prepend="," property="standby5"> standby5 = #standby5# </isNotNull> <isNotNull prepend="," property="memberShip"> member_ship = #memberShip# </isNotNull> <isNotNull prepend="," property="limitMemberRoleIds"> limit_member_roleIds = #limitMemberRoleIds# </isNotNull> <isNotEmpty prepend="," property="ywCatalogIds"> yw_catalog_ids = #ywCatalogIds# </isNotEmpty> </dynamic> where COUPON_TYPE_ID = #couponTypeId# </update> <sql id="commonQuerySql"> <isNotEmpty prepend="and" property="couponTypeNo"> g.COUPON_TYPE_NO = #couponTypeNo# </isNotEmpty> <isNotEmpty prepend="and" property="couponTypeName"> g.COUPON_TYPE_NAME like '%$couponTypeName$%' </isNotEmpty> <isNotEmpty prepend="and" property="exceptGiftIds"> g.COUPON_TYPE_ID not in <iterate property="exceptGiftIds" open="(" close=")" conjunction=","> to_number(#exceptGiftIds[]#) </iterate> </isNotEmpty> <isNotEmpty prepend="and" property="ids"> g.COUPON_TYPE_ID in <iterate property="ids" open="(" close=")" conjunction=","> to_number(#ids[]#) </iterate> </isNotEmpty> <isNotEmpty prepend="and" property="couponFee"> g.COUPON_FEE = #couponFee# </isNotEmpty> </sql> <!--LIST--> <select id="getEcCouponTypeList" resultMap="ecCouponTypeResult" parameterClass="EcCouponType"> select <include refid="Base_sql"/> from ( select rownum as rn,gg.* from EC_COUPON_TYPE gg where gg.is_delete='N' <isNotEmpty prepend="and" property="endRow"> <![CDATA[ rownum <= #endRow# ]]> </isNotEmpty> ) g where 1=1 <include refid="commonQuerySql"/> <isNotEmpty prepend="and" property="startRow"> <![CDATA[ g.rn >= #startRow# ]]> </isNotEmpty> order by g.COUPON_TYPE_ID desc </select> <!--COUNT--> <select id="getEcCouponTypeCount" resultClass="Integer" parameterClass="EcCouponType"> select count(g.COUPON_TYPE_ID) from EC_COUPON_TYPE g where g.is_delete='N' <include refid="commonQuerySql"/> </select> <!-- 按条件查询有效规则 --> <select id="getValidRules" parameterClass="EcCouponType" resultMap="ecCouponTypeResult"> select <include refid="Base_sql"/> from EC_COUPON_TYPE r where r.is_delete='N' <isNotEmpty prepend="and" property="couponTypeId"> r.COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> <isNotEmpty prepend="and" property="couponTypeName"> r.COUPON_TYPE_NAME like '%$couponTypeName$%' </isNotEmpty> <isNotEmpty prepend="and" property="couponFee"> r.COUPON_FEE = #couponFee# </isNotEmpty> <isNotEmpty prepend="and" property="isECupon"> r.IS_E_CUPON = #isECupon# </isNotEmpty> </select> <!-- 根据ID查询优惠券类型,或是根据券的类型去查找优惠券 --> <select id="getCouponTypeById" parameterClass="java.util.Map" resultMap="ecCouponTypeResult"> select <include refid="Base_sql"/> from EC_COUPON_TYPE r where r.is_delete='N' <isNotEmpty prepend="and" property="couponTypeId"> r.COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> <isNotEmpty prepend="and" property="couponTypeName"> r.COUPON_TYPE_NAME like '%$couponTypeName$%' </isNotEmpty> <isNotEmpty prepend="and" property="couponFee"> r.COUPON_FEE = #couponFee# </isNotEmpty> <isNotEmpty prepend="and" property="useType"> r.USE_TYPE = #useType# </isNotEmpty> </select> <!-- 根据No查询优惠券类型 --> <select id="getCouponTypeByNo" parameterClass="EcCouponType" resultMap="ecCouponTypeResult"> select <include refid="Base_sql"/> from EC_COUPON_TYPE r where r.is_delete='N' <isNotEmpty prepend="and" property="couponTypeNo"> r.COUPON_TYPE_NO = #couponTypeNo# </isNotEmpty> and rownum = 1 </select> <select id="getCouponTypeListByIds" parameterClass="EcCouponType" resultClass="HashMap"> select <include refid="Base_sql"/> from EC_COUPON_TYPE tt where tt.is_delete='N' and tt.COUPON_TYPE_ID in <iterate open="(" close=")" conjunction="," property="myids" > #myids[]# </iterate> order by tt.COUPON_TYPE_ID desc </select> <!-- 根据优惠卷编码查询优惠券类型 --> <select id="getCouponTypeByCouponNo" parameterClass="java.lang.String" resultMap="ecCouponTypeResult"> select ct.COUPON_TYPE_ID, ct.COUPON_TYPE_NO, ct.COUPON_TYPE_NAME, ct.COUPON_TYPE_NOTES, ct.COUPON_PIC_URL, ct.COUPON_FEE, ct.DISCOUNT_FEE, ct.CONVERT_POINTS, ct.IS_LIMIT_GOODS, ct.ORDER_FEE_LIMIT, ct.ORDER_TYPE_LIMIT, ct.USE_AMOUNT_LIMIT, ct.IS_DELETE, ct.ADD_USER_ID, ct.ADD_TIME, ct.EDIT_USER_ID, ct.EDIT_TIME, ct.IS_E_CUPON, ct.IS_REUSE, ct.IS_MULTI_USE, ct.USE_TYPE, ct.is_limit_pay, ct.payment_type_nos, ct.standby1, ct.standby2, ct.standby3, ct.standby4, ct.standby5, ct.member_ship, ct.limit_member_roleIds from EC_COUPON_TYPE ct left join ec_coupons c on ct.coupon_type_id = c.coupon_type_id where c.coupon_no = #couponNo# and rownum = 1 </select> <select id="selectCouponTypeNameByPublishId" resultMap="ecCouponTypeNameByPublishId" parameterClass="java.lang.Long"> select ECT.COUPON_TYPE_NAME ,ECT.COUPON_FEE,ECT.DISCOUNT_FEE,ECT.USE_TYPE,ECT.IS_DELETE from EC_COUPON_TYPE ect LEFT JOIN EC_COUPON_PUBLISH ecp ON ECP.COUPON_TYPE_ID = ECT.COUPON_TYPE_ID where ECP.PUBLISH_ID=#value# </select> <select id="getPublishRangeById" parameterClass="EcCouponType" resultClass="String"> SELECT DISTINCT publish_range FROM ec_coupon_publish_expand WHERE coupon_type_id = #couponTypeId# </select> <select id="getPublishRangeByPId" parameterClass="EcCouponPublishExpand" resultClass="String"> SELECT DISTINCT publish_range FROM ec_coupon_publish_expand WHERE publish_id = #publishId# </select> <select id="getPublishId" parameterClass="EcCouponType" resultClass="Integer"> SELECT DISTINCT publish_id FROM ec_coupon_publish ecp LEFT JOIN ec_coupon_type ect ON ect.coupon_type_id=ecp.coupon_type_id WHERE ect.coupon_type_id = #couponTypeId# </select> <insert id="insertPublishExpand" parameterClass="EcCouponPublishExpand"> INSERT INTO EC_COUPON_PUBLISH_EXPAND( id, coupon_type_id, PUBLISH_ID, PUBLISH_RANGE, ADD_USER_ID, ADD_TIME )VALUES ( EC_COUPON_PUBLISH_EXPAND_seq.nextval, #couponTypeId#, #publishId#, #publishRange#, #addUserId#, #addTime# ) </insert> <update id="updatePublishExpandById" parameterClass="EcCouponPublishExpand"> UPDATE EC_COUPON_PUBLISH_EXPAND SET PUBLISH_RANGE=#publishRange#, EDIT_USER_ID=#editUserId#, EDIT_TIME=#editTime# WHERE 1=1 <isNotEmpty prepend="and" property="couponTypeId"> COUPON_TYPE_ID = #couponTypeId# </isNotEmpty> <isNotEmpty prepend="and" property="publishId"> publish_id = #publishId# </isNotEmpty> </update> <select id="getExpandCount" parameterClass="EcCouponType" resultClass="Integer"> SELECT COUNT (1) FROM EC_COUPON_PUBLISH_EXPAND WHERE coupon_type_id = #couponTypeId# </select> <select id="getExpandCountByPublishId" parameterClass="EcCouponPublishExpand" resultClass="Integer"> SELECT COUNT (1) FROM EC_COUPON_PUBLISH_EXPAND WHERE publish_id = #publishId# </select> </sqlMap>