From 3a39dd3122d4b402ff5dce3490d1e5bdb1816f9b Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Mon, 4 Aug 2025 17:42:56 +0800 Subject: [PATCH] =?UTF-8?q?8=E6=9C=884=E6=97=A5=E9=87=91=E8=B1=86=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/bean/BeanRechargeController.java | 15 +++--- .../com/example/demo/domain/DTO/OnlineDTO.java | 4 +- .../domain/vo/bean/BeanOnlineRechargeInfo.java | 60 ++++++++++++++++++++++ .../demo/domain/vo/bean/BeanRechargeInfo.java | 4 +- .../domain/vo/bean/BeanSystemRechargeInfo.java | 60 ++++++++++++++++++++++ .../java/com/example/demo/domain/vo/coin/Page.java | 3 +- .../demo/mapper/bean/BeanRechargeMapper2.java | 5 +- .../demo/mapper/pay/BeanRechargeMapper3.java | 6 +-- .../demo/service/bean/BeanRechargeService.java | 11 ++-- .../serviceImpl/bean/BeanRechargeServiceImpl.java | 29 ++++++----- .../demo/serviceImpl/bean/BeanUserServiceImpl.java | 14 ++--- .../serviceImpl/coin/ExportExcelServiceImpl.java | 9 ++-- .../resources/jindouMapper/BeanRechargeMapper2.xml | 2 +- .../resources/paymapper/BeanRechargeMapper3.xml | 2 +- 14 files changed, 168 insertions(+), 56 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java create mode 100644 src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java diff --git a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java index 47194af..c254645 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java @@ -1,7 +1,8 @@ package com.example.demo.controller.bean; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import com.example.demo.domain.vo.bean.BeanRecharge; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; @@ -53,7 +54,7 @@ public class BeanRechargeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { - return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanRechargeInfo())); + return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanSystemRechargeInfo())); } } catch (Exception e) { e.printStackTrace(); @@ -64,9 +65,9 @@ public class BeanRechargeController { //系统金豆统计 @PostMapping("/statsSystemBean") - public Result statsSystemBean(@RequestBody BeanRechargeInfo beanRechargeInfo) { + public Result statsSystemBean(@RequestBody BeanSystemRechargeInfo beanSystemRechargeInfo) { try { - GoldBean goldBean = beanRechargeService.statsSystemBean(beanRechargeInfo); + GoldBean goldBean = beanRechargeService.statsSystemBean(beanSystemRechargeInfo); return Result.success(goldBean); } catch (Exception e) { return Result.error("请检查数据的格式"); @@ -90,7 +91,7 @@ public class BeanRechargeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { - return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanRechargeInfo())); + return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanOnlineRechargeInfo())); } } catch (Exception e) { e.printStackTrace(); @@ -101,9 +102,9 @@ public class BeanRechargeController { //线上金豆统计 @PostMapping("/statsOnlineBean") - public Result statsOnlineBean(@RequestBody BeanRechargeInfo beanRechargeInfo) { + public Result statsOnlineBean(@RequestBody BeanOnlineRechargeInfo beanOnlineRechargeInfo) { try { - GoldBean goldBean = beanRechargeService.statsOnlineBean(beanRechargeInfo); + GoldBean goldBean = beanRechargeService.statsOnlineBean(beanOnlineRechargeInfo); return Result.success(goldBean); } catch (Exception e) { return Result.error("请检查数据的格式"); diff --git a/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java b/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java index 70a26e6..3247e86 100644 --- a/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java +++ b/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java @@ -1,6 +1,6 @@ package com.example.demo.domain.DTO; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.NoArgsConstructor; @@ -32,5 +32,5 @@ public class OnlineDTO { private Integer page = 1; @NotNull(message = "pageSize不能为空") private Integer pageSize = 20; - private BeanRechargeInfo beanRechargeInfo; + private BeanOnlineRechargeInfo beanRechargeInfo; } diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java b/src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java new file mode 100644 index 0000000..8a42dc8 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java @@ -0,0 +1,60 @@ +package com.example.demo.domain.vo.bean; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * @program: gold-java + * @ClassName BeanRecharge + * @description: + * @author: Double + * @create: 2025−07-30 15:11 + * @Version 1.0 + **/ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class BeanOnlineRechargeInfo { + + + private Long id;//id + @ExcelProperty("精网号") + private Integer jwcode; // 精网号 + @ExcelProperty("客户姓名") + private String name; // 姓名 + @ExcelProperty("所属地区") + private String market; // 所属地区 + @ExcelProperty("金额") + private Double money; // 金额 + @ExcelProperty("数量") + private Integer num; // 数量 + @ExcelProperty("订单号") + private String orderNo; // 订单号 + @ExcelProperty("备注") + private String remark; //备注 + @ExcelProperty("充值平台 PC:1 手机:2") + private String platform; // 充值平台 + @ExcelProperty("充值时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date rechargeTime; // 充值时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date startTime; // 开始时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date endTime; // 结束时间 + @ExcelIgnore + private List markets; // 地区列表 + @ExcelIgnore + private String sortField; //排序字段 + @ExcelIgnore + private String sortOrder; //排序顺序 +} diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java b/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java index 8c5f88f..3dd0e65 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java @@ -42,9 +42,7 @@ public class BeanRechargeInfo { private Integer num; // 数量 @ExcelProperty("订单号") private String orderNo; // 订单号 - @ExcelProperty("备注") - private String remark; //备注 - @ExcelProperty("充值平台") + @ExcelProperty("充值平台 PC:1 手机:2") private String platform; // 充值平台 @ExcelProperty("充值时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java b/src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java new file mode 100644 index 0000000..87fd9ae --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java @@ -0,0 +1,60 @@ +package com.example.demo.domain.vo.bean; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * @program: gold-java + * @ClassName BeanRecharge + * @description: + * @author: Double + * @create: 2025−07-30 15:11 + * @Version 1.0 + **/ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class BeanSystemRechargeInfo { + + + private Long id;//id + @ExcelProperty("精网号") + private Integer jwcode; // 精网号 + @ExcelProperty("客户姓名") + private String name; // 姓名 + @ExcelProperty("所属地区") + private String market; // 所属地区 + @ExcelProperty("免费金豆") + private Integer freeBean; // 免费豆 + @ExcelProperty("永久金豆") + private Integer permanentBean; // 永久豆 + @ExcelProperty("金额") + private Double money; // 金额 + @ExcelProperty("备注") + private String remark; //备注 + @ExcelProperty("充值平台 PC:1 手机:2") + private String platform; // 充值平台 + @ExcelProperty("充值时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date rechargeTime; // 充值时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date startTime; // 开始时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date endTime; // 结束时间 + @ExcelIgnore + private List markets; // 地区列表 + @ExcelIgnore + private String sortField; //排序字段 + @ExcelIgnore + private String sortOrder; //排序顺序 +} diff --git a/src/main/java/com/example/demo/domain/vo/coin/Page.java b/src/main/java/com/example/demo/domain/vo/coin/Page.java index 428ff9a..7f727a1 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/Page.java +++ b/src/main/java/com/example/demo/domain/vo/coin/Page.java @@ -34,7 +34,8 @@ public class Page { private BeanConsumeLive beanConsumeLive; //直播金豆消费 private BeanConsumeFan beanConsumeFan; //铁粉金豆消费 private BeanConsumeArticle beanConsumeArticle; //文章金豆消费 - private BeanRechargeInfo beanRechargeInfo; //金豆充值信息 + private BeanSystemRechargeInfo beanSystemRechargeInfo; //金豆充值信息 + private BeanOnlineRechargeInfo beanOnlineRechargeInfo; //金豆充值信息 private BeanConsumeGold beanConsumeGold; //金豆消费合计数 private BeanUser beanUser; //客户金豆余额明细 private BeanUserCard beanUserCard; //客户金豆卡片 diff --git a/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java b/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java index f61556e..8efcef8 100644 --- a/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java +++ b/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java @@ -1,7 +1,8 @@ package com.example.demo.mapper.bean; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; + +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -18,7 +19,7 @@ import java.util.List; @Mapper public interface BeanRechargeMapper2 { - List selectBySystem(BeanRechargeInfo beanRechargeInfo); + List selectBySystem(BeanSystemRechargeInfo beanSystemRechargeInfo); List systemMarket(); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java b/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java index 8f32789..9038f66 100644 --- a/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java +++ b/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java @@ -1,7 +1,7 @@ package com.example.demo.mapper.pay; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -18,7 +18,7 @@ import java.util.List; @Mapper public interface BeanRechargeMapper3 { - List selectByOnline(BeanRechargeInfo beanRechargeInfo); + List selectByOnline(BeanOnlineRechargeInfo beanOnlineRechargeInfo); - List systemMarket(); + List onlineMarket(); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/bean/BeanRechargeService.java b/src/main/java/com/example/demo/service/bean/BeanRechargeService.java index fd41a35..66f8ad6 100644 --- a/src/main/java/com/example/demo/service/bean/BeanRechargeService.java +++ b/src/main/java/com/example/demo/service/bean/BeanRechargeService.java @@ -1,7 +1,8 @@ package com.example.demo.service.bean; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.RefundUser; import com.example.demo.domain.vo.coin.Result; @@ -25,16 +26,16 @@ public interface BeanRechargeService { Result add(BeanRecharge recharge); //系统充值 - PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo); + PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanRechargeInfo); //系统金豆统计 - GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo); + GoldBean statsSystemBean(BeanSystemRechargeInfo beanRechargeInfo); //线上充值 - PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo); + PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanRechargeInfo); //线上金豆统计 - GoldBean statsOnlineBean(BeanRechargeInfo beanRechargeInfo); + GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanRechargeInfo); //获取系统充值地区 List systemMarket(); diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java index ca630d1..0427fb9 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java @@ -1,7 +1,8 @@ package com.example.demo.serviceImpl.bean; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import com.example.demo.domain.vo.bean.BeanRecharge; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.GoldUser; @@ -115,17 +116,17 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { //系统充值明细 @Override - public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){ + public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanSystemRechargeInfo){ PageHelper.startPage(pageNum, pageSize); - List beanRechargeInfos = beanRechargeMapper2.selectBySystem(beanRechargeInfo); - return new PageInfo<>(beanRechargeInfos); + List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); + return new PageInfo<>(beanSystemRechargeInfos); } //统计系统金豆记录 @Override - public GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo) { + public GoldBean statsSystemBean(BeanSystemRechargeInfo beanSystemRechargeInfo) { GoldBean gold = new GoldBean(); - List beanRechargeInfos = beanRechargeMapper2.selectBySystem(beanRechargeInfo); + List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); // 初始化累加器 int permanentGoldSum = 0; @@ -133,7 +134,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { Double moneySum = 0.0; // 遍历充值记录并累加金币 - for (BeanRechargeInfo info : beanRechargeInfos) { + for (BeanSystemRechargeInfo info : beanSystemRechargeInfos) { // 累加永久金币 if (info.getPermanentBean() != null) { permanentGoldSum += info.getPermanentBean(); @@ -169,24 +170,24 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { //线上充值明细 @Override - public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){ + public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanOnlineRechargeInfo){ PageHelper.startPage(pageNum, pageSize); - List beanRechargeInfos = beanRechargeMapper3.selectByOnline(beanRechargeInfo); - return new PageInfo<>(beanRechargeInfos); + List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); + return new PageInfo<>(beanOnlineRechargeInfos); } //统计线上金豆记录 @Override - public GoldBean statsOnlineBean(BeanRechargeInfo beanRechargeInfo) { + public GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanOnlineRechargeInfo) { GoldBean gold = new GoldBean(); - List beanRechargeInfos = beanRechargeMapper3.selectByOnline(beanRechargeInfo); + List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); // 初始化累加器 int countSum = 0; Double moneySum = 0.0; // 遍历充值记录并累加金币 - for (BeanRechargeInfo info : beanRechargeInfos) { + for (BeanOnlineRechargeInfo info : beanOnlineRechargeInfos) { // 累加数量 if (info.getNum() != null) { countSum += info.getNum(); @@ -207,7 +208,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { @Override public List onlineMarket() { - List list = beanRechargeMapper3.systemMarket(); + List list = beanRechargeMapper3.onlineMarket(); // 使用 Java 8 的 Stream API 过滤 null 和空字符串 List filteredList = list.stream() .filter(Objects::nonNull) // 过滤掉 null 值 diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java index 0186621..2efb15e 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java @@ -40,17 +40,9 @@ public class BeanUserServiceImpl implements BeanUserService { public Result userCard(String jwcode) { //解token权限 try { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String token = request.getHeader("token"); - Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); - if (admin != null) { - List list = Arrays.asList(admin.getMarkets().split(",")); - BeanUserCard user = beanUserMapper.userCard(jwcode); - return Result.success(user); - } - else{ - return Result.error("登录用户为空"); - } + BeanUserCard user = beanUserMapper.userCard(jwcode); + return Result.success(user); + } catch (Exception e) { e.printStackTrace(); return Result.error("用户查找不到"); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java index 7de6712..1ceee59 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -16,11 +16,8 @@ import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Export; import com.example.demo.domain.entity.User; import com.example.demo.domain.export.Goldmingxi; -import com.example.demo.domain.vo.bean.BeanConsumeArticle; -import com.example.demo.domain.vo.bean.BeanConsumeFan; -import com.example.demo.domain.vo.bean.BeanConsumeLive; +import com.example.demo.domain.vo.bean.*; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.coin.ExportMapper; @@ -407,9 +404,9 @@ public class ExportExcelServiceImpl implements ExportExcelService { case "articleUser": return BeanConsumeArticle.class; case "beanUser": - return BeanRechargeInfo.class; + return BeanSystemRechargeInfo.class; case "onlineUser": - return BeanRechargeInfo.class; + return BeanOnlineRechargeInfo.class; default: throw new IllegalArgumentException("不支持的导出类型: " + exportType); } diff --git a/src/main/resources/jindouMapper/BeanRechargeMapper2.xml b/src/main/resources/jindouMapper/BeanRechargeMapper2.xml index 14ab855..02d8982 100644 --- a/src/main/resources/jindouMapper/BeanRechargeMapper2.xml +++ b/src/main/resources/jindouMapper/BeanRechargeMapper2.xml @@ -1,7 +1,7 @@ - SELECT f.id AS id, m.jwcode AS jwcode, m.nickname AS name, diff --git a/src/main/resources/paymapper/BeanRechargeMapper3.xml b/src/main/resources/paymapper/BeanRechargeMapper3.xml index 1078b2b..cc72ec0 100644 --- a/src/main/resources/paymapper/BeanRechargeMapper3.xml +++ b/src/main/resources/paymapper/BeanRechargeMapper3.xml @@ -1,7 +1,7 @@ - SELECT g.id AS id, g.jwcode AS jwcode, m.name AS name,