xin
2025-05-29 22abfe68fa5b8a2713369225754759a68bdb2a30
商户
7 files added
392 ■■■■■ changed files
oying-system/src/main/java/com/oying/modules/system/domain/Merchants.java 68 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java 36 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/mapper/MerchantsMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/rest/MerchantsController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/service/MerchantsService.java 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantsServiceImpl.java 86 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/system/MerchantsMapper.xml 48 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/domain/Merchants.java
New file
@@ -0,0 +1,68 @@
package com.oying.modules.system.domain;
import com.oying.base.BaseEntity;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
import cn.hutool.core.bean.copier.CopyOptions;
import java.sql.Timestamp;
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;
import lombok.Getter;
import lombok.Setter;
/**
* @description /
* @author lixin
* @date 2025-05-29
**/
@Getter
@Setter
@TableName("sys_merchants")
public class Merchants extends BaseEntity implements Serializable {
    @TableId(value = "merchants_id", type = IdType.AUTO)
    @ApiModelProperty(value = "ID")
    private Long merchantsId;
    @NotBlank
    @ApiModelProperty(value = "名称")
    private String merchantName;
    @NotBlank
    @ApiModelProperty(value = "商户编码")
    private String merchantCode;
    @NotBlank
    @ApiModelProperty(value = "营业执照号")
    private String businessLicense;
    @NotBlank
    @ApiModelProperty(value = "营业执照号路径")
    private String businessLicensePath;
    @NotBlank
    @ApiModelProperty(value = "联系手机")
    private String contactMobile;
    @ApiModelProperty(value = "排序")
    private Integer merchantsSort;
    @ApiModelProperty(value = "状态")
    private String enabled = "1";
    @ApiModelProperty(value = "审核人")
    private String authUser;
    @ApiModelProperty(value = "审核时间")
    private Timestamp authTime;
    @ApiModelProperty(value = "审核信息")
    private String authMessage;
    public void copy(Merchants source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java
New file
@@ -0,0 +1,36 @@
package com.oying.modules.system.domain.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
/**
* @author lixin
* @date 2025-05-29
**/
@Data
public class MerchantsQueryCriteria{
    @ApiModelProperty(value = "页码", example = "1")
    private Integer page = 1;
    @ApiModelProperty(value = "每页数据量", example = "10")
    private Integer size = 10;
    @ApiModelProperty(value = "名称")
    private String merchantName;
    @ApiModelProperty(value = "商户编码")
    private String merchantCode;
    @ApiModelProperty(value = "营业执照号")
    private String businessLicense;
    @ApiModelProperty(value = "联系手机")
    private String contactMobile;
    @ApiModelProperty(value = "状态")
    private String enabled;
    private List<Timestamp> createTime;
}
oying-system/src/main/java/com/oying/modules/system/mapper/MerchantsMapper.java
New file
@@ -0,0 +1,22 @@
package com.oying.modules.system.mapper;
import com.oying.modules.system.domain.Merchants;
import com.oying.modules.system.domain.dto.MerchantsQueryCriteria;
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-05-29
**/
@Mapper
public interface MerchantsMapper extends BaseMapper<Merchants> {
    IPage<Merchants> findAll(@Param("criteria") MerchantsQueryCriteria criteria, Page<Object> page);
    List<Merchants> findAll(@Param("criteria") MerchantsQueryCriteria criteria);
}
oying-system/src/main/java/com/oying/modules/system/rest/MerchantsController.java
New file
@@ -0,0 +1,73 @@
package com.oying.modules.system.rest;
import com.oying.annotation.Log;
import com.oying.modules.system.domain.Merchants;
import com.oying.modules.system.service.MerchantsService;
import com.oying.modules.system.domain.dto.MerchantsQueryCriteria;
import lombok.RequiredArgsConstructor;
import java.util.List;
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-05-29
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "商户信息")
@RequestMapping("/api/merchants")
public class MerchantsController {
    private final MerchantsService merchantsService;
    @ApiOperation("导出数据")
    @GetMapping(value = "/download")
    @PreAuthorize("@el.check('merchants:list')")
    public void exportMerchants(HttpServletResponse response, MerchantsQueryCriteria criteria) throws IOException {
        merchantsService.download(merchantsService.queryAll(criteria), response);
    }
    @GetMapping
    @ApiOperation("查询商户信息")
    @PreAuthorize("@el.check('merchants:list')")
    public ResponseEntity<PageResult<Merchants>> queryMerchants(MerchantsQueryCriteria criteria){
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(merchantsService.queryAll(criteria,page),HttpStatus.OK);
    }
    @PostMapping
    @Log("新增商户信息")
    @ApiOperation("新增商户信息")
    @PreAuthorize("@el.check('merchants:add')")
    public ResponseEntity<Object> createMerchants(@Validated @RequestBody Merchants resources){
        merchantsService.create(resources);
        return new ResponseEntity<>(HttpStatus.CREATED);
    }
    @PutMapping
    @Log("修改商户信息")
    @ApiOperation("修改商户信息")
    @PreAuthorize("@el.check('merchants:edit')")
    public ResponseEntity<Object> updateMerchants(@Validated @RequestBody Merchants resources){
        merchantsService.update(resources);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }
    @DeleteMapping
    @Log("删除商户信息")
    @ApiOperation("删除商户信息")
    @PreAuthorize("@el.check('merchants:del')")
    public ResponseEntity<Object> deleteMerchants(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
        merchantsService.deleteAll(ids);
        return new ResponseEntity<>(HttpStatus.OK);
    }
}
oying-system/src/main/java/com/oying/modules/system/service/MerchantsService.java
New file
@@ -0,0 +1,59 @@
package com.oying.modules.system.service;
import com.oying.modules.system.domain.Merchants;
import com.oying.modules.system.domain.dto.MerchantsQueryCriteria;
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;
/**
* @description 服务接口
* @author lixin
* @date 2025-05-29
**/
public interface MerchantsService extends IService<Merchants> {
    /**
    * 查询数据分页
    * @param criteria 条件
    * @param page 分页参数
    * @return PageResult
    */
    PageResult<Merchants> queryAll(MerchantsQueryCriteria criteria, Page<Object> page);
    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<MerchantsDto>
    */
    List<Merchants> queryAll(MerchantsQueryCriteria criteria);
    /**
    * 创建
    * @param resources /
    */
    void create(Merchants resources);
    /**
    * 编辑
    * @param resources /
    */
    void update(Merchants resources);
    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(List<Long> ids);
    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
    * @throws IOException /
    */
    void download(List<Merchants> all, HttpServletResponse response) throws IOException;
}
oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantsServiceImpl.java
New file
@@ -0,0 +1,86 @@
package com.oying.modules.system.service.impl;
import com.oying.modules.system.domain.Merchants;
import com.oying.utils.FileUtil;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.oying.modules.system.service.MerchantsService;
import com.oying.modules.system.domain.dto.MerchantsQueryCriteria;
import com.oying.modules.system.mapper.MerchantsMapper;
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;
/**
* @description 服务实现
* @author lixin
* @date 2025-05-29
**/
@Service
@RequiredArgsConstructor
public class MerchantsServiceImpl extends ServiceImpl<MerchantsMapper, Merchants> implements MerchantsService {
    private final MerchantsMapper merchantsMapper;
    @Override
    public PageResult<Merchants> queryAll(MerchantsQueryCriteria criteria, Page<Object> page){
        return PageUtil.toPage(merchantsMapper.findAll(criteria, page));
    }
    @Override
    public List<Merchants> queryAll(MerchantsQueryCriteria criteria){
        return merchantsMapper.findAll(criteria);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(Merchants resources) {
        merchantsMapper.insert(resources);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(Merchants resources) {
        Merchants merchants = getById(resources.getMerchantsId());
        merchants.copy(resources);
        merchantsMapper.updateById(merchants);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Long> ids) {
        merchantsMapper.deleteBatchIds(ids);
    }
    @Override
    public void download(List<Merchants> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (Merchants merchants : all) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("名称", merchants.getMerchantName());
            map.put("商户编码", merchants.getMerchantCode());
            map.put("营业执照号", merchants.getBusinessLicense());
            map.put("营业执照号路径", merchants.getBusinessLicensePath());
            map.put("联系手机", merchants.getContactMobile());
            map.put("排序", merchants.getMerchantsSort());
            map.put("状态", merchants.getEnabled());
            map.put("审核人", merchants.getAuthUser());
            map.put("审核时间", merchants.getAuthTime());
            map.put("审核信息", merchants.getAuthMessage());
            map.put("创建者", merchants.getCreateBy());
            map.put("更新者", merchants.getUpdateBy());
            map.put("创建日期", merchants.getCreateTime());
            map.put("更新时间", merchants.getUpdateTime());
            list.add(map);
        }
        FileUtil.downloadExcel(list, response);
    }
}
oying-system/src/main/resources/mapper/system/MerchantsMapper.xml
New file
@@ -0,0 +1,48 @@
<?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.modules.system.mapper.MerchantsMapper">
    <resultMap id="BaseResultMap" type="com.oying.modules.system.domain.Merchants">
        <id column="merchants_id" property="merchantsId"/>
        <result column="merchant_name" property="merchantName"/>
        <result column="merchant_code" property="merchantCode"/>
        <result column="business_license" property="businessLicense"/>
        <result column="business_license_path" property="businessLicensePath"/>
        <result column="contact_mobile" property="contactMobile"/>
        <result column="merchants_sort" property="merchantsSort"/>
        <result column="enabled" property="enabled"/>
        <result column="create_by" property="createBy"/>
        <result column="update_by" property="updateBy"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="auth_user" property="authUser"/>
        <result column="auth_time" property="authTime"/>
        <result column="auth_message" property="authMessage"/>
    </resultMap>
    <sql id="Base_Column_List">
        merchants_id, merchant_name, merchant_code, business_license, business_license_path, contact_mobile, merchants_sort, enabled, create_by, update_by, create_time, update_time, auth_user, auth_time, auth_message
    </sql>
    <select id="findAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from sys_merchants
        <where>
            <if test="criteria.blurry != null and criteria.blurry != ''">
                and (
                merchant_name like concat('%', #{criteria.blurry}, '%')
                or merchant_code like concat('%', #{criteria.blurry}, '%')
                or business_license like concat('%', #{criteria.blurry}, '%')
                or contact_mobile like concat('%', #{criteria.blurry}, '%')
                )
            </if>
            <if test="criteria.enabled != null">
                and enabled = #{criteria.enabled}
            </if>
            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
            </if>
        </where>
        order by merchants_sort desc
    </select>
</mapper>