From b624af2e10283d7e7cf15f2f0a4a8221872ce324 Mon Sep 17 00:00:00 2001 From: hucs Date: Fri, 2 Aug 2024 18:27:41 +0800 Subject: [PATCH] fix --- .../starry/admin/common/task/ClerkPkJob.java | 35 +++++ .../controller/PlayClerkPkController.java | 77 +++++++++++ .../clerk/mapper/PlayClerkPkMapper.java | 16 +++ .../clerk/module/entity/ClerkPkEnum.java | 23 ++++ .../module/entity/PlayClerkPkEntity.java | 94 +++++++++++++ .../clerk/service/IPlayClerkPkService.java | 57 ++++++++ .../service/impl/PlayClerkPkServiceImpl.java | 128 ++++++++++++++++++ .../java/com/starry/common/utils/IdUtils.java | 2 +- 8 files changed, 431 insertions(+), 1 deletion(-) create mode 100644 play-admin/src/main/java/com/starry/admin/common/task/ClerkPkJob.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/clerk/controller/PlayClerkPkController.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/clerk/mapper/PlayClerkPkMapper.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/ClerkPkEnum.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkPkEntity.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkPkService.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkPkServiceImpl.java diff --git a/play-admin/src/main/java/com/starry/admin/common/task/ClerkPkJob.java b/play-admin/src/main/java/com/starry/admin/common/task/ClerkPkJob.java new file mode 100644 index 0000000..285547c --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/common/task/ClerkPkJob.java @@ -0,0 +1,35 @@ +package com.starry.admin.common.task; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.starry.admin.modules.clerk.module.entity.ClerkPkEnum; +import com.starry.admin.modules.clerk.module.entity.PlayClerkPkEntity; +import com.starry.admin.modules.clerk.service.IPlayClerkPkService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * @Author: huchuansai + * @Date: 2024/8/2 4:31 PM + * @Description: + */ +@Component +public class ClerkPkJob { + + @Resource + private IPlayClerkPkService playClerkPkService; + + @Scheduled(fixedRate = 60000) + public void pkJobStatus() { + // 更新状态将待开始的状态改为进行中 + playClerkPkService.update(Wrappers.lambdaUpdate(PlayClerkPkEntity.class).eq(PlayClerkPkEntity::getStatus, ClerkPkEnum.TO_BE_STARTED.name()) + .le(PlayClerkPkEntity::getPkBeginTime, new Date()) + .set(PlayClerkPkEntity::getStatus, ClerkPkEnum.IN_PROGRESS.name())); + + playClerkPkService.update(Wrappers.lambdaUpdate(PlayClerkPkEntity.class).eq(PlayClerkPkEntity::getStatus, ClerkPkEnum.IN_PROGRESS.name()) + .le(PlayClerkPkEntity::getPkEndTime, new Date()) + .set(PlayClerkPkEntity::getStatus, ClerkPkEnum.FINISHED.name())); + } +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/controller/PlayClerkPkController.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/controller/PlayClerkPkController.java new file mode 100644 index 0000000..2d4d1e5 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/controller/PlayClerkPkController.java @@ -0,0 +1,77 @@ +package com.starry.admin.modules.clerk.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.starry.admin.modules.clerk.module.entity.PlayClerkPkEntity; +import com.starry.admin.modules.clerk.service.IPlayClerkPkService; +import com.starry.common.annotation.Log; +import com.starry.common.enums.BusinessType; +import com.starry.common.result.R; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * 店员pkController + * + * @author admin + * @since 2024-08-02 + */ +@RestController +@RequestMapping("/play/pk") +public class PlayClerkPkController { + @Resource + private IPlayClerkPkService playClerkPkService; + + /** + * 查询店员pk列表 + */ + @GetMapping("/list") + public R list(PlayClerkPkEntity playClerkPk) { + IPage list = playClerkPkService.selectPlayClerkPkByPage(playClerkPk); + return R.ok(list); + } + + /** + * 获取店员pk详细信息 + */ + @GetMapping(value = "/{id}") + public R getInfo(@PathVariable("id") String id) { + return R.ok(playClerkPkService.selectPlayClerkPkById(id)); + } + + /** + * 新增店员pk + */ + @Log(title = "店员pk", businessType = BusinessType.INSERT) + @PostMapping("/create") + public R create(@RequestBody PlayClerkPkEntity playClerkPk) { + boolean success = playClerkPkService.create(playClerkPk); + if (success) { + return R.ok(); + } + return R.error("添加失败"); + } + + /** + * 修改店员pk + */ + @Log(title = "店员pk", businessType = BusinessType.UPDATE) + @PostMapping(value = "/update/{id}") + public R update(@PathVariable String id, @RequestBody PlayClerkPkEntity playClerkPk) { + playClerkPk.setId(id); + boolean success = playClerkPkService.update(playClerkPk); + if (success) { + return R.ok(); + } + return R.error("修改失败"); + } + + /** + * 删除店员pk + */ + @Log(title = "店员pk", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@PathVariable String[] ids) { + return R.ok(playClerkPkService.deletePlayClerkPkByIds(ids)); + } +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/mapper/PlayClerkPkMapper.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/mapper/PlayClerkPkMapper.java new file mode 100644 index 0000000..ab82af2 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/mapper/PlayClerkPkMapper.java @@ -0,0 +1,16 @@ +package com.starry.admin.modules.clerk.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.starry.admin.modules.clerk.module.entity.PlayClerkPkEntity; + +/** + * 店员pkMapper接口 + * + * @author admin + * @since 2024-08-02 + */ +public interface PlayClerkPkMapper extends BaseMapper { + + +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/ClerkPkEnum.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/ClerkPkEnum.java new file mode 100644 index 0000000..fe7fedd --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/ClerkPkEnum.java @@ -0,0 +1,23 @@ +package com.starry.admin.modules.clerk.module.entity; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: huchuansai + * @Date: 2021/11/1 4:33 下午 + * @Description: + */ +@AllArgsConstructor +public enum ClerkPkEnum { + + TO_BE_STARTED("TO_BE_STARTED", "待开始"), + IN_PROGRESS("IN_PROGRESS", "进行中"), + FINISHED("FINISHED", "已完成"), + ; + + @Getter + private String value; + @Getter + private String desc; +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkPkEntity.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkPkEntity.java new file mode 100644 index 0000000..868aa55 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkPkEntity.java @@ -0,0 +1,94 @@ +package com.starry.admin.modules.clerk.module.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.starry.common.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 店员pk对象 play_clerk_pk + * + * @author admin + * @since 2024-08-02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("play_clerk_pk") +public class PlayClerkPkEntity extends BaseEntity { + + + /** + * UUID + */ + private String id; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 创建人的id + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 修改人的id + */ + private String updatedBy; + + /** + * 修改时间 + */ + private Date updatedTime; + + + /** + * 数据版本 + */ + private Long version; + + /** + * 店员A + */ + private String clerkA; + + /** + * 店员B + */ + private String clerkB; + + /** + * 比例 + */ + private Integer radio; + + /** + * 开始时间 + */ + private Date pkBeginTime; + + /** + * 结束时间 + */ + private Date pkEndTime; + + /** + * 惩罚公示时间 + */ + private Date punishmentTime; + + /** + * 状态 + */ + private String status; + + +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkPkService.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkPkService.java new file mode 100644 index 0000000..4276f8c --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkPkService.java @@ -0,0 +1,57 @@ +package com.starry.admin.modules.clerk.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.starry.admin.modules.clerk.module.entity.PlayClerkPkEntity; + +/** + * 店员pkService接口 + * + * @author admin + * @since 2024-08-02 + */ +public interface IPlayClerkPkService extends IService { + /** + * 查询店员pk + * @param id 店员pk主键 + * @return 店员pk + */ + PlayClerkPkEntity selectPlayClerkPkById(String id); + + /** + * 查询店员pk列表 + * @param playClerkPk 店员pk + * @return 店员pk集合 + */ + IPage selectPlayClerkPkByPage(PlayClerkPkEntity playClerkPk); + + /** + * 新增店员pk + * @param playClerkPk 店员pk + * @return 结果 + */ + boolean create(PlayClerkPkEntity playClerkPk); + + /** + * 修改店员pk + * @param playClerkPk 店员pk + * @return 结果 + */ + boolean update(PlayClerkPkEntity playClerkPk); + + /** + * 批量删除店员pk + * + * @param ids 需要删除的店员pk主键集合 + * @return 结果 + */ + int deletePlayClerkPkByIds(String[] ids); + + /** + * 删除店员pk信息 + * + * @param id 店员pk主键 + * @return 结果 + */ + int deletePlayClerkPkById(String id); +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkPkServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkPkServiceImpl.java new file mode 100644 index 0000000..8197adf --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkPkServiceImpl.java @@ -0,0 +1,128 @@ +package com.starry.admin.modules.clerk.service.impl; + +import cn.hutool.core.date.DateUtil; +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.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.starry.admin.modules.clerk.mapper.PlayClerkPkMapper; +import com.starry.admin.modules.clerk.module.entity.ClerkPkEnum; +import com.starry.admin.modules.clerk.module.entity.PlayClerkPkEntity; +import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; +import com.starry.admin.modules.clerk.service.IPlayClerkPkService; +import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService; +import com.starry.common.utils.IdUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Date; + +/** + * 店员pkService业务层处理 + * + * @author admin + * @since 2024-08-02 + */ +@Service +public class PlayClerkPkServiceImpl extends ServiceImpl implements IPlayClerkPkService { + @Resource + private PlayClerkPkMapper playClerkPkMapper; + @Resource + private IPlayClerkUserInfoService clerkUserInfoService; + + /** + * 查询店员pk + * + * @param id 店员pk主键 + * @return 店员pk + */ + @Override + public PlayClerkPkEntity selectPlayClerkPkById(String id) { + return this.baseMapper.selectById(id); + } + + /** + * 查询店员pk列表 + * + * @param playClerkPk 店员pk + * @return 店员pk + */ + @Override + public IPage selectPlayClerkPkByPage(PlayClerkPkEntity playClerkPk) { + Page page = new Page<>(1, 10); + return this.baseMapper.selectPage(page, new LambdaQueryWrapper<>()); + } + + /** + * 新增店员pk + * + * @param playClerkPk 店员pk + * @return 结果 + */ + @Override + public boolean create(PlayClerkPkEntity playClerkPk) { + if (StrUtil.isBlankIfStr(playClerkPk.getId())) { + playClerkPk.setId(IdUtils.getUuid()); + } + if (DateUtil.compare(playClerkPk.getPkBeginTime(), new Date()) < 1) { + throw new RuntimeException("开始时间必须大于当前时间"); + } + if (DateUtil.compare(playClerkPk.getPkEndTime(), new Date()) < 1) { + throw new RuntimeException("结束时间必须大于当前时间"); + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(PlayClerkPkEntity.class).in(PlayClerkPkEntity::getClerkA, Arrays.asList(playClerkPk.getClerkA(), playClerkPk.getClerkB())) + .in(PlayClerkPkEntity::getStatus, Arrays.asList(ClerkPkEnum.TO_BE_STARTED.name(), ClerkPkEnum.IN_PROGRESS.name())); + long count = this.count(wrapper); + if (count > 0) { + PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(playClerkPk.getClerkA()); + throw new RuntimeException("店员【" + clerkUserInfo.getNickname() + "】还有未完成的PK,无法继续添加"); + } + wrapper.clear(); + wrapper = Wrappers.lambdaQuery(PlayClerkPkEntity.class).in(PlayClerkPkEntity::getClerkB, Arrays.asList(playClerkPk.getClerkA(), playClerkPk.getClerkB())) + .in(PlayClerkPkEntity::getStatus, Arrays.asList(ClerkPkEnum.TO_BE_STARTED.name(), ClerkPkEnum.IN_PROGRESS.name())); + count = this.count(wrapper); + if (count > 0) { + PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(playClerkPk.getClerkB()); + throw new RuntimeException("店员【" + clerkUserInfo.getNickname() + "】还有未完成的PK,无法继续添加"); + } + + playClerkPk.setStatus(ClerkPkEnum.TO_BE_STARTED.name()); + return save(playClerkPk); + } + + /** + * 修改店员pk + * + * @param playClerkPk 店员pk + * @return 结果 + */ + @Override + public boolean update(PlayClerkPkEntity playClerkPk) { + return updateById(playClerkPk); + } + + /** + * 批量删除店员pk + * + * @param ids 需要删除的店员pk主键 + * @return 结果 + */ + @Override + public int deletePlayClerkPkByIds(String[] ids) { + return playClerkPkMapper.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 删除店员pk信息 + * + * @param id 店员pk主键 + * @return 结果 + */ + @Override + public int deletePlayClerkPkById(String id) { + return playClerkPkMapper.deleteById(id); + } +} diff --git a/play-common/src/main/java/com/starry/common/utils/IdUtils.java b/play-common/src/main/java/com/starry/common/utils/IdUtils.java index cbe96ce..6f71c0f 100644 --- a/play-common/src/main/java/com/starry/common/utils/IdUtils.java +++ b/play-common/src/main/java/com/starry/common/utils/IdUtils.java @@ -15,6 +15,6 @@ public class IdUtils { * @return UUID */ public static String getUuid() { - return RandomUtil.randomString(8); + return RandomUtil.randomString(9).toLowerCase(); } }