puzhibing
2026-08-27 fecc505ff55fcfcb3a46063e62982ebc254f6558
feat: add standalone card charging orders
28个文件已添加
726 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyDetailOrder.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyOrder.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrder.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderAccountingStrategy.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderRefund.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderShareRecord.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/CardChargingOrderQuery.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TCardChargingOrderController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyDetailOrderMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyOrderMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderAccountingStrategyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderRefundMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderShareRecordMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyDetailOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderAccountingStrategyService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderRefundService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderShareRecordService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyDetailOrderServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyOrderServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderAccountingStrategyServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderRefundServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderShareRecordServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/20260827_card_charging_order.sql 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyDetailOrder.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.order.api.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_card_accounting_strategy_detail_order")
public class TCardAccountingStrategyDetailOrder extends AccountingStrategyDetailOrder {
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyOrder.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.order.api.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_card_accounting_strategy_order")
public class TCardAccountingStrategyOrder extends AccountingStrategyOrder {
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrder.java
New file
@@ -0,0 +1,23 @@
package com.ruoyi.order.api.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_card_charging_order")
@ApiModel("刷卡充电订单")
public class TCardChargingOrder extends TChargingOrder {
    @ApiModelProperty("充电卡ID(分片键)")
    @TableField("card_id")
    private Long cardId;
    @ApiModelProperty("充电卡号快照")
    @TableField("card_no")
    private String cardNo;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderAccountingStrategy.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.order.api.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_card_charging_order_accounting_strategy")
public class TCardChargingOrderAccountingStrategy extends TChargingOrderAccountingStrategy {
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderRefund.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.order.api.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_card_charging_order_refund")
public class TCardChargingOrderRefund extends TChargingOrderRefund {
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderShareRecord.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.order.api.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_card_charging_order_share_record")
public class TCardChargingOrderShareRecord extends TChargingOrderShareRecord {
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/CardChargingOrderQuery.java
New file
@@ -0,0 +1,38 @@
package com.ruoyi.order.api.query;
import com.ruoyi.common.core.web.page.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CardChargingOrderQuery刷卡充电订单查询对象")
public class CardChargingOrderQuery extends BasePage {
    @ApiModelProperty("订单编号")
    private String code;
    @ApiModelProperty("充电卡ID(分片键)")
    private Long cardId;
    @ApiModelProperty("充电卡号")
    private String cardNo;
    @ApiModelProperty("订单状态")
    private Integer status;
    @ApiModelProperty("站点ID")
    private Integer siteId;
    @ApiModelProperty("充电桩ID")
    private Integer pileId;
    @ApiModelProperty("充电枪ID")
    private Integer gunId;
    @ApiModelProperty("开始时间范围")
    private String startTime;
    @ApiModelProperty("结束时间范围")
    private String endTime;
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TCardChargingOrderController.java
New file
@@ -0,0 +1,52 @@
package com.ruoyi.order.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.order.api.query.CardChargingOrderQuery;
import com.ruoyi.order.service.TCardChargingOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/t-card-charging-order")
@Api(tags = "管理后台-刷卡充电订单")
public class TCardChargingOrderController {
    @Resource
    private TCardChargingOrderService cardChargingOrderService;
    @GetMapping("/list")
    @ApiOperation("刷卡充电订单列表")
    public R<IPage<Map<String, Object>>> list(CardChargingOrderQuery query) {
        return R.ok(cardChargingOrderService.pageList(query));
    }
    @GetMapping("/summary")
    @ApiOperation("刷卡充电订单汇总")
    public R<Map<String, Object>> summary(CardChargingOrderQuery query) {
        Map<String, Object> summary = cardChargingOrderService.summary(query);
        return R.ok(summary == null ? Collections.emptyMap() : summary);
    }
    @GetMapping("/balance-income-detail")
    @ApiOperation("刷卡充电订单余额收入明细")
    public R<List<Map<String, Object>>> balanceIncomeDetail(CardChargingOrderQuery query) {
        return R.ok(cardChargingOrderService.balanceIncomeDetail(query));
    }
    @GetMapping("/accounting-strategy")
    @ApiOperation("刷卡充电订单计费明细")
    public R<Map<String, Object>> accountingStrategy(@RequestParam("chargingOrderId") Long chargingOrderId) {
        List<Map<String, Object>> list = cardChargingOrderService.accountingStrategyList(chargingOrderId);
        return R.ok(Collections.singletonMap("list", list));
    }
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyDetailOrderMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder;
public interface TCardAccountingStrategyDetailOrderMapper extends BaseMapper<TCardAccountingStrategyDetailOrder> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyOrderMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.order.api.model.TCardAccountingStrategyOrder;
public interface TCardAccountingStrategyOrderMapper extends BaseMapper<TCardAccountingStrategyOrder> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderAccountingStrategyMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy;
public interface TCardChargingOrderAccountingStrategyMapper extends BaseMapper<TCardChargingOrderAccountingStrategy> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderMapper.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.order.api.model.TCardChargingOrder;
import com.ruoyi.order.api.query.CardChargingOrderQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface TCardChargingOrderMapper extends BaseMapper<TCardChargingOrder> {
    IPage<Map<String, Object>> pageList(Page<?> page, @Param("query") CardChargingOrderQuery query);
    Map<String, Object> summary(@Param("query") CardChargingOrderQuery query);
    List<Map<String, Object>> balanceIncomeDetail(@Param("query") CardChargingOrderQuery query);
    List<Map<String, Object>> accountingStrategyList(@Param("chargingOrderId") Long chargingOrderId);
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderRefundMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.order.api.model.TCardChargingOrderRefund;
public interface TCardChargingOrderRefundMapper extends BaseMapper<TCardChargingOrderRefund> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderShareRecordMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.order.api.model.TCardChargingOrderShareRecord;
public interface TCardChargingOrderShareRecordMapper extends BaseMapper<TCardChargingOrderShareRecord> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyDetailOrderService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder;
public interface TCardAccountingStrategyDetailOrderService extends IService<TCardAccountingStrategyDetailOrder> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyOrderService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.order.api.model.TCardAccountingStrategyOrder;
public interface TCardAccountingStrategyOrderService extends IService<TCardAccountingStrategyOrder> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderAccountingStrategyService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy;
public interface TCardChargingOrderAccountingStrategyService extends IService<TCardChargingOrderAccountingStrategy> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderRefundService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.order.api.model.TCardChargingOrderRefund;
public interface TCardChargingOrderRefundService extends IService<TCardChargingOrderRefund> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderService.java
New file
@@ -0,0 +1,20 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.order.api.model.TCardChargingOrder;
import com.ruoyi.order.api.query.CardChargingOrderQuery;
import java.util.List;
import java.util.Map;
public interface TCardChargingOrderService extends IService<TCardChargingOrder> {
    IPage<Map<String, Object>> pageList(CardChargingOrderQuery query);
    Map<String, Object> summary(CardChargingOrderQuery query);
    List<Map<String, Object>> balanceIncomeDetail(CardChargingOrderQuery query);
    List<Map<String, Object>> accountingStrategyList(Long chargingOrderId);
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderShareRecordService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.order.api.model.TCardChargingOrderShareRecord;
public interface TCardChargingOrderShareRecordService extends IService<TCardChargingOrderShareRecord> {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyDetailOrderServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder;
import com.ruoyi.order.mapper.TCardAccountingStrategyDetailOrderMapper;
import com.ruoyi.order.service.TCardAccountingStrategyDetailOrderService;
import org.springframework.stereotype.Service;
@Service
public class TCardAccountingStrategyDetailOrderServiceImpl
        extends ServiceImpl<TCardAccountingStrategyDetailOrderMapper, TCardAccountingStrategyDetailOrder>
        implements TCardAccountingStrategyDetailOrderService {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyOrderServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.api.model.TCardAccountingStrategyOrder;
import com.ruoyi.order.mapper.TCardAccountingStrategyOrderMapper;
import com.ruoyi.order.service.TCardAccountingStrategyOrderService;
import org.springframework.stereotype.Service;
@Service
public class TCardAccountingStrategyOrderServiceImpl
        extends ServiceImpl<TCardAccountingStrategyOrderMapper, TCardAccountingStrategyOrder>
        implements TCardAccountingStrategyOrderService {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderAccountingStrategyServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy;
import com.ruoyi.order.mapper.TCardChargingOrderAccountingStrategyMapper;
import com.ruoyi.order.service.TCardChargingOrderAccountingStrategyService;
import org.springframework.stereotype.Service;
@Service
public class TCardChargingOrderAccountingStrategyServiceImpl
        extends ServiceImpl<TCardChargingOrderAccountingStrategyMapper, TCardChargingOrderAccountingStrategy>
        implements TCardChargingOrderAccountingStrategyService {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderRefundServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.api.model.TCardChargingOrderRefund;
import com.ruoyi.order.mapper.TCardChargingOrderRefundMapper;
import com.ruoyi.order.service.TCardChargingOrderRefundService;
import org.springframework.stereotype.Service;
@Service
public class TCardChargingOrderRefundServiceImpl
        extends ServiceImpl<TCardChargingOrderRefundMapper, TCardChargingOrderRefund>
        implements TCardChargingOrderRefundService {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
New file
@@ -0,0 +1,39 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.api.model.TCardChargingOrder;
import com.ruoyi.order.api.query.CardChargingOrderQuery;
import com.ruoyi.order.mapper.TCardChargingOrderMapper;
import com.ruoyi.order.service.TCardChargingOrderService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class TCardChargingOrderServiceImpl extends ServiceImpl<TCardChargingOrderMapper, TCardChargingOrder>
        implements TCardChargingOrderService {
    @Override
    public IPage<Map<String, Object>> pageList(CardChargingOrderQuery query) {
        Page<Map<String, Object>> page = new Page<>(query.getPageCurr(), query.getPageSize());
        return baseMapper.pageList(page, query);
    }
    @Override
    public Map<String, Object> summary(CardChargingOrderQuery query) {
        return baseMapper.summary(query);
    }
    @Override
    public List<Map<String, Object>> balanceIncomeDetail(CardChargingOrderQuery query) {
        return baseMapper.balanceIncomeDetail(query);
    }
    @Override
    public List<Map<String, Object>> accountingStrategyList(Long chargingOrderId) {
        return baseMapper.accountingStrategyList(chargingOrderId);
    }
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderShareRecordServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.api.model.TCardChargingOrderShareRecord;
import com.ruoyi.order.mapper.TCardChargingOrderShareRecordMapper;
import com.ruoyi.order.service.TCardChargingOrderShareRecordService;
import org.springframework.stereotype.Service;
@Service
public class TCardChargingOrderShareRecordServiceImpl
        extends ServiceImpl<TCardChargingOrderShareRecordMapper, TCardChargingOrderShareRecord>
        implements TCardChargingOrderShareRecordService {
}
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml
New file
@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.order.mapper.TCardChargingOrderMapper">
    <sql id="queryCondition">
        <where>
            o.del_flag = 0
            <if test="query.code != null and query.code != ''">
                AND o.code LIKE CONCAT('%', #{query.code}, '%')
            </if>
            <if test="query.cardId != null">
                AND o.card_id = #{query.cardId}
            </if>
            <if test="query.cardNo != null and query.cardNo != ''">
                AND o.card_no LIKE CONCAT('%', #{query.cardNo}, '%')
            </if>
            <if test="query.status != null">
                AND o.status = #{query.status}
            </if>
            <if test="query.siteId != null">
                AND o.site_id = #{query.siteId}
            </if>
            <if test="query.pileId != null">
                AND o.charging_pile_id = #{query.pileId}
            </if>
            <if test="query.gunId != null">
                AND o.charging_gun_id = #{query.gunId}
            </if>
            <if test="query.startTime != null and query.startTime != ''">
                AND o.start_time &gt;= #{query.startTime}
            </if>
            <if test="query.endTime != null and query.endTime != ''">
                AND o.start_time &lt;= #{query.endTime}
            </if>
        </where>
    </sql>
    <select id="pageList" resultType="java.util.LinkedHashMap">
        SELECT o.id,
               o.code,
               o.card_id AS cardId,
               o.card_no AS cardNo,
               o.site_id AS siteId,
               o.charging_pile_id AS chargingPileId,
               o.charging_gun_id AS chargingGunId,
               o.start_time AS startTime,
               o.end_time AS endTime,
               o.status,
               o.order_amount AS orderAmount,
               o.payment_amount AS paymentAmount,
               o.electrovalence,
               o.service_charge AS serviceCharge,
               o.charging_capacity AS chargingCapacity,
               o.balance_pay_amount AS balancePayAmount,
               o.third_pay_amount AS thirdPayAmount,
               o.refund_amount AS refundAmount,
               o.pay_time AS payTime,
               o.create_time AS createTime
        FROM t_card_charging_order o
        <include refid="queryCondition"/>
        ORDER BY o.id DESC
    </select>
    <select id="summary" resultType="java.util.LinkedHashMap">
        SELECT COUNT(1) AS orderCount,
               IFNULL(SUM(o.order_amount), 0) AS orderAmount,
               IFNULL(SUM(o.payment_amount), 0) AS paymentAmount,
               IFNULL(SUM(o.electrovalence), 0) AS electrovalence,
               IFNULL(SUM(o.service_charge), 0) AS serviceCharge,
               IFNULL(SUM(o.charging_capacity), 0) AS chargingCapacity,
               IFNULL(SUM(o.balance_pay_amount), 0) AS balancePayAmount,
               IFNULL(SUM(o.third_pay_amount), 0) AS thirdPayAmount,
               IFNULL(SUM(o.refund_amount), 0) AS refundAmount
        FROM t_card_charging_order o
        <include refid="queryCondition"/>
    </select>
    <select id="balanceIncomeDetail" resultType="java.util.LinkedHashMap">
        SELECT o.card_id AS cardId,
               o.card_no AS cardNo,
               COUNT(1) AS orderCount,
               IFNULL(SUM(o.balance_pay_amount), 0) AS balancePayAmount,
               IFNULL(SUM(o.payment_amount), 0) AS paymentAmount
        FROM t_card_charging_order o
        <include refid="queryCondition"/>
        GROUP BY o.card_id, o.card_no
        ORDER BY balancePayAmount DESC
    </select>
    <select id="accountingStrategyList" resultType="java.util.LinkedHashMap">
        SELECT id,
               charging_order_id AS chargingOrderId,
               accounting_strategy_detail_id AS accountingStrategyDetailId,
               start_time AS startTime,
               end_time AS endTime,
               type,
               electrovalence,
               service_charge AS serviceCharge,
               cost_service_charge AS costServiceCharge,
               charging_capacity AS chargingCapacity,
               period_electric_price AS periodElectricPrice,
               period_service_price AS periodServicePrice,
               create_time AS createTime
        FROM t_card_charging_order_accounting_strategy
        WHERE charging_order_id = #{chargingOrderId}
        ORDER BY start_time ASC, id ASC
    </select>
</mapper>
sql/20260827_card_charging_order.sql
New file
@@ -0,0 +1,234 @@
-- 刷卡充电订单独立存储增量脚本
-- MyCat 环境请分逻辑库执行:订单表在 charging_pile_order,菜单在 charging_pile_other。
USE charging_pile_order;
CREATE TABLE IF NOT EXISTS `t_card_charging_order` (
  `id` bigint NOT NULL COMMENT '主键',
  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单编号',
  `card_id` bigint NOT NULL COMMENT '充电卡ID(分片键)',
  `card_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '充电卡号快照',
  `order_type` int DEFAULT '2' COMMENT '订单类型(固定为刷卡充电订单)',
  `order_classification` int DEFAULT NULL COMMENT '订单分类(1=线上,2=线下)',
  `app_user_id` bigint DEFAULT NULL COMMENT '用户id',
  `app_user_car_id` bigint DEFAULT NULL COMMENT '充电车辆id',
  `plate_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '车牌号',
  `reservation_time` datetime DEFAULT NULL COMMENT '预约充电时间',
  `expected_vin` varchar(64) DEFAULT NULL COMMENT '支付车辆VIN快照',
  `actual_vin` varchar(64) DEFAULT NULL COMMENT '启动时设备识别VIN',
  `site_id` int DEFAULT NULL COMMENT '站点id',
  `parking_lot_id` int DEFAULT NULL COMMENT '停车场id',
  `charging_pile_id` int DEFAULT NULL COMMENT '充电桩id',
  `charging_gun_id` int DEFAULT NULL COMMENT '充电枪id',
  `charging_capacity` decimal(10,5) DEFAULT '0.00000' COMMENT '充电总度数',
  `charging_power` decimal(10,4) DEFAULT NULL COMMENT '充电功率',
  `start_time` datetime DEFAULT NULL COMMENT '充电开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '充电结束时间',
  `status` int DEFAULT NULL COMMENT '订单状态',
  `end_mode` int DEFAULT NULL COMMENT '结束方式',
  `recharge_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '充值金额',
  `recharge_payment_type` int DEFAULT NULL COMMENT '充值支付方式',
  `recharge_payment_status` int DEFAULT NULL COMMENT '充值支付状态',
  `pay_method` int DEFAULT NULL COMMENT '充电支付模式',
  `balance_pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '余额支付金额',
  `third_pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '第三方支付金额',
  `balance_refund_amount` decimal(10,2) DEFAULT '0.00' COMMENT '余额退款金额',
  `third_refund_amount` decimal(10,2) DEFAULT '0.00' COMMENT '第三方退款金额',
  `recharge_serial_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '充值支付第三方流水号',
  `charge_amount` decimal(10,2) DEFAULT NULL COMMENT '充电金额',
  `residual_amount` decimal(10,2) DEFAULT NULL COMMENT '充值剩余金额',
  `order_amount` decimal(10,4) DEFAULT NULL COMMENT '订单金额',
  `payment_amount` decimal(10,4) DEFAULT NULL COMMENT '支付金额',
  `refund_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '退款金额',
  `app_coupon_id` bigint DEFAULT NULL COMMENT '优惠券id',
  `coupon_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '优惠金额',
  `is_whitelist` tinyint NOT NULL DEFAULT '0' COMMENT '是否白名单订单',
  `whitelist_id` bigint DEFAULT NULL COMMENT '白名单用户ID',
  `whitelist_benefit_type` tinyint DEFAULT NULL COMMENT '白名单权益',
  `whitelist_discount_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '白名单减免金额',
  `whitelist_electric_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '白名单电费退款金额',
  `whitelist_service_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '白名单服务费退款金额',
  `vip_discount` decimal(10,2) DEFAULT NULL COMMENT '会员折扣',
  `vip_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '会员优惠金额',
  `refund_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '退款流水号',
  `refund_status` int DEFAULT NULL COMMENT '退款状态',
  `refund_serial_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '退款第三方流水号',
  `refund_time` datetime DEFAULT NULL COMMENT '退款成功时间',
  `create_time` datetime DEFAULT NULL COMMENT '添加时间',
  `del_flag` tinyint(1) DEFAULT '0' COMMENT '删除标记',
  `order_source` int DEFAULT '1' COMMENT '订单来源',
  `source_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '平台名称',
  `operator_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '运营商ID',
  `tripartite_platform_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '三方平台名称',
  `start_charge_seq` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '三方平台充电订单号',
  `commission_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '手续费',
  `sharing_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '分佣',
  `service_charge` decimal(10,4) DEFAULT NULL COMMENT '累计服务费',
  `electrovalence` decimal(10,4) DEFAULT NULL COMMENT '累计电费',
  `current` decimal(10,2) DEFAULT NULL COMMENT '电流',
  `voltage` decimal(10,2) DEFAULT NULL COMMENT '电压',
  `electricity` decimal(10,2) DEFAULT NULL COMMENT '电量',
  `power` decimal(10,2) DEFAULT NULL COMMENT '功率',
  `pay_time` datetime DEFAULT NULL COMMENT '最后支付时间',
  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '电话',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单标题',
  `need_elec` decimal(10,2) DEFAULT NULL COMMENT '实时需求电流',
  `total_electricity` double DEFAULT NULL COMMENT '剩余电量',
  `start_soc` decimal(10,2) DEFAULT '0.00' COMMENT '开始SOC',
  `end_soc` decimal(10,2) DEFAULT NULL COMMENT '结束SOC',
  PRIMARY KEY USING BTREE (`id`),
  KEY `idx_card_id` USING BTREE (`card_id`),
  KEY `idx_card_no` USING BTREE (`card_no`),
  KEY `idx_code` USING BTREE (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='刷卡充电订单'
TBPARTITION BY MOD_HASH(card_id) TBPARTITIONS 20;
CREATE TABLE IF NOT EXISTS `t_card_accounting_strategy_detail_order` (
  `id` int NOT NULL COMMENT '计费策略明细主键id',
  `accounting_strategy_id` int DEFAULT NULL COMMENT '策略id',
  `type` int DEFAULT NULL COMMENT '阶段',
  `start_time` varchar(100) DEFAULT NULL COMMENT '开始时间',
  `end_time` varchar(100) DEFAULT NULL COMMENT '结束时间',
  `electrovalence` double(10,4) DEFAULT NULL COMMENT '电价',
  `service_charge` double(10,4) DEFAULT NULL COMMENT '服务费',
  `cost_service_charge` double(10,4) DEFAULT NULL COMMENT '原价服务费',
  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  `del_flag` int DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡订单计费策略明细快照'
TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
CREATE TABLE IF NOT EXISTS `t_card_accounting_strategy_order` (
  `id` int NOT NULL COMMENT '策略id',
  `site_id` int DEFAULT NULL COMMENT '站点id',
  `name` varchar(255) DEFAULT NULL COMMENT '策略名称',
  `description` varchar(255) DEFAULT NULL COMMENT '策略说明',
  `discount` double(10,2) DEFAULT NULL COMMENT '会员折扣',
  `create_time` datetime DEFAULT NULL COMMENT '添加时间',
  `del_flag` int DEFAULT '0' COMMENT '删除状态',
  `first_user_id` bigint DEFAULT NULL COMMENT '一级审核用户id',
  `two_user_id` bigint DEFAULT NULL COMMENT '二级审核用户id',
  `first_remark` varchar(255) DEFAULT NULL COMMENT '一级审核备注',
  `two_remark` varchar(255) DEFAULT NULL COMMENT '二级审核备注',
  `audit_status` int DEFAULT '1' COMMENT '审核状态',
  `first_audit_time` datetime DEFAULT NULL COMMENT '一级审核时间',
  `two_audit_time` datetime DEFAULT NULL COMMENT '二级审核时间',
  `user_id` bigint DEFAULT NULL COMMENT '申请人ID',
  `parent_id` int DEFAULT NULL COMMENT '父级id',
  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡订单计费策略快照'
TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
CREATE TABLE IF NOT EXISTS `t_card_charging_order_accounting_strategy` (
  `id` bigint NOT NULL COMMENT '主键',
  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)',
  `accounting_strategy_detail_id` bigint DEFAULT NULL COMMENT '计费策略明细id',
  `type` int DEFAULT NULL COMMENT '阶段',
  `start_time` varchar(100) DEFAULT NULL COMMENT '开始时间',
  `end_time` varchar(100) DEFAULT NULL COMMENT '结束时间',
  `electrovalence` double(10,4) DEFAULT NULL COMMENT '电价',
  `service_charge` double(10,4) DEFAULT NULL COMMENT '服务费',
  `cost_service_charge` double(10,4) DEFAULT NULL COMMENT '原价服务费',
  `charging_capacity` decimal(10,4) DEFAULT NULL COMMENT '充电度数',
  `create_time` datetime DEFAULT NULL COMMENT '首次添加时间',
  `period_electric_price` decimal(10,4) DEFAULT NULL COMMENT '时段电费',
  `period_service_price` decimal(10,4) DEFAULT NULL COMMENT '时段服务费',
  `period_original_service_price` decimal(10,4) DEFAULT NULL COMMENT '时段原服务费',
  `vip_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '会员折扣金额',
  `coupon_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '优惠券抵扣金额',
  PRIMARY KEY USING BTREE (`id`),
  KEY `idx_card_order_id` USING BTREE (`charging_order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡充电订单计费明细'
TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
CREATE TABLE IF NOT EXISTS `t_card_charging_order_refund` (
  `id` bigint NOT NULL COMMENT '主键',
  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)',
  `refund_code` varchar(255) DEFAULT NULL COMMENT '退款流水号',
  `refund_amount` decimal(10,2) DEFAULT NULL COMMENT '退款金额',
  `balance_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '余额退款金额',
  `third_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '第三方退款金额',
  `refund_status` int DEFAULT NULL COMMENT '退款状态',
  `refund_serial_number` varchar(255) DEFAULT NULL COMMENT '退款第三方流水号',
  `refund_time` datetime DEFAULT NULL COMMENT '退款成功时间',
  `code` varchar(255) DEFAULT NULL COMMENT '订单编号',
  `refund_title` varchar(255) DEFAULT NULL COMMENT '退款标题',
  `refund_content` varchar(255) DEFAULT NULL COMMENT '退款内容',
  `refund_reason` varchar(255) DEFAULT NULL COMMENT '退款原因',
  `refund_remark` varchar(255) DEFAULT NULL COMMENT '退款备注',
  `refund_total_amount` decimal(10,2) DEFAULT NULL COMMENT '累计退款金额',
  `refund_fee` decimal(10,2) DEFAULT '0.00' COMMENT '手续费',
  `pay_amount` decimal(10,2) DEFAULT NULL COMMENT '支付金额',
  `pay_type` int DEFAULT NULL COMMENT '支付类型',
  `create_time` datetime DEFAULT NULL,
  `del_flag` int DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡充电退款明细'
TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
CREATE TABLE IF NOT EXISTS `t_card_charging_order_share_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `charging_order_id` bigint DEFAULT NULL COMMENT '刷卡充电订单ID',
  `charging_order_code` varchar(64) NOT NULL COMMENT '刷卡充电订单号',
  `site_id` int DEFAULT NULL COMMENT '站点ID',
  `partner_id` int DEFAULT NULL COMMENT '合作商ID',
  `pay_channel` varchar(16) NOT NULL COMMENT '支付渠道',
  `channel_pay_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `channel_gift_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `channel_pay_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000',
  `channel_electricity_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `channel_service_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `electricity_share_ratio` decimal(5,2) DEFAULT NULL,
  `service_share_ratio` decimal(5,2) DEFAULT NULL,
  `electricity_share_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `service_share_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `share_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
  `need_online_share` tinyint(1) NOT NULL DEFAULT '0',
  `online_share_status` varchar(16) NOT NULL DEFAULT 'RECORDED',
  `seq_no` varchar(50) DEFAULT NULL,
  `busi_type` varchar(1) DEFAULT NULL,
  `ori_mer_id` varchar(20) DEFAULT NULL,
  `ori_trx_date` date DEFAULT NULL,
  `sub_order_id` varchar(50) DEFAULT NULL,
  `sub_mer_id` varchar(20) DEFAULT NULL,
  `sub_mer_prtcl_no` varchar(20) DEFAULT NULL,
  `mer_acct` varchar(34) DEFAULT NULL,
  `icbc_order_id` varchar(64) DEFAULT NULL,
  `sub_order_seq` varchar(32) DEFAULT NULL,
  `sub_order_trxid` varchar(64) DEFAULT NULL,
  `rec_result` varchar(8) DEFAULT NULL,
  `request_json` text,
  `response_json` text,
  `fail_reason` varchar(512) DEFAULT NULL,
  `retry_count` int NOT NULL DEFAULT '0',
  `last_retry_time` datetime DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `del_flag` int DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_order_channel` (`charging_order_code`,`pay_channel`),
  KEY `idx_share_status` (`online_share_status`),
  KEY `idx_share_sub_order_id` (`sub_order_id`),
  KEY `idx_share_partner` (`partner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡充电订单全渠道分账记录';
USE charging_pile_other;
INSERT INTO `sys_menu`
(`menu_name`,`parent_id`,`order_num`,`path`,`component`,`query`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`)
SELECT '刷卡充电订单', 20, 2, 'cardChargingOrder', 'order/cardChargingOrder/index', '', 1, 0, 'C', '0', '0', '/cardChargingOrder', 'transaction', 'admin', NOW(), '', NULL, '刷卡充电订单独立查询'
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `perms` = '/cardChargingOrder');
INSERT INTO `sys_menu`
(`menu_name`,`parent_id`,`order_num`,`path`,`component`,`query`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`)
SELECT '刷卡订单详情', parent.menu_id, 1, '#', '', '', 1, 0, 'F', '0', '0', '/cardChargingOrder/detail', '#', 'admin', NOW(), '', NULL, ''
FROM `sys_menu` parent
WHERE parent.perms = '/cardChargingOrder'
  AND NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `perms` = '/cardChargingOrder/detail');
INSERT INTO `sys_role_menu` (`role_id`,`menu_id`)
SELECT 1, menu.menu_id
FROM `sys_menu` menu
WHERE menu.perms IN ('/cardChargingOrder','/cardChargingOrder/detail')
  AND NOT EXISTS (
    SELECT 1 FROM `sys_role_menu` role_menu
    WHERE role_menu.role_id = 1 AND role_menu.menu_id = menu.menu_id
  );