zoujiajian 3 jaren geleden
bovenliggende
commit
1f0eb5d88f

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/form/FormFieldsDataMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.form;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.FormFieldsData;
+
+/*
+ *项目名: netflix
+ *文件名: FormFieldsDataMapper
+ *创建者: JavaZou
+ *创建时间:2023/6/12 10:05
+ */
+public interface FormFieldsDataMapper extends BaseMapper<FormFieldsData> {
+}

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/form/FormFieldsDefaultMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.form;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.FormFieldsDefault;
+
+/*
+ *项目名: netflix
+ *文件名: FormFieldsDefaultMapper
+ *创建者: JavaZou
+ *创建时间:2023/6/12 10:25
+ */
+public interface FormFieldsDefaultMapper extends BaseMapper<FormFieldsDefault> {
+}

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/form/FormFieldsMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.form;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.FormFields;
+
+/*
+ *项目名: netflix
+ *文件名: FormFieldsMapper
+ *创建者: JavaZou
+ *创建时间:2023/6/12 10:03
+ */
+public interface FormFieldsMapper extends BaseMapper<FormFields> {
+}

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/form/FormTemplateMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.form;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.FormTemplate;
+
+/*
+ *项目名: netflix
+ *文件名: FormTemplateMapper
+ *创建者: JavaZou
+ *创建时间:2023/6/12 10:26
+ */
+public interface FormTemplateMapper extends BaseMapper<FormTemplate> {
+}

+ 45 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/FormFields.java

@@ -0,0 +1,45 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: FormFields
+ *创建者: JavaZou
+ *创建时间:2023/6/12 9:49
+ */
+@Getter
+@Setter
+public class FormFields extends BaseEntity{
+	private Long templateId;
+
+	/**
+	 * 字段名称
+	 */
+	private String fieldsName;
+
+	/**
+	 * 字段数据类型1.文字2.数字
+	 */
+	private Integer dataType;
+
+	/**
+	 * 字段录入方式,展示类型,0:单行文本 1:多行文本 2:下拉菜单 3:时间选择框
+	 */
+	private Integer fieldsEntryType;
+
+	private Integer maxLength;
+
+	/**
+	 * 是否列表展示 0:不展示 1:展示
+	 */
+	private Integer showTable;
+
+	/**
+	 * 排序标识
+	 */
+	private Integer sorted;
+
+	private Boolean isDeleted;
+}

+ 27 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/FormFieldsData.java

@@ -0,0 +1,27 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: FormFieldsData
+ *创建者: JavaZou
+ *创建时间:2023/6/12 9:53
+ */
+@Getter
+@Setter
+public class FormFieldsData extends BaseEntity{
+	/**
+	 * 字段id
+	 */
+	private Long fieldId;
+
+	private Long orderId;
+
+	private Integer sorted;
+
+	private String content;
+
+	private Boolean isDeleted;
+}

+ 34 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/FormFieldsDefault.java

@@ -0,0 +1,34 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: FormFieldsDefault
+ *创建者: JavaZou
+ *创建时间:2023/6/12 9:54
+ */
+@Getter
+@Setter
+public class FormFieldsDefault extends BaseEntity{
+	/**
+	 * 活动id
+	 */
+	private Long promotionId;
+
+	/**
+	 * 字段id
+	 */
+	private Long fieldId;
+
+	/**
+	 * 字段名称
+	 */
+	private String fieldName;
+
+	/**
+	 * 默认值
+	 */
+	private String value;
+}

+ 25 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/FormTemplate.java

@@ -0,0 +1,25 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: FormTemplate
+ *创建者: JavaZou
+ *创建时间:2023/6/12 9:56
+ */
+@Getter
+@Setter
+public class FormTemplate extends BaseEntity{
+	/**
+	 * 模板名称
+	 */
+	private String name;
+	/**
+	 * 描述
+	 */
+	private String descStr;
+
+	private Boolean isDeleted;
+}

+ 31 - 0
netflix-dao/src/main/java/com/cyksj/model/views/FormFieldsDataView.java

@@ -0,0 +1,31 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/*
+ *项目名: netflix
+ *文件名: FormFieldsDataView
+ *创建者: JavaZou
+ *创建时间:2023/6/12 14:13
+ */
+@Getter
+@Setter
+@SearchBean(tables = "form_fields_data fa")
+public class FormFieldsDataView {
+	@DbField("fa.id")
+	private Integer id;
+
+	@DbField("fa.fields_id")
+	private Long fieldsId;
+
+	@DbField("fa.content")
+	private String content;
+
+	@DbField("fa.created_time")
+	private Date createdTime;
+}

+ 154 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/form/FormController.java

