干燥机配套车间生产管理系统/云平台服务端
bsw215583320
2024-04-16 c2fccb01b972176dc3da5a497b5e904025e9e98d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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
 */
@Service
public class JeecgDemoServiceImpl extends ServiceImpl<JeecgDemoMapper, JeecgDemo> implements IJeecgDemoService {
    @Autowired
    JeecgDemoMapper jeecgDemoMapper;
    
    /**
     * 事务控制在service层面
     * 加上注解:@Transactional,声明的方法就是一个独立的事务(有异常DB操作全部回滚)
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    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) : "";
    }
 
    @Override
    public List<String> getCreateByList() {
        return jeecgDemoMapper.getCreateByList();
    }
 
}