From 22abfe68fa5b8a2713369225754759a68bdb2a30 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Thu, 29 May 2025 00:59:13 +0800 Subject: [PATCH] 商户 --- oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantsServiceImpl.java | 86 ++++++++++++ oying-system/src/main/resources/mapper/system/MerchantsMapper.xml | 48 ++++++ oying-system/src/main/java/com/oying/modules/system/mapper/MerchantsMapper.java | 22 +++ oying-system/src/main/java/com/oying/modules/system/rest/MerchantsController.java | 73 ++++++++++ oying-system/src/main/java/com/oying/modules/system/domain/Merchants.java | 68 +++++++++ oying-system/src/main/java/com/oying/modules/system/service/MerchantsService.java | 59 ++++++++ oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java | 36 +++++ 7 files changed, 392 insertions(+), 0 deletions(-) diff --git a/oying-system/src/main/java/com/oying/modules/system/domain/Merchants.java b/oying-system/src/main/java/com/oying/modules/system/domain/Merchants.java new file mode 100644 index 0000000..139f7b5 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/system/domain/Merchants.java @@ -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)); + } +} diff --git a/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java new file mode 100644 index 0000000..f56c7a0 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java @@ -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; +} diff --git a/oying-system/src/main/java/com/oying/modules/system/mapper/MerchantsMapper.java b/oying-system/src/main/java/com/oying/modules/system/mapper/MerchantsMapper.java new file mode 100644 index 0000000..c1ea786 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/system/mapper/MerchantsMapper.java @@ -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); +} diff --git a/oying-system/src/main/java/com/oying/modules/system/rest/MerchantsController.java b/oying-system/src/main/java/com/oying/modules/system/rest/MerchantsController.java new file mode 100644 index 0000000..2ccf7ee --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/system/rest/MerchantsController.java @@ -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); + } +} diff --git a/oying-system/src/main/java/com/oying/modules/system/service/MerchantsService.java b/oying-system/src/main/java/com/oying/modules/system/service/MerchantsService.java new file mode 100644 index 0000000..c822ba9 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/system/service/MerchantsService.java @@ -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; +} diff --git a/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantsServiceImpl.java b/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantsServiceImpl.java new file mode 100644 index 0000000..ca6c22c --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantsServiceImpl.java @@ -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); + } +} diff --git a/oying-system/src/main/resources/mapper/system/MerchantsMapper.xml b/oying-system/src/main/resources/mapper/system/MerchantsMapper.xml new file mode 100644 index 0000000..526dea8 --- /dev/null +++ b/oying-system/src/main/resources/mapper/system/MerchantsMapper.xml @@ -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> -- Gitblit v1.9.3