From 26b18184e3f7e7b32f91cef4df848d9426567a0c Mon Sep 17 00:00:00 2001 From: "925116093-qq.com" <925116093@qq.com> Date: Sat, 16 Aug 2025 16:06:36 +0800 Subject: [PATCH] 2025008071805 --- .../system/controller/ApplePayController.java | 3 + .../controller/GoodsOrderController.java | 11 +- .../system/controller/OrderController.java | 3 +- .../controller/PayMoneyLogController.java | 14 +- .../controller/PayNotifyController.java | 8 +- .../controller/ServiceGoodsController.java | 191 +++++++++++ .../UserSecondaryCardController.java | 105 ++++++ .../system/controller/UsersController.java | 216 +++++++++++-- .../controller/UsersPayBeforController.java | 2 + .../controller/WechatTransferController.java | 12 +- .../system/controllerUtil/PayBeforeUtil.java | 6 +- .../com/ruoyi/system/domain/GoodsOrder.java | 92 ++++-- .../java/com/ruoyi/system/domain/Order.java | 140 +++++--- .../com/ruoyi/system/domain/PayMoneyLog.java | 1 - .../com/ruoyi/system/domain/ServiceGoods.java | 303 +++++++++++++----- .../system/domain/UserSecondaryCard.java | 82 +++-- .../system/domain/UserUseSecondaryCard.java | 55 +++- .../java/com/ruoyi/system/domain/Users.java | 147 +++++++-- .../ruoyi/system/mapper/GoodsOrderMapper.java | 8 + .../com/ruoyi/system/mapper/OrderMapper.java | 8 + .../system/mapper/PayMoneyLogMapper.java | 15 + .../system/mapper/WechatTransferMapper.java | 8 + .../system/service/IGoodsOrderService.java | 8 + .../ruoyi/system/service/IOrderService.java | 8 + .../system/service/IPayMoneyLogService.java | 15 + .../service/IWechatTransferService.java | 8 + .../service/impl/GoodsOrderServiceImpl.java | 12 + .../system/service/impl/OrderServiceImpl.java | 12 + .../service/impl/PayMoneyLogServiceImpl.java | 23 ++ .../impl/WechatTransferServiceImpl.java | 12 + .../mapper/system/GoodsOrderMapper.xml | 189 ++++++++++- .../resources/mapper/system/OrderMapper.xml | 165 ++++++++++ .../mapper/system/PayMoneyLogMapper.xml | 44 ++- .../mapper/system/UserSecondaryCardMapper.xml | 6 +- .../mapper/system/WechatTransferMapper.xml | 38 +++ ruoyi-ui/src/api/system/PayMoneyLog.js | 8 + .../src/views/system/GoodsOrder/index.vue | 161 +++++++--- .../src/views/system/GoodsShangPin/index.vue | 35 +- ruoyi-ui/src/views/system/Order/index.vue | 34 +- .../src/views/system/PayMoneyLog/index.vue | 183 ++++++++++- .../src/views/system/ServiceGoods/index.vue | 54 ++-- .../views/system/UserSecondaryCard/index.vue | 42 +++ .../src/views/system/UsersWorker/index.vue | 93 +++--- 43 files changed, 2178 insertions(+), 402 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ApplePayController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ApplePayController.java index a95876c..ed09d9f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ApplePayController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ApplePayController.java @@ -1248,6 +1248,7 @@ public class ApplePayController extends BaseController { if (newpayBefor!=null){ // 创建订单 newpayBefor.setStatus(2L); + newpayBefor.setPaytime(new Date()); usersPayBeforService.updateUsersPayBefor(newpayBefor); } } @@ -1277,6 +1278,7 @@ public class ApplePayController extends BaseController { if (newpayBefor!=null){ // 创建订单 newpayBefor.setStatus(2L); + newpayBefor.setPaytime(new Date()); usersPayBeforService.updateUsersPayBefor(newpayBefor); } } @@ -1318,6 +1320,7 @@ public class ApplePayController extends BaseController { if (newpayBefor!=null){ // 创建订单 newpayBefor.setStatus(2L); + newpayBefor.setPaytime(new Date()); usersPayBeforService.updateUsersPayBefor(newpayBefor); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/GoodsOrderController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/GoodsOrderController.java index aeaec02..6947f70 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/GoodsOrderController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/GoodsOrderController.java @@ -98,8 +98,6 @@ public class GoodsOrderController extends BaseController { goodsOrderdata.setUname(users.getName()); goodsOrderdata.setUphone(users.getPhone()); } - - } return getDataTable(list); } @@ -196,7 +194,14 @@ public class GoodsOrderController extends BaseController { @Log(title = "商品订单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, GoodsOrder goodsOrder) { - List list = goodsOrderService.selectGoodsOrderList(goodsOrder); + // 使用导出专用的关联查询,一次性获取所有数据包括关联信息 + List list = goodsOrderService.selectGoodsOrderListForExport(goodsOrder); + + // 设置订单ID(保持原有逻辑) + for (GoodsOrder goodsOrderdata : list) { + goodsOrderdata.setOrderId(goodsOrderdata.getMainOrderId()); + } + ExcelUtil util = new ExcelUtil(GoodsOrder.class); util.exportExcel(response, list, "商品订单数据"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java index 455d98d..f7a9093 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java @@ -97,7 +97,8 @@ public class OrderController extends BaseController { @Log(title = "服务订单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, Order order) { - List list = orderService.selectOrderList(order); + // 使用导出专用的关联查询,一次性获取所有数据包括关联信息 + List list = orderService.selectOrderListForExport(order); ExcelUtil util = new ExcelUtil(Order.class); util.exportExcel(response, list, "服务订单数据"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayMoneyLogController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayMoneyLogController.java index 7a6eb6c..ded1ca4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayMoneyLogController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayMoneyLogController.java @@ -77,6 +77,17 @@ public class PayMoneyLogController extends BaseController { return success(usersService.selectUsersList(new Users())); } + + /** + * 获取支付记录统计数据 + */ + @PreAuthorize("@ss.hasPermi('system:PayMoneyLog:query')") + @GetMapping(value = "/getStatistics") + public AjaxResult getStatistics() + { + return success(payMoneyLogService.getPayMoneyLogStatistics()); + } + /** * 导出支付记录列表 */ @@ -85,7 +96,8 @@ public class PayMoneyLogController extends BaseController @PostMapping("/export") public void export(HttpServletResponse response, PayMoneyLog payMoneyLog) { - List list = payMoneyLogService.selectPayMoneyLogList(payMoneyLog); + // 使用导出专用的关联查询,一次性获取所有数据包括用户信息 + List list = payMoneyLogService.selectPayMoneyLogListForExport(payMoneyLog); ExcelUtil util = new ExcelUtil(PayMoneyLog.class); util.exportExcel(response, list, "支付记录数据"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java index 3351804..b630846 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PayNotifyController.java @@ -336,7 +336,9 @@ public class PayNotifyController extends BaseController { UsersPayBefor newpayBefor = usersPayBeforService.selectUsersPayBeforByOrderId(usersPayBefor.getOrderid()); if (newpayBefor!=null){ // 创建订单 - newpayBefor.setStatus(2L); + usersPayBefor.setStatus(2L); + usersPayBefor.setPaytime(new Date()); + usersPayBefor.setPaycode(transactionId); usersPayBeforService.updateUsersPayBefor(newpayBefor); } } @@ -500,7 +502,9 @@ public class PayNotifyController extends BaseController { UsersPayBefor newpayBefor = usersPayBeforService.selectUsersPayBeforByOrderId(usersPayBefor.getOrderid()); if (newpayBefor!=null){ // 创建订单 - newpayBefor.setStatus(2L); + usersPayBefor.setStatus(2L); + usersPayBefor.setPaytime(new Date()); + usersPayBefor.setPaycode(transactionId); usersPayBeforService.updateUsersPayBefor(newpayBefor); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ServiceGoodsController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ServiceGoodsController.java index 433dfd8..c1dd362 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ServiceGoodsController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ServiceGoodsController.java @@ -66,6 +66,197 @@ public class ServiceGoodsController extends BaseController { @PostMapping("/export") public void export(HttpServletResponse response, ServiceGoods serviceGoods) { List list = serviceGoodsService.selectServiceGoodsList(serviceGoods); + + // 处理数据,设置中文名称 + for (ServiceGoods item : list) { + // 设置状态名称 + if ("1".equals(item.getStatus())) { + item.setStatusName("启用"); + } else { + item.setStatusName("停用"); + } + + // 设置下单类型名称 + if (item.getServicetype() != null) { + switch (item.getServicetype()) { + case 1: + item.setServiceTypeName("预约下单"); + break; + case 2: + item.setServiceTypeName("报价下单"); + break; + default: + item.setServiceTypeName("未知类型"); + break; + } + } + + // 设置规格类型名称 + if (item.getSkuType() != null) { + switch (item.getSkuType()) { + case 1: + item.setSkuTypeName("单规格"); + break; + case 2: + item.setSkuTypeName("多规格"); + break; + default: + item.setSkuTypeName("未知类型"); + break; + } + } + + // 设置类型名称 + if (item.getType() != null) { + switch (item.getType()) { + case 1: + item.setTypeName("服务"); + break; + case 2: + item.setTypeName("商品"); + break; + default: + item.setTypeName("未知类型"); + break; + } + } + + // 设置分类名称 + if (item.getCateId() != null) { + ServiceCate serviceCate = serviceCateService.selectServiceCateById(item.getCateId()); + if (serviceCate != null) { + item.setCateName(serviceCate.getTitle()); + } + } + + // 设置是否跳转服务名称 + if (item.getIsforservice() != null) { + switch (item.getIsforservice()) { + case 1: + item.setIsForServiceName("是"); + break; + case 2: + item.setIsForServiceName("否"); + break; + default: + item.setIsForServiceName("未知"); + break; + } + } + + // 设置是否可拼团名称 + if (item.getIsgroup() != null) { + switch (item.getIsgroup()) { + case 1: + item.setIsGroupName("是"); + break; + case 2: + item.setIsGroupName("否"); + break; + default: + item.setIsGroupName("未知"); + break; + } + } + + // 设置是否可设置次卡名称 + if (item.getIsonce() != null) { + switch (item.getIsonce()) { + case 1: + item.setIsOnceName("是"); + break; + case 2: + item.setIsOnceName("否"); + break; + default: + item.setIsOnceName("未知"); + break; + } + } + + // 设置分佣模式名称 + if (item.getCommissiontype() != null) { + switch (item.getCommissiontype()) { + case 1: + item.setCommissionTypeName("系统分佣"); + break; + case 2: + item.setCommissionTypeName("独立分佣"); + break; + case 3: + item.setCommissionTypeName("不分佣"); + break; + default: + item.setCommissionTypeName("未知模式"); + break; + } + } + + // 设置派单模式名称 + if (item.getDispatchtype() != null) { + switch (item.getDispatchtype()) { + case 1: + item.setDispatchTypeName("系统派单"); + break; + case 2: + item.setDispatchTypeName("后台手动派单"); + break; + case 3: + item.setDispatchTypeName("指定工人"); + break; + default: + item.setDispatchTypeName("未知模式"); + break; + } + } + + // 设置是否为一口价名称 + if (item.getIsfixed() != null) { + switch (item.getIsfixed()) { + case 1: + item.setIsFixedName("是"); + break; + case 2: + item.setIsFixedName("否"); + break; + default: + item.setIsFixedName("未知"); + break; + } + } + + // 处理问答数量 + if (item.getQuestions() != null && !item.getQuestions().isEmpty()) { + try { + // 尝试解析JSON格式的问答数据,计算数量 + if (item.getQuestions().startsWith("[") && item.getQuestions().endsWith("]")) { + // 简单的JSON数组计数 + String[] questions = item.getQuestions().split("\\{"); + item.setQuestionCount(String.valueOf(questions.length - 1)); + } else { + item.setQuestionCount("1"); + } + } catch (Exception e) { + item.setQuestionCount("0"); + } + } else { + item.setQuestionCount("0"); + } + + // 处理技能名称转换 + if (item.getSkillIds() != null && !item.getSkillIds().trim().isEmpty()) { + try { + // 这里可以根据需要查询技能表获取技能名称 + // 暂时设置为技能ID的显示 + item.setSkillNames(item.getSkillIds()); + } catch (Exception e) { + item.setSkillNames("技能解析失败"); + } + } else { + item.setSkillNames("无"); + } + } + ExcelUtil util = new ExcelUtil(ServiceGoods.class); util.exportExcel(response, list, "服务内容数据"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserSecondaryCardController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserSecondaryCardController.java index af94655..f2fbfc9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserSecondaryCardController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserSecondaryCardController.java @@ -128,10 +128,115 @@ public class UserSecondaryCardController extends BaseController public void export(HttpServletResponse response, UserSecondaryCard userSecondaryCard) { List list = userSecondaryCardService.selectUserSecondaryCardList(userSecondaryCard); + + // 处理导出数据,确保关联信息正确 + for(UserSecondaryCard item : list) { + // 处理服务名称 + if (item.getGoodsids() != null && !item.getGoodsids().isEmpty()) { + try { + List idsList = com.alibaba.fastjson2.JSONArray.parseArray(item.getGoodsids(), String.class); + item.setGoodsname(serviceGoodsService.selectTitlesJSONArrayByIds(idsList)); + } catch (Exception e) { + item.setGoodsname("数据解析错误"); + } + } + + // 处理分类名称 + if (item.getType() != null) { + ServiceCate serviceCate = serviceCateService.selectServiceCateById(item.getType()); + if (serviceCate != null) { + item.setTypename(serviceCate.getTitle()); + } + } + + // 设置可用/总数显示 + if (item.getNum() != null && item.getAllnum() != null) { + item.setServiceCountDisplay(item.getNum() + "/" + item.getAllnum()); + } else { + item.setServiceCountDisplay("0/0"); + } + + // 处理状态显示 - 将数字状态转换为中文状态名称 + if (item.getStatus() != null) { + switch (item.getStatus().intValue()) { + case 1: + item.setStatusName("上线"); + break; + case 2: + item.setStatusName("下线"); + break; + case 3: + item.setStatusName("下架"); + break; + default: + item.setStatusName("未知状态"); + break; + } + } else { + item.setStatusName("未知状态"); + } + } + ExcelUtil util = new ExcelUtil(UserSecondaryCard.class); util.exportExcel(response, list, "次卡管理数据"); } + /** + * 导出次卡购买明细 + */ + @PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:export')") + @Log(title = "次卡购买明细", businessType = BusinessType.EXPORT) + @PostMapping("/exportPurchaseDetails") + public void exportPurchaseDetails(HttpServletResponse response, Long cardId) + { + if (cardId == null) { + throw new RuntimeException("次卡ID不能为空"); + } + + List list = userUseSecondaryCardService.selectPurchaseDetailsByCardId(cardId.toString()); + + // 处理数据,设置状态名称和用户名称 + for (UserUseSecondaryCard item : list) { + // 设置状态名称 + if (item.getStatus() != null) { + switch (item.getStatus().intValue()) { + case 1: + item.setStatusName("可用"); + break; + case 2: + item.setStatusName("已用完"); + break; + case 3: + item.setStatusName("已退款"); + break; + case 4: + item.setStatusName("未支付"); + break; + default: + item.setStatusName("未知状态"); + break; + } + } else { + item.setStatusName("未知状态"); + } + + // 设置用户名称 + if (item.getUid() != null) { + Users users = usersService.selectUsersById(item.getUid()); + if (users != null) { + item.setUserName(users.getName()); + } else { + item.setUserName("未知用户"); + } + } else { + item.setUserName("未知用户"); + } + } + + ExcelUtil util = new ExcelUtil(UserUseSecondaryCard.class); + util.exportExcel(response, list, "次卡购买明细"); + } + /** * 获取次卡管理详细信息 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersController.java index 0abcb39..db0f56d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersController.java @@ -6,6 +6,8 @@ import javax.servlet.http.HttpServletResponse; import com.ruoyi.system.domain.QuoteType; import com.ruoyi.system.domain.UserBenefitPoints; import com.ruoyi.system.service.IUserBenefitPointsService; +import com.ruoyi.system.service.IDiyCityService; +import com.ruoyi.system.service.ISiteSkillService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -19,9 +21,11 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.system.domain.UserMemnerConsumptionLog; import com.ruoyi.system.service.IUserMemnerConsumptionLogService; +import com.ruoyi.system.domain.DiyCity; +import com.ruoyi.system.domain.SiteSkill; /** - * 【请填写功能名称】Controller + * 用户管理Controller * * @author ruoyi * @date 2025-05-14 @@ -35,11 +39,18 @@ public class UsersController extends BaseController @Autowired private IUserBenefitPointsService userBenefitPointsService; + @Autowired private IUserMemnerConsumptionLogService userMemnerConsumptionLogService; + + @Autowired + private IDiyCityService diyCityService; + + @Autowired + private ISiteSkillService siteSkillService; /** - * 查询【请填写功能名称】列表 + * 查询用户列表 */ @PreAuthorize("@ss.hasPermi('system:users:list')") @GetMapping("/list") @@ -47,17 +58,14 @@ public class UsersController extends BaseController { startPage(); List list = usersService.selectUsersList(users); - for(Users u:list){ + for(Users u : list){ u.setAvatar(com.ruoyi.system.ControllerUtil.AppletControllerUtil.buildImageUrl(u.getAvatar())); - } return getDataTable(list); } - - /** - * 查询【请填写功能名称】列表 + * 查询师傅列表 */ @PreAuthorize("@ss.hasPermi('system:users:list')") @GetMapping("/workerlist") @@ -67,13 +75,10 @@ public class UsersController extends BaseController users.setType("2"); List list = usersService.selectUsersList(users); return success(list); - } - - /** - * 查询【请填写功能名称】列表 + * 查询可接单师傅列表 */ @PreAuthorize("@ss.hasPermi('system:users:list')") @GetMapping("/cando/workerlist") @@ -83,26 +88,187 @@ public class UsersController extends BaseController users.setType("2"); List list = usersService.selectUsersList(users); return getDataTable(list); - } - - /** - * 导出【请填写功能名称】列表 + * 导出用户列表 */ @PreAuthorize("@ss.hasPermi('system:users:export')") - @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT) + @Log(title = "用户数据导出", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, Users users) { List list = usersService.selectUsersList(users); + + // 处理数据,设置中文名称 + for (Users item : list) { + // 设置用户类型名称 + if ("1".equals(item.getType())) { + item.setTypeName("普通用户"); + } else if ("2".equals(item.getType())) { + item.setTypeName("师傅"); + } else { + item.setTypeName("未知类型"); + } + + // 设置状态名称 + if (item.getStatus() != null) { + if (item.getStatus() == 1) { + item.setStatusName("启用"); + } else { + item.setStatusName("停用"); + } + } else { + item.setStatusName("未知状态"); + } + + // 设置是否为师傅名称 + if (item.getIsWork() != null) { + if (item.getIsWork() == 1) { + item.setIsWorkName("是"); + } else { + item.setIsWorkName("否"); + } + } else { + item.setIsWorkName("未知"); + } + + // 设置等级名称 + if (item.getLevel() != null) { + item.setLevelName("等级" + item.getLevel()); + } else { + item.setLevelName("无等级"); + } + + // 格式化签到时间 + if (item.getWorkerTime() != null) { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd"); + item.setWorkerTimeFormatted(sdf.format(item.getWorkerTime())); + } else { + item.setWorkerTimeFormatted("未签到"); + } + + // 格式化暂停到期时间 + if (item.getProhibitTime() != null) { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm"); + item.setProhibitTimeFormatted(sdf.format(item.getProhibitTime())); + } else { + item.setProhibitTimeFormatted("无"); + } + + // 设置使用状态名称 + if (item.getLoginStatus() != null) { + if (item.getLoginStatus() == 1) { + item.setLoginStatusName("已退出"); + } else if (item.getLoginStatus() == 2) { + item.setLoginStatusName("未退出"); + } else { + item.setLoginStatusName("未知状态"); + } + } else { + item.setLoginStatusName("未知状态"); + } + + // 设置接单状态名称 + if (item.getIsStop() != null) { + if (item.getIsStop() == 0) { + item.setIsStopName("正常"); + } else if (item.getIsStop() == 1) { + // 检查是否过期 + if (item.getProhibitTime() != null && item.getProhibitTime().before(new java.util.Date())) { + item.setIsStopName("已过期"); + } else { + item.setIsStopName("已暂停"); + } + } else { + item.setIsStopName("未知状态"); + } + } else { + item.setIsStopName("未知状态"); + } + + // 处理头像URL + if (item.getAvatar() != null && !item.getAvatar().isEmpty()) { + item.setAvatar(com.ruoyi.system.ControllerUtil.AppletControllerUtil.buildImageUrl(item.getAvatar())); + } + + // 设置服务区域名称 - 关联diy_city表查询 + if (item.getServiceCityIds() != null && !item.getServiceCityIds().isEmpty()) { + try { + // 处理服务区域ID,可能是JSON数组或逗号分隔的字符串 + String serviceCityIds = item.getServiceCityIds(); + if (serviceCityIds.startsWith("[") && serviceCityIds.endsWith("]")) { + // JSON数组格式 + serviceCityIds = serviceCityIds.substring(1, serviceCityIds.length() - 1); + } + String[] cityIds = serviceCityIds.split(","); + StringBuilder cityNames = new StringBuilder(); + for (String cityId : cityIds) { + try { + Integer id = Integer.parseInt(cityId.trim()); + if (id > 0) { + DiyCity city = diyCityService.selectDiyCityById(id); + if (city != null && city.getTitle() != null) { + if (cityNames.length() > 0) { + cityNames.append("、"); + } + cityNames.append(city.getTitle()); + } + } + } catch (NumberFormatException e) { + // 忽略无效的ID + } + } + item.setServiceCityNames(cityNames.length() > 0 ? cityNames.toString() : "未知区域"); + } catch (Exception e) { + item.setServiceCityNames("未知区域"); + } + } else { + item.setServiceCityNames("无"); + } + + // 设置技能名称 - 关联site_skill表查询 + if (item.getSkillIds() != null && !item.getSkillIds().isEmpty()) { + try { + // 处理技能ID,可能是JSON数组或逗号分隔的字符串 + String skillIds = item.getSkillIds(); + if (skillIds.startsWith("[") && skillIds.endsWith("]")) { + // JSON数组格式 + skillIds = skillIds.substring(1, skillIds.length() - 1); + } + String[] skillIdArray = skillIds.split(","); + StringBuilder skillNames = new StringBuilder(); + for (String skillId : skillIdArray) { + try { + Long id = Long.parseLong(skillId.trim()); + if (id > 0) { + SiteSkill skill = siteSkillService.selectSiteSkillById(id); + if (skill != null && skill.getTitle() != null) { + if (skillNames.length() > 0) { + skillNames.append("、"); + } + skillNames.append(skill.getTitle()); + } + } + } catch (NumberFormatException e) { + // 忽略无效的ID + } + } + item.setSkillNames(skillNames.length() > 0 ? skillNames.toString() : "未知技能"); + } catch (Exception e) { + item.setSkillNames("未知技能"); + } + } else { + item.setSkillNames("无"); + } + } + ExcelUtil util = new ExcelUtil(Users.class); - util.exportExcel(response, list, "【请填写功能名称】数据"); + util.exportExcel(response, list, "师傅数据"); } /** - * 获取【请填写功能名称】详细信息 + * 获取用户详细信息 */ @PreAuthorize("@ss.hasPermi('system:users:query')") @GetMapping(value = "/{id}") @@ -112,10 +278,10 @@ public class UsersController extends BaseController } /** - * 新增【请填写功能名称】 + * 新增用户 */ @PreAuthorize("@ss.hasPermi('system:users:add')") - @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT) + @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody Users users) { @@ -123,15 +289,16 @@ public class UsersController extends BaseController } /** - * 修改【请填写功能名称】 + * 修改用户 */ @PreAuthorize("@ss.hasPermi('system:users:edit')") - @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE) + @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody Users users) { return toAjax(usersService.updateUsers(users)); } + /** * 定时任务状态修改 */ @@ -153,6 +320,7 @@ public class UsersController extends BaseController newUsers.setStatus(users.getStatus()); return toAjax(usersService.updateUsers(newUsers)); } + /** * 暂停接单 */ @@ -202,10 +370,10 @@ public class UsersController extends BaseController } /** - * 删除【请填写功能名称】 + * 删除用户 */ @PreAuthorize("@ss.hasPermi('system:users:remove')") - @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE) + @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersPayBeforController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersPayBeforController.java index ff544ae..6146340 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersPayBeforController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/UsersPayBeforController.java @@ -629,6 +629,8 @@ public class UsersPayBeforController extends BaseController } } } + + return success("退款成功"); } catch (Exception e) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/WechatTransferController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/WechatTransferController.java index d77858b..8ab567a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/WechatTransferController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/WechatTransferController.java @@ -93,12 +93,11 @@ public class WechatTransferController extends BaseController @PostMapping("/export") public void export(HttpServletResponse response, WechatTransfer wechatTransfer) { - List list = wechatTransferService.selectWechatTransferList(wechatTransfer); - for(WechatTransfer dd: list){ - Users users=usersService.selectUsersById(dd.getUid()); - if (users!=null){ - dd.setUname(users.getName()); - } + // 使用导出专用的关联查询,一次性获取所有数据包括用户信息 + List list = wechatTransferService.selectWechatTransferListForExport(wechatTransfer); + + // 处理状态名称和到账状态名称 + for(WechatTransfer dd: list){ if (dd.getPaid()!=null){ if (dd.getPaid()==1){ dd.setPaname("已到账"); @@ -120,6 +119,7 @@ public class WechatTransferController extends BaseController } } } + ExcelUtil util = new ExcelUtil(WechatTransfer.class); util.exportExcel(response, list, "wechat_transfer数据"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/PayBeforeUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/PayBeforeUtil.java index 546e02c..348157d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/PayBeforeUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controllerUtil/PayBeforeUtil.java @@ -75,12 +75,14 @@ public class PayBeforeUtil { } catch (Exception e) { memberMoney = BigDecimal.ZERO; } - + BigDecimal amountMoney = amount.subtract(memberMoney);; + //需要支付的金额等于总金额减去会员金额 + // amount=amount.subtract(memberMoney); // 使用BenefitPointsUtil计算服务金和购物金抵扣 BigDecimal serviceMoney = BigDecimal.ZERO; BigDecimal shopMoney = BigDecimal.ZERO; if (servicetype != null) { - BenefitPointsUtil.BenefitDeductionResult deductionResult = BenefitPointsUtil.getBenefitDeduction(user, amount, servicetype); + BenefitPointsUtil.BenefitDeductionResult deductionResult = BenefitPointsUtil.getBenefitDeduction(user, amountMoney, servicetype); if (deductionResult.isSuccess()) { serviceMoney = deductionResult.getServiceMoney(); shopMoney = deductionResult.getShopMoney(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/GoodsOrder.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GoodsOrder.java index a1a7f3d..d672e0b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/GoodsOrder.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GoodsOrder.java @@ -22,7 +22,7 @@ public class GoodsOrder extends BaseEntity private Long id; /** 1:服务项目 2:商品 */ - @Excel(name = "1:服务项目 2:商品") + private Integer type; /** 主订单号 */ @@ -30,7 +30,6 @@ public class GoodsOrder extends BaseEntity private String mainOrderId; /** 订单号 */ - @Excel(name = "订单号") private String orderId; /** 微信支付单号 */ @@ -38,7 +37,6 @@ public class GoodsOrder extends BaseEntity private String transactionId; /** 用户 */ - @Excel(name = "用户") private Long uid; /** 用户 */ @@ -46,12 +44,15 @@ public class GoodsOrder extends BaseEntity private String uname; /** 商品 */ - @Excel(name = "商品") private Long productId; /** 商品 */ - @Excel(name = "商品名称") + // @Excel(name = "商品名称") private String productName; + + /** 合并的商品名称(多个商品用、分隔) */ + @Excel(name = "商品名称") + private String productNames; /** 姓名 */ @Excel(name = "姓名") @@ -65,20 +66,26 @@ public class GoodsOrder extends BaseEntity @Excel(name = "地址") private String address; - /** 数量 */ - @Excel(name = "数量") - private Long num; + /** 总价 */ @Excel(name = "总价") private BigDecimal totalPrice; - + /** 退款金额 */ + @Excel(name = "退款金额") + private BigDecimal returnmoney; /** 商品金额 */ - @Excel(name = "商品金额") + // @Excel(name = "商品金额") private BigDecimal goodPrice; + /** 数量 */ + //@Excel(name = "数量") + private Long num; + /** 邮费 */ + @Excel(name = "邮费") + private BigDecimal postage; + /** 服务金额 */ - @Excel(name = "服务金额") private BigDecimal servicePrice; /** 支付金额 */ @@ -86,7 +93,7 @@ public class GoodsOrder extends BaseEntity private BigDecimal payPrice; /** 支付金额 */ - @Excel(name = "优惠券id") + private Long couponId; /** 支付金额 */ @@ -94,24 +101,20 @@ public class GoodsOrder extends BaseEntity private Long isself; /** 支付金额 */ - @Excel(name = "自提店铺地址id") + private Long shopadresssid; /** 抵扣金额 */ @Excel(name = "抵扣金额") private BigDecimal deduction; - /** 邮费 */ - @Excel(name = "邮费") - private BigDecimal postage; + /** 排序 */ - @Excel(name = "是否跳转服务") private Integer isforservice; /** 排序 */ - @Excel(name = "跳转服务id") private Integer forserviceid; @@ -121,13 +124,17 @@ public class GoodsOrder extends BaseEntity private Date payTime; /** 订单状态 1:待支付 2:已支付,待发货3:待收货 4:待评价 5:已收货 6:取消 20:申请退款 21:同意退款 22:驳回退款 */ - @Excel(name = "订单状态 1:待支付 2:已支付,待发货3:待收货 4:待评价 5:已收货 6:取消 20:申请退款 21:同意退款 22:驳回退款") private Long status; + + /** 订单状态名称 */ + @Excel(name = "订单状态") + private String statusName; /** 快递 */ - @Excel(name = "快递") private Long deliveryId; - + /** 快递公司名称 */ + @Excel(name = "快递公司") + private String deliveryName; /** 快递单号 */ @Excel(name = "快递单号") private String deliveryNum; @@ -142,13 +149,14 @@ public class GoodsOrder extends BaseEntity private String mark; /** 关联地址 */ - @Excel(name = "关联地址") + private Long addressId; /** 多规格产品 */ - @Excel(name = "多规格产品") + private String sku; - private String deliveryName; + + /** 纬度 */ private String latitude; @@ -175,20 +183,24 @@ public class GoodsOrder extends BaseEntity private Long ismany; private Date returntime; - private BigDecimal returnmoney; + private Date returnfinshtime; private String returnshow; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +// /** $column.columnComment */ +// @Excel(name = "创建时间", readConverterExp = "$column.readConverterExp()") +// private Date createdAt; + + /** 发货时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") private Date createdAt; + /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date updatedAt; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date deletedAt; public void setId(Long id) @@ -381,6 +393,16 @@ public class GoodsOrder extends BaseEntity return status; } + public void setStatusName(String statusName) + { + this.statusName = statusName; + } + + public String getStatusName() + { + return statusName; + } + public void setDeliveryId(Long deliveryId) { this.deliveryId = deliveryId; @@ -480,6 +502,14 @@ public class GoodsOrder extends BaseEntity this.productName = productName; } + public String getProductNames() { + return productNames; + } + + public void setProductNames(String productNames) { + this.productNames = productNames; + } + public String getUname() { return uname; } @@ -745,6 +775,7 @@ public class GoodsOrder extends BaseEntity .append("postage", getPostage()) .append("payTime", getPayTime()) .append("status", getStatus()) + .append("statusName", getStatusName()) .append("deliveryId", getDeliveryId()) .append("deliveryNum", getDeliveryNum()) .append("sendTime", getSendTime()) @@ -754,6 +785,9 @@ public class GoodsOrder extends BaseEntity .append("createdAt", getCreatedAt()) .append("updatedAt", getUpdatedAt()) .append("deletedAt", getDeletedAt()) + .append("productName", getProductName()) + .append("productNames", getProductNames()) + .append("uname", getUname()) .toString(); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Order.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Order.java index 825b16d..73f7ae1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Order.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Order.java @@ -24,11 +24,11 @@ public class Order extends BaseEntity private Long id; /** 1:服务项目 2:商品 */ - @Excel(name = "1:服务项目 2:商品") + // @Excel(name = "1:服务项目 2:商品") private Integer type; /** 主订单号 */ - @Excel(name = "主订单号") + // @Excel(name = "主订单号") private String mainOrderId; /** 订单号 */ @@ -40,7 +40,7 @@ public class Order extends BaseEntity private String transactionId; /** 1:用户自主下单,2:后台下单 */ - @Excel(name = "1:用户自主下单,2:后台下单") + //@Excel(name = "1:用户自主下单,2:后台下单") private Integer createType; /** 后台下单用户手机号 */ @@ -48,15 +48,19 @@ public class Order extends BaseEntity private String createPhone; /** 用户 */ - @Excel(name = "用户") + //@Excel(name = "用户") private Long uid; /** 用户 */ @Excel(name = "用户名称") private String uname; + + /** 用户手机号 */ + @Excel(name = "用户手机号") + private String uphone; /** 商品 */ - @Excel(name = "商品") + //@Excel(name = "商品") private Long productId; /** 商品 */ @@ -76,8 +80,11 @@ public class Order extends BaseEntity private String address; /** 预约时间-天 */ - @Excel(name = "预约时间-天") private Long makeTime; + + /** 预约时间-天(格式化后,用于导出) */ + @Excel(name = "预约时间-天") + private String makeTimeFormatted; /** 预约时间-小时 */ @Excel(name = "预约时间-小时") @@ -104,7 +111,7 @@ public class Order extends BaseEntity private BigDecimal payPrice; /** 优惠券ID */ - @Excel(name = "优惠券ID") + // @Excel(name = "优惠券ID") private Long couponId; /** 抵扣金额 */ @@ -117,11 +124,19 @@ public class Order extends BaseEntity private Date payTime; /** 订单状态 1:待接单 2:待服务,3:服务中,4:已结束 5:已取消 6:师傅完成服务 7:未服务提前结束订单 */ - @Excel(name = "订单状态 1:待接单 2:待服务,3:服务中,4:已结束 5:已取消 6:师傅完成服务 7:未服务提前结束订单") + // @Excel(name = "订单状态") private Long status; + + /** 订单状态名称 */ + @Excel(name = "订单状态") + private String statusName; + + /** 师傅名称 */ + @Excel(name = "师傅名称") + private String workerName; /** 1:开始服务 2:暂停服务 */ - @Excel(name = "1:开始服务 2:暂停服务") + // @Excel(name = "1:开始服务 2:暂停服务") private Integer isPause; /** 备注 */ @@ -129,7 +144,7 @@ public class Order extends BaseEntity private String mark; /** 关联地址 */ - @Excel(name = "关联地址") + // @Excel(name = "关联地址") private Long addressId; /** 多规格产品 */ @@ -137,11 +152,11 @@ public class Order extends BaseEntity private String sku; /** 师傅ID */ - @Excel(name = "师傅ID") + //@Excel(name = "师傅ID") private Long workerId; /** 转单之后,第一次接单的师傅 */ - @Excel(name = "转单之后,第一次接单的师傅") + // @Excel(name = "转单之后,第一次接单的师傅") private Long firstWorkerId; /** 接单时间 */ @@ -149,58 +164,64 @@ public class Order extends BaseEntity @Excel(name = "接单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date receiveTime; - /** 1:已评价 0:未评价 */ - @Excel(name = "1:已评价 0:未评价") - private Integer isComment; + + + /** 1:已评价 0:未评价 */ + // @Excel(name = "1:已评价 0:未评价") + private Integer isComment; + /** 接单时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date updatedAt; /** 1:自由抢单 ,2:系统派单 ,3:平台派单 */ - @Excel(name = "1:系统派单 2:后台手动派单 3:指定工人") + //@Excel(name = "1:系统派单 2:后台手动派单 3:指定工人") private Long receiveType; /** 1:已经接单 */ - @Excel(name = "1:已经接单") + //@Excel(name = "1:已经接单") private Integer isAccept; /** 中间虚拟号 */ - @Excel(name = "中间虚拟号") + // @Excel(name = "中间虚拟号") private String middlePhone; /** 用户手机号 */ - @Excel(name = "用户手机号") + // @Excel(name = "用户手机号") private String userPhone; /** 师傅手机号 */ - @Excel(name = "师傅手机号") + // @Excel(name = "师傅手机号") private String workerPhone; //-------------------------------------------非数据库字段-------------------------------------------------- /** 接单记录 */ - @Excel(name = "接单记录") + // @Excel(name = "接单记录") private int jdjl; /** 通话记录 */ - @Excel(name = "通话记录") + // @Excel(name = "通话记录") private int thjl; /** 录音文件 */ - @Excel(name = "录音文件") + //@Excel(name = "录音文件") private int lywj; /** 通知记录 */ - @Excel(name = "通知记录") + // @Excel(name = "通知记录") private int tzjl; /** 通知记录 */ - @Excel(name = "服务评价") + // @Excel(name = "服务评价") private int fwpj; /** 通知记录 */ - @Excel(name = "大分类") + //@Excel(name = "大分类") private Integer bigtype; /** 订单附件 */ - @Excel(name = "订单附件") + // @Excel(name = "订单附件") private String fileData; @@ -235,43 +256,43 @@ public class Order extends BaseEntity /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String addressEn; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String uidAdmin; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String addressAdmin; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Integer logStatus; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String logJson; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Integer jsonStatus; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String logImages; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date createdAt; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") - private Date updatedAt; + //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date deletedAt; private Long makeTimeStart; @@ -423,6 +444,16 @@ public class Order extends BaseEntity return makeTime; } + public void setMakeTimeFormatted(String makeTimeFormatted) + { + this.makeTimeFormatted = makeTimeFormatted; + } + + public String getMakeTimeFormatted() + { + return makeTimeFormatted; + } + public void setMakeHour(String makeHour) { this.makeHour = makeHour; @@ -523,6 +554,26 @@ public class Order extends BaseEntity return status; } + public void setStatusName(String statusName) + { + this.statusName = statusName; + } + + public String getStatusName() + { + return statusName; + } + + public void setWorkerName(String workerName) + { + this.workerName = workerName; + } + + public String getWorkerName() + { + return workerName; + } + public void setIsPause(Integer isPause) { this.isPause = isPause; @@ -769,6 +820,14 @@ public class Order extends BaseEntity this.uname = uname; } + public String getUphone() { + return uphone; + } + + public void setUphone(String uphone) { + this.uphone = uphone; + } + public int getTzjl() { return tzjl; @@ -988,11 +1047,14 @@ public class Order extends BaseEntity .append("createType", getCreateType()) .append("createPhone", getCreatePhone()) .append("uid", getUid()) + .append("uname", getUname()) + .append("uphone", getUphone()) .append("productId", getProductId()) .append("name", getName()) .append("phone", getPhone()) .append("address", getAddress()) .append("makeTime", getMakeTime()) + .append("makeTimeFormatted", getMakeTimeFormatted()) .append("makeHour", getMakeHour()) .append("num", getNum()) .append("totalPrice", getTotalPrice()) @@ -1003,6 +1065,8 @@ public class Order extends BaseEntity .append("deduction", getDeduction()) .append("payTime", getPayTime()) .append("status", getStatus()) + .append("statusName", getStatusName()) + .append("workerName", getWorkerName()) .append("isPause", getIsPause()) .append("mark", getMark()) .append("addressId", getAddressId()) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/PayMoneyLog.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/PayMoneyLog.java index 044c7d1..407b888 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/PayMoneyLog.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/PayMoneyLog.java @@ -26,7 +26,6 @@ public class PayMoneyLog extends BaseEntity private Long oid; /** 订单ID */ - @Excel(name = "订单号码") private String ocode; /** 订单号 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceGoods.java index f936097..d781e59 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceGoods.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceGoods.java @@ -26,15 +26,15 @@ public class ServiceGoods extends BaseEntity private String title; /** 图标 */ - @Excel(name = "图标") + // @Excel(name = "图标") private String icon; /** 轮播图 */ - @Excel(name = "轮播图") + //@Excel(name = "轮播图") private String imgs; /** 副标题 */ - @Excel(name = "副标题") + // @Excel(name = "副标题") private String subTitle; /** 简介 */ @@ -58,158 +58,181 @@ public class ServiceGoods extends BaseEntity private Long stock; /** 状态 */ - @Excel(name = "状态") private String status; + + /** 状态名称(用于导出显示) */ + @Excel(name = "状态") + private String statusName; /** 详情 */ - @Excel(name = "详情") + // @Excel(name = "详情") private String description; - - /** 规格类型 1:单规格 2:多规格 */ - @Excel(name = "下单类型 1:预约下单 2:报价下单") + /** 下单类型 1:预约下单 2:报价下单 */ private Integer servicetype; + + /** 下单类型名称(用于导出显示) */ + @Excel(name = "下单类型") + private String serviceTypeName; - /** 规格类型 1:单规格 2:多规格 */ - @Excel(name = "规格类型 1:单规格 2:多规格") + /** 规格类型 1:单规格 2:多规格 */ private Integer skuType; + + /** 规格类型名称(用于导出显示) */ + @Excel(name = "规格类型") + private String skuTypeName; /** 规格 */ - @Excel(name = "规格") private String sku; /** 经度 */ - @Excel(name = "经度") private String latitude; /** 纬度 */ - @Excel(name = "纬度") private String longitude; /** 1:服务 2:商品 */ - @Excel(name = "1:服务 2:商品") private Integer type; + + /** 类型名称(用于导出显示) */ + @Excel(name = "类型") + private String typeName; /** 分类 */ - @Excel(name = "分类") private Long cateId; /** 一级分类ID */ - @Excel(name = "一级分类ID") private Long firstCateId; /** 二级分类ID */ - @Excel(name = "二级分类ID") private Long secondCateId; -/** 分类 */ -@Excel(name = "分类名称") -private String cateName; + /** 分类名称 */ + @Excel(name = "分类名称") + private String cateName; + /** 适用城市 */ + //@Excel(name = "适用城市") + private String cityNames; /** 服务项目 */ - @Excel(name = "服务项目") + //@Excel(name = "服务项目") private String project; /** 排序 */ @Excel(name = "排序") private Integer sort; - /** 排序 */ - @Excel(name = "是否跳转服务") + /** 是否跳转服务 */ private Integer isforservice; + + /** 是否跳转服务名称(用于导出显示) */ + // @Excel(name = "是否跳转服务") + private String isForServiceName; - - /** 排序 */ - @Excel(name = "跳转服务id") + /** 跳转服务id */ private Integer forserviceid; - - - /** 物料费用 */ - - - @Excel(name = "物料费用") + //@Excel(name = "物料费用") private String material; /** 邮费 */ - @Excel(name = "邮费") + //@Excel(name = "邮费") private BigDecimal postage; /** 基检现象 */ - @Excel(name = "基检现象") + //@Excel(name = "基检现象") private String basic; /** 保证金 */ - @Excel(name = "保证金") + //@Excel(name = "保证金") private BigDecimal margin; /** 所需技能 */ - @Excel(name = "所需技能") + //@Excel(name = "所需技能") + private String skillNames; + + /** 所需技能ID(数据库字段) */ private String skillIds; - - /** 是否可拼团 1:是 2:否 */ - @Excel(name = "是否可拼团 1:是 2:否") + /** 是否可拼团 1:是 2:否 */ private Integer isgroup; + + /** 是否可拼团名称(用于导出显示) */ + //@Excel(name = "是否可拼团") + private String isGroupName; /** 拼团价 */ - @Excel(name = "拼团价") + //@Excel(name = "拼团价") private BigDecimal groupprice; - /** 是否可设置次卡 1:是 2:否 */ - @Excel(name = "是否可设置次卡 1:是 2:否") - private Integer isonce; - - /** 次卡价格 */ - @Excel(name = "次卡价格") - private BigDecimal onceprice; - - /** 分佣模式 1:系统分佣 2:独立分佣 3:不分佣 */ - @Excel(name = "分佣模式 1:系统分佣 2:独立分佣 3:不分佣") - private Integer commissiontype; - - /** 分佣比例 */ - @Excel(name = "分佣比例") - private BigDecimal commission; - - /** 派单模式 1:系统派单 2:后台手动派单 3:指定工人 */ - @Excel(name = "派单模式 1:系统派单 2:后台手动派单 3:指定工人") - private Integer dispatchtype; - - /** 指定工人的id集合 */ - @Excel(name = "指定工人的id集合") - private String workerids; - - /** 是否为一口价 1:是 2:否 */ - @Excel(name = "是否为一口价 1:是 2:否") - private Integer isfixed; - - /** 一口价价格 */ - @Excel(name = "一口价价格") - private BigDecimal fixedprice; - - /** 派单模式 1:系统派单 2:后台手动派单 3:指定工人 */ - @Excel(name = "拼团人数") + /** 拼团人数 */ + // @Excel(name = "拼团人数") private Integer groupnum; + /** 是否可设置次卡 1:是 2:否 */ + private Integer isonce; + + /** 是否可设置次卡名称(用于导出显示) */ + //@Excel(name = "是否可设置次卡") + private String isOnceName; + + /** 次卡价格 */ + //@Excel(name = "次卡价格") + private BigDecimal onceprice; + + /** 分佣模式 1:系统分佣 2:独立分佣 3:不分佣 */ + private Integer commissiontype; + + /** 分佣模式名称(用于导出显示) */ + //@Excel(name = "分佣模式") + private String commissionTypeName; + + /** 分佣比例 */ + //@Excel(name = "分佣比例") + private BigDecimal commission; + + /** 派单模式 1:系统派单 2:后台手动派单 3:指定工人 */ + private Integer dispatchtype; + + /** 派单模式名称(用于导出显示) */ + //@Excel(name = "派单模式") + private String dispatchTypeName; /** 指定工人的id集合 */ - @Excel(name = "问答") - private String questions; + private String workerids; + + /** 指定工人名称(用于导出显示) */ + //@Excel(name = "指定工人") + private String workerNames; + + /** 是否为一口价 1:是 2:否 */ + private Integer isfixed; + + /** 是否为一口价名称(用于导出显示) */ + // @Excel(name = "是否为一口价") + private String isFixedName; + + /** 一口价价格 */ + //@Excel(name = "一口价价格") + private BigDecimal fixedprice; + + /** 问答 */ + //@Excel(name = "问答数量") + private String questionCount; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date createdAt; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date updatedAt; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Date deletedAt; private String city; @@ -479,6 +502,16 @@ private String cateName; return margin; } + public void setSkillNames(String skillNames) + { + this.skillNames = skillNames; + } + + public String getSkillNames() + { + return skillNames; + } + public void setSkillIds(String skillIds) { this.skillIds = skillIds; @@ -657,11 +690,11 @@ private String cateName; } public String getQuestions() { - return questions; + return questionCount; } - public void setQuestions(String questions) { - this.questions = questions; + public void setQuestions(String questionCount) { + this.questionCount = questionCount; } public Integer getIsforservice() { @@ -689,6 +722,111 @@ private String cateName; this.city = city; } + // 新增字段的getter和setter方法 + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getServiceTypeName() { + return serviceTypeName; + } + + public void setServiceTypeName(String serviceTypeName) { + this.serviceTypeName = serviceTypeName; + } + + public String getSkuTypeName() { + return skuTypeName; + } + + public void setSkuTypeName(String skuTypeName) { + this.skuTypeName = skuTypeName; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getCityNames() { + return cityNames; + } + + public void setCityNames(String cityNames) { + this.cityNames = cityNames; + } + + public String getIsForServiceName() { + return isForServiceName; + } + + public void setIsForServiceName(String isForServiceName) { + this.isForServiceName = isForServiceName; + } + + public String getIsGroupName() { + return isGroupName; + } + + public void setIsGroupName(String isGroupName) { + this.isGroupName = isGroupName; + } + + public String getIsOnceName() { + return isOnceName; + } + + public void setIsOnceName(String isOnceName) { + this.isOnceName = isOnceName; + } + + public String getCommissionTypeName() { + return commissionTypeName; + } + + public void setCommissionTypeName(String commissionTypeName) { + this.commissionTypeName = commissionTypeName; + } + + public String getDispatchTypeName() { + return dispatchTypeName; + } + + public void setDispatchTypeName(String dispatchTypeName) { + this.dispatchTypeName = dispatchTypeName; + } + + public String getWorkerNames() { + return workerNames; + } + + public void setWorkerNames(String workerNames) { + this.workerNames = workerNames; + } + + public String getIsFixedName() { + return isFixedName; + } + + public void setIsFixedName(String isFixedName) { + this.isFixedName = isFixedName; + } + + public String getQuestionCount() { + return questionCount; + } + + public void setQuestionCount(String questionCount) { + this.questionCount = questionCount; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -716,6 +854,7 @@ private String cateName; .append("postage", getPostage()) .append("basic", getBasic()) .append("margin", getMargin()) + .append("skillNames", getSkillNames()) .append("skillIds", getSkillIds()) .append("createdAt", getCreatedAt()) .append("updatedAt", getUpdatedAt()) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserSecondaryCard.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserSecondaryCard.java index c8ccd37..bac4c85 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserSecondaryCard.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserSecondaryCard.java @@ -24,83 +24,79 @@ public class UserSecondaryCard extends BaseEntity /** $column.columnComment */ private Long id; - /** 订单id */ - @Excel(name = "订单id") + /** 订单ID */ + @Excel(name = "订单ID", width = 15) private String orderid; /** 标题 */ - @Excel(name = "标题") + @Excel(name = "标题", width = 20) private String title; - /** 服务id */ - @Excel(name = "服务id") + /** 服务ID */ private String goodsids; - /** 服务id */ - @Excel(name = "服务名称") + /** 服务名称 */ + @Excel(name = "服务名称", width = 25) private String goodsname; - /** 服务id */ - @Excel(name = "轮播图") + /** 轮播图 */ private String carouselImage; - - /** 服务id */ - @Excel(name = "简介") + /** 简介 */ + @Excel(name = "简介", width = 15) private String introduction; - - /** 展示价格 */ - @Excel(name = "展示价格") + @Excel(name = "展示价格", width = 12) private BigDecimal showMoney; /** 真实付款价格 */ - @Excel(name = "真实付款价格") + @Excel(name = "真实付款价格", width = 12) private BigDecimal realMoney; /** 展示图片 */ - @Excel(name = "展示图片") private String showimage; - /** 状态 1上线 2下线 */ - @Excel(name = "状态 1上线 2下线") + /** 状态 1上线 2下线 3下架 */ private Long status; + + /** 状态名称(用于导出显示) */ + @Excel(name = "状态", width = 8) + private String statusName; /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") + @Excel(name = "创建时间", width = 15, dateFormat = "yyyy-MM-dd") private Date creattime; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + /** 创建时间 */ private Date createdAt; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + /** 更新时间 */ private Date updatedAt; - /** 分类 */ - @Excel(name = "分类") + /** 分类ID */ private Long type; - /** 分类 */ - @Excel(name = "分类名称") + /** 分类名称 */ + @Excel(name = "分类名称", width = 12) private String typename; /** 可提供服务数 */ - @Excel(name = "可提供服务数") + @Excel(name = "可提供服务数", width = 12) private Long num; - - /** 可提供服务数 */ - @Excel(name = "服务详情") + /** 服务详情 */ private List ServiceDetail; /** 总服务数 */ - @Excel(name = "总服务数") + @Excel(name = "总服务数", width = 12) private Long allnum; + /** 可用/总数(用于导出显示) */ + @Excel(name = "可用/总数", width = 12) + private String serviceCountDisplay; + public void setId(Long id) { this.id = id; @@ -180,6 +176,16 @@ public class UserSecondaryCard extends BaseEntity { return status; } + + public String getStatusName() + { + return statusName; + } + + public void setStatusName(String statusName) + { + this.statusName = statusName; + } public void setCreattime(Date creattime) { @@ -241,6 +247,14 @@ public class UserSecondaryCard extends BaseEntity return allnum; } + public String getServiceCountDisplay() { + return serviceCountDisplay; + } + + public void setServiceCountDisplay(String serviceCountDisplay) { + this.serviceCountDisplay = serviceCountDisplay; + } + public String getGoodsname() { return goodsname; @@ -293,12 +307,14 @@ public class UserSecondaryCard extends BaseEntity .append("realMoney", getRealMoney()) .append("showimage", getShowimage()) .append("status", getStatus()) + .append("statusName", getStatusName()) .append("creattime", getCreattime()) .append("createdAt", getCreatedAt()) .append("updatedAt", getUpdatedAt()) .append("type", getType()) .append("num", getNum()) .append("allnum", getAllnum()) + .append("serviceCountDisplay", getServiceCountDisplay()) .toString(); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserUseSecondaryCard.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserUseSecondaryCard.java index d008249..63e91ae 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserUseSecondaryCard.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserUseSecondaryCard.java @@ -22,47 +22,54 @@ public class UserUseSecondaryCard extends BaseEntity private Long id; /** 用户id */ - @Excel(name = "用户id") + @Excel(name = "用户ID") private Long uid; + + /** 用户名称(用于导出显示) */ + @Excel(name = "用户名称") + private String userName; /** 次卡id */ - @Excel(name = "次卡id") + @Excel(name = "次卡ID") private String carid; /** 服务id */ - @Excel(name = "服务id") private String goodsids; /** 用户可用数量 */ - @Excel(name = "用户可用数量") + @Excel(name = "可用数量") private Long num; /** 用户已用数量 */ - @Excel(name = "用户已用数量") + @Excel(name = "已用数量") private Long usenum; /** 订单id */ - @Excel(name = "订单id") + @Excel(name = "订单ID") private String orderid; /** 支付id */ - @Excel(name = "支付id") + @Excel(name = "支付ID") private String transactionId; /** 支付金额 */ @Excel(name = "支付金额") private BigDecimal paymoney; - /** 状态 1可用 2已用完 3已退款 */ - @Excel(name = "状态 1可用 2已用完 3已退款") + /** 状态 1可用 2已用完 3已退款 4未支付 */ private Long status; + + /** 状态名称(用于导出显示) */ + @Excel(name = "状态") + private String statusName; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date createdAt; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updatedAt; @@ -88,6 +95,16 @@ public class UserUseSecondaryCard extends BaseEntity return uid; } + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserName() + { + return userName; + } + public void setCarid(String carid) { this.carid = carid; @@ -167,6 +184,16 @@ public class UserUseSecondaryCard extends BaseEntity { return status; } + + public String getStatusName() + { + return statusName; + } + + public void setStatusName(String statusName) + { + this.statusName = statusName; + } public void setCreatedAt(Date createdAt) { @@ -202,6 +229,7 @@ public class UserUseSecondaryCard extends BaseEntity return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("uid", getUid()) + .append("userName", getUserName()) .append("carid", getCarid()) .append("goodsids", getGoodsids()) .append("num", getNum()) @@ -210,6 +238,7 @@ public class UserUseSecondaryCard extends BaseEntity .append("transactionId", getTransactionId()) .append("paymoney", getPaymoney()) .append("status", getStatus()) + .append("statusName", getStatusName()) .append("createdAt", getCreatedAt()) .append("updatedAt", getUpdatedAt()) .toString(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Users.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Users.java index 3a56c79..f9d91aa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Users.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Users.java @@ -37,29 +37,35 @@ public class Users extends BaseEntity private String phone; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String password; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String rememberToken; /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + @Excel(name = "微信OPENID") private String openid; /** 头像 */ - @Excel(name = "头像") + //@Excel(name = "头像") private String avatar; /** 1:普通用户 2:师傅 */ - @Excel(name = "1:普通用户 2:师傅") private String type; + + /** 用户类型名称(用于导出显示) */ + @Excel(name = "用户类型") + private String typeName; /** 师傅签到时间 */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "师傅签到时间", width = 30, dateFormat = "yyyy-MM-dd") private Date workerTime; + + /** 师傅签到时间(用于导出显示) */ + @Excel(name = "签到时间", width = 15, dateFormat = "yyyy-MM-dd") + private String workerTimeFormatted; /** 可用积分 */ @Excel(name = "可用积分") @@ -70,19 +76,28 @@ public class Users extends BaseEntity private Long totalIntegral; /** 1:启用 0:关闭 */ - @Excel(name = "1:启用 0:关闭") private Integer status; + + /** 状态名称(用于导出显示) */ + @Excel(name = "状态") + private String statusName; /**是否为师傅 是否为师傅1是,0否 */ - @Excel(name = "1:是 ,0:否") private Integer isWork; + + /** 是否为师傅名称(用于导出显示) */ + @Excel(name = "是否为师傅") + private String isWorkName; /** 师傅等级 */ - @Excel(name = "师傅等级") private Integer level; + + /** 师傅等级名称(用于导出显示) */ + @Excel(name = "等级") + private String levelName; /** 师傅佣金 */ - @Excel(name = "师傅佣金") + @Excel(name = "当前佣金") private BigDecimal commission; /** 累计佣金 */ @@ -99,43 +114,56 @@ public class Users extends BaseEntity /** 禁止接单开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "禁止接单开始时间", width = 30, dateFormat = "yyyy-MM-dd") private Date prohibitTime; + + /** 禁止接单开始时间(用于导出显示) */ + @Excel(name = "暂停到期时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm") + private String prohibitTimeFormatted; /** 禁止接单时长 */ - @Excel(name = "禁止接单时长") + @Excel(name = "暂停时长(小时)") private Integer prohibitTimeNum; /** 师傅累计接单 */ - @Excel(name = "师傅累计接单") + @Excel(name = "本月累计单量") private Long toa; /** 师傅服务城市 */ - @Excel(name = "师傅服务城市") private Long serviceCityPid; /** 师傅服务区域 */ - @Excel(name = "师傅服务区域") private String serviceCityIds; + + /** 师傅服务区域名称(用于导出显示) */ + @Excel(name = "服务区域") + private String serviceCityNames; /** 师傅技能ID */ - @Excel(name = "师傅技能ID") private String skillIds; + + /** 师傅技能名称(用于导出显示) */ + @Excel(name = "技能") + private String skillNames; /** 累计提现 */ @Excel(name = "累计提现") private BigDecimal propose; /** 1:已退出 2:未退出 */ - @Excel(name = "1:已退出 2:未退出") private Integer loginStatus; + + /** 使用状态名称(用于导出显示) */ + @Excel(name = "使用状态") + private String loginStatusName; /** 0:默认 1:停止接单 */ - @Excel(name = "0:默认 1:停止接单") private Integer isStop; + + /** 接单状态名称(用于导出显示) */ + @Excel(name = "接单状态") + private String isStopName; /** 1:虚拟号码-已认证 */ - @Excel(name = "1:虚拟号码-已认证") private Integer middleAuth; @@ -707,6 +735,87 @@ public class Users extends BaseEntity public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } + // 新增字段的getter和setter方法 + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getWorkerTimeFormatted() { + return workerTimeFormatted; + } + + public void setWorkerTimeFormatted(String workerTimeFormatted) { + this.workerTimeFormatted = workerTimeFormatted; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getIsWorkName() { + return isWorkName; + } + + public void setIsWorkName(String isWorkName) { + this.isWorkName = isWorkName; + } + + public String getLevelName() { + return levelName; + } + + public void setLevelName(String levelName) { + this.levelName = levelName; + } + + public String getProhibitTimeFormatted() { + return prohibitTimeFormatted; + } + + public void setProhibitTimeFormatted(String prohibitTimeFormatted) { + this.prohibitTimeFormatted = prohibitTimeFormatted; + } + + public String getServiceCityNames() { + return serviceCityNames; + } + + public void setServiceCityNames(String serviceCityNames) { + this.serviceCityNames = serviceCityNames; + } + + public String getSkillNames() { + return skillNames; + } + + public void setSkillNames(String skillNames) { + this.skillNames = skillNames; + } + + public String getLoginStatusName() { + return loginStatusName; + } + + public void setLoginStatusName(String loginStatusName) { + this.loginStatusName = loginStatusName; + } + + public String getIsStopName() { + return isStopName; + } + + public void setIsStopName(String isStopName) { + this.isStopName = isStopName; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GoodsOrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GoodsOrderMapper.java index c031317..be4fefb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GoodsOrderMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GoodsOrderMapper.java @@ -85,4 +85,12 @@ public interface GoodsOrderMapper * @return 结果 */ public int deleteGoodsOrderByIds(Long[] ids); + + /** + * 查询商品订单列表(导出专用,按主订单分组,包含所有关联信息) + * + * @param goodsOrder 商品订单 + * @return 商品订单集合 + */ + public List selectGoodsOrderListForExport(GoodsOrder goodsOrder); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderMapper.java index 2e35e19..1537da0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderMapper.java @@ -188,4 +188,12 @@ public interface OrderMapper * @return 首次下单的订单ID,如果没有找到返回null */ public String selectUserFirstOrderId(@Param("userId") Long userId); + + /** + * 查询服务订单列表(导出专用,包含所有关联信息) + * + * @param order 服务订单 + * @return 服务订单集合 + */ + public List selectOrderListForExport(Order order); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PayMoneyLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PayMoneyLogMapper.java index 8bc7a6e..5d2b999 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PayMoneyLogMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PayMoneyLogMapper.java @@ -58,4 +58,19 @@ public interface PayMoneyLogMapper * @return 结果 */ public int deletePayMoneyLogByIds(Long[] ids); + + /** + * 查询支付记录统计数据 + * + * @return 统计数据 + */ + public java.util.Map selectPayMoneyLogStatistics(); + + /** + * 查询支付记录列表(导出专用,包含用户信息) + * + * @param payMoneyLog 支付记录 + * @return 支付记录集合 + */ + public List selectPayMoneyLogListForExport(PayMoneyLog payMoneyLog); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/WechatTransferMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/WechatTransferMapper.java index cefec20..a4e2df3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/WechatTransferMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/WechatTransferMapper.java @@ -63,4 +63,12 @@ public interface WechatTransferMapper * 统计汇总:总申请金额、已到账金额、处理中金额(不计入状态3) */ public java.util.Map selectWechatTransferSummary(WechatTransfer wechatTransfer); + + /** + * 查询wechat_transfer列表(导出专用,包含用户信息) + * + * @param wechatTransfer wechat_transfer + * @return wechat_transfer集合 + */ + public List selectWechatTransferListForExport(WechatTransfer wechatTransfer); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IGoodsOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IGoodsOrderService.java index 763c2f2..4a7e0bb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IGoodsOrderService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IGoodsOrderService.java @@ -76,4 +76,12 @@ public interface IGoodsOrderService * @return 结果 */ public int deleteGoodsOrderById(Long id); + + /** + * 查询商品订单列表(导出专用,按主订单分组,包含所有关联信息) + * + * @param goodsOrder 商品订单 + * @return 商品订单集合 + */ + public List selectGoodsOrderListForExport(GoodsOrder goodsOrder); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderService.java index 870a56d..44f402d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderService.java @@ -186,4 +186,12 @@ public interface IOrderService * @return 首次下单的订单ID,如果没有找到返回null */ public String selectUserFirstOrderId(Long userId); + + /** + * 查询服务订单列表(导出专用,包含所有关联信息) + * + * @param order 服务订单 + * @return 服务订单集合 + */ + public List selectOrderListForExport(Order order); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IPayMoneyLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IPayMoneyLogService.java index 541715c..6affdc1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IPayMoneyLogService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IPayMoneyLogService.java @@ -58,4 +58,19 @@ public interface IPayMoneyLogService * @return 结果 */ public int deletePayMoneyLogById(Long id); + + /** + * 获取支付记录统计数据 + * + * @return 统计数据 + */ + public java.util.Map getPayMoneyLogStatistics(); + + /** + * 查询支付记录列表(导出专用,包含用户信息) + * + * @param payMoneyLog 支付记录 + * @return 支付记录集合 + */ + public List selectPayMoneyLogListForExport(PayMoneyLog payMoneyLog); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IWechatTransferService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IWechatTransferService.java index 88b23a5..d3c0585 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IWechatTransferService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IWechatTransferService.java @@ -63,4 +63,12 @@ public interface IWechatTransferService * 统计汇总:总申请金额、已到账金额、处理中金额(不含状态3) */ public java.util.Map selectWechatTransferSummary(WechatTransfer wechatTransfer); + + /** + * 查询wechat_transfer列表(导出专用,包含用户信息) + * + * @param wechatTransfer wechat_transfer + * @return wechat_transfer集合 + */ + public List selectWechatTransferListForExport(WechatTransfer wechatTransfer); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GoodsOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GoodsOrderServiceImpl.java index 069017d..8ff8788 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GoodsOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GoodsOrderServiceImpl.java @@ -122,4 +122,16 @@ public class GoodsOrderServiceImpl implements IGoodsOrderService { return goodsOrderMapper.deleteGoodsOrderById(id); } + + /** + * 查询商品订单列表(导出专用,按主订单分组,包含所有关联信息) + * + * @param goodsOrder 商品订单 + * @return 商品订单集合 + */ + @Override + public List selectGoodsOrderListForExport(GoodsOrder goodsOrder) + { + return goodsOrderMapper.selectGoodsOrderListForExport(goodsOrder); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java index b8eef72..c5d9d50 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java @@ -225,4 +225,16 @@ public class OrderServiceImpl implements IOrderService public String selectUserFirstOrderId(Long userId) { return orderMapper.selectUserFirstOrderId(userId); } + + /** + * 查询服务订单列表(导出专用,包含所有关联信息) + * + * @param order 服务订单 + * @return 服务订单集合 + */ + @Override + public List selectOrderListForExport(Order order) + { + return orderMapper.selectOrderListForExport(order); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PayMoneyLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PayMoneyLogServiceImpl.java index 0115e8d..c0075be 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PayMoneyLogServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PayMoneyLogServiceImpl.java @@ -90,4 +90,27 @@ public class PayMoneyLogServiceImpl implements IPayMoneyLogService { return payMoneyLogMapper.deletePayMoneyLogById(id); } + + /** + * 获取支付记录统计数据 + * + * @return 统计数据 + */ + @Override + public java.util.Map getPayMoneyLogStatistics() + { + return payMoneyLogMapper.selectPayMoneyLogStatistics(); + } + + /** + * 查询支付记录列表(导出专用,包含用户信息) + * + * @param payMoneyLog 支付记录 + * @return 支付记录集合 + */ + @Override + public List selectPayMoneyLogListForExport(PayMoneyLog payMoneyLog) + { + return payMoneyLogMapper.selectPayMoneyLogListForExport(payMoneyLog); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTransferServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTransferServiceImpl.java index 3c4096f..11fc87b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTransferServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTransferServiceImpl.java @@ -99,4 +99,16 @@ public class WechatTransferServiceImpl implements IWechatTransferService { return wechatTransferMapper.selectWechatTransferSummary(wechatTransfer); } + + /** + * 查询wechat_transfer列表(导出专用,包含用户信息) + * + * @param wechatTransfer wechat_transfer + * @return wechat_transfer集合 + */ + @Override + public List selectWechatTransferListForExport(WechatTransfer wechatTransfer) + { + return wechatTransferMapper.selectWechatTransferListForExport(wechatTransfer); + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/GoodsOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/system/GoodsOrderMapper.xml index c29ce84..3fd5255 100644 --- a/ruoyi-system/src/main/resources/mapper/system/GoodsOrderMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/GoodsOrderMapper.xml @@ -58,6 +58,71 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, type, main_order_id,returnshow,ismany,returnrealmoney, returnstatus,order_id,returntime,returnmoney,returnfinshtime,returntype,returnreason,returnfiledata,returnlogistics,returnlogisticscode,returnjson, transaction_id,forserviceid,isforservice,isself,coupon_id,shopadresssid, uid, product_id, name, phone, address, num, total_price, good_price, service_price, pay_price, deduction, postage, pay_time, status, delivery_id, delivery_num, send_time, mark, address_id, sku, created_at, updated_at, deleted_at from goods_order @@ -83,7 +148,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and status = #{status} and product_id = #{productId} and order_id like concat('%', #{orderId}, '%') - + and name like concat('%', #{name}, '%') + and phone like concat('%', #{phone}, '%') + and isself=#{isself} and main_order_id like concat('%', #{mainOrderId}, '%') @@ -319,4 +386,124 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/OrderMapper.xml b/ruoyi-system/src/main/resources/mapper/system/OrderMapper.xml index fe481e4..50f6bf6 100644 --- a/ruoyi-system/src/main/resources/mapper/system/OrderMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/OrderMapper.xml @@ -18,6 +18,7 @@ + @@ -793,4 +794,168 @@ #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/PayMoneyLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/PayMoneyLogMapper.xml index a476c8d..e221d47 100644 --- a/ruoyi-system/src/main/resources/mapper/system/PayMoneyLogMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/PayMoneyLogMapper.xml @@ -15,6 +15,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + select id, oid, order_id, uid, price, mark, pay_time, created_at, updated_at from pay_money_log @@ -23,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + SELECT + IFNULL(SUM(CASE WHEN price > 0 THEN price ELSE 0 END), 0) as income, + IFNULL(ABS(SUM(CASE WHEN price < 0 THEN price ELSE 0 END)), 0) as expense, + IFNULL(SUM(price), 0) as balance + FROM pay_money_log + + + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/UserSecondaryCardMapper.xml b/ruoyi-system/src/main/resources/mapper/system/UserSecondaryCardMapper.xml index a9a503e..07aa9cb 100644 --- a/ruoyi-system/src/main/resources/mapper/system/UserSecondaryCardMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/UserSecondaryCardMapper.xml @@ -32,8 +32,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/system/PayMoneyLog.js b/ruoyi-ui/src/api/system/PayMoneyLog.js index 1938df7..1bf97ad 100644 --- a/ruoyi-ui/src/api/system/PayMoneyLog.js +++ b/ruoyi-ui/src/api/system/PayMoneyLog.js @@ -16,6 +16,14 @@ export function getPayMoneyLog(id) { method: 'get' }) } + +// 查询支付记录统计数据 +export function getPayMoneyLogStatistics() { + return request({ + url: '/system/PayMoneyLog/getStatistics', + method: 'get' + }) +} // 查询wechat_transfer详细 export function getUserDataList(type) { return request({ diff --git a/ruoyi-ui/src/views/system/GoodsOrder/index.vue b/ruoyi-ui/src/views/system/GoodsOrder/index.vue index dba4b03..43f8723 100644 --- a/ruoyi-ui/src/views/system/GoodsOrder/index.vue +++ b/ruoyi-ui/src/views/system/GoodsOrder/index.vue @@ -11,14 +11,14 @@ /> - - - + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -166,13 +217,13 @@ 导出数据 + >导出 @@ -189,7 +240,8 @@ - + + - + @@ -1329,7 +1381,12 @@ export default { this.currentRefundPaymentData = null; this.getList(); // 刷新列表 }, - + /** 导出按钮操作 */ + handleExport() { + this.download('system/GoodsOrder/export', { + ...this.queryParams + }, `GoodsOrder_${new Date().getTime()}.xlsx`) + }, /** 统一退款按钮操作 */ handleUnifiedRefund(row) { this.currentRefundOrder = row; diff --git a/ruoyi-ui/src/views/system/GoodsShangPin/index.vue b/ruoyi-ui/src/views/system/GoodsShangPin/index.vue index 5aab03d..54c0733 100644 --- a/ruoyi-ui/src/views/system/GoodsShangPin/index.vue +++ b/ruoyi-ui/src/views/system/GoodsShangPin/index.vue @@ -17,16 +17,16 @@ @keyup.enter.native="handleQuery" /> - - - - - + + + + + + + + + + - @@ -94,6 +94,16 @@ @click="handleDelete" v-hasPermi="['system:ServiceGoods:remove']" >删除 + + 导出 + @@ -747,8 +757,9 @@ export default { /** 导出按钮操作 */ handleExport() { this.download('system/ServiceGoods/export', { - ...this.queryParams - }); + ...this.queryParams, + type: '2' // 确保传递商品类型参数 + }, `商品数据_${new Date().getTime()}.xlsx`); }, // 添加问答 addQuestion() { diff --git a/ruoyi-ui/src/views/system/Order/index.vue b/ruoyi-ui/src/views/system/Order/index.vue index b453b84..74031ab 100644 --- a/ruoyi-ui/src/views/system/Order/index.vue +++ b/ruoyi-ui/src/views/system/Order/index.vue @@ -82,18 +82,18 @@ /> - - - + + + + + + + + + + + + 删除 + + 导出 +
- + - + + + + +
+
+ +
+
+
总收入
+
¥{{ formatMoney(statistics.income) }}
+
+
+
+
+ + +
+
+ +
+
+
总支出
+
¥{{ formatMoney(statistics.expense) }}
+
+
+
+
+ + +
+
+ +
+
+
余额
+
+ ¥{{ formatMoney(statistics.balance) }} +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 导出 + + + + - + @@ -134,7 +223,7 @@ + + diff --git a/ruoyi-ui/src/views/system/ServiceGoods/index.vue b/ruoyi-ui/src/views/system/ServiceGoods/index.vue index d8a7199..4108b68 100644 --- a/ruoyi-ui/src/views/system/ServiceGoods/index.vue +++ b/ruoyi-ui/src/views/system/ServiceGoods/index.vue @@ -49,16 +49,16 @@ @keyup.enter.native="handleQuery" /> - - - - - + + + + + + + + + + - @@ -117,6 +117,16 @@ @click="handleDelete" v-hasPermi="['system:ServiceGoods:remove']" >删除 + + 导出 + @@ -407,10 +417,10 @@
城市列表状态: {{ cityLoading ? '加载中...' : `已加载 ${cityList.length} 个城市` }} - @@ -934,7 +944,7 @@ export default { newBasicTag: '', saveTimeout: null, // 用于防抖的定时器 disableGroupAndFixed: false, // 控制拼团和秒杀是否禁用 - + // 城市相关 cityList: [], cityLoading: false, @@ -1682,7 +1692,7 @@ export default { handleExport() { this.download('system/ServiceGoods/export', { ...this.queryParams - }, `ServiceGoods_${new Date().getTime()}.xlsx`) + }, `服务内容数据_${new Date().getTime()}.xlsx`); }, playAudio(url) { this.currentAudioUrl = url @@ -2241,9 +2251,9 @@ export default { this.disableGroupAndFixed = false; } }, - + // ========== 城市相关方法 ========== - + /** 获取城市列表 */ getCityList() { console.log('开始获取城市列表...'); @@ -2258,7 +2268,7 @@ export default { this.cityLoading = false; }); }, - + /** 城市选择变化处理 */ handleCityChange(value) { console.log('城市选择变化:', value); @@ -2267,13 +2277,13 @@ export default { this.$set(this.form, 'cityArray', cityArray); console.log('设置后的城市数组:', this.form.cityArray); }, - + /** 根据城市ID获取城市名称 */ getCityNameById(id) { const city = this.cityList.find(item => item.id === id); return city ? city.title : id; }, - + /** 解析城市字符串为数组 */ getCityArray(cityString) { if (!cityString) return []; @@ -2297,7 +2307,7 @@ export default { } return []; }, - + /** 移除城市 */ removeCity(cityId) { if (!this.form.cityArray) { diff --git a/ruoyi-ui/src/views/system/UserSecondaryCard/index.vue b/ruoyi-ui/src/views/system/UserSecondaryCard/index.vue index 0c1d7d4..160c9a2 100644 --- a/ruoyi-ui/src/views/system/UserSecondaryCard/index.vue +++ b/ruoyi-ui/src/views/system/UserSecondaryCard/index.vue @@ -395,6 +395,17 @@ + + +
+ 导出购买明细 +
import { listUserSecondaryCard, getUserSecondaryCard, delUserSecondaryCard, addUserSecondaryCard, updateUserSecondaryCard ,selectList,selectServiceCateList, getPurchaseDetails} from "@/api/system/UserSecondaryCard" import { getGoodsDataList } from "@/api/system/GoodsOrder" + export default { name: "UserSecondaryCard", dicts: ['cika'], @@ -926,6 +938,19 @@ export default { this.$modal.msgError(`次卡状态更新失败: ${error.msg}`); }); }).catch(() => {}); + }, + + // 导出购买明细 + handleExportPurchaseDetails() { + if (!this.purchaseDetailsList || this.purchaseDetailsList.length === 0) { + this.$message.warning('没有可导出的购买明细数据'); + return; + } + + // 使用项目中标准的导出方式,传递cardId参数 + this.download('system/UserSecondaryCard/exportPurchaseDetails', { + cardId: this.purchaseDetailsData.id + }, `${this.purchaseDetailsData.title || '次卡'}_购买明细_${new Date().getTime()}.xlsx`); } } } @@ -1049,4 +1074,21 @@ export default { .purchase-details-header .el-descriptions { margin-bottom: 0; } + +.export-section { + margin-top: 15px; + text-align: right; + padding: 10px 0; + border-top: 1px solid #ebeef5; +} + +.export-section .el-button { + font-weight: 500; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.export-section .el-button:hover { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + transform: translateY(-1px); +} diff --git a/ruoyi-ui/src/views/system/UsersWorker/index.vue b/ruoyi-ui/src/views/system/UsersWorker/index.vue index dddfcf4..07e243f 100644 --- a/ruoyi-ui/src/views/system/UsersWorker/index.vue +++ b/ruoyi-ui/src/views/system/UsersWorker/index.vue @@ -160,6 +160,16 @@ v-hasPermi="['system:users:remove']" >删除 + + 导出 +