From deb91eb570baecdae92aeeb105661209f59e06e2 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 01 四月 2025 14:23:46 +0800 Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0 --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TPayHuiminController.java | 217 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 170 insertions(+), 47 deletions(-) diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TPayHuiminController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TPayHuiminController.java index 28f8e6b..0d2f20b 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TPayHuiminController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TPayHuiminController.java @@ -1,10 +1,44 @@ package com.dsh.guns.modular.system.controller.code; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.dsh.course.feignClient.account.AppUserClient; +import com.dsh.course.feignClient.account.model.TAppUser; import com.dsh.course.feignClient.activity.PayHuiminClient; +import com.dsh.course.feignClient.activity.model.HuiminPayQuery; +import com.dsh.course.feignClient.activity.model.TPayHuimin; import com.dsh.guns.core.base.controller.BaseController; +import com.dsh.guns.core.common.constant.factory.PageFactory; +import com.dsh.guns.modular.system.model.AppUserByNameAndPhoneDTO; +import com.dsh.guns.modular.system.model.SalesDetailVO; +import com.dsh.guns.modular.system.model.TOperator; +import com.dsh.guns.modular.system.model.TStore; +import com.dsh.guns.modular.system.service.IStoreService; +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 com.dsh.guns.modular.system.util.ResultUtil; +import org.apache.commons.lang3.StringUtils; +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.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; 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.math.BigDecimal; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * 惠民卡控制器 @@ -20,12 +54,22 @@ @Autowired private PayHuiminClient payHuiminClient; + @Autowired + private TOperatorService operatorService; + @Autowired + private IStoreService storeService; + @Autowired + private AppUserClient appUserClient; + /** * 跳转到惠民卡首页 */ @RequestMapping("") - public String index() { + public String index(Model model) { + //查询运营商列表 + model.addAttribute("operatorList", operatorService.list(new QueryWrapper<TOperator>().eq("state", 1))); + model.addAttribute("storeList", storeService.list(new QueryWrapper<TStore>().eq("state", 1))); return PREFIX + "tPayHuimin.html"; } @@ -37,62 +81,141 @@ return PREFIX + "tPayHuimin_add.html"; } - /* *//** - * 跳转到修改惠民卡 - *//* - @RequestMapping("/tPayHuimin_update/{tPayHuiminId}") - public String tPayHuiminUpdate(@PathVariable Integer tPayHuiminId, Model model) { - TPayHuimin tPayHuimin = payHuiminClient.selectById(tPayHuiminId); - model.addAttribute("item",tPayHuimin); - LogObjectHolder.me().set(tPayHuimin); - return PREFIX + "tPayHuimin_edit.html"; - } - - *//** + /** * 获取惠民卡列表 - *//* + */ @RequestMapping(value = "/list") @ResponseBody - public Object list(String condition) { - return payHuiminClient.selectList(null); + public Object list(HuiminPayQuery query) { + Page<TPayHuimin> tPayHuiminPage = new PageFactory<TPayHuimin>().defaultPage(); + query.setCurrent(tPayHuiminPage.getCurrent()); + query.setSize(tPayHuiminPage.getSize()); + List<Integer> appUserIds = Collections.emptyList(); + if (StringUtils.isNotBlank(query.getUserName()) || StringUtils.isNotBlank(query.getPhone())){ + AppUserByNameAndPhoneDTO appUserByNameAndPhoneDTO = new AppUserByNameAndPhoneDTO(); + appUserByNameAndPhoneDTO.setUserName(query.getUserName()); + appUserByNameAndPhoneDTO.setPhone(query.getPhone()); + List<TAppUser> tAppUsers = appUserClient.queryAPPUserByNameAndPhone(appUserByNameAndPhoneDTO); + appUserIds = tAppUsers.stream() + .map(TAppUser::getId) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(appUserIds)){ + return new Page<>(); + } + } + query.setAppUserIds(appUserIds); + Page<SalesDetailVO> salesDetailVOPage = payHuiminClient.selectPage(query); + List<SalesDetailVO> records = salesDetailVOPage.getRecords(); + if (CollUtil.isNotEmpty(records)) { + List<Integer> operatorIdList = records.stream() + .map(SalesDetailVO::getOperatorId) + .collect(Collectors.toList()); + List<Integer> storeIdList = records.stream() + .map(SalesDetailVO::getStoreId) + .collect(Collectors.toList()); + Map<Integer, String> operatorMap = operatorService.listByIds(operatorIdList).stream() + .collect(Collectors.toMap(TOperator::getId, TOperator::getName)); + Map<Integer, String> storeMap = storeService.listByIds(storeIdList).stream() + .collect(Collectors.toMap(TStore::getId, TStore::getName)); + records.forEach(item->{ + item.setOperatorName(operatorMap.getOrDefault(item.getOperatorId(),"")); + item.setStoreName(storeMap.getOrDefault(item.getStoreId(),"")); + }); + } + return super.packForBT(salesDetailVOPage); } - *//** - * 新增惠民卡 - *//* - @RequestMapping(value = "/add") + /** + * 获取统计数据 + * @param query + * @return + */ + @RequestMapping("/getStaticsData") @ResponseBody - public Object add(TPayHuimin tPayHuimin) { - payHuiminClient.insert(tPayHuimin); - return SUCCESS_TIP; + public ResultUtil<Map<String, BigDecimal>> getStaticsData(HuiminPayQuery query) { + Map<String, BigDecimal> map = new HashMap<>(); + map.put("totalAmount",BigDecimal.ZERO); + map.put("refundAmount",BigDecimal.ZERO); + List<Integer> appUserIds = Collections.emptyList(); + if (StringUtils.isNotBlank(query.getUserName()) || StringUtils.isNotBlank(query.getPhone())){ + AppUserByNameAndPhoneDTO appUserByNameAndPhoneDTO = new AppUserByNameAndPhoneDTO(); + appUserByNameAndPhoneDTO.setUserName(query.getUserName()); + appUserByNameAndPhoneDTO.setPhone(query.getPhone()); + List<TAppUser> tAppUsers = appUserClient.queryAPPUserByNameAndPhone(appUserByNameAndPhoneDTO); + appUserIds = tAppUsers.stream() + .map(TAppUser::getId) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(appUserIds)){ + return ResultUtil.success(map); + } + } + query.setAppUserIds(appUserIds); + map = payHuiminClient.getStaticsData(query); + return ResultUtil.success(map); } - *//** - * 删除惠民卡 - *//* - @RequestMapping(value = "/delete") + /** + * 退款 + * @param id + * @return + */ + @GetMapping("/refund/{id}") @ResponseBody - public Object delete(@RequestParam Integer tPayHuiminId) { - payHuiminClient.deleteById(tPayHuiminId); - return SUCCESS_TIP; + public ResultUtil<?> refund(@PathVariable("id") Integer id) { + return payHuiminClient.refund(id); } - *//** - * 修改惠民卡 - *//* - @RequestMapping(value = "/update") - @ResponseBody - public Object update(TPayHuimin tPayHuimin) { - payHuiminClient.updateById(tPayHuimin); - return SUCCESS_TIP; + /** + * 导出售卖明细 + * @param query + */ + @GetMapping("/export") + public void exportData(HuiminPayQuery query, HttpServletResponse response) { + List<SalesDetailVO> records = payHuiminClient.exportData(query); + records = records.stream().filter(Objects::nonNull).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(records)) { + List<Integer> operatorIdList = records.stream() + .map(SalesDetailVO::getOperatorId) + .collect(Collectors.toList()); + List<Integer> storeIdList = records.stream() + .map(SalesDetailVO::getStoreId) + .collect(Collectors.toList()); + Map<Integer, String> operatorMap = operatorService.listByIds(operatorIdList).stream() + .collect(Collectors.toMap(TOperator::getId, TOperator::getName)); + Map<Integer, String> storeMap = storeService.listByIds(storeIdList).stream() + .collect(Collectors.toMap(TStore::getId, TStore::getName)); + records.forEach(item -> { + item.setOperatorName(operatorMap.getOrDefault(item.getOperatorId(), "")); + item.setStoreName(storeMap.getOrDefault(item.getStoreId(), "")); + }); + } + String[] titleArr = {"惠民卡名称", "惠民卡类型", "售卖金额", "所属运营商", "可用门店", "购买用户", "联系电话", "购买时间", "绑定人员", "已用次数", "有效期", "状态"}; + String[][] values = new String[records.size()][]; + for (int i = 0; i < records.size(); i++) { + SalesDetailVO salesDetailVO = records.get(i); + values[i] = new String[titleArr.length]; + values[i][0] = salesDetailVO.getHuiMinName(); + values[i][1] = salesDetailVO.getHuiMinType() == 1 ? "年度卡" : "年内卡"; + values[i][2] = salesDetailVO.getSalesMoney().toString(); + values[i][3] = salesDetailVO.getOperatorName(); + values[i][4] = salesDetailVO.getStoreName(); + values[i][5] = salesDetailVO.getUserName(); + values[i][6] = salesDetailVO.getPhone(); + values[i][7] = DateUtil.format(salesDetailVO.getPaymentTime(), "yyyy-MM-dd HH:mm:ss"); + values[i][8] = salesDetailVO.getStudentName(); + values[i][9] = salesDetailVO.getUseTimes().toString(); + values[i][10] = DateUtil.format(salesDetailVO.getEndTime(), "yyyy-MM-dd HH:mm:ss"); + values[i][11] = salesDetailVO.getStatus() == 2 ? "使用中" : "已退款"; + } + 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 = "/detail/{tPayHuiminId}") - @ResponseBody - public Object detail(@PathVariable("tPayHuiminId") Integer tPayHuiminId) { - return payHuiminClient.selectById(tPayHuiminId); - }*/ } -- Gitblit v1.7.1