From 430d08078943bd7d5d60df5d014bd7af898ba1d2 Mon Sep 17 00:00:00 2001 From: lrh <1585126058@qq.com> Date: Sat, 1 Jul 2023 17:26:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=90=E5=95=86?= =?UTF-8?q?=E6=88=B7=E7=9A=84CRUD=E3=80=81=E6=96=B0=E5=A2=9E=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E7=B1=BB=E5=9E=8B=E5=8C=BA=E5=9F=9F=E5=95=86=E6=88=B7?= =?UTF-8?q?=E3=80=81=E6=96=B0=E5=A2=9E=E5=AD=90=E5=95=86=E6=88=B7=E5=92=8C?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E5=95=86=E6=88=B7=E5=85=B3=E7=B3=BB=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/WxMerchantController.java | 41 ++++++++ .../domain/po/WxMerchantRelation.java | 71 ++++++++++++++ .../com/iformall/enums/EnumMerchantAdmin.java | 4 +- .../com/iformall/mapper/WxMerchantMapper.java | 3 + .../mapper/WxMerchantRelationMapper.java | 28 ++++++ .../service/WxMerchantRelationService.java | 16 +++ .../iformall/service/WxMerchantService.java | 9 +- .../impl/WxMerchantRelationServiceImpl.java | 97 +++++++++++++++++++ .../service/impl/WxMerchantServiceImpl.java | 26 +++++ .../resources/mapper/WxMerchantMapper.xml | 24 +++++ .../mapper/WxMerchantRelationMapper.xml | 93 ++++++++++++++++++ 11 files changed, 407 insertions(+), 5 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxMerchantRelation.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxMerchantRelationMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxMerchantRelationService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxMerchantRelationServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxMerchantRelationMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java index 571526104..e583d4962 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java @@ -55,6 +55,9 @@ public class WxMerchantController extends BaseController { @Autowired private WxProfitPaymentReceiverService wxProfitPaymentReceiverService; + @Autowired + private WxMerchantRelationService wxMerchantRelationService; + @UserDataRuleAnnotation("merchant_list") @ApiOperation("分页列表接口") @@ -96,6 +99,44 @@ public class WxMerchantController extends BaseController { return new ResultData(page); } + @ApiOperation("区域商户和普通商户关系新增或更新") + @PostMapping("saveOrUpdate") + @SystemControllerLog(description = "区域商户和普通商户关系新增或更新") + public ResultData saveOrUpdate(@RequestBody WxMerchantRelation wxMerchantRelation) { + logger.debug("[" + getIpAddr() + "] WxMerchantController::saveOrUpdate"); + if (null == wxMerchantRelation) wxMerchantRelation = new WxMerchantRelation(); + wxMerchantRelation.updateTenantInfo(getTenantInfo()); + return wxMerchantRelationService.saveOrUpdate(wxMerchantRelation.getRegionMerchantId(),wxMerchantRelation.getMerchantIds(),wxMerchantRelation.getType(),wxMerchantRelation.getTenantId()); + } + + @ApiOperation("区域商户删除普通商户") + @GetMapping("/delByRegionId") + @ApiImplicitParam(name = "merchantId", value = "merchantId", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "区域用户删除普通用户") + public ResultData delByRegionId(Long merchantId) { + logger.debug("[" + getIpAddr() + "] WxMerchantController::delByRegionId"); + wxMerchantRelationService.deleteByMerchantId(merchantId); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @ApiOperation("区域商户和子商户列表") + @GetMapping("/relationList") + @ApiImplicitParam(name = "regionId", value = "regionId", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "区域用户删除普通用户") + public ResultData relationList(Long regionId) { + logger.debug("[" + getIpAddr() + "] WxMerchantController::relationList"); + List merchants = wxMerchantService.relationList(regionId); + return new ResultData(merchants); + } + + @ApiOperation("子商户列表查询") + @GetMapping("/subMerchantList") + @SystemControllerLog(description = "子商户列表查询") + public ResultData subMerchantList() { + logger.debug("[" + getIpAddr() + "] WxMerchantController::subMerchantList"); + List merchants = wxMerchantService.subMerchantList(); + return new ResultData(merchants); + } @ApiOperation("分页列表接口") @GetMapping("list") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantRelation.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantRelation.java new file mode 100644 index 000000000..090a11036 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantRelation.java @@ -0,0 +1,71 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 普通商户与区域商户关系表 + * + * @author LRH + */ +@Data +@TableName("wx_merchant_relation") +@ToString(callSuper = true) +public class WxMerchantRelation extends TenantEntity { + /** + * 主键ID + */ + private Long id; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 父租户ID + */ + private String parentTenantId; + + /** + * 区域商户id + */ + private Long regionMerchantId; + + /** + * 普通商户id + */ + private Long merchantId; + @TableField(exist = false) + private List merchantIds; + + /** + * 是否删除1是0否 + */ + private Integer isDel; + + /** + * 创建时间 + */ + private Date createDate; + + /** + * 更新时间 + */ + private Date updateDate; + /** + * 新增还是修改 1-新增 2-修改 + */ + @TableField(exist = false) + private Integer type; + + +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantAdmin.java b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantAdmin.java index 051a3582f..ebd5f84f1 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantAdmin.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantAdmin.java @@ -8,7 +8,9 @@ public enum EnumMerchantAdmin { PUBLIC_COMMON(0, "普通商户"), PUBLIC_ADMIN(1, "商管商户"), PRIVATE_SYSTEM(2, "系统抽成商户"), - PRIVATE_SELL(3, "销售抽成商户"),; + PRIVATE_SELL(3, "销售抽成商户"), + REGIONAL(4, "区域商户"), + ; public static EnumMerchantAdmin getEnum(Integer code) { for (EnumMerchantAdmin value : values()) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java index 9852c3151..e74f0fdc7 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java @@ -59,4 +59,7 @@ public interface WxMerchantMapper extends CommonMapper { int deleteByUpdate(Long id); + List getMerchantListByIds(@Param("relationIds") List relationIds); + + List getSubMerchantListByIds(@Param("merchantIds") List merchantIds); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantRelationMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantRelationMapper.java new file mode 100644 index 000000000..6c4364378 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantRelationMapper.java @@ -0,0 +1,28 @@ +package com.iformall.mapper; + + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxMerchantRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +public interface WxMerchantRelationMapper extends CommonMapper { + + Integer selectByIds(@Param("ids") List ids); + + void updateByReginId(@Param("regionId") Long regionId); + + void insertBatch(List list); + + List selectByReginId(@Param("regionId") Long regionId, @Param("ids") List ids); + + void updateByMerchantIds(@Param("merchantIds") List merchantIds); + + void deleteByMerchantId(@Param("merchantId") Long merchantId); + + List getRelationByRegionId(@Param("regionId") Long regionId); + + List getInfByIds(@Param("ids") List ids); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantRelationService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantRelationService.java new file mode 100644 index 000000000..c0ec38df3 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantRelationService.java @@ -0,0 +1,16 @@ +package com.iformall.service; + + +import com.iformall.common.ResultData; + +import java.util.List; + +public interface WxMerchantRelationService { + + ResultData saveOrUpdate(Long regionId, List ids, Integer type, String tenantId); + + void deleteByMerchantId(Long id); + + List getRelationByRegionId(Long regionId); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index 1829970a9..70b2a5613 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -3,19 +3,15 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxMerchantDto; -import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxMerchantCorp; import com.iformall.domain.po.WxPark; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxProfitSharingReceiver; import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.domain.vo.WxMerchantTradeDetailVo; import com.iformall.domain.vo.WxMerchantTradeVo; import com.iformall.domain.vo.WxMerchantVo; -import com.iformall.enums.EnumPayWay; -import org.apache.ibatis.annotations.Param; import org.springframework.web.bind.annotation.ModelAttribute; import javax.servlet.http.HttpServletRequest; @@ -219,4 +215,9 @@ public interface WxMerchantService { Map findMerchantMap(WxMerchant merchantQ); WxMerchant findParkMerchant(WxPark wxPark); + + List relationList(Long regionId); + + List subMerchantList(); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantRelationServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantRelationServiceImpl.java new file mode 100644 index 000000000..fcc6477f2 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantRelationServiceImpl.java @@ -0,0 +1,97 @@ +package com.iformall.service.impl; + + +import com.iformall.common.IdWorker; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxMerchantRelation; +import com.iformall.mapper.WxMerchantRelationMapper; +import com.iformall.service.WxMerchantRelationService; +import com.iformall.service.WxMerchantService; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + + +@Service +public class WxMerchantRelationServiceImpl implements WxMerchantRelationService { + + @Autowired + private WxMerchantRelationMapper wxMerchantRelationMapper; + + @Autowired + private WxMerchantService wxMerchantService; + + @Transactional(rollbackFor = {Exception.class}) + @Override + public ResultData saveOrUpdate(Long regionId, List ids, Integer type, String tenantId) { + if (regionId == null) { + return new ResultData(Result.ERROR, "区域商户id不能为空"); + } + + //如果没选择普通商户,删除所有关系 + if (CollectionUtils.isEmpty(ids)) { + wxMerchantRelationMapper.updateByReginId(regionId); + return new ResultData(Result.SUCCESS, "编辑成功", null); + } + + //先去查询是否存在,如果存在再去排除这个id去进行查询是否存在 + List infByIds = wxMerchantRelationMapper.getInfByIds(ids); + List list = new ArrayList<>(); + if (!CollectionUtils.isEmpty(infByIds)) { + list = infByIds.parallelStream().map(WxMerchantRelation::getMerchantId).collect(Collectors.toList()); + //判断子商户是否已经被选了 + Integer integer = wxMerchantRelationMapper.selectByIds(list); + if (integer > 0) { + return new ResultData(Result.ERROR, "存在子商户在其他区域商户下"); + } + } + + List finalList = list; + List collected = ids.parallelStream().filter(x -> !finalList.contains(x)).collect(Collectors.toList()); + //1-新增 2-修改 + if (type == 1) { + //选择就插入 + insertInfo(regionId, ids, tenantId); + return new ResultData(Result.SUCCESS, "新增成功", null); + } else if (type == 2) { + wxMerchantRelationMapper.updateByMerchantIds(list); + if (!CollectionUtils.isEmpty(collected)){ + insertInfo(regionId, collected, tenantId); + } + return new ResultData(Result.SUCCESS, "编辑成功", null); + } + return null; + } + + public void insertInfo(Long regionId, List ids, String tenantId) { + List list = new ArrayList<>(); + for (Long id : ids) { + WxMerchantRelation relation = new WxMerchantRelation(); + relation.setId(IdWorker.get().nextId()); + relation.setMerchantId(id); + relation.setRegionMerchantId(regionId); + relation.setIsDel(0); + relation.setTenantId(tenantId); + list.add(relation); + } + wxMerchantRelationMapper.insertBatch(list); + } + + + @Override + public void deleteByMerchantId(Long merchantId) { + wxMerchantRelationMapper.deleteByMerchantId(merchantId); + } + + @Override + public List getRelationByRegionId(Long regionId) { + return wxMerchantRelationMapper.getRelationByRegionId(regionId); + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 3d3fa004f..e4ba1a36e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -23,6 +23,7 @@ import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; import com.iformall.utils.RedisCacheUtils; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -151,6 +152,9 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Autowired WxBrandMapper wxBrandMapper; + + @Autowired + WxMerchantRelationService wxMerchantRelationService; @Autowired @Qualifier("objectCommonRedisTemplate") @@ -2055,4 +2059,26 @@ public class WxMerchantServiceImpl implements WxMerchantService { return record; } + + /** + * 该区域商户下有哪些子商户 + */ + @Override + public List relationList(Long regionId) { + List relationIds = wxMerchantRelationService.getRelationByRegionId(regionId); + if (CollectionUtils.isEmpty(relationIds)){ + return null; + } + return wxMerchantMapper.getMerchantListByIds(relationIds); + } + + /** + * 查询剩余子商户 + */ + @Override + public List subMerchantList() { + //查询已经被选择了的子商户 + List merchantIds = wxMerchantRelationService.getRelationByRegionId(null); + return wxMerchantMapper.getSubMerchantListByIds(merchantIds); + } } diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index 0c69ee756..36c9a6843 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -450,4 +450,28 @@ where id = #{id} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxMerchantRelationMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantRelationMapper.xml new file mode 100644 index 000000000..07266249f --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxMerchantRelationMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`merchant_id`,`region_merchant_id`,`is_del`,`create_date`,`update_date` + + + + + + update wx_merchant_relation + set is_del = 1, update_date = now() + where region_merchant_id = #{regionId} + + + + insert into wx_merchant_relation (id, tenant_id,merchant_id,region_merchant_id ) + values + + (#{item.id}, + #{item.tenantId}, + #{item.merchantId}, + #{item.regionMerchantId}) + + + + + + + update wx_merchant_relation + set is_del = 0, + update_date = now() + where merchant_id in + + #{id} + + + + + update wx_merchant_relation + set is_del = 1, update_date = now() + where merchant_id = #{merchantId} + + + + + + + From 6536f76f4af1d6b2a3821dcceb585f7534489631 Mon Sep 17 00:00:00 2001 From: lrh <1585126058@qq.com> Date: Sat, 1 Jul 2023 17:43:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=A1=A8=E7=9A=84sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V2023070100001_wx_merchant_relation.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2023070100001_wx_merchant_relation.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023070100001_wx_merchant_relation.sql b/mallinkAdmin/src/main/resources/db/migration/V2023070100001_wx_merchant_relation.sql new file mode 100644 index 000000000..0d96d9640 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2023070100001_wx_merchant_relation.sql @@ -0,0 +1,12 @@ +CREATE TABLE `wx_merchant_relation` +( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', + `region_merchant_id` bigint(20) NOT NULL COMMENT '区域商户id', + `merchant_id` bigint(20) NOT NULL COMMENT '普通商户id', + `is_del` smallint(1) DEFAULT '0' COMMENT '是否删除1是0否', + `create_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='普通商户与区域商户关系表'; \ No newline at end of file