diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerActiveController.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerActiveController.java index 8af387df..99a7ee13 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerActiveController.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerActiveController.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.custom.service.CustomerActiveService; import cn.iocoder.yudao.module.custom.vo.CustomerActivePageReqVO; import cn.iocoder.yudao.module.custom.vo.CustomerActiveRespVO; import cn.iocoder.yudao.module.custom.vo.CustomerActiveSaveReqVO; +import cn.iocoder.yudao.module.member.vo.ActiveMainPageReqVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.List; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 用户参与活动记录") @@ -72,4 +75,19 @@ public class CustomerActiveController { } + /** + * + * @author PQZ + * @date 16:12 2024/9/23 + * @param pageReqVO ActiveMainPageReqVO实体 + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult> + **/ + @GetMapping("/list") + @Operation(summary = "可参与营销活动") + @PreAuthorize("@ss.hasPermission('member:active-main:query')") + public CommonResult> getActiveMainPage(ActiveMainPageReqVO pageReqVO) { + return success(customerActiveService.isJoinActive(pageReqVO)); + } + + } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerCouponController.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerCouponController.java index b4f926dc..70951a5d 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerCouponController.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/CustomerCouponController.java @@ -29,28 +29,31 @@ public class CustomerCouponController { @Resource private CustomerCouponService customerCouponService; - @PostMapping("/create") - @Operation(summary = "创建用户卡券") + /** + * 核销用户卡券 + * + * @param saveReqVO CustomerCouponSaveReqVO实体 + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult + * @author PQZ + * @date 15:58 2024/9/23 + **/ + @PostMapping("/couponVerification") + @Operation(summary = "核销用户卡券") @PreAuthorize("@ss.hasPermission('base:customer-coupon:create')") - public CommonResult createCustomerCoupon(@Valid @RequestBody CustomerCouponSaveReqVO createReqVO) { - return success(customerCouponService.createCustomerCoupon(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新用户卡券") - @PreAuthorize("@ss.hasPermission('base:customer-coupon:update')") - public CommonResult updateCustomerCoupon(@Valid @RequestBody CustomerCouponSaveReqVO updateReqVO) { - customerCouponService.updateCustomerCoupon(updateReqVO); + public CommonResult createCustomerCoupon(@Valid @RequestBody CustomerCouponSaveReqVO saveReqVO) { + customerCouponService.couponVerification(saveReqVO); return success(true); } + /** * 删除用户卡券 + * + * @param id 用户卡券id + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult * @author PQZ * @date 23:01 2024/9/20 - * @param id TODO - * @return cn.iocoder.yudao.framework.common.pojo.CommonResult - **/ + **/ @DeleteMapping("/delete") @Operation(summary = "删除用户卡券") @Parameter(name = "id", description = "编号", required = true) @@ -62,11 +65,12 @@ public class CustomerCouponController { /** * 获取卡券信息及当前消费记录 - * @author PQZ - * @date 22:56 2024/9/20 + * * @param id 用户卡券id * @return cn.iocoder.yudao.framework.common.pojo.CommonResult - **/ + * @author PQZ + * @date 22:56 2024/9/20 + **/ @GetMapping("/get") @Operation(summary = "获得用户卡券") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -75,13 +79,5 @@ public class CustomerCouponController { return success(customerCouponService.getCustomerCoupon(id)); } - @GetMapping("/page") - @Operation(summary = "获得用户卡券分页") - @PreAuthorize("@ss.hasPermission('base:customer-coupon:query')") - public CommonResult> getCustomerCouponPage(@Valid CustomerCouponPageReqVO pageReqVO) { - PageResult pageResult = customerCouponService.getCustomerCouponPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, CustomerCouponRespVO.class)); - } - } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerActiveService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerActiveService.java index c9b42334..c6fd482c 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerActiveService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerActiveService.java @@ -4,9 +4,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.custom.entity.CustomerActive; import cn.iocoder.yudao.module.custom.vo.CustomerActivePageReqVO; import cn.iocoder.yudao.module.custom.vo.CustomerActiveSaveReqVO; +import cn.iocoder.yudao.module.member.vo.ActiveMainPageReqVO; +import cn.iocoder.yudao.module.member.vo.ActiveMainRespVO; import com.baomidou.mybatisplus.extension.service.IService; import javax.validation.Valid; +import java.util.List; /** * 用户参与活动记录 Service 接口 @@ -42,6 +45,8 @@ public interface CustomerActiveService extends IService { */ CustomerActive getCustomerActive(String id); + + /** * 获得用户参与活动记录分页 * @@ -50,4 +55,14 @@ public interface CustomerActiveService extends IService { */ PageResult getCustomerActivePage(CustomerActivePageReqVO pageReqVO); + + /** + * 可参与营销活动 + * @author PQZ + * @date 16:18 2024/9/23 + * @param pageReqVO ActiveMainPageReqVO 实体 + * @return java.util.List + **/ + List isJoinActive(ActiveMainPageReqVO pageReqVO); + } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerCouponService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerCouponService.java index 09538bd1..55780a9a 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerCouponService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/CustomerCouponService.java @@ -17,20 +17,15 @@ import java.util.List; */ public interface CustomerCouponService extends IService { - /** - * 创建用户卡券 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - String createCustomerCoupon(@Valid CustomerCouponSaveReqVO createReqVO); + /** - * 更新用户卡券 - * - * @param updateReqVO 更新信息 - */ - void updateCustomerCoupon(@Valid CustomerCouponSaveReqVO updateReqVO); + * 卡券核销 + * @author PQZ + * @date 15:37 2024/9/23 + * @param saveReqVO CustomerCouponSaveReqVO实体 + **/ + void couponVerification(CustomerCouponSaveReqVO saveReqVO); /** * 删除用户卡券 @@ -49,13 +44,7 @@ public interface CustomerCouponService extends IService { CustomerCouponRespVO getCustomerCoupon(String id); - /** - * 获得用户卡券分页 - * - * @param pageReqVO 分页查询 - * @return 用户卡券分页 - */ - PageResult getCustomerCouponPage(CustomerCouponPageReqVO pageReqVO); + /** * 根据用户id获取卡券信息 diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerActiveServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerActiveServiceImpl.java index c2089f77..09e9c827 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerActiveServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerActiveServiceImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.custom.service.impl; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.custom.entity.*; import cn.iocoder.yudao.module.custom.mapper.CustomerActiveMapper; import cn.iocoder.yudao.module.custom.service.*; @@ -13,7 +14,9 @@ import cn.iocoder.yudao.module.member.entity.ActiveRule; import cn.iocoder.yudao.module.member.entity.MemberCoupon; import cn.iocoder.yudao.module.member.service.ActiveMainService; import cn.iocoder.yudao.module.member.service.MemberCouponService; +import cn.iocoder.yudao.module.member.vo.ActiveMainPageReqVO; import cn.iocoder.yudao.module.member.vo.ActiveMainRespVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mzt.logapi.service.IFunctionService; import org.springframework.stereotype.Service; @@ -57,7 +60,6 @@ public class CustomerActiveServiceImpl extends ServiceImpl ruleList = active.getRuleList(); //转换余额信息 - balance = transBalance(customer,saveReqVO.getTopUpAmount(),ruleList); + balance = transBalance(customer, saveReqVO.getTopUpAmount(), ruleList); //记录日志 CustomerBalanceChange change = changeService.initChange(customer.getId(), customer.getUserId(), null, BALANCE_CHANGE_TYPE_CZ, BALANCE_CHANGE_MAIN_YE, @@ -207,17 +209,20 @@ public class CustomerActiveServiceImpl extends ServiceImpl sortList = ruleList.stream().sorted(Comparator.comparing(ActiveRule::getRechAmount).reversed()).collect(Collectors.toList()); + BigDecimal nowChange = amount; for (ActiveRule item : sortList) { + //如果规则匹配 if (amount.compareTo(item.getRechAmount()) >= 0) { - BigDecimal nowChange = amount.add(item.getGiveAmount()); - //余额 - result.setBalance(customer.getBalance().add(nowChange)); - //累计充值金额 - result.setAllBalance(customer.getBalance().add(nowChange)); - result.setNowChange(nowChange); + nowChange = amount.add(item.getGiveAmount()); break; } } + //余额 + result.setBalance(customer.getBalance().add(nowChange)); + //累计充值金额 + result.setAllBalance(customer.getBalance().add(nowChange)); + //本次变动金额 + result.setNowChange(nowChange); return result; } @@ -239,4 +244,29 @@ public class CustomerActiveServiceImpl extends ServiceImpl + * @author PQZ + * @date 16:18 2024/9/23 + **/ + @Override + public List isJoinActive(ActiveMainPageReqVO pageReqVO) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(BaseDO::getDeleted, 0).eq(CustomerActive::getCusId, pageReqVO.getCusId()); + List myList = list(lambdaQueryWrapper); + //活动id集合 + List activeIds = myList.stream().map(CustomerActive::getActiveId).distinct().collect(Collectors.toList()); + List list = activeMainService.listActive(pageReqVO); + //排除已参与的 + list.forEach(item -> { + if (activeIds.contains(item.getId())) { + item.setIsJoin(GENERAL_YES); + } + }); + return list; + } + } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerCouponServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerCouponServiceImpl.java index 26aaf0a0..aebe02f7 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerCouponServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerCouponServiceImpl.java @@ -12,11 +12,15 @@ import cn.iocoder.yudao.module.custom.vo.CustomerCouponRespVO; import cn.iocoder.yudao.module.custom.vo.CustomerCouponSaveReqVO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.List; +import static cn.iocoder.yudao.common.BaseConstants.*; + /** * 用户卡券 Service 实现类 * @@ -31,20 +35,37 @@ public class CustomerCouponServiceImpl extends ServiceImpl changeList = changeService.getCouponChange(coupon.getCusId(),coupon.getCouponId()); + CustomerCouponRespVO result = BeanUtils.toBean(coupon, CustomerCouponRespVO.class); + List changeList = changeService.getCouponChange(coupon.getCusId(), coupon.getCouponId()); result.setChangeList(changeList); return result; } - @Override - public PageResult getCustomerCouponPage(CustomerCouponPageReqVO pageReqVO) { - return null; - } - /** * 根据用户id获取卡券信息 * diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/vo/CustomerCouponSaveReqVO.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/vo/CustomerCouponSaveReqVO.java index 63ea2969..fd3ba9b9 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/vo/CustomerCouponSaveReqVO.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/vo/CustomerCouponSaveReqVO.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.custom.vo; import cn.iocoder.yudao.module.custom.entity.CustomerCoupon; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.time.LocalDateTime; import java.util.*; import javax.validation.constraints.*; import java.math.BigDecimal; @@ -10,6 +12,35 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 用户卡券新增/修改 Request VO") @Data public class CustomerCouponSaveReqVO extends CustomerCoupon { - + /**本次核销次数*/ + private BigDecimal changeBalance; + /** + * 卡券名称 + */ + private String couponName; + /** + * 卡券类型(保养卡、服务券、礼包券) + */ + private String couponType; + /** + * 适用车型(数据字典) + */ + private String carModel; + /** + * 开始有效期 + */ + private LocalDateTime beginTime; + /** + * 结束有效期 + */ + private LocalDateTime endTime; + /** + * 效果图片 + */ + private String image; + /** + * 来源活动名称 + */ + private String activeName; } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/controller/admin/ActiveMainController.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/controller/admin/ActiveMainController.java index 238935b5..fc971e33 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/controller/admin/ActiveMainController.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/controller/admin/ActiveMainController.java @@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.List; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 营销活动") @@ -114,5 +116,4 @@ public class ActiveMainController { return success(activeMainService.queryListPage(pageReqVO, page)); } - } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/mapper/ActiveMainMapper.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/mapper/ActiveMainMapper.java index 9648ad74..bf9c8f0f 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/mapper/ActiveMainMapper.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/mapper/ActiveMainMapper.java @@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 营销活动 Mapper * @@ -29,4 +31,14 @@ public interface ActiveMainMapper extends BaseMapper { * @date 14:10 2024/9/19 **/ IPage selectListPage(@Param("entity") ActiveMainPageReqVO entity, Page page); + + /** + * 不分页查询可参与的活动规则 + * + * @param entity ActiveMainPageReqVO实体 + * @return java.util.List + * @author PQZ + * @date 16:10 2024/9/23 + **/ + List listActiveMain(@Param("entity") ActiveMainPageReqVO entity); } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/ActiveMainService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/ActiveMainService.java index b8abf007..bef7ef5c 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/ActiveMainService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/ActiveMainService.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import javax.validation.Valid; +import java.util.List; /** * 营销活动 Service 接口 @@ -55,4 +56,15 @@ public interface ActiveMainService extends IService { **/ IPage queryListPage(ActiveMainPageReqVO pageReqVO, Page page); + + /** + * 不分页查询可参与的活动规则 + * + * @param pageReqVO ActiveMainPageReqVO实体 + * @return java.util.List + * @author PQZ + * @date 16:11 2024/9/23 + **/ + List listActive(ActiveMainPageReqVO pageReqVO); + } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/MemberCouponService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/MemberCouponService.java index 76d9c333..9cc7a1bd 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/MemberCouponService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/MemberCouponService.java @@ -21,7 +21,7 @@ public interface MemberCouponService extends IService { /** * 保存基础卡券信息 * - * @param saveReqVO TODO + * @param saveReqVO MemberCouponSaveReqVO实体 * @return void * @author PQZ * @date 14:22 2024/9/19 diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/impl/ActiveMainServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/impl/ActiveMainServiceImpl.java index d12b3998..3ba30d84 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/impl/ActiveMainServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/service/impl/ActiveMainServiceImpl.java @@ -39,6 +39,7 @@ public class ActiveMainServiceImpl extends ServiceImpl + * @author PQZ + * @date 16:11 2024/9/23 + **/ + @Override + public List listActive(ActiveMainPageReqVO pageReqVO) { + return activeMainMapper.listActiveMain(pageReqVO); + } + } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainPageReqVO.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainPageReqVO.java index bc45aee2..10f502ad 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainPageReqVO.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainPageReqVO.java @@ -17,4 +17,6 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ public class ActiveMainPageReqVO extends ActiveMain { /**用于判断是否查询当前时间段可参与的活动*/ private String isNow; + /**当前客户id*/ + private String cusId; } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainRespVO.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainRespVO.java index 10dbced7..91dd3a60 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainRespVO.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/member/vo/ActiveMainRespVO.java @@ -18,5 +18,7 @@ public class ActiveMainRespVO extends ActiveMain { private List couponList; /**活动关联规则*/ private List ruleList; + /**当前活动当前用户是否已参与*/ + private String isJoin; } \ No newline at end of file diff --git a/dl-module-base/src/main/resources/mapper/member/ActiveMainMapper.xml b/dl-module-base/src/main/resources/mapper/member/ActiveMainMapper.xml index 344c0455..62e50518 100644 --- a/dl-module-base/src/main/resources/mapper/member/ActiveMainMapper.xml +++ b/dl-module-base/src/main/resources/mapper/member/ActiveMainMapper.xml @@ -29,4 +29,23 @@ ORDER BY dam.create_time DESC + \ No newline at end of file diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/project/service/impl/RepairOrderInfoServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/project/service/impl/RepairOrderInfoServiceImpl.java index 73501cb1..d93c0b41 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/project/service/impl/RepairOrderInfoServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/project/service/impl/RepairOrderInfoServiceImpl.java @@ -40,7 +40,6 @@ public class RepairOrderInfoServiceImpl extends ServiceImpl