cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java
@@ -1,10 +1,12 @@ package com.dsh.guns.modular.system.controller.code; import cn.hutool.core.collection.CollUtil; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.VipPaymentClient; import com.dsh.course.feignClient.account.model.QueryByNamePhone; import com.dsh.course.feignClient.account.model.TAppUser; import com.dsh.course.feignClient.activity.CouponClient; import com.dsh.course.feignClient.activity.model.HuiminPayQuery; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.core.base.tips.SuccessTip; import com.dsh.guns.modular.system.model.*; @@ -12,13 +14,19 @@ import com.dsh.guns.modular.system.model.dto.VipRefundDto; import com.dsh.guns.modular.system.model.vo.VipPaymentListVO; import com.dsh.guns.modular.system.service.*; import com.dsh.guns.modular.system.util.DateUtil; import com.dsh.guns.modular.system.util.ExcelUtil; import com.dsh.guns.modular.system.util.ResultUtil; 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.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.*; import java.util.stream.Collectors; @@ -142,6 +150,116 @@ return res; } /** * 导出会员卡订单 * @param */ @GetMapping("/export") public void exportData(String appUserName , String phone, String vipName , Integer isRefund , String time, HttpServletResponse response) { VipPaymentDto vipPaymentDto = new VipPaymentDto(); 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); } vipPaymentDto.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()); vipPaymentDto.setUserIds(userIds); } if (StringUtils.hasLength(appUserName)){ QueryByNamePhone queryByNamePhone = new QueryByNamePhone(); queryByNamePhone.setName( appUserName); List<Integer> userIds = appUserClient.queryByNamePhone(queryByNamePhone).stream().map(TAppUser::getId) .collect(Collectors.toList()); if (vipPaymentDto.getUserIds()!=null){ // 取交集 vipPaymentDto.setUserIds(vipPaymentDto.getUserIds().stream().filter(userIds::contains).collect(Collectors.toList())); }else{ vipPaymentDto.setUserIds(userIds); } } if (StringUtils.hasLength(appUserName)|| StringUtils.hasLength(phone)){ if (vipPaymentDto.getUserIds().isEmpty()){ List<Integer> userIds = vipPaymentDto.getUserIds(); userIds.add(-1); vipPaymentDto.setUserIds(userIds); } } vipPaymentDto.setIsRefund(isRefund); if (StringUtils.hasLength(time)){ String stareTime = null; String endTime = null; stareTime = time.split(" - ")[0] + " 00:00:00"; endTime = time.split(" - ")[1] + " 23:59:59"; vipPaymentDto.setStartTime(stareTime); vipPaymentDto.setEndTime(endTime); } QueryByNamePhone queryByNamePhone = new QueryByNamePhone(); List<TAppUser> tAppUsers = appUserClient.queryByNamePhone(queryByNamePhone); List<Vip> vipList = vipService.list(); List<VipPaymentListVO> res =vipPaymentClient.vipPayment(vipPaymentDto); for (VipPaymentListVO re : res) { Vip vip = vipList.stream().filter(e -> e.getId().equals(re.getVipId())).findFirst().orElse(null); if (vip!=null){ re.setVipName(vip.getVipName()); Integer timeType = vip.getTimeType(); Integer time1 = vip.getTime(); switch (timeType){ case 1: re.setVipTime(time1 + "天"); break; case 2: re.setVipTime(time1 + "月"); break; case 3: re.setVipTime(time1 + "年"); break; } } re.setAmountValue("¥"+re.getAmount().toString()); TAppUser appUser = tAppUsers.stream().filter(e -> e.getId().equals(re.getAppUserId())).findFirst().orElse(null); if (appUser!=null){ re.setAppUserName(appUser.getName()); re.setAppUserPhone(appUser.getName()); } } String[] titleArr = {"订单编号", "用户姓名", "联系电话", "会员卡名称", "时长", "金额", "下单时间", "是否退费", "备注"}; String[][] values = new String[res.size()][]; for (int i = 0; i < res.size(); i++) { VipPaymentListVO vipPaymentListVO = res.get(i); values[i] = new String[titleArr.length]; values[i][0] = vipPaymentListVO.getCode(); values[i][1] = vipPaymentListVO.getAppUserName(); values[i][2] = vipPaymentListVO.getAppUserPhone(); values[i][3] = vipPaymentListVO.getVipName(); values[i][4] = vipPaymentListVO.getVipTime(); values[i][5] = vipPaymentListVO.getAmountValue(); values[i][6] = DateUtil.format(vipPaymentListVO.getInsertTime(), "yyyy-MM-dd HH:mm:ss"); values[i][7] = vipPaymentListVO.getIsRefund() == 1 ? "是" : "否"; values[i][8] = vipPaymentListVO.getRemark().toString(); } 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); } } /** * 退费 */ @RequestMapping(value = "/refund") 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; @@ -176,6 +185,141 @@ } 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); if (operator!=null){ re.setOperatorName(operator.getName()); } } } } 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); } } } cloud-server-management/src/main/webapp/WEB-INF/view/system/vipPayment/vip_payment.html
@@ -3,7 +3,7 @@ <div class="col-sm-12"> <div class="ibox float-e-margins"> <div class="ibox-title"> <h5>会员权益使用明细</h5> <h5>会员卡订单</h5> </div> <div class="ibox-content"> cloud-server-management/src/main/webapp/static/modular/system/vipDetail/vipDetail.js
@@ -40,7 +40,24 @@ }; TCompetition.export = function (){ var queryData = TCompetition.getQueryParam(); // 生成带参数的完整URL var exportUrl = Feng.ctxPath + "/vipPayment/export?" + $.param(queryData); window.location.href = exportUrl; } TCompetition.getQueryParam = function () { var queryData = {}; queryData['vipName'] = $("#vipName").val(); queryData['type'] = $("#type").val(); queryData['phone'] = $("#phone").val(); queryData['storeName'] = $("#storeName").val(); queryData['operatorId'] = $("#operatorId").val(); queryData['status'] = $("#status").val(); queryData['time'] = $("#time").val(); queryData['useTime'] = $("#useTime").val(); return queryData; } /** cloud-server-management/src/main/webapp/static/modular/system/vipPayment/vipPayment.js
@@ -46,6 +46,22 @@ }, ]; }; TCompetition.export = function (){ var queryData = TCompetition.getQueryParam(); // 生成带参数的完整URL var exportUrl = Feng.ctxPath + "/vipDetail/export?" + $.param(queryData); window.location.href = exportUrl; } TCompetition.getQueryParam = function () { var queryData = {}; queryData['appUserName'] = $("#appUserName").val(); queryData['vipName'] = $("#vipName").val(); queryData['phone'] = $("#phone").val(); queryData['isRefund'] = $("#isRefund").val(); queryData['time'] = $("#time").val(); return queryData; } /** * 打开编辑 */ @@ -113,7 +129,21 @@ }; TCompetition.export = function (){ var queryData = TCompetition.getQueryParam(); // 生成带参数的完整URL var exportUrl = Feng.ctxPath + "/vipDetail/export?" + $.param(queryData); window.location.href = exportUrl; } TCompetition.getQueryParam = function () { var queryData = {}; queryData['appUserName'] = $("#appUserName").val(); queryData['vipName'] = $("#vipName").val(); queryData['phone'] = $("#phone").val(); queryData['isRefund'] = $("#isRefund").val(); queryData['time'] = $("#time").val(); return queryData; } /** * 查询车辆管理列表 */