疯狂的狮子li
2021-07-26 280196c9e540f88c65cdf1b8c0964dac65bbfb81
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
@@ -2,30 +2,21 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.lock.LockInfo;
import com.baomidou.lock.LockTemplate;
import com.baomidou.lock.annotation.Lock4j;
import com.baomidou.lock.executor.RedissonLockExecutor;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.demo.bo.TestDemoAddBo;
import com.ruoyi.demo.bo.TestDemoEditBo;
import com.ruoyi.demo.bo.TestDemoQueryBo;
import com.ruoyi.demo.domain.TestDemo;
import com.ruoyi.demo.domain.bo.TestDemoBo;
import com.ruoyi.demo.domain.vo.TestDemoVo;
import com.ruoyi.demo.mapper.TestDemoMapper;
import com.ruoyi.demo.service.ITestDemoService;
import com.ruoyi.demo.vo.TestDemoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -34,67 +25,40 @@
 * 测试单表Service业务层处理
 *
 * @author Lion Li
 * @date 2021-05-30
 * @date 2021-07-26
 */
@Service
public class TestDemoServiceImpl extends ServicePlusImpl<TestDemoMapper, TestDemo> implements ITestDemoService {
   @Autowired
   private LockTemplate lockTemplate;
   @Override
   public void testLock4jLockTemaplate(String key) {
      final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class);
      if (null == lockInfo) {
         throw new RuntimeException("业务处理中,请稍后再试");
      }
      // 获取锁成功,处理业务
      try {
         try {
            Thread.sleep(8000);
         } catch (InterruptedException e) {
            //
         }
       System.out.println("执行简单方法1 , 当前线程:" + Thread.currentThread().getName());
      } finally {
         //释放锁
         lockTemplate.releaseLock(lockInfo);
      }
      //结束
   }
   @Override
   @Lock4j(executor = RedissonLockExecutor.class,keys = {"#key"})
   public void testLock4j(String key) {
      System.out.println("start:"+key+",time:"+LocalTime.now().toString());
      try {
         Thread.sleep(10000);
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
      System.out.println("end :"+key+",time:"+LocalTime.now().toString());
   }
public class TestDemoServiceImpl extends ServicePlusImpl<TestDemoMapper, TestDemo, TestDemoVo> implements ITestDemoService {
   @Override
   public TestDemoVo queryById(Long id) {
      return getVoById(id, TestDemoVo.class);
      return getVoById(id);
   }
   @DataScope(isUser = true)
   @Override
   public TableDataInfo<TestDemoVo> queryPageList(TestDemoQueryBo bo) {
      PagePlus<TestDemo, TestDemoVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), TestDemoVo.class);
   public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo) {
      PagePlus<TestDemo, TestDemoVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
      return PageUtils.buildDataInfo(result);
   }
   /**
    * 自定义分页查询
    */
   @DataScope(isUser = true)
   @Override
   public TableDataInfo<TestDemoVo> customPageList(TestDemoBo bo) {
      Page<TestDemoVo> result = baseMapper.customPageList(PageUtils.buildPage(), buildQueryWrapper(bo));
      return PageUtils.buildDataInfo(result);
   }
   @DataScope(isUser = true)
   @Override
   public List<TestDemoVo> queryList(TestDemoQueryBo bo) {
      return listVo(buildQueryWrapper(bo), TestDemoVo.class);
   public List<TestDemoVo> queryList(TestDemoBo bo) {
      return listVo(buildQueryWrapper(bo));
   }
   private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoQueryBo bo) {
   private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
      Map<String, Object> params = bo.getParams();
      Object dataScope = params.get("dataScope");
      LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
@@ -108,14 +72,14 @@
   }
   @Override
   public Boolean insertByAddBo(TestDemoAddBo bo) {
   public Boolean insertByBo(TestDemoBo bo) {
      TestDemo add = BeanUtil.toBean(bo, TestDemo.class);
      validEntityBeforeSave(add);
      return save(add);
   }
   @Override
   public Boolean updateByEditBo(TestDemoEditBo bo) {
   public Boolean updateByBo(TestDemoBo bo) {
      TestDemo update = BeanUtil.toBean(bo, TestDemo.class);
      validEntityBeforeSave(update);
      return updateById(update);