diff --git a/src/main/java/com/youlai/boot/mini/controller/PointAdminController.java b/src/main/java/com/youlai/boot/admin/controller/PointManageController.java similarity index 60% rename from src/main/java/com/youlai/boot/mini/controller/PointAdminController.java rename to src/main/java/com/youlai/boot/admin/controller/PointManageController.java index 4390e1d..e5d7915 100644 --- a/src/main/java/com/youlai/boot/mini/controller/PointAdminController.java +++ b/src/main/java/com/youlai/boot/admin/controller/PointManageController.java @@ -1,99 +1,94 @@ -package com.youlai.boot.mini.controller; +package com.youlai.boot.admin.controller; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.youlai.boot.admin.service.PointManageService; import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.result.PageResult; import com.youlai.boot.common.result.Result; -import com.youlai.boot.mini.model.form.AddPointRuleForm; -import com.youlai.boot.mini.model.form.AdjustUserPointForm; -import com.youlai.boot.mini.model.query.PointAccountQuery; +import com.youlai.boot.admin.model.form.AddPointRuleForm; +import com.youlai.boot.admin.model.form.AdjustUserPointForm; +import com.youlai.boot.admin.model.query.PointAccountQuery; import com.youlai.boot.mini.model.query.PointRecordQuery; import com.youlai.boot.mini.model.query.RulePageQuery; -import com.youlai.boot.mini.model.vo.PointAccountVO; -import com.youlai.boot.mini.model.vo.PointRecordVO; -import com.youlai.boot.mini.model.vo.RuleListVO; -import com.youlai.boot.mini.service.MiniPointAccountService; -import com.youlai.boot.mini.service.MiniPointRecordService; -import com.youlai.boot.mini.service.MiniPointRuleService; +import com.youlai.boot.admin.model.vo.PointAccountVO; +import com.youlai.boot.admin.model.vo.PointRecordVO; +import com.youlai.boot.admin.model.vo.RuleListVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @Tag(name = "管理端积分服务相关接口") @RestController -@RequestMapping("/api/v1/mini/admin/point") +@RequestMapping("/api/v1/admin/point") @RequiredArgsConstructor -public class PointAdminController { +public class PointManageController { - private final MiniPointAccountService pointAccountService; - private final MiniPointRuleService pointRuleService; - private final MiniPointRecordService pointRecordService; + private final PointManageService pointManageService; @Operation(summary = "分页查询用户积分账户") @GetMapping("/accounts") -// @PreAuthorize("@ss.hasPerm('mini:point:account:list')") +// @PreAuthorize("@ss.hasPerm('admin:point:account:list')") @Log(module = LogModuleEnum.POINT_ACCOUNT, value = ActionTypeEnum.LIST) public PageResult pageAccount(PointAccountQuery query) { - return PageResult.success(pointAccountService.pageAccount(query)); + return PageResult.success(pointManageService.pageAccount(query)); } @Operation(summary = "查询积分规则列表") @GetMapping -// @PreAuthorize("@ss.hasPerm('mini:point:rule:list')") +// @PreAuthorize("@ss.hasPerm('admin:point:rule:list')") @Log(module = LogModuleEnum.POINT_RULE, value = ActionTypeEnum.LIST) public PageResult page(@ParameterObject RulePageQuery queryParams) { - IPage result = pointRuleService.pageRule(queryParams); + IPage result = pointManageService.pageRule(queryParams); return PageResult.success(result); } @Operation(summary = "新增积分规则") @PostMapping("/add/rules") -// @PreAuthorize("@ss.hasPerm('mini:point:rule:add')") +// @PreAuthorize("@ss.hasPerm('admin:point:rule:add')") @Log(module = LogModuleEnum.POINT_RULE, value = ActionTypeEnum.INSERT) public Result addRule(@RequestBody AddPointRuleForm form) { - pointRuleService.addRule(form); + pointManageService.addRule(form); return Result.success(); } @Operation(summary = "逻辑删除积分规则") @PostMapping("/delete/rules") -// @PreAuthorize("@ss.hasPerm('mini:point:rule:delete')") +// @PreAuthorize("@ss.hasPerm('admin:point:rule:delete')") @Log(module = LogModuleEnum.POINT_RULE, value = ActionTypeEnum.DELETE) public Result deleteRule(@RequestParam Long id) { - pointRuleService.deleteRule(id); + pointManageService.deleteRule(id); return Result.success(); } @Operation(summary = "启用/禁用积分规则") @PatchMapping("/rules/{id}/status") -// @PreAuthorize("@ss.hasPerm('mini:point:rule:edit')") +// @PreAuthorize("@ss.hasPerm('admin:point:rule:edit')") @Log(module = LogModuleEnum.POINT_RULE, value = ActionTypeEnum.ENABLE) public Result changeRuleStatus(@PathVariable Long id, @RequestParam Boolean status) { - pointRuleService.changeStatus(id, status); + pointManageService.changeStatus(id, status); return Result.success(); } @Operation(summary = "手动调整用户积分") @PutMapping("/adjustPoint") -// @PreAuthorize("@ss.hasPerm('mini:point:record:edit')") +// @PreAuthorize("@ss.hasPerm('admin:point:record:edit')") @Log(module = LogModuleEnum.POINT_ACCOUNT, value = ActionTypeEnum.UPDATE) public Result adjustPoint(@RequestBody AdjustUserPointForm adjustUserPointForm) { - pointRecordService.adjustPoint(adjustUserPointForm); + pointManageService.adjustPoint(adjustUserPointForm); return Result.success(); } @Operation(summary = "分页查询所有积分记录") @GetMapping("/records") -// @PreAuthorize("@ss.hasPerm('mini:point:record:list')") +// @PreAuthorize("@ss.hasPerm('admin:point:record:list')") @Log(module = LogModuleEnum.POINT_RECORD, value = ActionTypeEnum.LIST) public PageResult pageRecord(PointRecordQuery query) { - return PageResult.success(pointRecordService.pageAllRecord(query)); + return PageResult.success(pointManageService.pageAllRecord(query)); } } diff --git a/src/main/java/com/youlai/boot/mini/model/form/AddPointRuleForm.java b/src/main/java/com/youlai/boot/admin/model/form/AddPointRuleForm.java similarity index 93% rename from src/main/java/com/youlai/boot/mini/model/form/AddPointRuleForm.java rename to src/main/java/com/youlai/boot/admin/model/form/AddPointRuleForm.java index c170272..8ec660e 100644 --- a/src/main/java/com/youlai/boot/mini/model/form/AddPointRuleForm.java +++ b/src/main/java/com/youlai/boot/admin/model/form/AddPointRuleForm.java @@ -1,8 +1,7 @@ -package com.youlai.boot.mini.model.form; +package com.youlai.boot.admin.model.form; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/youlai/boot/mini/model/form/AdjustUserPointForm.java b/src/main/java/com/youlai/boot/admin/model/form/AdjustUserPointForm.java similarity index 85% rename from src/main/java/com/youlai/boot/mini/model/form/AdjustUserPointForm.java rename to src/main/java/com/youlai/boot/admin/model/form/AdjustUserPointForm.java index 3bd74de..526ee64 100644 --- a/src/main/java/com/youlai/boot/mini/model/form/AdjustUserPointForm.java +++ b/src/main/java/com/youlai/boot/admin/model/form/AdjustUserPointForm.java @@ -1,7 +1,5 @@ -package com.youlai.boot.mini.model.form; +package com.youlai.boot.admin.model.form; -import com.youlai.boot.common.annotation.EnumValid; -import com.youlai.boot.mini.model.enums.AdjustUserPointEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/youlai/boot/mini/model/query/PointAccountQuery.java b/src/main/java/com/youlai/boot/admin/model/query/PointAccountQuery.java similarity index 90% rename from src/main/java/com/youlai/boot/mini/model/query/PointAccountQuery.java rename to src/main/java/com/youlai/boot/admin/model/query/PointAccountQuery.java index e54901d..cc85d92 100644 --- a/src/main/java/com/youlai/boot/mini/model/query/PointAccountQuery.java +++ b/src/main/java/com/youlai/boot/admin/model/query/PointAccountQuery.java @@ -1,4 +1,4 @@ -package com.youlai.boot.mini.model.query; +package com.youlai.boot.admin.model.query; import com.youlai.boot.common.base.BaseQuery; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/youlai/boot/mini/model/vo/PointAccountVO.java b/src/main/java/com/youlai/boot/admin/model/vo/PointAccountVO.java similarity index 96% rename from src/main/java/com/youlai/boot/mini/model/vo/PointAccountVO.java rename to src/main/java/com/youlai/boot/admin/model/vo/PointAccountVO.java index aee55e7..de99f4e 100644 --- a/src/main/java/com/youlai/boot/mini/model/vo/PointAccountVO.java +++ b/src/main/java/com/youlai/boot/admin/model/vo/PointAccountVO.java @@ -1,4 +1,4 @@ -package com.youlai.boot.mini.model.vo; +package com.youlai.boot.admin.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/youlai/boot/mini/model/vo/PointRecordVO.java b/src/main/java/com/youlai/boot/admin/model/vo/PointRecordVO.java similarity index 97% rename from src/main/java/com/youlai/boot/mini/model/vo/PointRecordVO.java rename to src/main/java/com/youlai/boot/admin/model/vo/PointRecordVO.java index 26f0b5e..854c729 100644 --- a/src/main/java/com/youlai/boot/mini/model/vo/PointRecordVO.java +++ b/src/main/java/com/youlai/boot/admin/model/vo/PointRecordVO.java @@ -1,4 +1,4 @@ -package com.youlai.boot.mini.model.vo; +package com.youlai.boot.admin.model.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/youlai/boot/mini/model/vo/RuleListVO.java b/src/main/java/com/youlai/boot/admin/model/vo/RuleListVO.java similarity index 94% rename from src/main/java/com/youlai/boot/mini/model/vo/RuleListVO.java rename to src/main/java/com/youlai/boot/admin/model/vo/RuleListVO.java index efbb66b..c68e387 100644 --- a/src/main/java/com/youlai/boot/mini/model/vo/RuleListVO.java +++ b/src/main/java/com/youlai/boot/admin/model/vo/RuleListVO.java @@ -1,6 +1,5 @@ -package com.youlai.boot.mini.model.vo; +package com.youlai.boot.admin.model.vo; -import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; diff --git a/src/main/java/com/youlai/boot/admin/service/PointManageService.java b/src/main/java/com/youlai/boot/admin/service/PointManageService.java new file mode 100644 index 0000000..9f0be4a --- /dev/null +++ b/src/main/java/com/youlai/boot/admin/service/PointManageService.java @@ -0,0 +1,30 @@ +package com.youlai.boot.admin.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.youlai.boot.mini.model.entity.MiniPointRule; +import com.youlai.boot.admin.model.form.AddPointRuleForm; +import com.youlai.boot.admin.model.form.AdjustUserPointForm; +import com.youlai.boot.admin.model.query.PointAccountQuery; +import com.youlai.boot.mini.model.query.PointRecordQuery; +import com.youlai.boot.mini.model.query.RulePageQuery; +import com.youlai.boot.admin.model.vo.PointAccountVO; +import com.youlai.boot.admin.model.vo.PointRecordVO; +import com.youlai.boot.admin.model.vo.RuleListVO; + +public interface PointManageService extends IService { + + IPage pageAccount(PointAccountQuery queryParams); + + IPage pageRule(RulePageQuery queryParams); + + void addRule(AddPointRuleForm form); + + void deleteRule(Long id); + + void changeStatus(Long id, Boolean status); + + void adjustPoint(AdjustUserPointForm form); + + IPage pageAllRecord(PointRecordQuery query); +} diff --git a/src/main/java/com/youlai/boot/admin/service/impl/PointManageServiceImpl.java b/src/main/java/com/youlai/boot/admin/service/impl/PointManageServiceImpl.java new file mode 100644 index 0000000..fe8ee5f --- /dev/null +++ b/src/main/java/com/youlai/boot/admin/service/impl/PointManageServiceImpl.java @@ -0,0 +1,192 @@ +package com.youlai.boot.admin.service.impl; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.youlai.boot.admin.service.PointManageService; +import com.youlai.boot.common.exception.MsgException; +import com.youlai.boot.framework.security.util.SecurityUtils; +import com.youlai.boot.mini.converter.MiniPointRuleConverter; +import com.youlai.boot.mini.mapper.MiniPointAccountMapper; +import com.youlai.boot.mini.mapper.MiniPointRecordMapper; +import com.youlai.boot.mini.mapper.MiniPointRuleMapper; +import com.youlai.boot.mini.model.entity.MiniPointAccount; +import com.youlai.boot.mini.model.entity.MiniPointRecord; +import com.youlai.boot.mini.model.entity.MiniPointRule; +import com.youlai.boot.admin.model.form.AddPointRuleForm; +import com.youlai.boot.admin.model.form.AdjustUserPointForm; +import com.youlai.boot.admin.model.query.PointAccountQuery; +import com.youlai.boot.mini.model.query.PointRecordQuery; +import com.youlai.boot.mini.model.query.RulePageQuery; +import com.youlai.boot.admin.model.vo.PointAccountVO; +import com.youlai.boot.admin.model.vo.PointRecordVO; +import com.youlai.boot.admin.model.vo.RuleListVO; +import com.youlai.boot.mini.service.MiniPointAccountService; +import jodd.util.StringUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.UUID; + +@Service +@RequiredArgsConstructor +@Slf4j +public class PointManageServiceImpl extends ServiceImpl implements PointManageService { + + private final MiniPointAccountMapper miniPointAccountMapper; + private final MiniPointRuleMapper miniPointRuleMapper; + private final MiniPointRuleConverter miniPointRuleConverter; + private final MiniPointAccountService miniPointAccountService; + private final MiniPointRecordMapper miniPointRecordMapper; + + @Override + public IPage pageAccount(PointAccountQuery queryParams) { + Page page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize()); + return miniPointAccountMapper.pageAccount(page, queryParams); + } + + @Override + public IPage pageRule(RulePageQuery queryParams) { + Page page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StringUtil.isNotBlank(queryParams.getRuleCode()), MiniPointRule::getRuleCode, queryParams.getRuleCode()); + queryWrapper.like(StringUtil.isNotBlank(queryParams.getRuleName()), MiniPointRule::getRuleName, queryParams.getRuleName()); + queryWrapper.orderByAsc(MiniPointRule::getCreateTime); + Page pageList = this.page(page, queryWrapper); + return miniPointRuleConverter.toRulePageVo(pageList); + } + + @Override + public void addRule(AddPointRuleForm form) { + // 校验规则编码是否唯一 + long count = this.count(new LambdaQueryWrapper() + .eq(MiniPointRule::getRuleCode, form.getRuleCode()) + .eq(MiniPointRule::getDeleted, false)); + if (count > 0) { + throw new MsgException("规则编码已存在,请修改后重试"); + } + + // 表单转实体 + MiniPointRule rule = miniPointRuleConverter.toEntity(form); + + // 设置默认值 + rule.setUuid(UUID.randomUUID().toString().replace("-", "")); + rule.setStatus(false); // 默认启用 + rule.setCreateBy(SecurityUtils.getUserId()); + rule.setCreateTime(new Date()); + rule.setCreateTimestamp(System.currentTimeMillis()); + + // 保存 + this.save(rule); + } + + @Override + public void deleteRule(Long id) { + // 校验规则是否存在 + MiniPointRule rule = this.getById(id); + if (rule == null || rule.getDeleted()) { + throw new MsgException("积分规则不存在或已删除"); + } + + // 逻辑删除,设置删除标记和更新信息 + MiniPointRule updateRule = new MiniPointRule(); + updateRule.setId(id); + updateRule.setDeleted(true); + updateRule.setUpdateBy(SecurityUtils.getUserId()); + updateRule.setUpdateTime(new Date()); + updateRule.setUpdateTimestamp(System.currentTimeMillis()); + + this.updateById(updateRule); + } + + @Override + public void changeStatus(Long id, Boolean status) { + // 1. 非空校验 + if (status == null) { + throw new MsgException("状态参数不能为空"); + } + + // 2. 校验规则是否存在且未删除 + MiniPointRule rule = this.getById(id); + if (rule == null || rule.getDeleted()) { + throw new MsgException("积分规则不存在或已删除"); + } + + // 3. 构造更新对象,直接赋值Boolean类型状态 + MiniPointRule updateRule = new MiniPointRule(); + updateRule.setId(id); + updateRule.setStatus(status); // false=启用,true=禁用,自动映射数据库0/1 + updateRule.setUpdateBy(SecurityUtils.getUserId()); + updateRule.setUpdateTime(new Date()); + updateRule.setUpdateTimestamp(System.currentTimeMillis()); + + // 4. 执行更新 + this.updateById(updateRule); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void adjustPoint(AdjustUserPointForm form) { + // 1. 参数校验:调整值不能为0 + if (form.getChangeAmount() == null || form.getChangeAmount() == 0) { + throw new MsgException("积分调整值不能为0"); + } + + // 2.根据用户主键userId查询积分账户 + MiniPointAccount account = miniPointAccountService.getOne(new LambdaQueryWrapper() + .eq(MiniPointAccount::getUserId, form.getUserId()) + .eq(MiniPointAccount::getDeleted, false)); + // 账户不存在自动创建,新用户第一次获得积分的时候自动初始化账户 + if (account == null) { + account = new MiniPointAccount(); + account.setUuid(IdUtil.fastSimpleUUID()); + account.setUserId(form.getUserId()); + account.setPoints(0); + account.setCreateBy(form.getUserId()); + account.setCreateTime(new Date()); + account.setCreateTimestamp(System.currentTimeMillis()); + miniPointAccountService.save(account); + } + + // 4. 计算变更后余额,校验不能为负数 + Integer afterBalance = account.getPoints() + form.getChangeAmount(); + if (afterBalance < 0) { + throw new MsgException("积分不足,扣减后余额不能为负数"); + } + + // 5. 更新用户积分账户余额 + MiniPointAccount updateAccount = new MiniPointAccount(); + updateAccount.setId(account.getId()); + updateAccount.setPoints(afterBalance); + updateAccount.setUpdateBy(SecurityUtils.getUserId()); + updateAccount.setUpdateTime(new Date()); + updateAccount.setUpdateTimestamp(System.currentTimeMillis()); + miniPointAccountService.updateById(updateAccount); + + // 6. 插入积分流水记录 + MiniPointRecord record = new MiniPointRecord(); + record.setUuid(IdUtil.fastSimpleUUID()); + record.setUserId(account.getUserId()); + record.setChangeAmount(form.getChangeAmount()); + record.setBalanceAfter(afterBalance); + record.setBizType(form.getBizType()); + // 优先用传进来的业务唯一ID(比如AI任务ID),没有的话自动生成,保证幂等 + record.setBizId(StrUtil.isNotBlank(form.getBizId()) ? form.getBizId() : UUID.randomUUID().toString().replace("-", "")); + record.setCreateBy(SecurityUtils.getUserId()); + record.setCreateTime(new Date()); + record.setCreateTimestamp(System.currentTimeMillis()); + miniPointRecordMapper.insert(record); + } + + @Override + public IPage pageAllRecord(PointRecordQuery query) { + Page page = new Page<>(query.getPageNum(), query.getPageSize()); + return miniPointRecordMapper.pageAllRecord(page, query); + } +} diff --git a/src/main/java/com/youlai/boot/mini/controller/PointController.java b/src/main/java/com/youlai/boot/mini/controller/PointController.java index 84106d5..8f77040 100644 --- a/src/main/java/com/youlai/boot/mini/controller/PointController.java +++ b/src/main/java/com/youlai/boot/mini/controller/PointController.java @@ -14,7 +14,6 @@ import com.youlai.boot.mini.model.vo.SignResultVO; import com.youlai.boot.mini.model.vo.SignStatusVO; import com.youlai.boot.mini.service.MiniPointAccountService; import com.youlai.boot.mini.service.MiniPointRecordService; -import com.youlai.boot.mini.service.MiniPointRuleService; import com.youlai.boot.mini.service.MiniSignService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; diff --git a/src/main/java/com/youlai/boot/mini/converter/MiniPointAccountConverter.java b/src/main/java/com/youlai/boot/mini/converter/MiniPointAccountConverter.java index 382fd9e..c5c8163 100644 --- a/src/main/java/com/youlai/boot/mini/converter/MiniPointAccountConverter.java +++ b/src/main/java/com/youlai/boot/mini/converter/MiniPointAccountConverter.java @@ -2,9 +2,7 @@ package com.youlai.boot.mini.converter; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.boot.mini.model.entity.MiniPointAccount; -import com.youlai.boot.mini.model.entity.MiniPointRule; -import com.youlai.boot.mini.model.vo.RuleListVO; -import com.youlai.boot.mini.model.vo.PointAccountVO; +import com.youlai.boot.admin.model.vo.PointAccountVO; import org.mapstruct.Mapper; @Mapper(componentModel = "spring") diff --git a/src/main/java/com/youlai/boot/mini/converter/MiniPointRuleConverter.java b/src/main/java/com/youlai/boot/mini/converter/MiniPointRuleConverter.java index 5ec0160..8a9f886 100644 --- a/src/main/java/com/youlai/boot/mini/converter/MiniPointRuleConverter.java +++ b/src/main/java/com/youlai/boot/mini/converter/MiniPointRuleConverter.java @@ -2,8 +2,8 @@ package com.youlai.boot.mini.converter; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.boot.mini.model.entity.MiniPointRule; -import com.youlai.boot.mini.model.form.AddPointRuleForm; -import com.youlai.boot.mini.model.vo.RuleListVO; +import com.youlai.boot.admin.model.form.AddPointRuleForm; +import com.youlai.boot.admin.model.vo.RuleListVO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; diff --git a/src/main/java/com/youlai/boot/mini/listener/UserRegisterPointListener.java b/src/main/java/com/youlai/boot/mini/listener/UserRegisterPointListener.java index 6db9c57..5f13d17 100644 --- a/src/main/java/com/youlai/boot/mini/listener/UserRegisterPointListener.java +++ b/src/main/java/com/youlai/boot/mini/listener/UserRegisterPointListener.java @@ -1,18 +1,16 @@ package com.youlai.boot.mini.listener; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.youlai.boot.admin.service.PointManageService; import com.youlai.boot.common.event.UserRegisterEvent; import com.youlai.boot.mini.model.entity.MiniPointRecord; import com.youlai.boot.mini.model.entity.MiniPointRule; -import com.youlai.boot.mini.model.form.AdjustUserPointForm; +import com.youlai.boot.admin.model.form.AdjustUserPointForm; import com.youlai.boot.mini.service.MiniPointRecordService; -import com.youlai.boot.mini.service.MiniPointRuleService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.event.TransactionPhase; import org.springframework.transaction.event.TransactionalEventListener; @@ -26,7 +24,7 @@ import org.springframework.transaction.event.TransactionalEventListener; public class UserRegisterPointListener { private final MiniPointRecordService pointRecordService; - private final MiniPointRuleService pointRuleService; + private final PointManageService pointManageService; /** * 监听用户注册成功事件,事务提交后再赠送积分 @@ -54,7 +52,7 @@ public class UserRegisterPointListener { } //2. 查询注册积分规则,可配置无需改代码 - MiniPointRule registerRule = pointRuleService.getOne(new LambdaQueryWrapper() + MiniPointRule registerRule = pointManageService.getOne(new LambdaQueryWrapper() .eq(MiniPointRule::getRuleCode, "REGISTER_GIFT") .eq(MiniPointRule::getStatus, false) // 0=启用状态 .last("LIMIT 1")); @@ -70,7 +68,7 @@ public class UserRegisterPointListener { adjustForm.setBizType("REGISTER_GIFT"); adjustForm.setChangeAmount(giftPoint); // 调用之前写的调整积分接口,自动创建积分账户、生成流水 - pointRecordService.adjustPoint(adjustForm); + pointManageService.adjustPoint(adjustForm); log.info("新用户{}注册赠送{}积分成功", userId, giftPoint); } catch (Exception e) { diff --git a/src/main/java/com/youlai/boot/mini/mapper/MiniPointAccountMapper.java b/src/main/java/com/youlai/boot/mini/mapper/MiniPointAccountMapper.java index 75d8367..1460f69 100644 --- a/src/main/java/com/youlai/boot/mini/mapper/MiniPointAccountMapper.java +++ b/src/main/java/com/youlai/boot/mini/mapper/MiniPointAccountMapper.java @@ -4,15 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.boot.mini.model.entity.MiniPointAccount; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.youlai.boot.mini.model.query.PointAccountQuery; -import com.youlai.boot.mini.model.vo.PointAccountVO; +import com.youlai.boot.admin.model.query.PointAccountQuery; +import com.youlai.boot.admin.model.vo.PointAccountVO; import org.apache.ibatis.annotations.Param; /** * 用户积分表 Mapper 接口 * * @author jwy -* @since +* @since */ public interface MiniPointAccountMapper extends BaseMapper { diff --git a/src/main/java/com/youlai/boot/mini/mapper/MiniPointRecordMapper.java b/src/main/java/com/youlai/boot/mini/mapper/MiniPointRecordMapper.java index 835fd4d..eff3008 100644 --- a/src/main/java/com/youlai/boot/mini/mapper/MiniPointRecordMapper.java +++ b/src/main/java/com/youlai/boot/mini/mapper/MiniPointRecordMapper.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.youlai.boot.mini.model.query.MyPointRecordQuery; import com.youlai.boot.mini.model.query.PointRecordQuery; import com.youlai.boot.mini.model.vo.MyPointRecordVO; -import com.youlai.boot.mini.model.vo.PointRecordVO; +import com.youlai.boot.admin.model.vo.PointRecordVO; import org.apache.ibatis.annotations.Param; /** diff --git a/src/main/java/com/youlai/boot/mini/service/MiniPointAccountService.java b/src/main/java/com/youlai/boot/mini/service/MiniPointAccountService.java index 0386bfe..1c30613 100644 --- a/src/main/java/com/youlai/boot/mini/service/MiniPointAccountService.java +++ b/src/main/java/com/youlai/boot/mini/service/MiniPointAccountService.java @@ -1,16 +1,11 @@ package com.youlai.boot.mini.service; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.youlai.boot.mini.model.entity.MiniPointAccount; -import com.youlai.boot.mini.model.query.PointAccountQuery; import com.youlai.boot.mini.model.vo.MyPointVO; -import com.youlai.boot.mini.model.vo.PointAccountVO; public interface MiniPointAccountService extends IService { - IPage pageAccount(PointAccountQuery queryParams); - MyPointVO getUserPoint(Long userId); } diff --git a/src/main/java/com/youlai/boot/mini/service/MiniPointRecordService.java b/src/main/java/com/youlai/boot/mini/service/MiniPointRecordService.java index a23fef8..e6052a6 100644 --- a/src/main/java/com/youlai/boot/mini/service/MiniPointRecordService.java +++ b/src/main/java/com/youlai/boot/mini/service/MiniPointRecordService.java @@ -3,11 +3,8 @@ package com.youlai.boot.mini.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.youlai.boot.mini.model.entity.MiniPointRecord; -import com.youlai.boot.mini.model.form.AdjustUserPointForm; import com.youlai.boot.mini.model.query.MyPointRecordQuery; -import com.youlai.boot.mini.model.query.PointRecordQuery; import com.youlai.boot.mini.model.vo.MyPointRecordVO; -import com.youlai.boot.mini.model.vo.PointRecordVO; public interface MiniPointRecordService extends IService { @@ -15,14 +12,7 @@ public interface MiniPointRecordService extends IService { * 后台手动调整用户积分 * @param form 调整参数 */ - void adjustPoint(AdjustUserPointForm form); - - /** - * 分页查询所有积分记录(后台管理端) - * @param query 查询参数 - * @return 分页结果 - */ - IPage pageAllRecord(PointRecordQuery query); +// void adjustPoint(AdjustUserPointForm form); /** * 分页查询当前用户的积分流水(用户端专属) @@ -54,6 +44,6 @@ public interface MiniPointRecordService extends IService { * @return 扣除的积分值(负数),大于等于0表示扣除失败(积分不足/已经扣过) */ Integer deductAiGenerateImagePoint(Long userId, String taskId); - + } diff --git a/src/main/java/com/youlai/boot/mini/service/MiniPointRuleService.java b/src/main/java/com/youlai/boot/mini/service/MiniPointRuleService.java deleted file mode 100644 index 68ec6bb..0000000 --- a/src/main/java/com/youlai/boot/mini/service/MiniPointRuleService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.youlai.boot.mini.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; -import com.youlai.boot.mini.model.entity.MiniPointRule; -import com.youlai.boot.mini.model.form.AddPointRuleForm; -import com.youlai.boot.mini.model.query.RulePageQuery; -import com.youlai.boot.mini.model.vo.RuleListVO; - -public interface MiniPointRuleService extends IService { - IPage pageRule(RulePageQuery queryParams); - - /** - * 新增积分规则 - */ - void addRule(AddPointRuleForm form); - - /** - * 逻辑删除积分规则 - */ - void deleteRule(Long id); - - /** - * 启用/禁用积分规则 - * @param id 规则ID - * @param status 状态:false-启用,true-禁用 - */ - void changeStatus(Long id, Boolean status); -} diff --git a/src/main/java/com/youlai/boot/mini/service/MiniSignService.java b/src/main/java/com/youlai/boot/mini/service/MiniSignService.java index 057683e..7863f94 100644 --- a/src/main/java/com/youlai/boot/mini/service/MiniSignService.java +++ b/src/main/java/com/youlai/boot/mini/service/MiniSignService.java @@ -10,15 +10,7 @@ import com.youlai.boot.mini.model.vo.SignStatusVO; */ public interface MiniSignService extends IService { - /** - * 用户签到 - * @return 签到结果 - */ SignResultVO sign(); - /** - * 查询用户签到状态,包括今日是否签到、连续天数、当月签到日历 - * @return 签到状态 - */ SignStatusVO getSignStatus(); } diff --git a/src/main/java/com/youlai/boot/mini/service/impl/MiniPointAccountServiceImpl.java b/src/main/java/com/youlai/boot/mini/service/impl/MiniPointAccountServiceImpl.java index 8fea592..18df951 100644 --- a/src/main/java/com/youlai/boot/mini/service/impl/MiniPointAccountServiceImpl.java +++ b/src/main/java/com/youlai/boot/mini/service/impl/MiniPointAccountServiceImpl.java @@ -1,16 +1,12 @@ package com.youlai.boot.mini.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.boot.common.exception.MsgException; import com.youlai.boot.mini.converter.MiniPointAccountConverter; import com.youlai.boot.mini.mapper.*; import com.youlai.boot.mini.model.entity.MiniPointAccount; -import com.youlai.boot.mini.model.query.PointAccountQuery; import com.youlai.boot.mini.model.vo.MyPointVO; -import com.youlai.boot.mini.model.vo.PointAccountVO; import com.youlai.boot.mini.service.MiniPointAccountService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -21,15 +17,6 @@ import org.springframework.stereotype.Service; @Slf4j public class MiniPointAccountServiceImpl extends ServiceImpl implements MiniPointAccountService { - private final MiniPointAccountMapper miniPointAccountMapper; - private final MiniPointRecordMapper miniPointRecordMapper; - private final MiniPointAccountConverter miniPointAccountConverter; - - @Override - public IPage pageAccount(PointAccountQuery queryParams) { - Page page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize()); - return miniPointAccountMapper.pageAccount(page, queryParams); - } @Override public MyPointVO getUserPoint(Long userId) { diff --git a/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRecordServiceImpl.java b/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRecordServiceImpl.java index a2bb62b..fb810b3 100644 --- a/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRecordServiceImpl.java +++ b/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRecordServiceImpl.java @@ -1,28 +1,21 @@ package com.youlai.boot.mini.service.impl; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.youlai.boot.common.constant.CommonConstants; +import com.youlai.boot.admin.service.PointManageService; import com.youlai.boot.common.exception.MsgException; -import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.mini.mapper.MiniPointAccountMapper; import com.youlai.boot.mini.mapper.MiniPointRecordMapper; import com.youlai.boot.mini.model.entity.MiniPointAccount; import com.youlai.boot.mini.model.entity.MiniPointRecord; import com.youlai.boot.mini.model.entity.MiniPointRule; -import com.youlai.boot.mini.model.form.AdjustUserPointForm; +import com.youlai.boot.admin.model.form.AdjustUserPointForm; import com.youlai.boot.mini.model.query.MyPointRecordQuery; -import com.youlai.boot.mini.model.query.PointRecordQuery; import com.youlai.boot.mini.model.vo.MyPointRecordVO; -import com.youlai.boot.mini.model.vo.PointRecordVO; import com.youlai.boot.mini.service.MiniPointAccountService; import com.youlai.boot.mini.service.MiniPointRecordService; -import com.youlai.boot.mini.service.MiniPointRuleService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.StringRedisTemplate; @@ -34,11 +27,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; -import java.time.temporal.WeekFields; -import java.util.Date; -import java.util.Locale; import java.util.Optional; -import java.util.UUID; import java.util.concurrent.TimeUnit; @Service @@ -47,71 +36,9 @@ import java.util.concurrent.TimeUnit; public class MiniPointRecordServiceImpl extends ServiceImpl implements MiniPointRecordService { private final MiniPointAccountService miniPointAccountService; - private final MiniPointRuleService ruleService; private final StringRedisTemplate redisTemplate; private final MiniPointAccountMapper miniPointAccountMapper; - - - @Override - @Transactional(rollbackFor = Exception.class) - public void adjustPoint(AdjustUserPointForm form) { - // 1. 参数校验:调整值不能为0 - if (form.getChangeAmount() == null || form.getChangeAmount() == 0) { - throw new MsgException("积分调整值不能为0"); - } - - // 2. 直接根据前端传的用户主键userId查询积分账户(后台操作接口,不需要转uuid,直接用主键更高效) - MiniPointAccount account = miniPointAccountService.getOne(new LambdaQueryWrapper() - .eq(MiniPointAccount::getUserId, form.getUserId()) - .eq(MiniPointAccount::getDeleted, false)); - // 账户不存在自动创建,新用户第一次获得积分的时候自动初始化账户 - if (account == null) { - account = new MiniPointAccount(); - account.setUuid(IdUtil.fastSimpleUUID()); - account.setUserId(form.getUserId()); - account.setPoints(0); - account.setCreateBy(form.getUserId()); - account.setCreateTime(new java.util.Date()); - account.setCreateTimestamp(System.currentTimeMillis()); - miniPointAccountService.save(account); - } - - // 4. 计算变更后余额,校验扣减后不能为负数 - Integer afterBalance = account.getPoints() + form.getChangeAmount(); - if (afterBalance < 0) { - throw new MsgException("积分不足,扣减后余额不能为负数"); - } - - // 5. 更新用户积分账户余额 - MiniPointAccount updateAccount = new MiniPointAccount(); - updateAccount.setId(account.getId()); - updateAccount.setPoints(afterBalance); - updateAccount.setUpdateBy(SecurityUtils.getUserId()); - updateAccount.setUpdateTime(new Date()); - updateAccount.setUpdateTimestamp(System.currentTimeMillis()); - miniPointAccountService.updateById(updateAccount); - - // 6. 插入积分流水记录 - MiniPointRecord record = new MiniPointRecord(); - record.setUuid(UUID.randomUUID().toString().replace("-", "")); - record.setUserId(account.getUserId()); - record.setChangeAmount(form.getChangeAmount()); - record.setBalanceAfter(afterBalance); - record.setBizType(form.getBizType()); -// record.setRemark(form.getRemark()); - // 优先用传进来的业务唯一ID(比如AI任务ID),没有的话自动生成,保证幂等 - record.setBizId(StrUtil.isNotBlank(form.getBizId()) ? form.getBizId() : UUID.randomUUID().toString().replace("-", "")); - record.setCreateBy(SecurityUtils.getUserId()); - record.setCreateTime(new Date()); - record.setCreateTimestamp(System.currentTimeMillis()); - this.save(record); - } - - @Override - public IPage pageAllRecord(PointRecordQuery query) { - Page page = new Page<>(query.getPageNum(), query.getPageSize()); - return baseMapper.pageAllRecord(page, query); - } + private final PointManageService pointManageService; @Override public IPage pageMyPointRecord(Long userId, MyPointRecordQuery query) { @@ -128,7 +55,7 @@ public class MiniPointRecordServiceImpl extends ServiceImpl() + MiniPointRule rule = pointManageService.getOne(new LambdaQueryWrapper() .eq(MiniPointRule::getRuleCode, ruleCode) .eq(MiniPointRule::getStatus, false) .last("LIMIT 1")); @@ -283,7 +210,7 @@ public class MiniPointRecordServiceImpl extends ServiceImpl 0 && redisNormal) { @@ -351,7 +278,7 @@ public class MiniPointRecordServiceImpl extends ServiceImpl 0 && redisNormal) { @@ -398,7 +325,7 @@ public class MiniPointRecordServiceImpl extends ServiceImpl 0 && redisNormal) { diff --git a/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRuleServiceImpl.java b/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRuleServiceImpl.java deleted file mode 100644 index afc242b..0000000 --- a/src/main/java/com/youlai/boot/mini/service/impl/MiniPointRuleServiceImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.youlai.boot.mini.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.youlai.boot.common.exception.BusinessException; -import com.youlai.boot.common.exception.MsgException; -import com.youlai.boot.framework.security.util.SecurityUtils; -import com.youlai.boot.mini.converter.MiniPointRuleConverter; -import com.youlai.boot.mini.mapper.MiniPointRuleMapper; -import com.youlai.boot.mini.model.entity.MiniPointRule; -import com.youlai.boot.mini.model.form.AddPointRuleForm; -import com.youlai.boot.mini.model.query.RulePageQuery; -import com.youlai.boot.mini.model.vo.RuleListVO; -import com.youlai.boot.mini.service.MiniPointRuleService; -import jodd.util.StringUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.UUID; - -@Service -@RequiredArgsConstructor -@Slf4j -public class MiniPointRuleServiceImpl extends ServiceImpl implements MiniPointRuleService { - - private final MiniPointRuleMapper miniPointRuleMapper; - private final MiniPointRuleConverter miniPointRuleConverter; - - @Override - public IPage pageRule(RulePageQuery queryParams) { - Page page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StringUtil.isNotBlank(queryParams.getRuleCode()),MiniPointRule::getRuleCode, queryParams.getRuleCode()); - queryWrapper.like(StringUtil.isNotBlank(queryParams.getRuleName()),MiniPointRule::getRuleName, queryParams.getRuleName()); - queryWrapper.orderByAsc(MiniPointRule::getCreateTime); - Page pageList = this.page(page, queryWrapper); - return miniPointRuleConverter.toRulePageVo(pageList); - } - - @Override - public void addRule(AddPointRuleForm form) { - // 校验规则编码是否唯一 - long count = this.count(new LambdaQueryWrapper() - .eq(MiniPointRule::getRuleCode, form.getRuleCode()) - .eq(MiniPointRule::getDeleted, false)); - if (count > 0) { - throw new MsgException("规则编码已存在,请修改后重试"); - } - - // 表单转实体 - MiniPointRule rule = miniPointRuleConverter.toEntity(form); - - // 设置默认值 - rule.setUuid(UUID.randomUUID().toString().replace("-", "")); - rule.setStatus(false); // 默认启用 - rule.setCreateBy(SecurityUtils.getUserId()); - rule.setCreateTime(new Date()); - rule.setCreateTimestamp(System.currentTimeMillis()); - - // 保存 - this.save(rule); - } - - @Override - public void deleteRule(Long id) { - // 校验规则是否存在 - MiniPointRule rule = this.getById(id); - if (rule == null || rule.getDeleted()) { - throw new MsgException("积分规则不存在或已删除"); - } - - // 逻辑删除,设置删除标记和更新信息 - MiniPointRule updateRule = new MiniPointRule(); - updateRule.setId(id); - updateRule.setDeleted(true); - updateRule.setUpdateBy(SecurityUtils.getUserId()); - updateRule.setUpdateTime(new Date()); - updateRule.setUpdateTimestamp(System.currentTimeMillis()); - - this.updateById(updateRule); - } - - @Override - public void changeStatus(Long id, Boolean status) { - // 1. 非空校验 - if (status == null) { - throw new MsgException("状态参数不能为空"); - } - - // 2. 校验规则是否存在且未删除 - MiniPointRule rule = this.getById(id); - if (rule == null || rule.getDeleted()) { - throw new MsgException("积分规则不存在或已删除"); - } - - // 3. 构造更新对象,直接赋值Boolean类型状态 - MiniPointRule updateRule = new MiniPointRule(); - updateRule.setId(id); - updateRule.setStatus(status); // false=启用,true=禁用,自动映射数据库0/1 - updateRule.setUpdateBy(SecurityUtils.getUserId()); - updateRule.setUpdateTime(new Date()); - updateRule.setUpdateTimestamp(System.currentTimeMillis()); - - // 4. 执行更新 - this.updateById(updateRule); - } - -} diff --git a/src/main/java/com/youlai/boot/mini/service/impl/MiniSignServiceImpl.java b/src/main/java/com/youlai/boot/mini/service/impl/MiniSignServiceImpl.java index 92bf71d..f212ed4 100644 --- a/src/main/java/com/youlai/boot/mini/service/impl/MiniSignServiceImpl.java +++ b/src/main/java/com/youlai/boot/mini/service/impl/MiniSignServiceImpl.java @@ -4,17 +4,16 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.youlai.boot.admin.service.PointManageService; import com.youlai.boot.common.constant.CommonConstants; import com.youlai.boot.common.exception.MsgException; import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.mini.mapper.MiniSignRecordMapper; import com.youlai.boot.mini.model.entity.MiniPointRule; import com.youlai.boot.mini.model.entity.MiniSignRecord; -import com.youlai.boot.mini.model.form.AdjustUserPointForm; +import com.youlai.boot.admin.model.form.AdjustUserPointForm; import com.youlai.boot.mini.model.vo.SignResultVO; import com.youlai.boot.mini.model.vo.SignStatusVO; -import com.youlai.boot.mini.service.MiniPointRecordService; -import com.youlai.boot.mini.service.MiniPointRuleService; import com.youlai.boot.mini.service.MiniSignService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -41,8 +40,7 @@ import java.util.stream.Collectors; public class MiniSignServiceImpl extends ServiceImpl implements MiniSignService { private final StringRedisTemplate redisTemplate; - private final MiniPointRuleService ruleService; - private final MiniPointRecordService pointRecordService; + private final PointManageService pointManageService; @Transactional(rollbackFor = Exception.class) @Override @@ -82,7 +80,7 @@ public class MiniSignServiceImpl extends ServiceImpl() + MiniPointRule baseRule = pointManageService.getOne(new LambdaQueryWrapper() .eq(MiniPointRule::getRuleCode, "SIGN_IN_BASE") .eq(MiniPointRule::getStatus, false) .last("LIMIT 1")); @@ -95,7 +93,7 @@ public class MiniSignServiceImpl extends ServiceImpl - + diff --git a/src/main/resources/mapper/mini/MiniPointRecordMapper.xml b/src/main/resources/mapper/mini/MiniPointRecordMapper.xml index d83ab4c..167ed5a 100644 --- a/src/main/resources/mapper/mini/MiniPointRecordMapper.xml +++ b/src/main/resources/mapper/mini/MiniPointRecordMapper.xml @@ -6,7 +6,7 @@ - +