package com.stylefeng.guns.modular.system.controller.general;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.stylefeng.guns.core.base.controller.BaseController;
|
import com.stylefeng.guns.core.common.constant.factory.PageFactory;
|
import com.stylefeng.guns.core.shiro.ShiroKit;
|
import com.stylefeng.guns.core.util.DateUtil;
|
import com.stylefeng.guns.core.util.SinataUtil;
|
import com.stylefeng.guns.modular.system.controller.util.MyQrCodeUtil;
|
import com.stylefeng.guns.modular.system.controller.util.QRCodeUtil;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.service.ISysCouponRecordService;
|
import com.stylefeng.guns.modular.system.service.ITActivityGeneralizationService;
|
import com.stylefeng.guns.modular.system.util.GaoDeMapUtil;
|
import com.stylefeng.guns.modular.system.util.OssUploadUtil;
|
import com.stylefeng.guns.modular.system.util.UUIDUtil;
|
import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.core.io.ByteArrayResource;
|
import org.springframework.mock.web.MockMultipartFile;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.imageio.ImageIO;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.awt.image.BufferedImage;
|
import java.io.*;
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDateTime;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* todo 新增推广活动设置控制器
|
*
|
* @author fengshuonan
|
* @Date 2020-06-17 20:51:18
|
*/
|
@Controller
|
@RequestMapping("/generalization")
|
public class GeneralizationActivityController extends BaseController {
|
@Autowired
|
private ITActivityGeneralizationService activityGeneralizationService;
|
@Autowired
|
private ISysCouponRecordService sysCouponRecordService;
|
private String PREFIX = "/system/generalization/";
|
|
/**
|
* 跳转到首页
|
*/
|
@RequestMapping("/activity")
|
public String index() {
|
return PREFIX + "generalization.html";
|
}
|
/**
|
* 跳转到选择优惠券页面
|
* @return
|
*/
|
@RequestMapping("/sysCouponRecord")
|
public String sysCouponRecord() {
|
return PREFIX + "sysCouponRecord.html";
|
}
|
@RequestMapping("/addHtml")
|
public String addHtml() {
|
return PREFIX + "addHtml.html";
|
}
|
@RequestMapping("/editHtml/{id}")
|
public String editHtml(Model model,@PathVariable("id") Integer id) {
|
TActivityGeneralization data = activityGeneralizationService.selectById(id);
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
model.addAttribute("startTime", sdf.format(data.getStartTime()));
|
model.addAttribute("endTime", sdf.format(data.getEndTime()));
|
model.addAttribute("item",data);
|
List<SysCouponRecord> siteList = sysCouponRecordService.selectList(new EntityWrapper<SysCouponRecord>()
|
.eq("id",data.getCouponId()));
|
model.addAttribute("siteList",siteList);
|
return PREFIX + "editHtml.html";
|
}
|
@RequestMapping("/generalization_detail/{id}")
|
public String generalization_detail(Model model,@PathVariable("id") Integer id) {
|
TActivityGeneralization data = activityGeneralizationService.selectById(id);
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
model.addAttribute("startTime", sdf.format(data.getStartTime()));
|
model.addAttribute("endTime", sdf.format(data.getEndTime()));
|
model.addAttribute("item",data);
|
List<SysCouponRecord> siteList = sysCouponRecordService.selectList(new EntityWrapper<SysCouponRecord>()
|
.eq("id",data.getCouponId()));
|
model.addAttribute("siteList",siteList);
|
return PREFIX + "generalization_detail.html";
|
}
|
|
@RequestMapping("/qrCodeHtml/{id}")
|
public String qrCodeHtml(Model model,@PathVariable("id") Integer id) {
|
TActivityGeneralization data = activityGeneralizationService.selectById(id);
|
model.addAttribute("qrCode",data.getQrCode());
|
return PREFIX + "qrCodeHtml.html";
|
}
|
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(String createTime,String activityName,Integer state) {
|
String beginTime = null;
|
String endTime = null;
|
if (SinataUtil.isNotEmpty(createTime)){
|
String[] timeArray = createTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(activityGeneralizationService.getList(page,beginTime,endTime,activityName,state));
|
return super.packForBT(page);
|
}
|
|
/**
|
* 新增推广活动
|
*/
|
@RequestMapping(value = "/add")
|
@ResponseBody
|
public Object add(TActivityGeneralization tActivityGeneralization) throws Exception {
|
|
// 判断状态
|
if(new Date().after(tActivityGeneralization.getStartTime()) && new Date().before(tActivityGeneralization.getEndTime())){
|
tActivityGeneralization.setState(1);
|
}
|
if(new Date().after(tActivityGeneralization.getEndTime())){
|
tActivityGeneralization.setState(3);
|
}
|
if(new Date().before(tActivityGeneralization.getStartTime())){
|
tActivityGeneralization.setState(2);
|
}
|
activityGeneralizationService.insert(tActivityGeneralization);
|
|
// 生成二维码,上传到服务器
|
MyQrCodeUtil.createCodeToFile("https://weilaigo.cn/qrCodeShare?id=" + tActivityGeneralization.getId());
|
BufferedImage qrCodeImage = QRCodeUtil.createImage("https://weilaigo.cn/qrCodeShare?id=" + tActivityGeneralization.getId());
|
MultipartFile qrCodeFile = convert(qrCodeImage, new Date().getTime()+ UUIDUtil.getRandomCode(3)+".PNG");
|
String picture = OssUploadUtil.ossUpload(qrCodeFile);
|
System.err.println("二维码:"+ picture);
|
tActivityGeneralization.setQrCode(picture);
|
activityGeneralizationService.updateById(tActivityGeneralization);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 编辑推广活动
|
*/
|
@RequestMapping(value = "/update")
|
@ResponseBody
|
public Object update(TActivityGeneralization tActivityGeneralization) {
|
|
// 判断状态
|
if(new Date().after(tActivityGeneralization.getStartTime()) && new Date().before(tActivityGeneralization.getEndTime())){
|
tActivityGeneralization.setState(1);
|
}
|
if(new Date().after(tActivityGeneralization.getEndTime())){
|
tActivityGeneralization.setState(3);
|
}
|
if(new Date().before(tActivityGeneralization.getStartTime())){
|
tActivityGeneralization.setState(2);
|
}
|
activityGeneralizationService.updateById(tActivityGeneralization);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除推广活动
|
*/
|
@RequestMapping(value = "/delete")
|
@ResponseBody
|
public Object delete(Integer tActivityGeneralizationId) {
|
TActivityGeneralization activityGeneralization = activityGeneralizationService.selectById(tActivityGeneralizationId);
|
activityGeneralization.setIsDelete(2);
|
activityGeneralizationService.updateById(activityGeneralization);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 启动/暂停
|
*/
|
@RequestMapping(value = "/updateStatus")
|
@ResponseBody
|
public Object updateStatus(Integer id, Integer status) {
|
TActivityGeneralization tActivityGeneralization = activityGeneralizationService.selectById(id);
|
if(status == 1){
|
if(new Date().after(tActivityGeneralization.getStartTime()) && new Date().before(tActivityGeneralization.getEndTime())){
|
tActivityGeneralization.setState(1);
|
}
|
if(new Date().after(tActivityGeneralization.getEndTime())){
|
tActivityGeneralization.setState(3);
|
}
|
if(new Date().before(tActivityGeneralization.getStartTime())){
|
tActivityGeneralization.setState(2);
|
}
|
}else {
|
tActivityGeneralization.setState(status);
|
}
|
activityGeneralizationService.updateById(tActivityGeneralization);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 启动/暂停
|
*/
|
@RequestMapping(value = "/downQrcode")
|
@ResponseBody
|
public Object downQrcode(HttpServletResponse response, String imgURL) throws Exception {
|
File localFile = new File("D://qrCode");
|
File file = new File(imgURL);
|
|
|
// 创建File对象
|
File downloadedFile = new File(localFile.getAbsolutePath());
|
|
System.out.println("文件已下载到: " + downloadedFile.getAbsolutePath());
|
|
// 设置响应头
|
response.reset();
|
response.setContentType("image/png"); // 根据图片类型调整
|
response.setHeader("Content-Disposition", "attachment; filename=二维码.png");
|
|
// 输出文件内容到响应输出流
|
FileInputStream fis = new FileInputStream(file);
|
OutputStream os = response.getOutputStream();
|
|
byte[] buffer = new byte[1024];
|
int bytesRead;
|
while ((bytesRead = fis.read(buffer)) != -1) {
|
os.write(buffer, 0, bytesRead);
|
}
|
// 关闭流
|
os.flush();
|
os.close();
|
fis.close();
|
return SUCCESS_TIP;
|
}
|
|
public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException {
|
// 将 BufferedImage 转换为字节数组
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ImageIO.write(bufferedImage, "png", baos);
|
byte[] bytes = baos.toByteArray();
|
|
// 创建 ByteArrayResource
|
ByteArrayResource resource = new ByteArrayResource(bytes);
|
|
// 创建 MockMultipartFile
|
MockMultipartFile multipartFile = new MockMultipartFile(
|
"file",
|
fileName,
|
"image/png",
|
resource.getInputStream()
|
);
|
|
return multipartFile;
|
}
|
|
}
|