xin
2025-09-25 6416e025afd6b3d19347610b3e441ac6a12a0f8f
工具:支付配置
7 files added
1 files modified
360 ■■■■■ changed files
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/domain/PayConfig.java 48 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/domain/dto/PayConfigQueryCriteria.java 18 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/mapper/PayConfigMapper.java 30 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/rest/PayConfigController.java 54 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/service/PayConfigService.java 64 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/service/impl/PayConfigServiceImpl.java 105 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/resources/mapper/PayConfigMapper.xml 35 ●●●●● patch | view | raw | blame | history
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:
oying-tools/src/main/java/com/oying/domain/PayConfig.java
New file
@@ -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));
    }
}
oying-tools/src/main/java/com/oying/domain/dto/PayConfigQueryCriteria.java
New file
@@ -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;
}
oying-tools/src/main/java/com/oying/mapper/PayConfigMapper.java
New file
@@ -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);
}
oying-tools/src/main/java/com/oying/rest/PayConfigController.java
New file
@@ -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);
    }
}
oying-tools/src/main/java/com/oying/service/PayConfigService.java
New file
@@ -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);
}
oying-tools/src/main/java/com/oying/service/impl/PayConfigServiceImpl.java
New file
@@ -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);
    }
}
oying-tools/src/main/resources/mapper/PayConfigMapper.xml
New file
@@ -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>