| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | package org.jeecg.modules.demo.test.service.impl;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.apache.shiro.SecurityUtils;import org.jeecg.common.constant.CacheConstant;import org.jeecg.common.system.query.QueryGenerator;import org.jeecg.common.system.vo.LoginUser;import org.jeecg.modules.demo.test.entity.JeecgDemo;import org.jeecg.modules.demo.test.mapper.JeecgDemoMapper;import org.jeecg.modules.demo.test.service.IJeecgDemoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.annotation.Cacheable;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * @Description: jeecg 测试demo * @Author: jeecg-boot * @Date:  2018-12-29 * @Version: V1.0 */@Servicepublic class JeecgDemoServiceImpl extends ServiceImpl<JeecgDemoMapper, JeecgDemo> implements IJeecgDemoService {	@Autowired	JeecgDemoMapper jeecgDemoMapper;		/**	 * 事务控制在service层面	 * 加上注解:@Transactional,声明的方法就是一个独立的事务(有异常DB操作全部回滚)	 */	@Override	@Transactional	public void testTran() {		JeecgDemo pp = new JeecgDemo();		pp.setAge(1111);		pp.setName("测试事务  小白兔 1");		jeecgDemoMapper.insert(pp);				JeecgDemo pp2 = new JeecgDemo();		pp2.setAge(2222);		pp2.setName("测试事务  小白兔 2");		jeecgDemoMapper.insert(pp2);				Integer.parseInt("hello");//自定义异常				JeecgDemo pp3 = new JeecgDemo();		pp3.setAge(3333);		pp3.setName("测试事务  小白兔 3");		jeecgDemoMapper.insert(pp3);		return ;	}	/**	 * 缓存注解测试: redis	 */	@Override	@Cacheable(cacheNames = CacheConstant.TEST_DEMO_CACHE, key = "#id")	public JeecgDemo getByIdCacheable(String id) {		JeecgDemo t = jeecgDemoMapper.selectById(id);		System.err.println("---未读缓存,读取数据库---");		System.err.println(t);		return t;	}	@Override	public IPage<JeecgDemo> queryListWithPermission(int pageSize,int pageNo) {		Page<JeecgDemo> page = new Page<>(pageNo, pageSize);		//编程方式,获取当前请求的数据权限规则SQL片段		String sql = QueryGenerator.installAuthJdbc(JeecgDemo.class);		return this.baseMapper.queryListWithPermission(page, sql);	}	@Override	public String getExportFields() {		LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();		//权限配置列导出示例		//1.配置前缀与菜单中配置的列前缀一致		List<String> noAuthList = new ArrayList<>();		List<String> exportFieldsList = new ArrayList<>();		String permsPrefix = "testdemo:";		//查询配置菜单有效字段		List<String> allAuth = this.jeecgDemoMapper.queryAllAuth(permsPrefix);		//查询已授权字段		List<String> userAuth = this.jeecgDemoMapper.queryUserAuth(sysUser.getId(),permsPrefix);		//列出未授权字段		for(String perms : allAuth){			if(!userAuth.contains(perms)){				noAuthList.add(perms.substring(permsPrefix.length()));			}		}		//实体类中字段与未授权字段比较,列出需导出字段		Field[] fileds = JeecgDemo.class.getDeclaredFields();		List<Field> list = new ArrayList(Arrays.asList(fileds));		for(Field field : list){			if(!noAuthList.contains(field.getName())){				exportFieldsList.add(field.getName());			}		}		return exportFieldsList != null && exportFieldsList.size()>0 ? String.join(",", exportFieldsList) : "";	}}
 |