From 6416e025afd6b3d19347610b3e441ac6a12a0f8f Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Thu, 25 Sep 2025 22:59:05 +0800
Subject: [PATCH] 工具:支付配置

---
 oying-tools/src/main/resources/mapper/PayConfigMapper.xml                          |   35 +++++
 oying-tools/src/main/java/com/oying/mapper/PayConfigMapper.java                    |   30 +++++
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java |    6 +
 oying-tools/src/main/java/com/oying/rest/PayConfigController.java                  |   54 +++++++++
 oying-tools/src/main/java/com/oying/service/PayConfigService.java                  |   64 ++++++++++
 oying-tools/src/main/java/com/oying/service/impl/PayConfigServiceImpl.java         |  105 +++++++++++++++++
 oying-tools/src/main/java/com/oying/domain/PayConfig.java                          |   48 ++++++++
 oying-tools/src/main/java/com/oying/domain/dto/PayConfigQueryCriteria.java         |   18 +++
 8 files changed, 360 insertions(+), 0 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
index 972bccd..a17d391 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
@@ -20,6 +20,7 @@
 import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.modules.sh.domain.vo.ProductInfo;
 import com.oying.modules.sh.service.*;
+import com.oying.service.PayConfigService;
 import com.oying.utils.*;
 import com.oying.utils.enums.*;
 import lombok.RequiredArgsConstructor;
@@ -27,6 +28,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.oying.modules.sh.domain.dto.OrderQueryCriteria;
 import com.oying.modules.sh.mapper.OrderMapper;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -56,6 +58,9 @@
     private final StoreService storeService;
     private final OrderOperationLogService operationLogService;
     private final ProductInventoryService productInventoryService;
+    private final PayConfigService payConfigService;
+    @Value("${oying.enabled}")
+    private Boolean oyingEnabled;
     private static final String DESCRIBE = "哦应:";
     private static final String ORDER_KEY = "oying:order";
     private static final String ORDER_STORE_KEY = "oying:order:store";
