This commit is contained in:
hucs
2024-08-02 18:27:41 +08:00
parent 11e7d3800e
commit b624af2e10
8 changed files with 431 additions and 1 deletions

View File

@@ -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()));
}
}

View File

@@ -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<PlayClerkPkEntity> 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));
}
}

View File

@@ -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<PlayClerkPkEntity> {
}

View File

@@ -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;
}

View File

@@ -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<PlayClerkPkEntity> {
/**
* 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;
}

View File

@@ -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<PlayClerkPkEntity> {
/**
* 查询店员pk
* @param id 店员pk主键
* @return 店员pk
*/
PlayClerkPkEntity selectPlayClerkPkById(String id);
/**
* 查询店员pk列表
* @param playClerkPk 店员pk
* @return 店员pk集合
*/
IPage<PlayClerkPkEntity> 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);
}

View File

@@ -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<PlayClerkPkMapper, PlayClerkPkEntity> 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<PlayClerkPkEntity> selectPlayClerkPkByPage(PlayClerkPkEntity playClerkPk) {
Page<PlayClerkPkEntity> 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<PlayClerkPkEntity> 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);
}
}

View File

@@ -15,6 +15,6 @@ public class IdUtils {
* @return UUID * @return UUID
*/ */
public static String getUuid() { public static String getUuid() {
return RandomUtil.randomString(8); return RandomUtil.randomString(9).toLowerCase();
} }
} }