From 384028b7bf1ff761e30e83ab144d8ce22d3a4af6 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Mon, 27 Oct 2025 15:22:35 +0800 Subject: [PATCH 01/15] =?UTF-8?q?##=20=E5=95=86=E5=93=81=E4=B8=93=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/ApiAreaClassifyController.java | 16 ++++ .../product/mapper/BdAreaClassifyMapper.java | 3 + .../service/IBdAreaClassifyService.java | 4 + .../impl/BdAreaClassifyServiceImpl.java | 35 +++++++- .../sale/product/vo/AreaClassifyTreeVo.java | 81 +++++++++++++++++++ .../sale/product/BdAreaClassifyMapper.xml | 37 +++++++++ 6 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java index 761245da..e13136c2 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java @@ -10,6 +10,7 @@ import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; import com.hzs.sale.product.service.IBdAreaClassifyService; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -42,6 +43,21 @@ public class ApiAreaClassifyController extends BaseController { return AjaxResult.success(list); } + /** + * 查询分类列表(拼接树形结构) + * @param areaClassifyParam + * @return + */ + @GetMapping("/listTree") + public AjaxResult listTree(AreaClassifyParam areaClassifyParam) { + areaClassifyParam.setEnableState(EYesNo.YES.getIntValue()); + areaClassifyParam.setPkCountry(SecurityUtils.getPkCountry()); + + List> treeList = iBdAreaClassifyService.selectByAreaClassifyListAll(areaClassifyParam); + return AjaxResult.success(treeList); + } + + /** * 查询第一层分类 diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java index 79ec2e29..cf3f2405 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java @@ -4,6 +4,7 @@ package com.hzs.sale.product.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.sale.product.BdAreaClassify; import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import java.util.List; @@ -23,4 +24,6 @@ public interface BdAreaClassifyMapper extends BaseMapper { * @return */ List selectByAreaClassifyList(AreaClassifyParam areaClassifyParam); + + List selectByAreaClassifyListAll(AreaClassifyParam areaClassifyParam); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java index 1cdffd24..addaf6b4 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java @@ -1,8 +1,10 @@ package com.hzs.sale.product.service; +import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.sale.product.BdAreaClassify; import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import com.hzs.system.sys.dto.LoginUser; @@ -51,4 +53,6 @@ public interface IBdAreaClassifyService extends IService { * @param pkId */ void deleteAreaClassify(Integer pkId); + + List> selectByAreaClassifyListAll(AreaClassifyParam areaClassifyParam); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java index c81a9a5b..039530f1 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java @@ -1,6 +1,8 @@ package com.hzs.sale.product.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.core.enums.EDelFlag; @@ -11,15 +13,15 @@ import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; import com.hzs.sale.product.mapper.BdAreaClassifyMapper; import com.hzs.sale.product.service.IBdAreaClassifyService; import com.hzs.sale.product.service.IBdAreaClassifySpecialAreaService; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import com.hzs.system.sys.dto.LoginUser; 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.*; +import java.util.stream.Collectors; /** * 商品分类 服务实现类 @@ -108,4 +110,31 @@ public class BdAreaClassifyServiceImpl extends ServiceImpl> selectByAreaClassifyListAll(AreaClassifyParam areaClassifyParam) { + List flatList = baseMapper.selectByAreaClassifyListAll(areaClassifyParam); + + flatList.forEach(vo -> { + vo.setId(String.valueOf(vo.getPkId())); + vo.setParentId(vo.getPkParent() != 0L ? String.valueOf(vo.getPkParent()) : "0"); + }); + + + return TreeUtil.build(flatList, "0", (node, tree) -> { + tree.setId(node.getId()); + tree.setParentId(node.getParentId()); + tree.setName(node.getClassifyName()); + tree.putExtra("classifyImg",node.getClassifyImg()); + tree.putExtra("classifyName",node.getClassifyName()); + tree.putExtra("creationTime",node.getCreationTime()); + tree.putExtra("enableState",node.getEnableState()); + tree.putExtra("hierarchy",node.getHierarchy()); + tree.putExtra("pkCountry",node.getPkCountry()); + tree.putExtra("pkCreator",node.getPkCreator()); + tree.putExtra("pkId",node.getPkId()); + tree.putExtra("pkParent",node.getPkParent()); + tree.putExtra("sort",node.getSort()); + }); + } + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java new file mode 100644 index 00000000..74b25b74 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java @@ -0,0 +1,81 @@ +package com.hzs.sale.product.vo; + +import com.hzs.common.core.web.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AreaClassifyTreeVo extends BaseEntity implements Serializable { + + /** + * 主键 + */ + private Integer pkId; + + /** + * 所属专区 + */ + private List specialArea; + + /** + * 分类名称 + */ + private String classifyName; + + + /** + * 排序 + */ + private Integer sort; + + + /** + * 上级专区主键 + */ + private Long pkParent; + + /** + * 分类图片 + */ + private String classifyImg; + + /** + * 是否启用 + */ + + private Integer enableState; + + /** + * 层级 0 表示 第一层 + */ + + private Integer hierarchy; + /** + * 上级分类名称 + */ + private String parentClassifyName; + + /** + * 下级数量 + */ + private Integer levelCount; + + /** + * 是否推荐 0 推荐 1 不推荐 + */ + + private Integer isRecommend; + + private String id; + + private String parentId; + + private List children = new ArrayList<>(); + + private AreaClassifyTreeVo Extra; +} diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml index 34c6f0a9..ae7a86af 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml @@ -73,5 +73,42 @@ order by ac.SORT desc + From 5affb183043cef9ebf8013e3cd51efd91b56de73 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Wed, 29 Oct 2025 09:28:37 +0800 Subject: [PATCH 02/15] =?UTF-8?q?##=20Fix=20-=20=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83,=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=B7=A5=E5=85=B7(payTool)=E5=8F=AF=E8=83=BD=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third/pay/controller/notify/JdPayNotifyController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java index 3489878b..314406c8 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java @@ -1,5 +1,6 @@ package com.hzs.third.pay.controller.notify; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.hzs.common.core.enums.EPayChannel; import com.hzs.common.core.enums.EPayType; @@ -153,6 +154,9 @@ public class JdPayNotifyController extends JdBaseController { return ERROR; } private Integer convertPayType(String payName){ + if(StrUtil.isEmpty(payName)){ + payName = ""; + } Integer result = EPayType.WECHAT.getValue(); switch (payName){ case "XJK": From 602a9a7fb65e0d66599a800a80000678bbef0bfc Mon Sep 17 00:00:00 2001 From: zhangheng Date: Wed, 29 Oct 2025 13:29:06 +0800 Subject: [PATCH 03/15] =?UTF-8?q?##=20=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=B9=E9=87=8F=E4=B8=8A=E4=B8=8B=E6=9E=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD,=E6=8C=89=E5=95=86=E5=93=81=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/manage/BdWaresController.java | 35 +++++++++++++++-- .../wares/mapper/BdWaresExtendMapper.java | 7 ++++ .../sale/wares/param/WaresPutOnIdsParams.java | 17 +++++++++ .../wares/service/IBdWaresExtendService.java | 4 ++ .../impl/BdWaresExtendServiceImpl.java | 38 +++++++++++++++++++ .../mapper/sale/wares/BdWaresExtendMapper.xml | 32 ++++++++++++++++ .../mapper/sale/wares/BdWaresMapper.xml | 3 ++ .../common/core/enums/EOperationBusiness.java | 4 ++ .../common/core/enums/EOperationModule.java | 4 ++ 9 files changed, 141 insertions(+), 3 deletions(-) create mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresPutOnIdsParams.java diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java index d2d98588..8aa307f8 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java @@ -2,6 +2,7 @@ package com.hzs.sale.wares.controller.manage; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hzs.common.core.annotation.AccessPermissions; @@ -79,8 +80,6 @@ public class BdWaresController extends BaseController { @Autowired private IBdWaresLabelService waresLabelService; @Autowired - private IBdWaresExtendService waresExtendService; - @Autowired private IBdWaresDetailService waresDetailService; @Autowired private IBdWaresSpecsSkuService waresSpecsSkuService; @@ -94,6 +93,8 @@ public class BdWaresController extends BaseController { private IBdAreaClassifyService areaClassifyService; @Autowired private UserTokenService userTokenService; + @Autowired + private IBdWaresExtendService iBdWaresExtendService; /** * 查询列表 @@ -561,7 +562,7 @@ public class BdWaresController extends BaseController { BdWares wares = iBdWaresService.getById(pkId); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(BdWaresExtend::getPkWares, pkId); - BdWaresExtend waresExtend = waresExtendService.getOne(queryWrapper); + BdWaresExtend waresExtend = iBdWaresExtendService.getOne(queryWrapper); WaresParams waresParams = new WaresParams(); waresParams.setWaresId(wares.getPkId()); waresParams.setIsPreSale(wares.getIsPreSale()); @@ -1119,4 +1120,32 @@ public class BdWaresController extends BaseController { } + /** + * 商品批量上架 + */ + @Log(module = EOperationModule.PUT_ON_LIST, business = EOperationBusiness.PUT_ON_LIST, method = EOperationMethod.RENEW, remark = "商品批量上架") + @PostMapping("/putOnList") + public AjaxResult putOnList(@RequestBody WaresPutOnIdsParams waresPutOnIdsParams) { + if (CollectionUtils.isEmpty(waresPutOnIdsParams.getPkWares())) { + return AjaxResult.error("商品ID不能为空"); + } + iBdWaresExtendService.putOnList(waresPutOnIdsParams); + return AjaxResult.success(); + } + + + /** + * 商品批量下架 + */ + @Log(module = EOperationModule.PUT_OFF_LIST, business = EOperationBusiness.PUT_OFF_LIST, method = EOperationMethod.RENEW, remark = "商品批量下架") + @PostMapping("/putOffList") + public AjaxResult putOffList(@RequestBody WaresPutOnIdsParams waresPutOnIdsParams) { + if (CollectionUtils.isEmpty(waresPutOnIdsParams.getPkWares())) { + return AjaxResult.error("商品ID不能为空"); + } + iBdWaresExtendService.putOffList(waresPutOnIdsParams); + return AjaxResult.success(); + } + + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresExtendMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresExtendMapper.java index 400d5bbf..e96257dd 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresExtendMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresExtendMapper.java @@ -49,4 +49,11 @@ public interface BdWaresExtendMapper extends BaseMapper { */ int batchUpdateInventoryUse(@Param("limitList") List limitList); + void putOnList(@Param("pkWares") List pkWares); + + void putOffList(@Param("pkWares") List pkWares); + + void updatePutOnTimeByPkWares(@Param("pkWares") List pkWares); + + void updatePutOffTimeByPkWares(@Param("pkWares") List pkWares); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresPutOnIdsParams.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresPutOnIdsParams.java new file mode 100644 index 00000000..9cda1569 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresPutOnIdsParams.java @@ -0,0 +1,17 @@ +package com.hzs.sale.wares.param; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class WaresPutOnIdsParams { + /** + * 商品主键信息 + */ + private List pkWares; +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresExtendService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresExtendService.java index c9c6172c..c33f3deb 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresExtendService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresExtendService.java @@ -5,6 +5,7 @@ import com.hzs.common.domain.sale.wares.BdWaresExtend; import com.hzs.common.domain.sale.wares.BdWaresMemberLimit; import com.hzs.sale.order.param.WaresNumberParam; import com.hzs.sale.order.vo.WaresPreSaleVo; +import com.hzs.sale.wares.param.WaresPutOnIdsParams; import java.util.Collection; import java.util.Date; @@ -56,4 +57,7 @@ public interface IBdWaresExtendService extends IService { */ int batchUpdateInventoryUse(List limitList); + void putOnList(WaresPutOnIdsParams waresPutOnIdsParams); + + void putOffList(WaresPutOnIdsParams waresPutOnIdsParams); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresExtendServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresExtendServiceImpl.java index 04bcae8e..de2aa101 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresExtendServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresExtendServiceImpl.java @@ -1,6 +1,7 @@ package com.hzs.sale.wares.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.domain.sale.wares.BdWaresExtend; @@ -8,18 +9,23 @@ import com.hzs.common.domain.sale.wares.BdWaresMemberLimit; import com.hzs.sale.order.param.WaresNumberParam; import com.hzs.sale.order.vo.WaresPreSaleVo; import com.hzs.sale.wares.mapper.BdWaresExtendMapper; +import com.hzs.sale.wares.param.WaresPutOnIdsParams; import com.hzs.sale.wares.service.IBdWaresExtendService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 商品发布扩展表 服务实现类 */ @Service +@Slf4j public class BdWaresExtendServiceImpl extends ServiceImpl implements IBdWaresExtendService { @Override @@ -62,4 +68,36 @@ public class BdWaresExtendServiceImpl extends ServiceImpl bdWaresExtends = baseMapper.selectList(new LambdaQueryWrapper() + .in(BdWaresExtend::getPkWares, waresPutOnIdsParams.getPkWares()) + .eq(BdWaresExtend::getIsPutOn, 1)); + List list = bdWaresExtends.stream().map(BdWaresExtend::getPkWares).collect(Collectors.toList()); + log.info("当前未上架商品主键列表{}",list); + if (CollectionUtil.isEmpty(list)) { + return; + } + baseMapper.putOnList(list); + baseMapper.updatePutOnTimeByPkWares(list); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void putOffList(WaresPutOnIdsParams waresPutOnIdsParams) { + log.info("下架商品主键列表{}",waresPutOnIdsParams.getPkWares()); + List bdWaresExtends = baseMapper.selectList(new LambdaQueryWrapper() + .in(BdWaresExtend::getPkWares, waresPutOnIdsParams.getPkWares()) + .eq(BdWaresExtend::getIsPutOn, 0)); + List list = bdWaresExtends.stream().map(BdWaresExtend::getPkWares).collect(Collectors.toList()); + log.info("当前未下架商品主键列表{}",list); + if (CollectionUtil.isEmpty(list)) { + return; + } + baseMapper.putOffList(list); + baseMapper.updatePutOffTimeByPkWares(list); + } + } diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml index 87442380..ecba0662 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml @@ -100,5 +100,37 @@ when matched then update set bwe.inventory_use = bwe.inventory_use + tmp.quantity + + update BD_WARES_EXTEND + SET IS_PUT_ON = 0 + WHERE PK_WARES IN + + #{id} + + + + update BD_WARES_EXTEND + SET IS_PUT_ON = 1 + WHERE PK_WARES IN + + #{id} + + + + update BD_WARES + SET LISTING_TIME = SYSDATE + WHERE PK_ID IN + + #{id} + + + + update BD_WARES + SET REMOVAL_TIME = SYSDATE + WHERE PK_ID IN + + #{id} + + diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml index 8d1fd055..efa902e1 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml @@ -263,6 +263,9 @@ and bw.WARES_STATUS <= #{waresStatus} + + and we.IS_MAKER_GIFT = #{isMakerGift} + order by bw.sort desc, bw.CREATION_TIME desc diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationBusiness.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationBusiness.java index b92c6aaa..0cc82ef5 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationBusiness.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationBusiness.java @@ -110,6 +110,10 @@ public enum EOperationBusiness { WARES_LIST("商品列表"), + PUT_ON_LIST("商品批量上架"), + + PUT_OFF_LIST("商品批量下架"), + AREA_CLASSIFY("商品分类"), PRODUCT_CLASSIFY("产品分类"), diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java index 703fc2b7..50c1be4d 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java @@ -72,6 +72,10 @@ public enum EOperationModule { WARES_LIST("商品列表"), + PUT_ON_LIST("商品批量上架"), + + PUT_OFF_LIST("商品批量下架"), + AREA_CLASSIFY("商品分类"), SPECIFICATIONS_CONFIG("规格配置"), From e2e36b8389e5221cb51069dcbd35a03ab487bcef Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 29 Oct 2025 15:27:15 +0800 Subject: [PATCH 04/15] =?UTF-8?q?##=20=E6=B4=BB=E5=8A=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81=E6=B7=BB=E5=8A=A0=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=BF=87=E6=BB=A4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/ApiActivityController.java | 52 +++++++++------- .../base/mapper/AcBaseAuthorityMapper.java | 14 ++++- .../base/service/IAcBaseAuthorityService.java | 8 ++- .../impl/AcBaseAuthorityServiceImpl.java | 62 ++++++++++++++++++- .../activity/base/AcBaseAuthorityMapper.xml | 22 +++++++ .../activity/base/AcBaseConfigMapper.xml | 15 +---- .../domain/activity/base/AcBaseAuthority.java | 3 - 7 files changed, 130 insertions(+), 46 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/controller/api/ApiActivityController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/controller/api/ApiActivityController.java index 61822838..3cdcd018 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/controller/api/ApiActivityController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/controller/api/ApiActivityController.java @@ -1,7 +1,10 @@ package com.hzs.activity.base.controller.api; +import cn.hutool.core.collection.CollectionUtil; import com.hzs.activity.base.param.ActivityParam; +import com.hzs.activity.base.service.IAcBaseAuthorityService; import com.hzs.activity.base.service.IAcBaseConfigService; +import com.hzs.common.core.enums.EActType; import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.domain.activity.base.AcBaseConfig; @@ -14,44 +17,51 @@ import java.util.ArrayList; import java.util.List; /** - * @description: 查询活动列表 - * @author: sui q - * @time: 2023/4/27 09:15 - * @classname: ApiActivityController - * @package_name: com.hzs.activity.base.controller.api - * version 1.0.0 + * 查询活动列表 */ @RestController @RequestMapping("/api/base") public class ApiActivityController extends BaseController { - private IAcBaseConfigService baseConfigService; - @Autowired - public void setBaseConfigService(IAcBaseConfigService baseConfigService) { - this.baseConfigService = baseConfigService; - } + private IAcBaseConfigService iAcBaseConfigService; + @Autowired + private IAcBaseAuthorityService iAcBaseAuthorityService; /* - * @description: 查询活动列表 - * @author: sui q - * @date: 2023/4/21 17:33 - * @param: null null + * 查询活动列表 **/ @GetMapping("/activity-list") public TableDataInfo activityList() { - return getDataTable(baseConfigService.queryBaseConfigList(SecurityUtils.getPkCountry(), SecurityUtils.getUserId())); + Long pkMember = SecurityUtils.getUserId(); + String memberCode = SecurityUtils.getMemberCode(); + + List resultList = new ArrayList<>(); + + List list = iAcBaseConfigService.queryBaseConfigList(SecurityUtils.getPkCountry(), SecurityUtils.getUserId()); + if (CollectionUtil.isNotEmpty(list)) { + for (AcBaseConfigExt acBaseConfigExt : list) { + if (EActType.DECLARATION_GIFT.getValue() == acBaseConfigExt.getActType()) { + // 报单赠送,需要处理权限 + if (!iAcBaseAuthorityService.checkAuthority(pkMember, memberCode, acBaseConfigExt.getPkId())) { + continue; + } + } + resultList.add(acBaseConfigExt); + } + } + + TableDataInfo tableDataInfo = getDataTable(list); + tableDataInfo.setRows(resultList); + return tableDataInfo; } /* - * @description: 查询活动列表 - * @author: sui q - * @date: 2023/4/21 17:33 - * @param: null null + * 查询活动列表 **/ @PostMapping("/activity-detail") public TableDataInfo activityDetail(@RequestBody ActivityParam activityParam) { - AcBaseConfigExt acBaseConfig = baseConfigService.queryBaseConfigDetail(activityParam.getPkId(), SecurityUtils.getPkCountry()); + AcBaseConfigExt acBaseConfig = iAcBaseConfigService.queryBaseConfigDetail(activityParam.getPkId(), SecurityUtils.getPkCountry()); List acBaseConfigList = new ArrayList<>(); acBaseConfigList.add(acBaseConfig); return getDataTable(acBaseConfigList); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/mapper/AcBaseAuthorityMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/mapper/AcBaseAuthorityMapper.java index 2e06fba1..bccb4e85 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/mapper/AcBaseAuthorityMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/mapper/AcBaseAuthorityMapper.java @@ -5,12 +5,10 @@ import com.hzs.common.domain.activity.base.AcBaseAuthority; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * 活动基础权限表 Mapper 接口 - * - * @author hzs - * @since 2025-02-18 */ public interface AcBaseAuthorityMapper extends BaseMapper { @@ -40,4 +38,14 @@ public interface AcBaseAuthorityMapper extends BaseMapper { */ List listAuthority(@Param("pkBaseId") Long pkBaseId); + /** + * 批量查询会员是否在血缘伞下 + */ + Set queryBlood(@Param("paramList") Set paramList, @Param("pkMember") Long pkMember); + + /** + * 批量查询会员是否在安置伞下 + */ + Set queryPlace(@Param("paramList") Set paramList, @Param("pkMember") Long pkMember); + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/IAcBaseAuthorityService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/IAcBaseAuthorityService.java index 94cc7d3d..6455dfab 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/IAcBaseAuthorityService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/IAcBaseAuthorityService.java @@ -7,9 +7,6 @@ import java.util.List; /** * 活动基础权限表 服务类 - * - * @author hzs - * @since 2025-02-18 */ public interface IAcBaseAuthorityService extends IService { @@ -39,4 +36,9 @@ public interface IAcBaseAuthorityService extends IService { */ List listAuthority(Long pkBaseId); + /** + * 校验权限 + */ + boolean checkAuthority(Long pkMember, String memberCode, Long pkBaseId); + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/AcBaseAuthorityServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/AcBaseAuthorityServiceImpl.java index 4bae60e5..cee11255 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/AcBaseAuthorityServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/AcBaseAuthorityServiceImpl.java @@ -1,18 +1,19 @@ package com.hzs.activity.base.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.hzs.activity.base.mapper.AcBaseAuthorityMapper; import com.hzs.activity.base.service.IAcBaseAuthorityService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.common.core.enums.EWaresPermissionType; import com.hzs.common.domain.activity.base.AcBaseAuthority; import org.springframework.stereotype.Service; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * 活动基础权限表 服务实现类 - * - * @author hzs - * @since 2025-02-18 */ @Service public class AcBaseAuthorityServiceImpl extends ServiceImpl implements IAcBaseAuthorityService { @@ -32,4 +33,59 @@ public class AcBaseAuthorityServiceImpl extends ServiceImpl authorityList = baseMapper.listAuthority(pkBaseId); + if (CollectionUtil.isNotEmpty(authorityList)) { + // 血缘查询 + Set authorityParentSet = new HashSet<>(); + // 安置查询 + Set authorityPlaceSet = new HashSet<>(); + + for (AcBaseAuthority acBaseAuthority : authorityList) { + if (EWaresPermissionType.MEMBER.getValue() == acBaseAuthority.getAuthorityType()) { + // 指定会员 + if (acBaseAuthority.getMemberCode().equals(memberCode)) { + return true; + } + } else if (EWaresPermissionType.BLOOD_ALLOW.getValue() == acBaseAuthority.getAuthorityType() + || EWaresPermissionType.BLOOD_STOP.getValue() == acBaseAuthority.getAuthorityType()) { + // 血缘关系 + authorityParentSet.add(acBaseAuthority.getMemberCode()); + } else if (EWaresPermissionType.PLACE_ALLWO.getValue() == acBaseAuthority.getAuthorityType() + || EWaresPermissionType.PLACE_STOP.getValue() == acBaseAuthority.getAuthorityType()) { + // 安置关系 + authorityPlaceSet.add(acBaseAuthority.getMemberCode()); + } + } + + // 查询血缘 + Set authParentList = new HashSet<>(); + if (authorityParentSet.size() > 0) { + authParentList = baseMapper.queryBlood(authorityParentSet, pkMember); + } + // 查询安置 + Set authPlaceList = new HashSet<>(); + if (authorityPlaceSet.size() > 0) { + authPlaceList = baseMapper.queryPlace(authorityPlaceSet, pkMember); + } + + for (AcBaseAuthority acBaseAuthority : authorityList) { + if (acBaseAuthority.getAuthorityType() == EWaresPermissionType.BLOOD_STOP.getValue()) { + // 血缘禁止 + if (authParentList.contains(pkMember)) { + return false; + } + } else if (acBaseAuthority.getAuthorityType() == EWaresPermissionType.PLACE_STOP.getValue()) { + // 安置禁止 + if (authPlaceList.contains(pkMember)) { + return false; + } + } + } + + } + return true; + } + } diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseAuthorityMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseAuthorityMapper.xml index 0e2d1e70..5ef62d21 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseAuthorityMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseAuthorityMapper.xml @@ -36,4 +36,26 @@ and aba.pk_base_id = #{pkBaseId} + + + + diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseConfigMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseConfigMapper.xml index f9f4f7f8..9ba441b9 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseConfigMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/activity/base/AcBaseConfigMapper.xml @@ -56,25 +56,14 @@ when act_end_date < sysdate then 2 else 1 end) ACT_STATUS, ac.act_explain, - nvl(draw.exist_draw_num, 1) exist_draw_num, - pk_new_people, - nvl(people.exist_new_people_gift, 1) exist_new_people_gift + nvl(draw.exist_draw_num, 1) exist_draw_num from ac_base_config ac left join ( select pk_base_id, 0 exist_draw_num from ac_draw_reward_num where del_flag = 0 and pk_member = #{pkMember} - and (total_surplus_num + available_surplus_num) > 0) draw - on ac.pk_id = draw.pk_base_id - left join ( - select distinct pk_base_id, pk_new_people, 0 exist_new_people_gift - from ac_people_service - where del_flag = 0 - and pk_member = #{pkMember} - and plan_state = 0 - ) people - on ac.pk_id = people.pk_base_id + and (total_surplus_num + available_surplus_num) > 0) draw on ac.pk_id = draw.pk_base_id where ac.del_flag = 0 and ac.pk_country = #{pkCountry} and ac.dis_start_date <= sysdate diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/base/AcBaseAuthority.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/base/AcBaseAuthority.java index fb5ccf89..00b87ceb 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/base/AcBaseAuthority.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/base/AcBaseAuthority.java @@ -9,9 +9,6 @@ import java.io.Serializable; /** * 活动基础权限表 - * - * @author hzs - * @since 2025-02-18 */ @Data @Accessors(chain = true) From 3b178ca16081141877dd1adfb2553418f701298d Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 29 Oct 2025 15:45:12 +0800 Subject: [PATCH 05/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=A4=84=E7=90=86=E4=BC=98=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/AcTourismServiceProvider.java | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index 8b0a790f..5790e5e6 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.hzs.activity.base.service.IAcBaseConfigService; import com.hzs.activity.declaration.service.IAcDeclarationGiftConfigService; import com.hzs.activity.declaration.service.IAcDeclarationGiftRecordService; +import com.hzs.common.core.enums.*; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftConfig; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftRecord; import com.hzs.activity.tourism.IAcTourismServiceApi; import com.hzs.activity.tourism.service.IAcTourismDataService; import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.EOrderType; import com.hzs.common.domain.activity.base.AcBaseConfig; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.sale.order.SaOrder; @@ -110,33 +110,38 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { Date targetDate = java.sql.Date.valueOf(LocalDate.now().minusDays(7)); log.info("处理日期: {}", targetDate); + // 获取所有7天前有效的报单赠送活动 + List acBaseConfigList = iAcBaseConfigService.list(new LambdaQueryWrapper() + .le(AcBaseConfig::getActStartDate, targetDate) + .ge(AcBaseConfig::getActEndDate, targetDate) + .eq(AcBaseConfig::getActType, EActType.DECLARATION_GIFT.getValue()) + .eq(AcBaseConfig::getDelFlag, EDelFlag.UN_DELETE.getValue())); + if (acBaseConfigList.isEmpty()) { + log.info("{}天前无有效报单赠送活动,处理结束", daysAgo); + return R.ok(); + } + // 查询订单 List orderList = iSaOrderService.list(new LambdaQueryWrapper() .nested(w -> w.in(SaOrder::getOrderType, EOrderType.REGISTER_ORDER.getValue(), EOrderType.UPGRADE_ORDER.getValue()) .or() .nested(x -> x.eq(SaOrder::getOrderType, EOrderType.REPURCHASE_ORDER.getValue()) - .eq(SaOrder::getOrderTypeExtend, 1))) + .eq(SaOrder::getOrderTypeExtend, EOrderTypeExtend.REG_REP.getValue()))) .apply("TRUNC(PAY_TIME) BETWEEN TRUNC(SYSDATE - {0}) AND TRUNC(SYSDATE - 7)", daysAgo) - .eq(SaOrder::getOrderStatus, 1) - .eq(SaOrder::getDelFlag, 0) + .eq(SaOrder::getOrderStatus, EOrderStatus.PAY.getValue()) + .eq(SaOrder::getDelFlag, EDelFlag.UN_DELETE.getValue()) ); - log.info("{}天无有效订单,处理结束", daysAgo); - // 获取所有7天前有效的报单赠送活动 - List acBaseConfigList = iAcBaseConfigService.list(new LambdaQueryWrapper() - .le(AcBaseConfig::getActStartDate, targetDate) - .ge(AcBaseConfig::getActEndDate, targetDate) - .eq(AcBaseConfig::getActType, 32) - .eq(AcBaseConfig::getDelFlag, 0)); - if (acBaseConfigList.isEmpty()) { - log.info("{}天前无有效报单赠送活动,处理结束", daysAgo); + if (orderList.isEmpty()) { + log.info("{}天无有效订单,处理结束", daysAgo); return R.ok(); } + // 报单赠送活动主键集合 List declarationBaseIds = acBaseConfigList.stream().map(AcBaseConfig::getPkId).collect(Collectors.toList()); // 查询所有报单赠送活动数据 List declarationGiftConfigs = iAcDeclarationGiftConfigService.list(new LambdaQueryWrapper() .in(AcDeclarationGiftConfig::getPkBaseId, declarationBaseIds) - .eq(AcDeclarationGiftConfig::getDelFlag, 0)); + .eq(AcDeclarationGiftConfig::getDelFlag, EDelFlag.UN_DELETE.getValue())); Map configMap = declarationGiftConfigs.stream() .collect(Collectors.toMap( cfg -> cfg.getRegisterAuthority() + "_" + cfg.getSpecifyLevel(), @@ -145,14 +150,16 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { )); orderList.forEach(order -> { + // TODO 一天可能会有几百单,最好改成批量查询 // 查看是否有重复订单 int count = iAcDeclarationGiftRecordService.count(new LambdaQueryWrapper() .eq(AcDeclarationGiftRecord::getOrderCode, order.getOrderCode()) - .eq(AcDeclarationGiftRecord::getDelFlag, 0)); + .eq(AcDeclarationGiftRecord::getDelFlag, EDelFlag.UN_DELETE.getValue())); if (count > 0) { log.warn("当前订单已同步至报单明细{}", order.getOrderCode()); return; } + // TODO 下面两个查询会员,报单会员可能都是同一个人,最好提前查询或者做个map存下来,防止多次查询数据库 // 查询新会员信息 R newMemberResult = iMemberServiceApi.getMember(order.getPkMember()); CuMember newMember = newMemberResult.getData(); @@ -174,6 +181,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { return; } + // TODO 入库改成批量 AcDeclarationGiftRecord record = AcDeclarationGiftRecord.builder() .pkRuleId(matchedConfig.getPkId()) .pkBaseId(matchedConfig.getPkBaseId()) @@ -181,7 +189,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { .syncStatus(0) .build(); record.setCreationTime(new Date()); - record.setDelFlag(0); + record.setDelFlag(EDelFlag.UN_DELETE.getValue()); record.setPkCreator(oldMember.getPkId()); record.setPkCountry(pkCountry); // 插入数据库 From bd03ec538d39a1c83e4434c5fe0450bd5e5daf49 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 29 Oct 2025 16:08:08 +0800 Subject: [PATCH 06/15] =?UTF-8?q?##=20=E6=94=AF=E4=BB=98=E5=A4=A7=E4=BA=8E?= =?UTF-8?q?1=E5=85=83=E6=89=8D=E9=9A=8F=E6=9C=BA=E5=87=8F=EF=BC=9B?= =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E5=87=8F=E9=87=91=E9=A2=9D=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E4=B8=BA0.3=E5=85=83=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/hzs/third/pay/util/PayUtil.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java b/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java index fed8c5fa..575480f5 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java +++ b/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java @@ -12,20 +12,24 @@ import java.util.TreeMap; */ public class PayUtil { + /** + * 支付大于1元才能进行随机减 + */ + final static BigDecimal RANDOM_LIMIT = new BigDecimal("1"); /** * 随机减金额 */ - final static BigDecimal RANDOM = new BigDecimal("0.5"); + final static BigDecimal RANDOM = new BigDecimal("0.3"); /** - * 计算随机金额,0.2元进行随机生成 + * 计算随机金额,0.3元进行随机生成 * * @param amount * @return */ public static BigDecimal handleAmountRandom(BigDecimal amount) { - if (amount.compareTo(RANDOM) > 0) { - // 订单金额大于0.99元才进行处理 + if (amount.compareTo(RANDOM_LIMIT) > 0) { + // 订单金额大于1元才进行处理 return amount.subtract(RANDOM).add(RandomUtil.randomBigDecimal(new BigDecimal("0.01"), RANDOM).setScale(2, BigDecimal.ROUND_HALF_UP)); } return amount; @@ -39,7 +43,7 @@ public class PayUtil { * @return */ public static boolean checkAmount(BigDecimal amount, BigDecimal payAmount) { - // 实际订单金额 - 支付金额 <= 0.2 则为正常处理 + // 实际订单金额 - 支付金额 <= 0.3 则为正常处理 return amount.subtract(payAmount).compareTo(RANDOM) <= 0; } From 5706d7056260b84b642e0c4fd5b27d7fced7edcb Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 29 Oct 2025 16:08:18 +0800 Subject: [PATCH 07/15] =?UTF-8?q?##=20=E6=94=AF=E4=BB=98=E5=A4=A7=E4=BA=8E?= =?UTF-8?q?1=E5=85=83=E6=89=8D=E9=9A=8F=E6=9C=BA=E5=87=8F=EF=BC=9B?= =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E5=87=8F=E9=87=91=E9=A2=9D=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E4=B8=BA0.3=E5=85=83=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java b/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java index 575480f5..a1e7ad15 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java +++ b/bd-third/src/main/java/com/hzs/third/pay/util/PayUtil.java @@ -28,7 +28,7 @@ public class PayUtil { * @return */ public static BigDecimal handleAmountRandom(BigDecimal amount) { - if (amount.compareTo(RANDOM_LIMIT) > 0) { + if (amount.compareTo(RANDOM_LIMIT) >= 0) { // 订单金额大于1元才进行处理 return amount.subtract(RANDOM).add(RandomUtil.randomBigDecimal(new BigDecimal("0.01"), RANDOM).setScale(2, BigDecimal.ROUND_HALF_UP)); } From 79850099f062506f409e2f232077e8f427427327 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Wed, 29 Oct 2025 14:34:25 +0800 Subject: [PATCH 08/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9D=83=E9=99=90=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../declaration/param/AcDeclarationParam.java | 4 ++ .../AcDeclarationGiftConfigServiceImpl.java | 49 ++++++++++++++++--- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationParam.java index c6fab2af..86cfbb6c 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationParam.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationParam.java @@ -44,5 +44,9 @@ public class AcDeclarationParam { * 报单赠送信息 */ private List acDeclarationConfigParams; + /** + * 权限配置列表 + */ + private List authorityList; } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java index 3c55158f..0976a436 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java @@ -1,9 +1,12 @@ package com.hzs.activity.declaration.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hzs.activity.base.param.ActivityParam; +import com.hzs.activity.base.service.IAcBaseAuthorityService; import com.hzs.activity.base.service.IAcBaseConfigService; import com.hzs.activity.base.service.IActivityService; import com.hzs.activity.declaration.mapper.AcDeclarationGiftConfigMapper; @@ -14,6 +17,9 @@ import com.hzs.activity.declaration.param.AcDeclarationProductParam; import com.hzs.activity.declaration.service.IAcDeclarationGiftConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.activity.declaration.service.IAcDeclarationGiftDetailService; +import com.hzs.activity.recommend.param.AcRecommendParam; +import com.hzs.common.core.enums.EDelFlag; +import com.hzs.common.domain.activity.base.AcBaseAuthority; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftConfig; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftDetail; import com.hzs.common.core.constant.CountryConstants; @@ -64,6 +70,8 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl authorityList = recommendParam.getAuthorityList(); + if (CollectionUtil.isNotEmpty(authorityList)) { + for (AcBaseAuthority acBaseAuthority : authorityList) { + acBaseAuthority.setPkBaseId(recommendParam.getPkBaseId()); + } + iAcBaseAuthorityService.saveBatch(authorityList); + } + } private void removeDeclarationConfig(Long pkId) { // 删除活动基本配置 @@ -222,10 +244,15 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl() .eq(AcDeclarationGiftDetail::getPkBaseId, pkId)); + // 删除活动权限配置 + iAcBaseAuthorityService.update(Wrappers.lambdaUpdate() + .eq(AcBaseAuthority::getPkBaseId, pkId) + .eq(AcBaseAuthority::getDelFlag, EDelFlag.UN_DELETE.getValue()) + .set(AcBaseAuthority::getDelFlag, EDelFlag.DELETE.getValue()) + ); } - private void updateDeclarationConfig(ActivityParam activityParam, List acDeclarationConfigParams) { - { + private void updateDeclarationConfig(ActivityParam activityParam, AcDeclarationParam acDeclarationParam) { Long pkId = activityParam.getPkId(); // 查询基础信息 AcBaseConfig baseConfig = BeanUtil.copyProperties(activityParam, AcBaseConfig.class); @@ -235,15 +262,23 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl() .eq(AcDeclarationGiftConfig::getPkBaseId, pkId)); + // 删除活动权限配置 + iAcBaseAuthorityService.update(Wrappers.lambdaUpdate() + .eq(AcBaseAuthority::getPkBaseId, pkId) + .eq(AcBaseAuthority::getDelFlag, EDelFlag.UN_DELETE.getValue()) + .set(AcBaseAuthority::getDelFlag, EDelFlag.DELETE.getValue()) + ); // 删除活动详情配置 iAcDeclarationGiftDetailService.remove(new LambdaQueryWrapper() .eq(AcDeclarationGiftDetail::getPkBaseId, pkId)); // 添加加购活动配置 - saveDeclarationConfig(acDeclarationConfigParams, baseConfig); - } + saveDeclarationConfig(acDeclarationParam, baseConfig); } - private void saveDeclarationConfig(List acDeclarationConfigParams, AcBaseConfig acBaseConfig) { + private void saveDeclarationConfig(AcDeclarationParam acDeclarationParam, AcBaseConfig acBaseConfig) { + List acDeclarationConfigParams = acDeclarationParam.getAcDeclarationConfigParams(); + // 保存活动权限配置 + this.saveAuthority(acDeclarationParam); acDeclarationConfigParams.forEach(item -> { if (item != null) { AcDeclarationGiftConfig build = AcDeclarationGiftConfig.builder() From a0180bb24931913b41f822e78a01524110571035 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Wed, 29 Oct 2025 16:30:01 +0800 Subject: [PATCH 09/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6,?= =?UTF-8?q?=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81=E8=AE=A2=E5=8D=95=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzs/member/base/IMemberServiceApi.java | 2 + .../base/provider/MemberServiceProvider.java | 10 +- .../member/base/service/ICuMemberService.java | 6 +- .../service/impl/CuMemberServiceImpl.java | 6 + .../param/AcDeclarationDetailParam.java | 6 + .../AcDeclarationGiftConfigServiceImpl.java | 23 +-- .../provider/AcTourismServiceProvider.java | 135 ++++++++++++++---- 7 files changed, 145 insertions(+), 43 deletions(-) diff --git a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java index f2fd998b..90e1410f 100644 --- a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java +++ b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java @@ -21,6 +21,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Set; /** * 会员服务接口 @@ -443,4 +444,5 @@ public interface IMemberServiceApi { R> memberRegionMap(Date settleDate); + R> getMemberByIds(Set memberIds); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java index 4415b48c..92d16ac9 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java @@ -36,10 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 会员涉及dubbo服务 @@ -520,4 +517,9 @@ public class MemberServiceProvider implements IMemberServiceApi { return R.ok(resultMap); } + @Override + public R> getMemberByIds(Set memberIds) { + return R.ok(iCuMemberService.getMemberByIds(memberIds)); + } + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java index de14ce42..53cca057 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java @@ -23,10 +23,7 @@ import com.hzs.member.share.param.ShareRegisterParam; import com.hzs.system.sys.dto.ApprovalBusinessResultDTO; import java.math.BigDecimal; -import java.util.Collection; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 会员 服务类 @@ -1029,4 +1026,5 @@ public interface ICuMemberService extends IService { */ void clearZeroMember(); + List getMemberByIds(Set memberIds); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java index 9db6f7e2..ebf98131 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java @@ -3771,4 +3771,10 @@ public class CuMemberServiceImpl extends ServiceImpl i baseMapper.clearZeroMember(); } + @Override + public List getMemberByIds(Set memberIds) { + return baseMapper.selectList(new LambdaQueryWrapper() + .in(CuMember::getPkId, memberIds)); + } + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationDetailParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationDetailParam.java index f2a498ef..473bf01e 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationDetailParam.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/param/AcDeclarationDetailParam.java @@ -2,6 +2,7 @@ package com.hzs.activity.declaration.param; import com.fasterxml.jackson.annotation.JsonFormat; import com.hzs.activity.add.param.AcAddUpgradeConfigParam; +import com.hzs.common.domain.activity.base.AcBaseAuthority; import com.hzs.common.domain.activity.base.AcBaseConfig; import com.hzs.common.domain.activity.base.AcGoalMemberConfig; import lombok.AllArgsConstructor; @@ -108,6 +109,11 @@ public class AcDeclarationDetailParam implements Serializable { */ private List goalMemberConfigList; + /** + * 权限配置列表 + */ + private List authorityList; + /** * 是否强制弹框 0 是 1 否 */ diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java index 0976a436..7e5609c6 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java @@ -2,6 +2,7 @@ package com.hzs.activity.declaration.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -18,14 +19,11 @@ import com.hzs.activity.declaration.service.IAcDeclarationGiftConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.activity.declaration.service.IAcDeclarationGiftDetailService; import com.hzs.activity.recommend.param.AcRecommendParam; -import com.hzs.common.core.enums.EDelFlag; +import com.hzs.common.core.enums.*; import com.hzs.common.domain.activity.base.AcBaseAuthority; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftConfig; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftDetail; import com.hzs.common.core.constant.CountryConstants; -import com.hzs.common.core.enums.EActType; -import com.hzs.common.core.enums.EApprovalBusiness; -import com.hzs.common.core.enums.ERegistrationAuthority; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.activity.base.AcBaseConfig; import com.hzs.common.security.utils.SecurityUtils; @@ -82,13 +80,17 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl acDeclarationConfigParams = new ArrayList<>(); + ArrayList acBaseAuthorities = new ArrayList<>(); list.forEach(item -> { AcDeclarationConfigParam acDeclarationConfigParam = BeanUtil.copyProperties(item, AcDeclarationConfigParam.class); List declarationConfigParams = iAcDeclarationGiftDetailService.listByPKRuleId(item.getPkId()); + // 添加商品详情 acDeclarationConfigParam.setAcDeclarationProductParamList(declarationConfigParams); acDeclarationConfigParams.add(acDeclarationConfigParam); + // 添加权限列表 + acBaseAuthorities.addAll(iAcBaseAuthorityService.listAuthority(item.getPkBaseId())); }); - + activityParam.setAuthorityList(acBaseAuthorities); activityParam.setAcDeclarationConfigParams(acDeclarationConfigParams); activityParam.setPkBaseId(baseConfig.getPkId()); return AjaxResult.success(activityParam); @@ -225,11 +227,16 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl authorityList = recommendParam.getAuthorityList(); + boolean hasInvalid = authorityList.stream() + .anyMatch(auth -> auth.getAuthorityType() == null); + if (hasInvalid) { + return; + } if (CollectionUtil.isNotEmpty(authorityList)) { for (AcBaseAuthority acBaseAuthority : authorityList) { - acBaseAuthority.setPkBaseId(recommendParam.getPkBaseId()); + acBaseAuthority.setPkBaseId(acBaseConfig.getPkId()); } iAcBaseAuthorityService.saveBatch(authorityList); } @@ -278,7 +285,7 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl acDeclarationConfigParams = acDeclarationParam.getAcDeclarationConfigParams(); // 保存活动权限配置 - this.saveAuthority(acDeclarationParam); + this.saveAuthority(acDeclarationParam,acBaseConfig); acDeclarationConfigParams.forEach(item -> { if (item != null) { AcDeclarationGiftConfig build = AcDeclarationGiftConfig.builder() diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index 5790e5e6..0b400a51 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -1,10 +1,14 @@ package com.hzs.activity.tourism.provider; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hzs.activity.base.service.IAcBaseAuthorityService; import com.hzs.activity.base.service.IAcBaseConfigService; import com.hzs.activity.declaration.service.IAcDeclarationGiftConfigService; import com.hzs.activity.declaration.service.IAcDeclarationGiftRecordService; import com.hzs.common.core.enums.*; +import com.hzs.common.domain.activity.base.AcBaseAuthority; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftConfig; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftRecord; import com.hzs.activity.tourism.IAcTourismServiceApi; @@ -24,9 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.ZoneId; import java.time.temporal.ChronoUnit; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -54,6 +56,8 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { private IAcBaseConfigService iAcBaseConfigService; @Autowired private IMemberServiceApi iMemberServiceApi; + @Autowired + private IAcBaseAuthorityService iAcBaseAuthorityService; @Override public R handleTourismData() { @@ -148,24 +152,38 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { Function.identity(), (a, b) -> b )); - + // 一次批量查询会员信息 + Set memberIds = new HashSet<>(); orderList.forEach(order -> { - // TODO 一天可能会有几百单,最好改成批量查询 - // 查看是否有重复订单 - int count = iAcDeclarationGiftRecordService.count(new LambdaQueryWrapper() - .eq(AcDeclarationGiftRecord::getOrderCode, order.getOrderCode()) - .eq(AcDeclarationGiftRecord::getDelFlag, EDelFlag.UN_DELETE.getValue())); - if (count > 0) { - log.warn("当前订单已同步至报单明细{}", order.getOrderCode()); - return; - } - // TODO 下面两个查询会员,报单会员可能都是同一个人,最好提前查询或者做个map存下来,防止多次查询数据库 - // 查询新会员信息 - R newMemberResult = iMemberServiceApi.getMember(order.getPkMember()); - CuMember newMember = newMemberResult.getData(); - // 查询老会员信息 - R oldMemberResult = iMemberServiceApi.getMember(order.getPkCreator()); - CuMember oldMember = oldMemberResult.getData(); + memberIds.add(order.getPkMember()); + memberIds.add(order.getPkCreator()); + }); + + Map memberMap = iMemberServiceApi.getMemberByIds(memberIds) + .getData().stream().collect(Collectors.toMap(CuMember::getPkId, m -> m)); + + + List orderCodes = orderList.stream() + .map(SaOrder::getOrderCode) + .collect(Collectors.toList()); + + // 过滤已存在订单 + Set existSet = iAcDeclarationGiftRecordService.list( + new LambdaQueryWrapper() + .in(AcDeclarationGiftRecord::getOrderCode, orderCodes) + .eq(AcDeclarationGiftRecord::getDelFlag, EDelFlag.UN_DELETE.getValue()) + ).stream().map(AcDeclarationGiftRecord::getOrderCode).collect(Collectors.toSet()); + + orderList = orderList.stream() + .filter(order -> !existSet.contains(order.getOrderCode())) + .collect(Collectors.toList()); + + List recordList = new ArrayList<>(); + orderList.forEach(order -> { + // 新会员信息 + CuMember newMember = memberMap.get(order.getPkMember()); + // 老会员信息 + CuMember oldMember = memberMap.get(order.getPkCreator()); if (oldMember == null || newMember == null) { log.warn("会员信息不存在, 新会员id={},老会员id={}", order.getPkMember(), order.getPkCreator()); return; @@ -180,8 +198,11 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { oldMember.getPkId(), oldMember.getRegisterAuthority(), newMember.getPkSettleGrade()); return; } - - // TODO 入库改成批量 + // 查询活动权限 + AcBaseConfig baseConfig = iAcBaseConfigService.getById(matchedConfig.getPkBaseId()); + if (!this.checkAuthority(baseConfig, order.getPkMember())) { + return; + } AcDeclarationGiftRecord record = AcDeclarationGiftRecord.builder() .pkRuleId(matchedConfig.getPkId()) .pkBaseId(matchedConfig.getPkBaseId()) @@ -192,13 +213,73 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { record.setDelFlag(EDelFlag.UN_DELETE.getValue()); record.setPkCreator(oldMember.getPkId()); record.setPkCountry(pkCountry); - // 插入数据库 - iAcDeclarationGiftRecordService.save(record); - - log.info("成功插入报单赠送记录 -> memberId={}, ruleId={}", - oldMember.getPkId(), matchedConfig.getPkId()); + recordList.add(record); }); + if (!recordList.isEmpty()) { + iAcDeclarationGiftRecordService.saveBatch(recordList); + log.info("[DeclarationGiftJob] 订单量={} 活动数={} 插入记录={}", + orderList.size(), acBaseConfigList.size(), recordList.size()); + } return R.ok(); } + /** + * 校验活动权限(true:进行处理,false:不进行处理) + * + * @param baseConfig 活动配置 + * @param pkMember 会员ID + * @return + */ + private boolean checkAuthority(AcBaseConfig baseConfig, Long pkMember) { + List authList = iAcBaseAuthorityService.list(Wrappers.lambdaQuery() + .eq(AcBaseAuthority::getPkBaseId, baseConfig.getPkId()) + .orderByDesc(AcBaseAuthority::getAuthorityType) + ); + if (CollectionUtil.isNotEmpty(authList)) { + Map> authMap = new HashMap<>(); + for (AcBaseAuthority authority : authList) { + authMap.computeIfAbsent(authority.getAuthorityType(), k -> new ArrayList<>()); + authMap.get(authority.getAuthorityType()).add(authority.getMemberCode()); + } + + for (Integer key : authMap.keySet()) { + List memberCodeList = authMap.get(key); + switch (EWaresPermissionType.getEnumByValue(key)) { + case AUTH_ORITY_TYPE: + // 全部 + return true; + case PLACE_STOP: + // 安置禁止 + if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) { + return false; + } else { + return true; + } + case BLOOD_STOP: + // 血缘禁止 + if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) { + return false; + } else { + return true; + } + case PLACE_ALLWO: + // 安置可见 + if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) { + return true; + } else { + return false; + } + case BLOOD_ALLOW: + // 血缘可见 + if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) { + return true; + } else { + return false; + } + default: + } + } + } + return true; + } } From 2475088bb9ee4270f92f4702a0362fab4adfff8d Mon Sep 17 00:00:00 2001 From: zhangheng Date: Wed, 29 Oct 2025 17:13:02 +0800 Subject: [PATCH 10/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AcDeclarationGiftConfigServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java index 7e5609c6..2fac52ed 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/declaration/service/impl/AcDeclarationGiftConfigServiceImpl.java @@ -80,16 +80,15 @@ public class AcDeclarationGiftConfigServiceImpl extends ServiceImpl acDeclarationConfigParams = new ArrayList<>(); - ArrayList acBaseAuthorities = new ArrayList<>(); list.forEach(item -> { AcDeclarationConfigParam acDeclarationConfigParam = BeanUtil.copyProperties(item, AcDeclarationConfigParam.class); List declarationConfigParams = iAcDeclarationGiftDetailService.listByPKRuleId(item.getPkId()); // 添加商品详情 acDeclarationConfigParam.setAcDeclarationProductParamList(declarationConfigParams); acDeclarationConfigParams.add(acDeclarationConfigParam); - // 添加权限列表 - acBaseAuthorities.addAll(iAcBaseAuthorityService.listAuthority(item.getPkBaseId())); }); + // 添加权限控制信息 + List acBaseAuthorities = iAcBaseAuthorityService.listAuthority(baseConfig.getPkId()); activityParam.setAuthorityList(acBaseAuthorities); activityParam.setAcDeclarationConfigParams(acDeclarationConfigParams); activityParam.setPkBaseId(baseConfig.getPkId()); From a9a764ab7e5e74a867cfb844a15328738da4748e Mon Sep 17 00:00:00 2001 From: zhangheng Date: Wed, 29 Oct 2025 17:32:06 +0800 Subject: [PATCH 11/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/AcTourismServiceProvider.java | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index 0b400a51..c7d928e8 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -178,6 +178,17 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { .filter(order -> !existSet.contains(order.getOrderCode())) .collect(Collectors.toList()); + + // 批量查询这些活动对应的权限记录 + List allAuthorityList = iAcBaseAuthorityService.list( + Wrappers.lambdaQuery() + .in(AcBaseAuthority::getPkBaseId, declarationBaseIds) + .eq(AcBaseAuthority::getDelFlag, EDelFlag.UN_DELETE.getValue()) + ); + + Map> authorityCache = allAuthorityList.stream() + .collect(Collectors.groupingBy(AcBaseAuthority::getPkBaseId)); + List recordList = new ArrayList<>(); orderList.forEach(order -> { // 新会员信息 @@ -199,8 +210,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { return; } // 查询活动权限 - AcBaseConfig baseConfig = iAcBaseConfigService.getById(matchedConfig.getPkBaseId()); - if (!this.checkAuthority(baseConfig, order.getPkMember())) { + if (!this.checkAuthority(matchedConfig.getPkBaseId(), order.getPkMember(),newMember.getMemberCode(),authorityCache)) { return; } AcDeclarationGiftRecord record = AcDeclarationGiftRecord.builder() @@ -225,15 +235,15 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { /** * 校验活动权限(true:进行处理,false:不进行处理) * - * @param baseConfig 活动配置 - * @param pkMember 会员ID + * @param memberCode + * @param authorityCache * @return */ - private boolean checkAuthority(AcBaseConfig baseConfig, Long pkMember) { - List authList = iAcBaseAuthorityService.list(Wrappers.lambdaQuery() - .eq(AcBaseAuthority::getPkBaseId, baseConfig.getPkId()) - .orderByDesc(AcBaseAuthority::getAuthorityType) - ); + private boolean checkAuthority(Long pkBaseId, Long pkMember, String memberCode, Map> authorityCache) { + List authList = authorityCache.get(pkBaseId); + if (CollectionUtil.isEmpty(authList)) { + return true; + } if (CollectionUtil.isNotEmpty(authList)) { Map> authMap = new HashMap<>(); for (AcBaseAuthority authority : authList) { @@ -275,7 +285,15 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { } else { return false; } + case MEMBER: + // 指定会员 + if (authMap.get(key).contains(memberCode)) { + return true; + } else { + return false; + } default: + return true; } } } From cdfac543eb65afef60a0b82db55df5df865aa765 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Thu, 30 Oct 2025 09:12:10 +0800 Subject: [PATCH 12/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/AcTourismServiceProvider.java | 40 +++++-------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index c7d928e8..c3ef6178 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -184,6 +184,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { Wrappers.lambdaQuery() .in(AcBaseAuthority::getPkBaseId, declarationBaseIds) .eq(AcBaseAuthority::getDelFlag, EDelFlag.UN_DELETE.getValue()) + .orderByDesc(AcBaseAuthority::getAuthorityType) ); Map> authorityCache = allAuthorityList.stream() @@ -210,7 +211,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { return; } // 查询活动权限 - if (!this.checkAuthority(matchedConfig.getPkBaseId(), order.getPkMember(),newMember.getMemberCode(),authorityCache)) { + if (!this.checkAuthority(matchedConfig.getPkBaseId(), order.getPkMember(),oldMember.getMemberCode(),authorityCache)) { return; } AcDeclarationGiftRecord record = AcDeclarationGiftRecord.builder() @@ -250,7 +251,11 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { authMap.computeIfAbsent(authority.getAuthorityType(), k -> new ArrayList<>()); authMap.get(authority.getAuthorityType()).add(authority.getMemberCode()); } - + // 指定会员优先处理 + List memberList = authMap.get(EWaresPermissionType.MEMBER.getValue()); + if (CollectionUtil.isNotEmpty(memberList)) { + return memberList.contains(memberCode); + } for (Integer key : authMap.keySet()) { List memberCodeList = authMap.get(key); switch (EWaresPermissionType.getEnumByValue(key)) { @@ -259,39 +264,16 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { return true; case PLACE_STOP: // 安置禁止 - if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) { - return false; - } else { - return true; - } + return iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) <= 0; case BLOOD_STOP: // 血缘禁止 - if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) { - return false; - } else { - return true; - } + return iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) <= 0; case PLACE_ALLWO: // 安置可见 - if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) { - return true; - } else { - return false; - } + return iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0; case BLOOD_ALLOW: // 血缘可见 - if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) { - return true; - } else { - return false; - } - case MEMBER: - // 指定会员 - if (authMap.get(key).contains(memberCode)) { - return true; - } else { - return false; - } + return iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0; default: return true; } From 9065d733bbdd8a72e88f286020c29d4300f338da Mon Sep 17 00:00:00 2001 From: zhangheng Date: Thu, 30 Oct 2025 10:28:11 +0800 Subject: [PATCH 13/15] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/tourism/provider/AcTourismServiceProvider.java | 4 +++- .../activity/declaration/AcDeclarationGiftRecordMapper.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index c3ef6178..efdcb4d8 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -254,7 +254,9 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { // 指定会员优先处理 List memberList = authMap.get(EWaresPermissionType.MEMBER.getValue()); if (CollectionUtil.isNotEmpty(memberList)) { - return memberList.contains(memberCode); + if (memberList.contains(memberCode)) { + return true; + } } for (Integer key : authMap.keySet()) { List memberCodeList = authMap.get(key); diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml index f98a7a0b..3f221b0b 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml @@ -89,7 +89,7 @@ LEFT JOIN BD_GRADE bg ON cmm.PK_SETTLE_GRADE = bg.PK_ID LEFT JOIN AC_BASE_CONFIG abc ON adgr.PK_BASE_ID = abc.PK_ID WHERE - so.ORDER_STATUS = 1 AND so.DEL_FLAG = 0 AND cm.DEL_FLAG = 0 AND cm.CUSTOMER_TYPE = 0 AND cmm.DEL_FLAG = 0 AND cmm.CUSTOMER_TYPE = 0 + so.ORDER_STATUS = 1 AND so.DEL_FLAG = 0 AND cm.DEL_FLAG = 0 AND cm.CATEGORY = 0 AND cmm.DEL_FLAG = 0 AND cmm.CATEGORY = 0 AND abc.ACT_NAME = #{actName} From 818219125a4be364275ce0b0b80239ecb513b369 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Thu, 30 Oct 2025 10:45:57 +0800 Subject: [PATCH 14/15] =?UTF-8?q?##=20=E5=8A=A0=E8=B4=AD=E5=8D=87=E7=BA=A7?= =?UTF-8?q?,=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=88=97=E8=A1=A8=E6=B7=BB=E5=8A=A0=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/activity/add/AcAddUpgradeRecordMapper.xml | 3 ++- .../activity/declaration/AcDeclarationGiftRecordMapper.xml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/activity/add/AcAddUpgradeRecordMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/activity/add/AcAddUpgradeRecordMapper.xml index 9ac4b095..af58e902 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/activity/add/AcAddUpgradeRecordMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/activity/add/AcAddUpgradeRecordMapper.xml @@ -46,7 +46,7 @@ LEFT JOIN BD_GRADE BG ON aaur.PK_ORIGIN_GRADE = BG.PK_ID LEFT JOIN BD_GRADE BGG ON aaur.PK_UPGRADE_GRADE = BGG.PK_ID WHERE - aaur.DEL_FLAG = 0 AND cm.DEL_FLAG = 0 AND cm.CUSTOMER_TYPE = 0 + aaur.DEL_FLAG = 0 AND cm.DEL_FLAG = 0 AND cm.CATEGORY = 0 AND abc.ACT_NAME = #{actName} @@ -65,6 +65,7 @@ AND abc.ACT_END_DATE <= TO_DATE(SUBSTR(#{endActEndDate},1,10), 'YYYY-MM-DD') + ORDER BY aaur.CREATION_TIME DESC diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml index 3f221b0b..e9ede02f 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/activity/declaration/AcDeclarationGiftRecordMapper.xml @@ -117,6 +117,7 @@ AND adgr.CREATION_TIME <= #{creationEndTime} + ORDER BY so.PAY_TIME DESC