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>