@@ -0,0 +1,154 @@
+package com.cyksj.web.controller.manage.form;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.manage.form.FormFieldsDataMapper;
+import com.cyksj.mapper.manage.form.FormFieldsMapper;
+import com.cyksj.model.entity.FormFields;
+import com.cyksj.model.entity.FormFieldsData;
+import com.cyksj.model.entity.FormTemplate;
+import com.cyksj.model.excel.ExcelOrderDonInfo;
+import com.cyksj.model.views.FormFieldsDataView;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapUtils;
+import com.google.common.collect.Lists;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: FormController
+ *创建者: JavaZou
+ *创建时间:2023/6/12 9:58
+ */
+@RestController
+@RequestMapping("/manage/form")
+@RequiredArgsConstructor
+public class FormController {
+
+	private final FormFieldsMapper formFieldsMapper;
+
+	private final FormFieldsDataMapper formFieldsDataMapper;
+
+	private final BeanSearcher beanSearcher;
+
+	private final HttpServletRequest request;
+
+	/**
+	 * 问卷表单模板
+	 */
+	@GetMapping("/get/template")
+	public Result<SearchResult<FormTemplate>> getTemplate() {
+		SearchResult<FormTemplate> search = beanSearcher.search(FormTemplate.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 问卷回答列表
+	 */
+	@GetMapping("/get/data")
+	public Result<SearchResult<FormFieldsDataView>> getData() {
+		SearchResult<FormFieldsDataView> search = beanSearcher.search(FormFieldsDataView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * @param promotionId
+	 */
+
+	public void exportOrderInfo(@PathVariable Long promotionId, String start, String end, String charset, HttpServletResponse response) throws IOException {
+		if (StrUtil.isNotBlank(start)) {
+			start = DateUtil.formatDate(new Date(Long.parseLong(start))) + " 00:00:00";
+		}
+		if (StrUtil.isNotBlank(end)) {
+			end = DateUtil.formatDate(new Date(Long.parseLong(end))) + " 23:59:59";
+		}
+
+		List<ExcelOrderDonInfo> list = cmsOrderDonService.exportOrderInfo(promotionId, start, end);
+
+		String fileName = "报名信息";
+		response.setContentType("application/x-download");
+		response.setContentType("application/vnd.ms-excel");
+		response.setCharacterEncoding("utf-8");
+		response.setHeader("Content-disposition",
+				"attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1") + ExcelTypeEnum.XLS.getValue());
+
+		EasyExcel.write(response.getOutputStream())
+				// 这里放入动态头
+				.head(head(4l)).sheet("商务合作问卷")
+				// 当然这里数据也可以用 List<List<String>> 去传入
+				.doWrite(data(list));
+	}
+
+
+	private List<List<String>> head(Long templateId) {
+
+		List<FormFields> formFields = formFieldsMapper.selectList(new LambdaQueryWrapper<FormFields>().eq(FormFields::getTemplateId, templateId).orderByAsc(FormFields::getSorted));
+		List<List<String>> headTitles = new ArrayList<>();
+//		String orderInfo = "订单基本信息";
+		String formInfo = "表单信息";
+//		String lottery = "中奖信息";
+//		//第一列,1/2/3行
+//		headTitles.add( Lists.newArrayList(orderInfo,orderInfo,"订单号" ));
+//		headTitles.add( Lists.newArrayList(orderInfo,orderInfo,"微信名称" ));
+//		headTitles.add( Lists.newArrayList(orderInfo,orderInfo,"推荐人微信名称" ));
+//		headTitles.add( Lists.newArrayList(orderInfo,orderInfo,"金额" ));
+//		headTitles.add( Lists.newArrayList(orderInfo,orderInfo,"支付时间" ));
+//
+//		headTitles.add( Lists.newArrayList(lottery,lottery,"奖品名称" ));
+//		headTitles.add( Lists.newArrayList(lottery,lottery,"奖品描述" ));
+
+		formFields.forEach((field) -> {
+			headTitles.add(Lists.newArrayList(formInfo, formInfo, field.getFieldsName()));
+		});
+		return headTitles;
+	}
+
+	private List<List<String>> data(List<ExcelOrderDonInfo> list) {
+		List<List<String>> contentList = Lists.newArrayList();
+		list.forEach((donInfo) -> {
+			ArrayList<String> dataList = Lists.newArrayList(donInfo.getOrderNo(), donInfo.getNickName(), donInfo.getSharedName(), donInfo.getPrice().toString(), DateUtil.format(donInfo.getPayTime(), "yyyy年MM月dd日HH时mm分ss秒"));
+
+//			OrderDon orderDon = cmsOrderDonService.getById(donInfo.getOrderId());
+//			LotteryRecord lotteryRecord = Optional.ofNullable(
+//					lotteryRecordMapper.selectOne(new LambdaQueryWrapper<LotteryRecord>()
+//							.eq(LotteryRecord::getUserId, orderDon.getUserId())
+//							.eq(LotteryRecord::getPromotionId, orderDon.getPromotionId())
+//							.last("limit 1")))
+//					.orElseGet(() -> {
+//						LotteryRecord record = new LotteryRecord();
+//						record.setGiftName(StringUtil.EMPTY);
+//						record.setGiftDesc(StringUtil.EMPTY);
+//						return record;
+//					});
+//
+//			dataList.add(lotteryRecord.getGiftName());
+//			dataList.add(lotteryRecord.getGiftDesc());
+
+			List<FormFieldsData> fieldsDataList = formFieldsDataMapper.selectList(new LambdaQueryWrapper<FormFieldsData>().eq(FormFieldsData::getOrderId, donInfo.getOrderId()).orderByAsc(FormFieldsData::getSorted));
+			fieldsDataList.forEach((formFieldsData) -> {
+				dataList.add(formFieldsData.getContent());
+			});
+
+			contentList.add(dataList);
+		});
+
+		return contentList;
+	}
+}