dalgen tables代碼片段
<!-- 查詢商品數量 -->
<operation name="selectOrderCount" resultClass="int">
<extraparams>
<param name="startTime" javatype="java.util.Date" />
<param name="endTime" javatype="java.util.Date" />
<param name="orderId" javatype="java.lang.String" />
<param name="cell" javatype="java.lang.String" />
<param name="rcell" javatype="java.lang.String" />
<param name="payStatus" javatype="java.lang.String" />
<param name="orderStatus" javatype="java.lang.String" />
<param name="orderPerson" javatype="java.lang.String" />
<param name="payType" javatype="java.lang.String" />
</extraparams>
<sql>
select count(DISTINCT ORDER_ID) from jiume_order
</sql>
<sqlmap>
<![CDATA[
select count(DISTINCT ORDER_ID) from jiume_order
<dynamic prepend="where">
<isNotEmpty property="startTime" prepend="and">
${cdata-start}
GMT_MODIFIED >#startTime#
${cdata-end}
</isNotEmpty>
<isNotEmpty property="endTime" prepend="and">
${cdata-start}
GMT_MODIFIED <=#endTime#
${cdata-end}
</isNotEmpty>
<isNotEmpty property="orderId" prepend="and">
ORDER_ID = #orderId#
</isNotEmpty>
<isNotEmpty property="cell" prepend="and">
CELL = #cell#
</isNotEmpty>
<isNotEmpty property="rcell" prepend="and">
R_CELL = #rcell#
</isNotEmpty>
<isNotEmpty property="payStatus" prepend="and">
PAY_STATUS = #payStatus#
</isNotEmpty>
<isNotEmpty property="orderStatus" prepend="and">
ORDER_STATUS = #orderStatus#
</isNotEmpty>
<isNotEmpty property="orderPerson" prepend="and">
ORDER_PERSON = #orderPerson#
</isNotEmpty>
<isNotEmpty property="payType" prepend="and">
PAY_TYPE = #payType#
</isNotEmpty>
</dynamic>
]]>
</sqlmap>
</operation>
controller代碼片段
/**
* 訂單訊息查詢
*
* @param request
* @param modelMap
* @return
*/
@RequestMapping("/orderMng.html")
public String orderMng(HttpServletRequest request, ModelMap modelMap) {
System.out.println("-----------進入訂單管理頁面-----------");
String start1 = request.getParameter("startTime");// 開始時間
String end1 = request.getParameter("endTime");// 結束時間
String orderId = request.getParameter("orderId");// 訂單號
String cell = request.getParameter("cell");// 發貨人電話
String rcell = request.getParameter("rCell");// 收貨人電話
String payStatus = request.getParameter("payStatus");// 支付狀態
String orderStatus = request.getParameter("orderStatus");// 發貨狀態
String orderPerson = request.getParameter("orderPerson");// 訂購人姓名
String payType = request.getParameter("payType");// 支付方式
Date startTime = null;
Date endTime = null;
if (StringUtils.isNotBlank(start1)) {
try {
startTime = DateUtils.parseDate(start1, DateUtils.webFormat);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (StringUtils.isNotBlank(end1)) {
try {
endTime = DateUtils.parseDate(end1, DateUtils.webFormat);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
int totalItems = orderDAO.selectOrderCount(startTime, endTime, orderId, cell, rcell, payStatus, orderStatus, orderPerson, payType);
Map<String, Integer> pageData = getPageData(request);
List<OrderDO> orderList = orderDAO.selectAllOrder(startTime, endTime, orderId, cell, rcell, payStatus, orderStatus, orderPerson, payType, pageData.get(OFFSET), pageData.get(PAGE_SIZE_STR));
List<OrderDO> list = new ArrayList<OrderDO>();
String orderIds = null;
for (int i = 0; i < orderList.size(); i++) {
if (!StringUtils.equals(orderList.get(i).getOrderId(), orderIds)) {
list.add(orderList.get(i));
}
;
orderIds = orderList.get(i).getOrderId();
}
modelMap.put("orderList", orderList);
modelMap.put("list", list);
modelMap.put("startTime", start1);
modelMap.put("endTime", end1);
modelMap.put("orderId", orderId);
modelMap.put("cell", cell);
modelMap.put("rCell", rcell);
modelMap.put("payStatus", payStatus);
modelMap.put("orderStatus", orderStatus);
modelMap.put("orderPerson", orderPerson);
modelMap.put("payType", payType);
modelMap.put("totalPages",
calculatePage(totalItems, pageData.get(PAGE_SIZE_STR)));
modelMap.put(CURRENTPAGE, pageData.get(CURRENTPAGE));
modelMap.put("totalItems", totalItems);
request.setAttribute("page", modelMap);
return "html/orderMng";
}
AbstractController代碼片段
/**
* onway.com Inc.
* Copyright (c) 2016-2016 All Rights Reserved.
*/
package com.onway.web.controller;
import java.io.File;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
import com.onway.common.lang.ArrayUtils;
import com.onway.common.lang.NumberUtils;
import com.onway.common.lang.StringUtils;
import com.onway.jiume.common.dal.daointerface.AddrtypeDAO;
import com.onway.jiume.common.dal.daointerface.AllParameterDAO;
import com.onway.jiume.common.dal.daointerface.CartDAO;
import com.onway.jiume.common.dal.daointerface.OrderDAO;
import com.onway.jiume.common.dal.daointerface.PetDAO;
import com.onway.jiume.common.dal.daointerface.PetTagDAO;
import com.onway.jiume.common.dal.daointerface.PettypeDAO;
import com.onway.jiume.common.dal.daointerface.ProductDAO;
import com.onway.jiume.common.dal.daointerface.ProductParameterDAO;
import com.onway.jiume.common.dal.daointerface.ProductSaleDAO;
import com.onway.jiume.common.dal.daointerface.ProductTypeDAO;
import com.onway.jiume.common.dal.daointerface.PublishDAO;
import com.onway.jiume.common.dal.daointerface.RecordDAO;
import com.onway.jiume.common.dal.daointerface.SigninDAO;
import com.onway.jiume.common.dal.daointerface.UserDAO;
import com.onway.jiume.common.service.exception.ErrorException;
import com.onway.jiume.common.util.FileUtils;
import com.onway.jiume.common.util.ImageUploadUtil;
import com.onway.jiume.core.cache.SysConfigCacheManager;
import com.onway.jiume.core.cache.code.CodeGenerateComponent;
import com.onway.jiume.core.exception.ParamErrorException;
import com.onway.platform.common.configration.ConfigrationFactory;
import com.onway.web.controller.template.ControllerTemplate;
/**
* 控制器基類
*
* @author guangdong.li
* @version $Id: AbstractController.java, v 0.1 17 Feb 2016 11:18:55 guangdong.li Exp $
*/
public class AbstractController {
/** */
private static final Pattern SPLIT_PATTERN = Pattern.compile("_");
/** logger */
public static final Logger logger = Logger.getLogger(AbstractController.class);
protected static final String EXCEPTION_MESSAGE = "服務異常,請稍後嘗試";
protected static String PAGE_NUM_STR = "pageNum";
protected static String PAGE_SIZE_STR = "pageSize";
protected static int DEFAULT_PAGE_SIZE = 10;
protected static int DEFAULT_PAGE_NUM = 1;
protected static final String CURRENTPAGE = "currentPage";
protected static final String OFFSET = "offset";
protected static final String LIMIT = "limit";
protected static final String PAGE_FLAG = "page";
protected static final String ADVANCE_LEVEL = "進階款";
protected static final String NOMAL_LEVEL = "普通款";
protected static final String TOKEN_ERROR = "token不正確";
protected static final String USER_ID = "userId";
protected static final String TOKEN = "token";
protected static final String APP_TYPE = "appType";
protected static final String VERSION = "version";
protected static final String SIGN_T = "sign_t";
protected static final String SIGN = "sign";
protected static final String PAGE_NUM = "pageNum";
protected static final String TIME = "stime";
protected static final String CHECK_CODE = "checkCode";
protected static final String SIGN_SEED = "onway888888";
protected static final String PROD_CODE = "prodCode";
protected static final int PAGE_NUM_DIGIT = 1;
protected static final int PAGE_SIZE_DIGIT = 10;
protected static final String TRANSCODING_ERROR = "編碼方式轉型異常";
protected static final String UPLOAD_SUCCESS = "上傳成功";
protected static final String UPLOAD_ERROR = "上傳異常";
protected DecimalFormat dfZero = new DecimalFormat("0");
protected DecimalFormat dfDigit = new DecimalFormat("0.00");
private static final String PAGE_NO = "pageNo";
private static final String PAGE_SIZE = "pageSize";
private static final String IMAGE_FILE = ConfigrationFactory.getConfigration().getPropertyValue("jiume_post_upload_image");
private static final String IMAGE_PATH = ConfigrationFactory.getConfigration().getPropertyValue("jiume_post_image");
/****************************所有的Client********************************/
// @Resource
// protected AccountInfoQueryServiceClient accountInfoQueryServiceClient;
/****************************所有的Component(組成)********************************/
@Resource
protected ControllerTemplate controllerTemplate;
@Resource
protected CodeGenerateComponent codeGenerateComponent;
@Resource
protected SysConfigCacheManager sysConfigCacheManager;
/****************************所有的DAO********************************/
@Resource
protected UserDAO userDAO;
@Resource
protected PetDAO petDAO;
@Resource
protected ProductDAO productDAO;
@Resource
protected ProductParameterDAO productParameterDAO;
@Resource
protected OrderDAO orderDAO;
@Resource
protected ProductTypeDAO productTypeDAO;
@Resource
protected AllParameterDAO allParameterDAO;
@Resource
protected CartDAO cartDAO;
@Resource
protected PetTagDAO petTagDAO;
@Resource
protected SigninDAO signinDAO;
@Resource
protected AddrtypeDAO addrtypeDAO;
@Resource
protected PettypeDAO pettypeDAO;
@Resource
protected RecordDAO recordDAO;
@Resource
protected ProductSaleDAO productSaleDAO;
@Resource
protected PublishDAO publishDAO;
// @Resource
// protected SmsSender SmsSender;
/**
* 獲取頁碼
* @param request
* @return
*/
public int adjustPageNo(HttpServletRequest request){
String pageNo = request.getParameter(PAGE_NO);
if(pageNo == null || !NumberUtils.isDigits(pageNo))
return PAGE_NUM_DIGIT;
return Integer.parseInt(pageNo) < 1 ? PAGE_NUM_DIGIT : Integer.parseInt(pageNo);
}
/**
* 獲取每頁顯示條數
* @param request
* @return
*/
public int adjustPageSize(HttpServletRequest request){
String pageSize = request.getParameter(PAGE_SIZE);
if(pageSize == null || !NumberUtils.isDigits(pageSize))
return PAGE_SIZE_DIGIT;
return Integer.parseInt(pageSize) < 1 ? PAGE_SIZE_DIGIT : Integer.parseInt(pageSize);
}
/**
* 轉換Double
* @param d
* @return
*/
public Double adjustDouble(String d){
if(d == null)
return null;
if(NumberUtils.isNumber(d)){
return Double.valueOf(d);
}
return null;
}
/**
* 獲取分頁數據
*
* @param request
*/
protected Map<String, Integer> getPageData(final HttpServletRequest request) {
String page = request.getParameter(CURRENTPAGE);
String pageSize = request.getParameter(PAGE_SIZE_STR);
// 分頁頁數
int pagesize = StringUtils.hasLength(pageSize) && StringUtils.isNumeric(pageSize) ? Integer
.parseInt(pageSize) : DEFAULT_PAGE_SIZE;
int currentPage = 1;
int offset = 0;
if (StringUtils.hasLength(page) && StringUtils.isNumeric(page)) {
currentPage = Integer.parseInt(page);
offset = (currentPage - 1) * pagesize;
}
Map<String, Integer> pageMap = new HashMap<String, Integer>();
pageMap.put(PAGE_SIZE_STR, pagesize);
pageMap.put(CURRENTPAGE, currentPage);
pageMap.put(OFFSET, offset);
pageMap.put(LIMIT, (currentPage) * pagesize);
return pageMap;
}
/**
* 計算頁數
*
* @param totalItems
* @return
*/
protected int calculatePage(int totalItems, int pagesize) {
int totalPages = 0;
if (0 != totalItems && totalItems > pagesize) {
totalPages = 0 == totalItems % pagesize ? totalItems / pagesize : totalItems / pagesize
+ 1;
} else if (0 != totalItems && totalItems <= pagesize) {
totalPages = 1;
}
return totalPages;
}
/**
* 獲取客戶端訪問ip地址
* @param request
* @return
*/
public String getIpAddr(HttpServletRequest request) {
String ip = (String) request.getParameter("loginIP"); // 兼容PC端請求IP記錄
if (StringUtils.isBlank(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (StringUtils.isBlank(ip)) {
ip = request.getHeader("x-forwarded-for");
}
if (StringUtils.isBlank(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isBlank(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isBlank(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
/**
*
* @param request
* @return
*/
protected String getUserId(HttpServletRequest request) {
String key = "AdD53fE9BCB5E6Db";
String sign = request.getHeader("Sign");
if (StringUtils.isEmpty(sign)) {
sign = request.getParameter("Sign");
}
if (StringUtils.isEmpty(sign)) {
return "";
}
//hellomyson_8201409090003422_1370****031_acabd0a7c1f943b5a5f1ec2b50b8adc9
String text = decode(sign, key);
String[] arrays = SPLIT_PATTERN.split(text, 4);
if (arrays == null | arrays.length != 4) {
return "";
}
String userId = arrays[1];
if (StringUtils.isBlank(userId)) {
return "";
}
return userId;
}
/**
* AES解碼
*
* @param sign 加密串
* @param key 祕鑰
* @return
*/
public String decode(String sign, String key) {
if (StringUtils.isEmpty(sign)) {
return "";
}
try {
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, keyspec);
byte[] b = cipher.doFinal(org.apache.commons.codec.binary.Base64.decodeBase64(sign));
return new String(b);
} catch (Exception e) {
logger.error("", e);
}
return "";
}
public String encode(String sign, String key) {
if (StringUtils.isEmpty(sign)) {
return "";
}
try {
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
int blockSize = cipher.getBlockSize();
byte[] dataBytes = sign.getBytes();
int plaintextLength = dataBytes.length;
if (plaintextLength % blockSize != 0) {
plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
}
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
cipher.init(Cipher.ENCRYPT_MODE, keyspec);
byte[] b = cipher.doFinal(plaintext);
return org.apache.commons.codec.binary.Base64.encodeBase64String(b);
} catch (Exception e) {
logger.error("", e);
}
return "";
}
/**
*
* 是否小於指定版本 (向後兼容)
* @param currentVersion
* @param oldVersion
* @param platform
* @return
*/
public boolean isSupport(String currentVersion, String oldVersion) {
try {
return compareVersion(currentVersion, oldVersion) < 0;
} catch (Exception e) {
logger.error("APP版本向下兼容判斷", e);
}
return false;
}
/**
* 比較版本高低,version1 < version2 返回-1 ,等於返回0,大於返回1
*
* @param version1
* @param version2
* @return
* @throws Exception
*/
public static int compareVersion(String version1, String version2) {
if (version1 == null || version2 == null) {
throw new ParamErrorException("版本號格式錯誤");
}
String[] versionArray1 = version1.split("\\.");
String[] versionArray2 = version2.split("\\.");
int idx = 0;
int minLength = Math.min(versionArray1.length, versionArray2.length);//取最小長度值
int diff = 0;
while (idx < minLength
&& (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//先比較長度
&& (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//再比較字符
++idx;
}
//如果已經分出大小,則直接返回,如果未分出大小,則再比較位數,有子版本的爲大;
diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
return diff;
}
/**
* 文件上傳(圖片上傳)
* @param txtFile
* @param uploadRealpath
* @param filePath
* @return
*/
public String uploadImage(MultipartFile txtFile, String uploadRealpath, String baseUrl) {
// 檢查照片是否存在
if (txtFile.getOriginalFilename() == null || "".equals(txtFile.getOriginalFilename())) {
throw new ErrorException("圖片後綴名爲空");
}
// 照片上傳
File file = ImageUploadUtil.getFile(txtFile, uploadRealpath, "");
// 獲取文件訪問地址
String visitPath = uploadRealpath+file.getName();
return visitPath;
}
/*
* 上傳圖片
*/
public void uploadFile(MultipartFile image, String absolutePath) throws Exception {
File userAuthImage = new File(absolutePath);
if (image == null || ArrayUtils.isEmpty(image.getBytes())) {
}
FileUtils.writeByteArrayToFile(userAuthImage, image.getBytes());
}
//檢查的同時獲取
protected String getParameterCheck(final HttpServletRequest request,String key){
String Value = request.getParameter(key);
if(null==Value||Value.equals("")){
Value=null;
}
return Value;
}
}
page.html
<meta charset="UTF-8">
<table width="100%" border=0 align=center cellpadding=0 cellspacing=0 class="pageInfo" style="margin:5px 0;"s>
<tr>
<td align="right">
#if($page)
#if($page.totalItems && $page.totalItems > 0)
共 $page.totalItems 條,當前第 $!page.currentPage 頁,共 $!page.totalPages 頁 |
#if($page.currentPage==1)
首頁 上一頁
#else
<a href ="javascript:gotoPage(1,'$!formName')">首頁</a>
#set($prePage=$page.currentPage - 1)
<a href = "javascript:gotoPage($prePage,'$!formName')">上一頁</a>
#end
#if($page.currentPage==$page.totalPages)
下一頁 尾頁
#else
#set($nextPage=$page.currentPage + 1)
<a href = "javascript:gotoPage($nextPage,'$!formName')" >下一頁</a>
<a href ="javascript:gotoPage($page.totalPages,'$!formName')">尾頁</a>
#end
轉到第 <select id ="gotoPage" name="gotoPage" οnchange="gotoPages('$!formName')" class="button button-tiny">
#foreach($velocityCount in [1..$page.totalPages] )
#if($page.currentPage == $velocityCount)
<option selected value='$velocityCount'>$velocityCount</option>
#else
<option value='$velocityCount'>$velocityCount</option>
#end
#end
</select> 頁
#end
#end
</td>
</tr>
</table>
<script type="text/javascript">
function gotoPage(pageNum,formName){
formName = formName || 'mainForm';
var frm = document.getElementById(formName);
frm.currentPage.value = pageNum;
frm.submit();
}
function gotoPages(formName){
var pages = document.getElementById("gotoPage").value;
if(pages < 0 || pages == "") pages = 0;
if(isNaN(pages)){
alert("請輸入數字!");
document.getElementById("gotoPage").value="go";
return false;
}
document.getElementById("currentPage").value = pages;
var frm = document.getElementById(formName);
frm.submit();
}
</script>
html裏引用page.html的代碼片段
<div class="fn-mt7">#set ($formName = "formName")
#parse('/html/page.html')</div>
<div style="height: 200px;"></div>