package com.szwl.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.szwl.constant.JoinpayConstant;
import com.szwl.constant.ResponseCodesEnum;
import com.szwl.feign.bean.PayFeign;
import com.szwl.model.bo.JsonMessage;
import com.szwl.model.bo.R;
import com.szwl.model.bo.ResponseModel;
import com.szwl.model.dto.PromoCodeTarget;
import com.szwl.model.dto.PromoCodeTargetEn;
import com.szwl.model.entity.*;
import com.szwl.model.utils.DateUtils;
import com.szwl.service.*;
import com.szwl.util.IDGenerator;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static com.szwl.constant.ResponseCodesEnum.A0001;
import static com.szwl.constant.ResponseCodesEnum.A0002;
import static com.szwl.model.utils.DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss;
/**
*
* 优惠码列表 前端控制器
*
*
* @author wuhs
* @since 2022-06-17
*/
@Api(value = "/tPromoCode", tags = {"优惠码"})
@RestController
@RequestMapping("/tPromoCode")
public class TPromoCodeController {
@Autowired
TEquipmentService tEquipmentService;
@Autowired
TPromoCodeService promoCodeService;
@Autowired
TPriceService priceService;
@Autowired
TAdminService adminService;
@Autowired
TOrderService orderService;
@Autowired
TJoinpayMchService joinpayMchService;
@Autowired
PayFeign payFeign;
@ApiOperation(value = "获取优惠码")
@GetMapping("/getTPromoCode")
public ResponseModel> getTPromoCode(@RequestParam String code) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getCode, code);
Page page = new Page<>(1, 10, true);
IPage iPage = promoCodeService.page(page, query);
return R.ok(iPage);
}
@ApiOperation(value = "获取优惠码")
@GetMapping("/getPromoCode")
public ResponseModel getPromoCode(@RequestParam String code) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
String[] split = code.split("-");
query.eq(TPromoCode::getCode, split[0]);
query.eq(TPromoCode::getAdminId, split[1]);
List list = promoCodeService.list(query);
if (list.size() > 0) {
return R.ok(list.get(0));
}
return R.ok();
}
@ApiOperation(value = "获取优惠码")
@GetMapping("/selectTPromoCode")
public ResponseModel selectTPromoCode(@RequestParam String code, @RequestParam String adminId) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getCode, code);
query.eq(TPromoCode::getAdminId, adminId);
// List list = promoCodeService.list(query);
TPromoCode promoCode = promoCodeService.getOne(query);
return R.ok(promoCode);
}
@ApiOperation(value = "小程序获取优惠码")
@GetMapping("/getCode")
public ResponseModel getCode(String clientId, String code) {
if (StringUtils.isEmpty(clientId)) {
return null;
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TEquipment::getClientId, clientId);
List list = tEquipmentService.list(query);
TEquipment equipment = list.get(0);
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TPromoCode::getCode, code);
query1.eq(TPromoCode::getAdminId, equipment.getAdminId());
List list1 = promoCodeService.list(query1);
if (list1.size() > 0) {
TPromoCode tPromoCode = list1.get(0);
String isUse = tPromoCode.getIsUse();
if (isUse.equals("1")) {
return R.fail(A0002, "已使用");
}
Date lastUseDate = tPromoCode.getLastUseDate();
Date date = new Date();
if (date.getTime() > lastUseDate.getTime()) {
return R.fail(A0002, "已过期");
}
return R.ok(tPromoCode);
} else {
return R.fail(A0002, "没有找到优惠码");
}
}
@ApiOperation(value = "修改优惠码状态")
@GetMapping("/updateCode")
public ResponseModel> updateCode(String clientId, String code) {
if (StringUtils.isEmpty(clientId)) {
return null;
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TEquipment::getClientId, clientId);
List list = tEquipmentService.list(query);
TEquipment equipment = list.get(0);
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TPromoCode::getCode, code);
query1.eq(TPromoCode::getAdminId, equipment.getAdminId());
List list1 = promoCodeService.list(query1);
if (!list1.isEmpty()) {
TPromoCode tPromoCode = list1.get(0);
tPromoCode.setIsUse("1");
if (StringUtils.isNotEmpty(equipment.getName())) {
tPromoCode.setUseBy(equipment.getName());
} else {
tPromoCode.setUseBy(clientId);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(new Date());
tPromoCode.setUseDate(time);
promoCodeService.updateById(tPromoCode);
return R.ok(null, "修改成功");
} else {
return R.fail(A0002, "没有找到优惠码");
}
}
@ApiOperation(value = "修改优惠码")
@GetMapping("/updatePromoCode")
public void updatePromoCode(@RequestParam(value = "id") String id, @RequestParam(value = "type") String type) {
TPromoCode promoCode = promoCodeService.getById(id);
promoCode.setIsUse(type);
if (type.equals("1")) {
promoCode.setUseDate(DateUtils.formatDate(new Date(), PATTERN_yyyy_MM_dd_HH_mm_ss));
}
promoCodeService.updateById(promoCode);
}
@ApiOperation(value = "生成0折优惠码")
@GetMapping("/addPromoCode")
public void addPromoCode(@RequestParam(value = "adminId") String adminId, @RequestParam(value = "lastUseDate") Date lastUseDate,
@RequestParam(value = "number") String number, @RequestParam(value = "codeNum") String codeNum) {
int num = Integer.parseInt(number);
List codes = new ArrayList<>();
if (StringUtils.isEmpty(codeNum)) {
for (int i = 0; i < num; i++) {
String code = orderService.initSn(Long.valueOf(adminId));
StringBuffer str = new StringBuffer();
str.append(code.substring(0, 6));
codes.add(str.toString());
}
} else {
codes.add(codeNum);
}
TAdmin admin = adminService.getById(adminId);
for (String code : codes) {
TPromoCode promoCode = new TPromoCode();
promoCode.setCreateDate(new Date());
promoCode.setModifyDate(new Date());
promoCode.setCode(Long.parseLong(code));
promoCode.setAdminId(adminId);
promoCode.setIsUse("0");
promoCode.setDiscount(0f);
promoCode.setLastUseDate(lastUseDate);
// promoCode.setCreateDate(new Date());
promoCode.setType("0");
promoCode.setUserName(admin.getUsername());
promoCodeService.save(promoCode);
}
}
@ApiOperation(value = "生成n元优惠券")
@GetMapping("/addYHJ")
public ResponseModel> addYHJ(Long wxId, String flag) {
if (wxId == null || StringUtils.isEmpty(flag)) {
return R.fail(A0001);
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getWxId, wxId);
// if(flag.equals("YHJ5")||flag.equals("YHJ10")){
// query.eq(TPromoCode::getType,"2");
// List list = promoCodeService.list(query);
// if(list.size()>0){
// return R.ok(1,"此券每人限领一张,您已领取过,不能再领!");
// }
// }
query.eq(TPromoCode::getType, "2");
List list = promoCodeService.list(query);
if (list.size() > 0) {
return R.ok(1, "此券每人限领一张,您已领取过,不能再领!");
}
String code = orderService.initSn(Long.valueOf(wxId));
TPromoCode promoCode = new TPromoCode();
promoCode.setCreateDate(new Date());
promoCode.setModifyDate(new Date());
promoCode.setCode(Long.parseLong(code.substring(code.length() - 8, code.length())));
promoCode.setAdminId(null);
promoCode.setIsUse("0");
// if(flag.equals("YHJ5")){
// promoCode.setDiscount(5f);
// promoCode.setType("2");
// }
// if(flag.equals("YHJ10")){
// promoCode.setDiscount(10f);
// promoCode.setType("2");
// }
String[] js = flag.split("J");
String s = js[1];
int price = Integer.parseInt(s);
if (price > 100) {
return R.fail(A0001);
}
promoCode.setDiscount(Float.valueOf(price));
promoCode.setType("2");
Long data = Calendar.getInstance().getTimeInMillis();
Long t = 3l;
Long mon = 30L * 24L * 60L * 60L * 1000L;
Long d = data + (mon * t);
Date lastUseDate = new Date(Long.parseLong(String.valueOf(d)));
promoCode.setLastUseDate(lastUseDate);
promoCode.setCreateDate(new Date());
promoCode.setUserName(null);
promoCode.setWxId(wxId);
promoCodeService.save(promoCode);
return R.ok(promoCode, "领取成功");
}
@ApiOperation(value = "核销优惠券")
@GetMapping("/useYHJ")
public void useYHJ(@RequestParam String code, @RequestParam String adminId, @RequestParam String clentId) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getCode, code);
query.eq(TPromoCode::getIsUse, "0");
List list = promoCodeService.list(query);
if (list.size() > 0) {
TPromoCode promoCode = list.get(0);
promoCode.setUseDate(DateUtils.formatDate(new Date(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss));
promoCode.setAdminId(adminId);
promoCode.setUseBy(clentId);
promoCode.setIsUse("1");
promoCode.setModifyDate(new Date());
promoCodeService.updateById(promoCode);
}
}
@GetMapping("/getYHJList")
public ResponseModel> getYHJList(Long wxId) {
if (wxId == null) {
return R.fail(A0001);
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getWxId, wxId);
query.eq(TPromoCode::getIsUse, "0");
query.eq(TPromoCode::getType, "2");
List list = promoCodeService.list(query);
return R.ok(list, "成功");
}
@GetMapping("/checkYHJList")
public ResponseModel> checkYHJList(Long wxId) {
if (wxId == null) {
return R.fail(A0001);
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getWxId, wxId);
query.eq(TPromoCode::getType, "2");
List list = promoCodeService.list(query);
if (list.size() > 0) {
return R.ok(true, "已领取");
} else {
return R.ok(false, "未领取");
}
}
@GetMapping("/getYHJ")
public ResponseModel getYHJ(@RequestParam String code) {
if (StringUtils.isEmpty(code)) {
return R.fail(A0001);
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TPromoCode::getCode, code);
query.eq(TPromoCode::getType, "2");
List list = promoCodeService.list(query);
if (list.size() > 0) {
TPromoCode tPromoCode = list.get(0);
// String isUse = tPromoCode.getIsUse();
// if(isUse.equals("1")){
// return R.fail(A0002,"已使用");
// }
// Date lastUseDate = tPromoCode.getLastUseDate();
// Date date = new Date();
// if(date.getTime()>lastUseDate.getTime()){
// return R.fail(A0002,"已过期");
// }
return R.ok(tPromoCode);
}
return R.ok();
}
@ApiOperation(value = "添加优惠码")
@GetMapping("/add")
public ResponseModel> add(String addMode, String codeNum,
Long adminId, int number, Float discount,
Float month, String type, String frpCode) {
if (discount == null || month == null || adminId == null || StringUtils.isEmpty(type)) {
return R.fail(A0001);
}
if (addMode.equals("2")) {
if (StringUtils.isEmpty(codeNum)) {
return R.fail(A0001, "优惠码为空");
}
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
query.eq(TPromoCode::getCode, codeNum);
query.eq(TPromoCode::getIsUse, 0);
query.eq(TPromoCode::getAdminId, adminId);
TPromoCode tPromoCode = promoCodeService.getOne(query);
if (tPromoCode != null) {
// 已存在优惠码
return R.fail(A0002, "已存在该优惠码");
}
}
TAdmin admin = adminService.getById(adminId);
// LocalDateTime now = LocalDateTime.now();
// LocalDateTime startOfToday = now.with(LocalTime.MIN);
// LocalDateTime endOfToday = now.with(LocalTime.MAX);
// LambdaQueryWrapper promoCodeWrapper = new LambdaQueryWrapper<>();
// promoCodeWrapper.between(TPromoCode::getCreateDate, startOfToday, endOfToday);
// promoCodeWrapper.eq(TPromoCode::getAdminId, adminId);
// int countCode = promoCodeService.count(promoCodeWrapper);
// if (countCode >= 5000) {
// return R.fail(B0002, "今日优惠码申请已达到上限");
// }
if (String.valueOf(admin.getId()).equals("1")) {
List codes = new ArrayList<>();
if (addMode.equals("1")) {
for (int i = 0; i < number; i++) {
StringBuilder num = new StringBuilder();
Random random = new Random();
for (int j = 0; j < 8; j++) {
num.append(random.nextInt(10));
}
String code = num.toString();
codes.add(code);
}
} else {
codes.add(codeNum);
}
Long data = Calendar.getInstance().getTimeInMillis();
Float mm = month * 10;
String m = String.valueOf(mm);
String[] split = m.split("\\.");
String th = split[0];
Long t = Long.valueOf(th);
Long mon = 30L * 24L * 60L * 60L * 1000L;
Long d = data + ((mon * t) / 10);
Date lastUseDate = new Date(Long.parseLong(String.valueOf(d)));
for (String code : codes) {
TPromoCode promoCode = new TPromoCode();
promoCode.setCode(Long.parseLong(code));
promoCode.setAdminId(String.valueOf(admin.getId()));
promoCode.setIsUse("0");
promoCode.setDiscount(discount);
promoCode.setLastUseDate(lastUseDate);
promoCode.setCreateDate(new Date());
promoCode.setUserName(admin.getUsername());
promoCode.setType(type);
promoCodeService.save(promoCode);
}
return R.ok(null, "生成成功");
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TEquipment::getAdminId, admin.getId());
List list = tEquipmentService.list(query);
TEquipment equipment = list.get(0);
if (list.size() == 0) {
// "要有机器才能购买优惠码";
return R.fail("没有机器");
}
//0折优惠码需要支付
if (type.equals("0") && discount == 0) {
if (admin.getPromoCodeOpen() == null || admin.getPromoCodeOpen().equals("1")) {
Long equipmentId = equipment.getId();
Double money = null;
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TPrice::getName, "优惠码");
List prices = priceService.list(query1);
for (TPrice price : prices) {
if (price.getName().equals("优惠码")) {
money = price.getPrice();
}
}
Long client6 = Long.parseLong(equipment.getClientId().substring(equipment.getClientId().length() - 6));
String sn = orderService.initSn(client6);
String orderNo = sn;
String productName = "优惠码";
BigDecimal price = BigDecimal.valueOf(money * number);
BigDecimal cutPrice = price.multiply(new BigDecimal(100)).divide(new BigDecimal(100));
BigDecimal amount = cutPrice;
String productDesc = "";
String commonParameter = "";
if (addMode.equals("2") && StringUtils.isNotEmpty(codeNum)) {
commonParameter = codeNum;
}
String returnUrl = null;
String notifyUrl = JoinpayConstant.Notify_Url_PromoCode;
String isShowPic = "1";
String openId = null;
String authCode = null;
String appid = null;
String transactionModel = null;
String tradeMerchantNo = null;
String buyerId = null;
String isAlt = "0";
String altType = null;
String altUrl = null;
BigDecimal marketingAmount = null;
// frpCode = "WEIXIN_NATIVE";
TOrder order1 = new TOrder();
order1.setId(IDGenerator.orderID());
order1.setSn(sn);
order1.setType(0);
order1.setAdminId(admin.getId());
order1.setProductName(productName);
order1.setPrice(price);
order1.setEquipmentId(equipmentId);
order1.setClientId(equipment.getClientId());
order1.setStatus(0);
order1.setFrpCode(frpCode);
order1.setRefundTrxNo(String.valueOf(month));
order1.setCreateDate(new Date());
order1.setModifyDate(new Date());
payFeign.addOrder(order1);
JSONArray altInfo = new JSONArray();
String result = null;
try {
result = joinpayMchService.uniPay(
orderNo, amount, productName, productDesc,
commonParameter, returnUrl, notifyUrl, frpCode,
isShowPic, openId, authCode, appid, transactionModel, tradeMerchantNo,
buyerId, isAlt, altType, altInfo, altUrl, marketingAmount
);
} catch (Exception e) {
e.printStackTrace();
return R.fail("申请支付失败");
}
JSONObject resultJson = JSONObject.parseObject(result);
// 汇聚支付支付申请返回支付二维码图片
String rd_Pic = resultJson.getString("rd_Pic");
if (resultJson == null || StringUtils.isBlank(rd_Pic)) {
return R.fail("找不到支付图片");
}
JSONObject kindData = new JSONObject();
kindData.put("sn", sn);
kindData.put("price", price);
kindData.put("image", rd_Pic);
return R.ok(kindData);
}
}
Long client6 = Long.parseLong(equipment.getClientId().substring(equipment.getClientId().length() - 6));
List codes = new ArrayList<>();
if (addMode.equals("1")) {
for (int i = 0; i < number; i++) {
String code = orderService.initSn(client6);
StringBuffer str = new StringBuffer();
str.append(code.substring(0, 6));
codes.add(str.toString());
}
} else {
codes.add(codeNum);
}
Long data = Calendar.getInstance().getTimeInMillis();
Float mm = month * 10;
String m = String.valueOf(mm);
String[] split = m.split("\\.");
String th = split[0];
Long t = Long.valueOf(th);
Long mon = 30L * 24L * 60L * 60L * 1000L;
Long d = data + ((mon * t) / 10);
Date lastUseDate = new Date(Long.parseLong(String.valueOf(d)));
for (String code : codes) {
TPromoCode promoCode = new TPromoCode();
promoCode.setCode(Long.parseLong(code));
promoCode.setAdminId(String.valueOf(admin.getId()));
promoCode.setIsUse("0");
promoCode.setDiscount(discount);
promoCode.setLastUseDate(lastUseDate);
promoCode.setCreateDate(new Date());
promoCode.setUserName(admin.getUsername());
promoCode.setType(type);
promoCodeService.save(promoCode);
}
return R.ok("生成成功");
}
@ApiOperation(value = "获取优惠码列表")
@GetMapping("/pagePromoCode")
public ResponseModel> pagePromoCode(String adminId, String code, String isUse, Date useStratDate, Date useEndDate, Date createStratDate, Date createEndDate, long current, long size) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if (StringUtils.isNotEmpty(adminId)) {
TAdmin admin = adminService.getById(adminId);
if (admin.getType() != 0 && admin.getType() != 1) {
query.eq(TPromoCode::getAdminId, adminId);
}
if (admin.getId() == 2738) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.isNull(TAdmin::getCompanyType).or()
.eq(TAdmin::getCompanyType, "0");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TPromoCode::getAdminId, adminIds);
}
// 七云平台管理员
if (admin.getId() == 2739) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getCompanyType, "1");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TPromoCode::getAdminId, adminIds);
}
} else {
return R.fail(A0001);
}
if (StringUtils.isNotEmpty(code)) {
query.eq(TPromoCode::getCode, code);
}
if (StringUtils.isNotEmpty(isUse)) {
query.like(TPromoCode::getIsUse, isUse);
}
if (useStratDate != null && useEndDate != null) {
query.gt(TPromoCode::getUseDate, useStratDate);
query.lt(TPromoCode::getUseDate, useEndDate);
}
if (createStratDate != null && createEndDate != null) {
query.gt(TPromoCode::getCreateDate, createStratDate);
query.lt(TPromoCode::getCreateDate, createEndDate);
}
query.orderByDesc(TPromoCode::getCreateDate);
Page page = new Page<>(current, size, true);
IPage iPage = promoCodeService.page(page, query);
return R.ok(iPage);
}
@ApiOperation(value = "导出优惠码列表")
@GetMapping("/export")
public Object export(HttpServletResponse response, String adminId, String code, String isUse, Date useStratDate, Date useEndDate, Date createStratDate, Date createEndDate, long current, long size) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
String ifForeign = "0";
String head = "优惠码数据-";
if (StringUtils.isNotEmpty(adminId)) {
TAdmin admin = adminService.getById(adminId);
if (StringUtils.isNotEmpty(admin.getIfForeign()) && admin.getIfForeign().equals("1")) {
ifForeign = admin.getIfForeign();
head = "PromoCode-";
}
if (admin.getType() != 0 && admin.getType() != 1) {
query.eq(TPromoCode::getAdminId, adminId);
}
// 申泽平台管理员
if (admin.getId() == 2738) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.isNull(TAdmin::getCompanyType).or()
.eq(TAdmin::getCompanyType, "0");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TPromoCode::getAdminId, adminIds);
}
// 七云平台管理员
if (admin.getId() == 2739) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getCompanyType, "1");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TPromoCode::getAdminId, adminIds);
}
} else {
return R.fail(A0001);
}
if (StringUtils.isNotEmpty(code)) {
query.eq(TPromoCode::getCode, code);
}
if (StringUtils.isNotEmpty(isUse)) {
query.like(TPromoCode::getIsUse, isUse);
}
if (useStratDate != null && useEndDate != null) {
query.gt(TPromoCode::getUseDate, useStratDate);
query.lt(TPromoCode::getUseDate, useEndDate);
}
if (createStratDate != null && createEndDate != null) {
query.gt(TPromoCode::getCreateDate, createStratDate);
query.lt(TPromoCode::getCreateDate, createEndDate);
}
Page page = new Page<>(current, size, true);
IPage iPage = promoCodeService.page(page, query);
List list = iPage.getRecords();
Workbook workbook = null;
if (ifForeign.equals("0")) {
List promoCodeTargets = promoCodeService.findById(list);
ExportParams exportParams = new ExportParams("优惠码记录", "sheet1");
workbook = ExcelExportUtil.exportExcel(exportParams, PromoCodeTarget.class, promoCodeTargets);
} else {
List promoCodeTargetEns = promoCodeService.exportPromoCode(list);
ExportParams exportParams = new ExportParams("Promo code record", "sheet1");
workbook = ExcelExportUtil.exportExcel(exportParams, PromoCodeTargetEn.class, promoCodeTargetEns);
}
if (workbook != null) {
OutputStream os = null;
try {
os = response.getOutputStream();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(head + format.format(new Date()) + ".xls", "UTF-8"));
workbook.write(os);
return JsonMessage.success("导出成功");
} catch (Exception e) {
e.printStackTrace();
return JsonMessage.success("导出错误");
} finally {
try {
os.close();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return JsonMessage.success("导出成功");
}
@ApiOperation(value = "查询优惠码几折")
@RequestMapping(value = "/getCodeDiscount", method = RequestMethod.GET)
@ResponseBody
public Object getCodeDiscount(String code) {
if (!StringUtils.isEmpty(code)) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.in(TPromoCode::getCode, code);
wrapper.in(TPromoCode::getIsUse, "0");
wrapper.orderByDesc(TPromoCode::getCreateDate);
List list = promoCodeService.list(wrapper);
if (list == null) {
return null;
}
TPromoCode promoCode = list.get(0);
Float discount = promoCode.getDiscount();
String type = promoCode.getType();
JSONObject kindData = new JSONObject();
kindData.put("type", type.equals("1") ? type : "0");
kindData.put("discount", discount);
return JsonMessage.success(kindData.toString());
} else {
return null;
}
}
@ApiOperation(value = "批量删除优惠码")
@PostMapping(value = "/deletes")
@ResponseBody
public ResponseModel> deletes(@RequestBody Long[] ids) {
if (ids == null) {
return R.fail(ResponseCodesEnum.A0001);
}
if (ids.length > 0) {
ArrayList idList = new ArrayList<>();
for (int i = 0; i < ids.length; i++) {
idList.add(ids[i]);
}
promoCodeService.removeByIds(idList);
}
return R.ok();
}
}