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.service.IUserCouponRecordService;
|
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.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
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()));
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
model.addAttribute("insertTime", sdf1.format(data.getInsertTime()));
|
model.addAttribute("item",data);
|
List<SysCouponRecord> siteList = sysCouponRecordService.selectList(new EntityWrapper<SysCouponRecord>()
|
.eq("id",data.getCouponId()));
|
|
List<UserCouponRecord> userCouponRecords = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("couponId", siteList.get(0).getId()).groupBy("userId"));
|
siteList.get(0).setReceive(userCouponRecords==null?0:userCouponRecords.size());
|
|
|
model.addAttribute("siteList",siteList);
|
return PREFIX + "editHtml.html";
|
}
|
|
@Autowired
|
private IUserCouponRecordService userCouponRecordService;
|
@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()));
|
List<UserCouponRecord> userCouponRecords = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("couponId", siteList.get(0).getId()).groupBy("userId"));
|
siteList.get(0).setReceive(userCouponRecords==null?0:userCouponRecords.size());
|
model.addAttribute("siteList",siteList);
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
model.addAttribute("insertTime", sdf1.format(data.getInsertTime()));
|
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();
|
List<Map<String, Object>> list = activityGeneralizationService.getList(page, beginTime, endTime, activityName, state);
|
|
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
// LocalDate currentDate = LocalDate.now();
|
// for (Map<String, Object> item : list) {
|
// String timeRangeStr = (String) item.get("time");
|
// if (timeRangeStr != null && !timeRangeStr.isEmpty()) {
|
// String[] range = timeRangeStr.split(" — ");
|
// LocalDate startDate = LocalDate.parse(range[0], formatter);
|
// LocalDate endDate = LocalDate.parse(range[1], formatter);
|
//
|
// // 判断当前日期是否在范围内
|
// int newState;
|
// if (currentDate.isBefore(startDate)) {
|
// newState = 2;
|
// } else if (currentDate.isAfter(endDate)) {
|
// newState = 3;
|
// } else {
|
// newState = 1;
|
// }
|
//
|
// // 更新状态
|
// item.put("state", newState);
|
// }
|
// }
|
page.setRecords(list);
|
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);
|
}
|
tActivityGeneralization.setInsertTime(new Date());
|
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.ossUpload1(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;
|
}
|
|
}
|