@@ -77,6 +82,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public synchronized Order submitOrder(SubmitOrder submit, HttpServletRequest request) {
+        submit.setPayType(payConfigService.findInfo(oyingEnabled));
         switch (submit.getPayType()) {
             case HWC:
             case HWC2:
diff --git a/oying-tools/src/main/java/com/oying/domain/PayConfig.java b/oying-tools/src/main/java/com/oying/domain/PayConfig.java
new file mode 100644
index 0000000..69a3e8f
--- /dev/null
+++ b/oying-tools/src/main/java/com/oying/domain/PayConfig.java
@@ -0,0 +1,48 @@
+package com.oying.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author lixin
+* @date 2025-09-25
+**/
+@Getter
+@Setter
+@TableName("tool_pay_config")
+public class PayConfig extends BaseEntity implements Serializable {
+
+    @TableId(value = "config_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long configId;
+
+    @NotBlank
+    @ApiModelProperty(value = "名称")
+    private String configName;
+
+    @ApiModelProperty(value = "类型")
+    private String configType;
+
+    @ApiModelProperty(value = "环境")
+    private Boolean oying;
+
+    @ApiModelProperty(value = "门店编号")
+    private String mchId;
+
+    @ApiModelProperty(value = "是否启用")
+    private Boolean enabled;
+
+    public void copy(PayConfig source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-tools/src/main/java/com/oying/domain/dto/PayConfigQueryCriteria.java b/oying-tools/src/main/java/com/oying/domain/dto/PayConfigQueryCriteria.java
new file mode 100644
index 0000000..93f720c
--- /dev/null
+++ b/oying-tools/src/main/java/com/oying/domain/dto/PayConfigQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author lixin
+* @date 2025-09-25
+**/
+@Data
+public class PayConfigQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+}
diff --git a/oying-tools/src/main/java/com/oying/mapper/PayConfigMapper.java b/oying-tools/src/main/java/com/oying/mapper/PayConfigMapper.java
new file mode 100644
index 0000000..bcca774
--- /dev/null
+++ b/oying-tools/src/main/java/com/oying/mapper/PayConfigMapper.java
@@ -0,0 +1,30 @@
+package com.oying.mapper;
+
+import com.oying.domain.PayConfig;
+import com.oying.domain.dto.PayConfigQueryCriteria;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+ * @author lixin
+ * @date 2025-09-25
+ **/
+@Mapper
+public interface PayConfigMapper extends BaseMapper<PayConfig> {
+
+    IPage<PayConfig> findAll(@Param("criteria") PayConfigQueryCriteria criteria, Page<Object> page);
+
+    List<PayConfig> findAll(@Param("criteria") PayConfigQueryCriteria criteria);
+
+    void disabled(@Param("configId") Long configId);
+
+    void using(@Param("configId") Long configId);
+
+    PayConfig findInfo(@Param("oying") Boolean oying);
+}
diff --git a/oying-tools/src/main/java/com/oying/rest/PayConfigController.java b/oying-tools/src/main/java/com/oying/rest/PayConfigController.java
new file mode 100644
index 0000000..9d481b4
--- /dev/null
+++ b/oying-tools/src/main/java/com/oying/rest/PayConfigController.java
@@ -0,0 +1,54 @@
+package com.oying.rest;
+
+import com.oying.annotation.Log;
+import com.oying.domain.PayConfig;
+import com.oying.service.PayConfigService;
+import com.oying.domain.dto.PayConfigQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author lixin
+* @date 2025-09-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "工具:支付配置")
+@RequestMapping("/api/payConfig")
+public class PayConfigController {
+
+    private final PayConfigService payConfigService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('payConfig:list')")
+    public void exportPayConfig(HttpServletResponse response, PayConfigQueryCriteria criteria) throws IOException {
+        payConfigService.download(payConfigService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询支付配置")
+    @PreAuthorize("@el.check('payConfig:list')")
+    public ResponseEntity<PageResult<PayConfig>> queryPayConfig(PayConfigQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(payConfigService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PutMapping
+    @Log("启用支付配置")
+    @ApiOperation("启用支付配置")
+    @PreAuthorize("@el.check('payConfig:edit')")
+    public ResponseEntity<Object> updatePayConfig(@Validated @RequestBody PayConfig resources){
+        payConfigService.using(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+}
diff --git a/oying-tools/src/main/java/com/oying/service/PayConfigService.java b/oying-tools/src/main/java/com/oying/service/PayConfigService.java
new file mode 100644
index 0000000..a7288cc
--- /dev/null
+++ b/oying-tools/src/main/java/com/oying/service/PayConfigService.java
@@ -0,0 +1,64 @@
+package com.oying.service;
+
+import com.oying.domain.PayConfig;
+import com.oying.domain.dto.PayConfigQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+import com.oying.utils.enums.PayTypeEnum;
+
+/**
+* @description 服务接口
+* @author lixin
+* @date 2025-09-25
+**/
+public interface PayConfigService extends IService<PayConfig> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<PayConfig> queryAll(PayConfigQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<PayConfigDto>
+    */
+    List<PayConfig> queryAll(PayConfigQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(PayConfig resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(PayConfig resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<PayConfig> all, HttpServletResponse response) throws IOException;
+
+    void using(PayConfig resources);
+
+    PayTypeEnum findInfo(Boolean oying);
+}
diff --git a/oying-tools/src/main/java/com/oying/service/impl/PayConfigServiceImpl.java b/oying-tools/src/main/java/com/oying/service/impl/PayConfigServiceImpl.java
new file mode 100644
index 0000000..f0c3065
--- /dev/null
+++ b/oying-tools/src/main/java/com/oying/service/impl/PayConfigServiceImpl.java
@@ -0,0 +1,105 @@
+package com.oying.service.impl;
+
+import com.oying.domain.PayConfig;
+import com.oying.utils.FileUtil;
+import com.oying.utils.enums.PayTypeEnum;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.service.PayConfigService;
+import com.oying.domain.dto.PayConfigQueryCriteria;
+import com.oying.mapper.PayConfigMapper;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+import com.oying.utils.PageResult;
+
+/**
+ * @author lixin
+ * @description 服务实现
+ * @date 2025-09-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class PayConfigServiceImpl extends ServiceImpl<PayConfigMapper, PayConfig> implements PayConfigService {
+
+    private final PayConfigMapper payConfigMapper;
+
+    @Value("${pay.type}")
+    private String payType;
+
+    @Override
+    public PageResult<PayConfig> queryAll(PayConfigQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(payConfigMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<PayConfig> queryAll(PayConfigQueryCriteria criteria) {
+        return payConfigMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(PayConfig resources) {
+        payConfigMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(PayConfig resources) {
+        PayConfig payConfig = getById(resources.getConfigId());
+        payConfig.copy(resources);
+        payConfigMapper.updateById(payConfig);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void using(PayConfig resources) {
+        payConfigMapper.disabled(resources.getConfigId());
+        payConfigMapper.using(resources.getConfigId());
+    }
+
+    @Override
+    public PayTypeEnum findInfo(Boolean oying) {
+        PayConfig payConfig = payConfigMapper.findInfo(oying);
+        if (payConfig != null) {
+            return PayTypeEnum.find(payConfig.getConfigType());
+        } else {
+            return PayTypeEnum.find(payType);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        payConfigMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<PayConfig> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (PayConfig payConfig : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("名称", payConfig.getConfigName());
+            map.put("类型", payConfig.getConfigType());
+            map.put("环境", payConfig.getOying() ? "测试" : "生成");
+            map.put("门店编号", payConfig.getMchId());
+            map.put("是否启用", payConfig.getEnabled() ? "是" : "否");
+            map.put("创建者", payConfig.getCreateBy());
+            map.put("创建时间", payConfig.getCreateTime());
+            map.put("更新者", payConfig.getUpdateBy());
+            map.put("更新时间", payConfig.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-tools/src/main/resources/mapper/PayConfigMapper.xml b/oying-tools/src/main/resources/mapper/PayConfigMapper.xml
new file mode 100644
index 0000000..fdbdf94
--- /dev/null
+++ b/oying-tools/src/main/resources/mapper/PayConfigMapper.xml
@@ -0,0 +1,35 @@
+<?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.oying.mapper.PayConfigMapper">
+    <resultMap id="BaseResultMap" type="com.oying.domain.PayConfig">
+        <id column="config_id" property="configId"/>
+        <result column="config_name" property="configName"/>
+        <result column="config_type" property="configType"/>
+        <result column="mch_id" property="mchId"/>
+        <result column="enabled" property="enabled"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        config_id, config_name, config_type, mch_id, enabled, create_by, create_time, update_by, update_time
+    </sql>
+    <update id="disabled">
+        update tool_pay_config set enabled = false where config_id != #{configId}
+    </update>
+    <update id="using">
+        update tool_pay_config set enabled = true where config_id = #{configId}
+    </update>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from tool_pay_config
+        order by config_id desc
+    </select>
+    <select id="findInfo" resultType="com.oying.domain.PayConfig">
+        select * from tool_pay_config where enabled = true and oying = #{oying} limit 1
+    </select>
+</mapper>

--
Gitblit v1.9.3