From c560f1a14ae1fc468d90e50e6a32d805295875da Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 01 九月 2025 15:35:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipPaymentController.java | 149 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 146 insertions(+), 3 deletions(-)
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipPaymentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipPaymentController.java
index 9ae64a2..ce5aa13 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipPaymentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipPaymentController.java
@@ -11,18 +11,27 @@
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.model.Vip;
import com.dsh.guns.modular.system.model.dto.VipDetailDto;
+import com.dsh.guns.modular.system.model.dto.VipPaymentDto;
import com.dsh.guns.modular.system.model.vo.VipDetailVO;
+import com.dsh.guns.modular.system.model.vo.VipPaymentListVO;
import com.dsh.guns.modular.system.service.IStoreService;
import com.dsh.guns.modular.system.service.ITSiteService;
import com.dsh.guns.modular.system.service.IVipService;
import com.dsh.guns.modular.system.service.TOperatorService;
+import com.dsh.guns.modular.system.util.DateUtil;
+import com.dsh.guns.modular.system.util.ExcelUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.List;
import java.util.stream.Collectors;
@@ -46,7 +55,7 @@
private ITSiteService siteService;
@Autowired
private TOperatorService operatorService;
- private String PREFIX = "/system/vip/";
+ private String PREFIX = "/system/vipDetail/";
/**
@@ -164,6 +173,114 @@
}
if (re.getOperatorId()!=null){
if (re.getOperatorId()==0){
+ re.setOperatorName("平台");
+ }else{
+ TOperator operator = operatorList.stream().filter(e -> e.getId().equals(re.getOperatorId())).findFirst().orElse(null);
+ if (operator!=null){
+ re.setOperatorName(operator.getName());
+ }
+ }
+ }
+ }
+ return res;
+ }
+ /**
+ * 导出会员权益明细
+ * @param
+ */
+ @GetMapping("/export")
+ public void exportData(String vipName, Integer type
+ , String phone, String storeName
+ , Integer operatorId, Integer status
+ , String time
+ , String useTime, HttpServletResponse response) {
+ Integer objectType = UserExt.getUser().getObjectType();
+ Integer objectId = UserExt.getUser().getObjectId();
+ VipDetailDto vipDetailDto = new VipDetailDto();
+ vipDetailDto.setOperatorId(operatorId);
+ vipDetailDto.setStatus(status);
+ vipDetailDto.setType(type);
+ vipDetailDto.setObjectType(objectType);
+ if (objectType == 2){
+ vipDetailDto.setStatus(2);
+ }
+
+ if (StringUtils.hasLength(vipName)){
+ List<Integer> vipIds = vipService.lambdaQuery().like(Vip::getVipName, vipName)
+ .list().stream().map(Vip::getId).collect(Collectors.toList());
+ if (vipIds.isEmpty()){
+ vipIds.add(-1);
+ }
+ vipDetailDto.setVipIds(vipIds);
+ }
+ if (StringUtils.hasLength(phone)){
+ QueryByNamePhone queryByNamePhone = new QueryByNamePhone();
+ queryByNamePhone.setPhone( phone);
+ List<Integer> userIds = appUserClient.queryByNamePhone(queryByNamePhone).stream().map(TAppUser::getId)
+ .collect(Collectors.toList());
+ if (userIds.isEmpty()){
+ userIds.add(-1);
+ }
+ vipDetailDto.setUserIds(userIds);
+
+ }
+ if (StringUtils.hasLength(storeName)){
+ List<Integer> storeIds = storeService.lambdaQuery().like(TStore::getName, storeName)
+ .eq(objectType!=1,TStore::getOperatorId,objectId ).list()
+ .stream().map(TStore::getId).collect(Collectors.toList());
+ if (storeIds.isEmpty()){
+ storeIds.add(-1);
+ }
+ vipDetailDto.setStoreIds(storeIds);
+ }
+
+ if (StringUtils.hasLength(time)){
+ String stareTime = null;
+ String endTime = null;
+ stareTime = time.split(" - ")[0] + " 00:00:00";
+ endTime = time.split(" - ")[1] + " 23:59:59";
+ vipDetailDto.setStartTime(stareTime);
+ vipDetailDto.setEndTime(endTime);
+ }
+ if (StringUtils.hasLength(useTime)){
+ String stareTime = null;
+ String endTime = null;
+ stareTime = time.split(" - ")[0] + " 00:00:00";
+ endTime = time.split(" - ")[1] + " 23:59:59";
+ vipDetailDto.setUseStartTime(stareTime);
+ vipDetailDto.setUseEndTime(endTime);
+ }
+ List<VipDetailVO> res = couponClient.vipDetail(vipDetailDto);
+ QueryByNamePhone queryByNamePhone = new QueryByNamePhone();
+ List<TAppUser> tAppUsers = appUserClient.queryByNamePhone(queryByNamePhone);
+ List<Vip> vipList = vipService.list();
+ List<TStore> storeList = storeService.list();
+ List<TSite> siteList = siteService.list();
+ List<TOperator> operatorList = operatorService.list();
+ for (VipDetailVO re : res) {
+ TAppUser tAppUser = tAppUsers.stream().filter(e -> e.getId().equals(re.getAppUserId())).findFirst().orElse(null);
+ if (tAppUser!=null){
+ re.setAppUserName(tAppUser.getName());
+ re.setAppUserPhone(tAppUser.getPhone());
+ }
+ Vip vip = vipList.stream().filter(e -> e.getId().equals(re.getVipId())).findFirst().orElse(null);
+ if (vip!=null){
+ re.setVipName(vip.getVipName());
+ }
+ if (re.getUseSiteId()!=null){
+ TSite site = siteList.stream().filter(e -> e.getId().equals(re.getUseSiteId())).findFirst().orElse(null);
+ if (site!=null){
+ re.setGoodsName(site.getName());
+ }
+ }
+ if (re.getUseStoreId()!=null){
+ TStore store = storeList.stream().filter(e -> e.getId().equals(re.getUseStoreId())).findFirst().orElse(null);
+ if (store!=null){
+ re.setStoreName(store.getName());
+ }
+ }
+ if (re.getOperatorId()!=null){
+ if (re.getOperatorId()==0){
re.setOperatorName("总平台");
}else{
TOperator operator = operatorList.stream().filter(e -> e.getId().equals(re.getOperatorId())).findFirst().orElse(null);
@@ -174,8 +291,34 @@
}
}
- return res;
- }
+ String[] titleArr = {"权益名称", "权益类型", "关联会员类型", "购买会员姓名", "联系电话", "使用状态", "使用场地/商品名称", "使用门店", "归属运营商", "获得时间", "使用时间"};
+ String[][] values = new String[res.size()][];
+ for (int i = 0; i < res.size(); i++) {
+ VipDetailVO vipDetailVO = res.get(i);
+ values[i] = new String[titleArr.length];
+ values[i][0] = vipDetailVO.getTicketName();
+ values[i][1] = vipDetailVO.getType()==1 ? "优惠券" : "门票";
+ values[i][2] = vipDetailVO.getVipName();
+ values[i][3] = vipDetailVO.getAppUserName();
+ values[i][4] = vipDetailVO.getAppUserPhone();
+ values[i][5] = vipDetailVO.getStatus() == 1 ? "未使用" : vipDetailVO.getStatus()==2 ? "已使用" : "已过期";
+ values[i][6] = vipDetailVO.getGoodsName();
+ values[i][7] = vipDetailVO.getStoreName();
+ values[i][8] = vipDetailVO.getOperatorName();
+ values[i][9] = DateUtil.format(vipDetailVO.getInsertTime(), "yyyy-MM-dd HH:mm:ss");
+ values[i][10] = vipDetailVO.getUseTime()!=null?DateUtil.format(vipDetailVO.getUseTime(), "yyyy-MM-dd HH:mm:ss"):"";
+ }
+ try {
+ HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("会员权益使用明细", titleArr, values, null);
+ ExcelUtil.setResponseHeader(response, "会员权益使用明细.xls");
+ OutputStream os = response.getOutputStream();
+ wb.write(os);
+ os.flush();
+ os.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
--
Gitblit v1.7.1