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