Browse Source

兑换码下载

yuhaitao14 7 years ago
parent
commit
07bc002d7c

+ 5 - 0
shop/pom.xml

@@ -82,6 +82,11 @@
 			<artifactId>spring-test</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+			<version>3.17</version>
+		</dependency>
 		<dependency>
 			<groupId>org.apache.commons</groupId>
 			<artifactId>commons-lang3</artifactId>

+ 5 - 0
shop/src/main/java/com/zskk/shop/controller/AbstractController.java

@@ -18,6 +18,7 @@ import javax.crypto.IllegalBlockSizeException;
 import javax.crypto.NoSuchPaddingException;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.ui.Model;
@@ -151,6 +152,10 @@ public class AbstractController {
 		return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
 	}
 	
+	protected HttpServletResponse getResponse(){
+		return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
+	}
+	
 	@SuppressWarnings("unchecked")
 	protected <T> T getSession(String key) {
 		return (T)this.getRequest().getSession().getAttribute(key);

+ 45 - 0
shop/src/main/java/com/zskk/shop/controller/admin/ExchangeCodeController.java

@@ -8,10 +8,18 @@
 
 package com.zskk.shop.controller.admin;
 
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,6 +28,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.zskk.shop.controller.AbstractController;
 import com.zskk.shop.controller.bean.ControllerResult;
+import com.zskk.shop.controller.bean.UserBean;
 import com.zskk.shop.controller.bean.UserInfoBean;
 import com.zskk.shop.dao.entry.ExchangeCode;
 import com.zskk.shop.dao.entry.ExchangeCodeItem;
@@ -119,4 +128,40 @@ public class ExchangeCodeController extends AbstractController {
 		result.put("exchangecode", obj);
 		return new ControllerResult(result);
 	}
+	
+	@RequestMapping("/download")
+	public void download(@RequestParam("eid") Integer eid, HttpServletResponse response) throws IOException{
+		List<ExchangeCodeItem> list = exchangeCodeService.getItems(eid, null);
+		this.exportItems(this.getUser(), list, response);
+	}
+	
+	private void exportItems(UserBean user, List<ExchangeCodeItem> items, HttpServletResponse response) throws IOException{
+		HSSFWorkbook workbook = new HSSFWorkbook();  
+		HSSFSheet sheet = workbook.createSheet("sheet1");
+		
+		//写头部信息
+		writeHead(sheet);
+		
+		//写数据
+		for (int i = 0; i < items.size(); ++i){
+			ExchangeCodeItem item = items.get(i);
+			HSSFRow row = sheet.createRow(i + 1);
+			row.createCell(0).setCellValue(item.getEicode());
+			row.createCell(1).setCellValue(item.getEipwd());
+			row.createCell(2).setCellValue(item.getStatus().equals(ExchangeCodeService.ITEM_USE_STATUS_WAIT)? "未使用":"已使用");
+		}
+	
+		String fileName = "兑换码-" + user.getName() + "-" + user.getPhone() + "-" + ToolsUtil.formatTime(new Date(), ToolsUtil.getYYYYMMDDHHMMSS()) + ".xls";
+		response.setHeader("content-Type", "application/vnd.ms-excel");
+        response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "utf-8"));
+        workbook.write(response.getOutputStream());
+        workbook.close();
+	}
+	
+	private void writeHead(HSSFSheet sheet){
+		HSSFRow row = sheet.createRow(0);
+		row.createCell(0).setCellValue("兑换码");
+		row.createCell(1).setCellValue("密码");
+		row.createCell(2).setCellValue("使用状态");
+	}
 }

+ 10 - 0
shop/src/main/java/com/zskk/shop/service/ExchangeCodeService.java

@@ -41,6 +41,16 @@ public class ExchangeCodeService {
 	 */
 	public static final Integer EXCHANGE_CODE_STATUS_NO = 0;
 	
+	/**
+	 * 未使用
+	 */
+	public static final Integer ITEM_USE_STATUS_WAIT = 0;
+	
+	/**
+	 * 已使用
+	 */
+	public static final Integer ITEM_USE_STATUS_USED = 1;
+	
 	private static final Integer PAGE_SIZE = 100;
 	
 	private static final Long INCREMENT_INIT_VALUE = 1L;

+ 4 - 1
shop/static/manager/src/components/page/exchange/List.vue

@@ -23,7 +23,9 @@
                 <template slot-scope="scope">
                     <el-button type="text" size="small" @click="goEdit(scope.row)">编辑</el-button>
                     <el-button type="text" size="small" @click="goShowItems(scope.row)">列表</el-button>
+                    <a :href="serverPath + 'manage/exchangecode/download?eid=' + scope.row.id">
                     <el-button type="text" size="small" >下载</el-button>
+                    </a>
                 </template>
             </el-table-column>
         </el-table>
@@ -35,7 +37,8 @@ export default {
     data () {
         return {
             items:[],
-            gid:0
+            gid:0,
+            serverPath: process.env.SERVER_PATH
         }
     },
     methods:{