李林
2023-12-28 f3637227614f3f7efa372d827f4dafb7cc8a85bf
第二阶段
已修改26个文件
已删除1个文件
已添加8个文件
538 ■■■■■ 文件已修改
data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/dto/ProductCountDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/dto/RegistrantCountDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/mapper/DataReportingMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/service/DataReportingService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/service/impl/DataReportingServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/service/impl/FansSubmitServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/resources/mapper/DataReportingMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/annotation/ValueAuth.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/annotation/ValueTableShow.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/common/AllController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/common/GetLook.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/config/FiferConfig.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/config/PowerConfig.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/exception/ErrorException.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/handler/GlobalExceptionHandler.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/mapper/AuthMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/QueryWrappers.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/AuthMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shengyun_2023_12_23_2300.sql 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/controller/EnumController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/controller/RoleController.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/controller/UserController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/dto/RolePowerDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/mapper/RoleMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/service/RoleService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/service/imp/CustomEnumServiceImp.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/service/imp/ProductEnumServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/service/imp/RoleServiceImp.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/service/imp/UserServiceImp.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/RoleMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/UserMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java
@@ -1,27 +1,24 @@
package com.yuanchu.mom.controller;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.DataReportingPageDto;
import com.yuanchu.mom.dto.ProductCountDto;
import com.yuanchu.mom.dto.RegistrantCountDto;
import com.yuanchu.mom.pojo.DataReporting;
import com.yuanchu.mom.pojo.FansSubmit;
import com.yuanchu.mom.pojo.FinanceSubmit;
import com.yuanchu.mom.service.DataReportingService;
import com.yuanchu.mom.service.FansSubmitService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.service.FinanceSubmitService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Map;
@RequestMapping("/dataReporting")
@@ -34,12 +31,14 @@
    private FansSubmitService fansSubmitService;
    private FinanceSubmitService financeSubmitService;
    @ApiOperation(value = "获取数据上报列表")
    @PostMapping("/selectDataReportingList")
    public Result selectDataReportingList(@RequestBody Map<String, Object> data) {
        Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
        DataReportingPageDto dataReportingPageDto = JSON.parseObject(JSON.toJSONString(data.get("entity")), DataReportingPageDto.class);
        return Result.success(dataReportingService.selectUserList(page, dataReportingPageDto));
        return Result.success(dataReportingService.selectDataReportingList(page, dataReportingPageDto));
    }
    @ApiOperation(value = "修改数据上报")
@@ -90,4 +89,37 @@
        return Result.success(fansSubmitService.addFansSubmit(fansSubmit));
    }
    @ApiOperation(value = "获取财务上报列表")
    @PostMapping("/selectFinanceSubmitList")
    public Result selectFinanceSubmitList(@RequestBody Map<String, Object> data) {
        Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
        FinanceSubmit financeSubmit = JSON.parseObject(JSON.toJSONString(data.get("entity")), FinanceSubmit.class);
        return Result.success(financeSubmitService.selectFinanceSubmitList(page, financeSubmit));
    }
    @ApiOperation(value = "删除财务上报列表")
    @PostMapping("/delFinanceSubmit")
    public Result delFinanceSubmit(Integer id){
        return Result.success(financeSubmitService.delFinanceSubmit(id));
    }
    @ApiOperation(value = "修改财务上报信息")
    @PostMapping("/updateFinanceSubmit")
    public Result<?> updateFinanceSubmit(@RequestBody FinanceSubmit financeSubmit) {
        return Result.success(financeSubmitService.updateFinanceSubmit(financeSubmit));
    }
    @ApiOperation(value = "添加财务上报信息")
    @PostMapping("/addFinanceSubmit")
    public Result<?> addFinanceSubmit(@RequestBody FinanceSubmit financeSubmit) {
        return Result.success(financeSubmitService.addFinanceSubmit(financeSubmit));
    }
    @ApiOperation(value = "获取首页数据")
    @GetMapping("/getDataList")
    @ValueAuth
    public Result<?> getDataList() {
        return Result.success(dataReportingService.getDataList());
    }
}
data-server/src/main/java/com/yuanchu/mom/dto/ProductCountDto.java
@@ -41,4 +41,7 @@
    @ApiModelProperty("客户成本")
    private BigDecimal customerCosts;
    @ApiModelProperty("创建用户")
    private Integer createUser;
}
data-server/src/main/java/com/yuanchu/mom/dto/RegistrantCountDto.java
@@ -146,4 +146,7 @@
    @ValueTableShow(1)
    private LocalDateTime updateTime;
    @ApiModelProperty("创建用户")
    private Integer createUser;
}
data-server/src/main/java/com/yuanchu/mom/mapper/DataReportingMapper.java
@@ -8,6 +8,10 @@
import com.yuanchu.mom.pojo.DataReporting;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€data_reporting(数据上报)】的数据库操作Mapper
@@ -22,6 +26,16 @@
    IPage<RegistrantCountDto> selectRegistrantCountDtoPageList(IPage<RegistrantCountDto> page, QueryWrapper<RegistrantCountDto> ew);
    Map<String, BigDecimal> getDataFor1();
    List<Map<String, String>> getDataFor2();
    List<Map<String, String>> getDataFor3();
    List<Map<String, String>> getDataFor4();
    List<Map<String, String>> getDataFor5();
}
data-server/src/main/java/com/yuanchu/mom/service/DataReportingService.java
@@ -16,7 +16,7 @@
*/
public interface DataReportingService extends IService<DataReporting> {
    Map<String, Object> selectUserList(IPage<DataReportingPageDto> page, DataReportingPageDto dataReportingPageDto);
    Map<String, Object> selectDataReportingList(IPage<DataReportingPageDto> page, DataReportingPageDto dataReportingPageDto);
    int updateDataReporting(DataReporting dataReporting);
@@ -24,4 +24,6 @@
    Map<String, Object> selectRegistrantCountDtoPageList(IPage<RegistrantCountDto> page, RegistrantCountDto registrantCountDto);
    Map<String, Object> getDataList();
}
data-server/src/main/java/com/yuanchu/mom/service/impl/DataReportingServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.DataReportingPageDto;
import com.yuanchu.mom.dto.ProductCountDto;
@@ -30,9 +31,13 @@
    private DataReportingMapper dataReportingMapper;
    private GetLook getLook;
    @Override
    public Map<String, Object> selectUserList(IPage<DataReportingPageDto> page, DataReportingPageDto dataReportingPageDto) {
    public Map<String, Object> selectDataReportingList(IPage<DataReportingPageDto> page, DataReportingPageDto dataReportingPageDto) {
        Map<String, Object> map = new HashMap<>();
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) dataReportingPageDto.setCreateUser(map1.get("userId"));
        map.put("head", PrintChina.printChina(DataReportingPageDto.class));
        map.put("body", dataReportingMapper.selectDataReportingDtoPageList(page, QueryWrappers.queryWrappers(dataReportingPageDto)));
        return map;
@@ -56,6 +61,8 @@
    public Map<String, Object> selectProductCountDtoPageList(IPage<ProductCountDto> page, ProductCountDto productCountDto) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ProductCountDto.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) productCountDto.setCreateUser(map1.get("userId"));
        map.put("body", dataReportingMapper.selectProductCountDtoPageList(page, QueryWrappers.queryWrappers(productCountDto)));
        return map;
    }
@@ -64,9 +71,22 @@
    public Map<String, Object> selectRegistrantCountDtoPageList(IPage<RegistrantCountDto> page, RegistrantCountDto registrantCountDto) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(RegistrantCountDto.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) registrantCountDto.setCreateUser(map1.get("userId"));
        map.put("body", dataReportingMapper.selectRegistrantCountDtoPageList(page, QueryWrappers.queryWrappers(registrantCountDto)));
        return map;
    }
    @Override
    public Map<String, Object> getDataList() {
        Map<String, Object> map = new HashMap<>();
        map.put("data1", dataReportingMapper.getDataFor1());
        map.put("data2", dataReportingMapper.getDataFor2());
        map.put("data3", dataReportingMapper.getDataFor3());
        map.put("data4", dataReportingMapper.getDataFor4());
        map.put("data5", dataReportingMapper.getDataFor5());
        return map;
    }
}
data-server/src/main/java/com/yuanchu/mom/service/impl/FansSubmitServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.DataReportingPageDto;
import com.yuanchu.mom.pojo.FansSubmit;
@@ -26,10 +27,14 @@
    private FansSubmitMapper fansSubmitMapper;
    private GetLook getLook;
    @Override
    public Map<String, Object> selectFansSubmitList(IPage<FansSubmit> page, FansSubmit fansSubmit) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(FansSubmit.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) fansSubmit.setCreateUser(map1.get("userId"));
        map.put("body", fansSubmitMapper.selectFansSubmitPageList(page, QueryWrappers.queryWrappers(fansSubmit)));
        return map;
    }
data-server/src/main/resources/mapper/DataReportingMapper.xml
@@ -43,7 +43,7 @@
    </select>
    <select id="selectProductCountDtoPageList" resultType="com.yuanchu.mom.dto.ProductCountDto">
        select * from (
        select update_time, create_time, product, sum(consumption) consumption, sum(fans_add) fans_add, sum(customer_costs) customer_costs
        select update_time, create_time, product, sum(consumption) consumption, sum(fans_add) fans_add, sum(customer_costs) customer_costs, create_user
        from data_reporting
        group by product
        ) a
@@ -53,7 +53,7 @@
    </select>
    <select id="selectRegistrantCountDtoPageList" resultType="com.yuanchu.mom.dto.RegistrantCountDto">
        select * from (
        select id, department, registrant, product, name, sum(`show`) `show`, sum(click) click, sum(account_consumption)account_consumption, sum(rebate_consumption) rebate_consumption,(sum(rebate_consumption)+sum(remark)) rebate_consumption2, sum(discounted_consumption) discounted_consumption, sum(fans_add) fans_add, sum(actual_cost) actual_cost, sum(customer_costs) customer_costs, sum(profit) profit, sum(agent_rebate) agent_rebate, sum(customer_rebate) customer_rebate, sum(remark) remark, create_time, update_time
        select id, department, registrant, product, name, sum(`show`) `show`, sum(click) click, sum(account_consumption)account_consumption, sum(rebate_consumption) rebate_consumption,(sum(rebate_consumption)+sum(remark)) rebate_consumption2, sum(discounted_consumption) discounted_consumption, sum(fans_add) fans_add, sum(actual_cost) actual_cost, sum(customer_costs) customer_costs, sum(profit) profit, sum(agent_rebate) agent_rebate, sum(customer_rebate) customer_rebate, sum(remark) remark, create_time, update_time, create_user
        from data_reporting
        group by registrant
        ) a
@@ -61,4 +61,35 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getDataFor1" resultType="java.util.Map">
        select COALESCE(sum(account_consumption), 0) data1, COALESCE(sum(consumption), 0) data2, COALESCE(sum(customer_costs),0) data3, COALESCE(sum(actual_cost), 0) data4
        from data_reporting
        where date(create_time) like CURDATE()
    </select>
    <select id="getDataFor2" resultType="java.util.Map">
        SELECT sum(account_consumption) account_consumptions, DATE_FORMAT(create_time, '%m-%d') `date`, DATE_FORMAT(create_time, '%y-%m-%d') time
        FROM data_reporting
        group by DATE_FORMAT(create_time, '%y-%m-%d')
        having DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt; time
        and time &lt;= CURDATE()
    </select>
    <select id="getDataFor3" resultType="java.util.Map">
        SELECT sum(consumption) consumption, DATE_FORMAT(create_time, '%m-%d') `date`, DATE_FORMAT(create_time, '%y-%m-%d') time
        FROM data_reporting
        group by DATE_FORMAT(create_time, '%y-%m-%d')
        having DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt; time
        and time &lt;= CURDATE()
    </select>
    <select id="getDataFor4" resultType="java.util.Map">
        select product, sum(customer_costs) customerCosts
        from data_reporting
        group by product
        order by customerCosts desc limit 7
    </select>
    <select id="getDataFor5" resultType="java.util.Map">
        select product, sum(actual_cost) actualCost
        from data_reporting
        group by product
        order by actualCost desc limit 7
    </select>
</mapper>
framework/src/main/java/com/yuanchu/mom/annotation/ValueAuth.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.yuanchu.mom.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface ValueAuth {
}
framework/src/main/java/com/yuanchu/mom/annotation/ValueTableShow.java
@@ -6,6 +6,6 @@
@Retention(RetentionPolicy.RUNTIME)
public @interface ValueTableShow {
    int value() default 0;
    int value() default 1;
}
framework/src/main/java/com/yuanchu/mom/common/AllController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.yuanchu.mom.common;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.mapper.AuthMapper;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Map;
@Component
public class AllController {
    @Resource
    WebApplicationContext applicationContext;
    @Resource
    private AuthMapper authMapper;
    public void addAllController() {
        RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
        Map<RequestMappingInfo, HandlerMethod> methodMap = mapping.getHandlerMethods();
        authMapper.deletePower();
        for (HandlerMethod value : methodMap.values()) {
            ApiOperation annotation = value.getMethodAnnotation(ApiOperation.class);
            ValueAuth valueAuth = value.getMethodAnnotation(ValueAuth.class);
            if (valueAuth==null){
                if (annotation != null) {
                    String remark = annotation.value();
                    String type = "修改";
                    if (remark.contains("获取")||remark.contains("查询")){
                        type = "查询";
                    } else if(remark.contains("删除")){
                        type = "删除";
                    } else if(remark.contains("添加")||remark.contains("新增")){
                        type = "添加";
                    }
                    try {
                        authMapper.insertPower(value.getMethod().getName(), remark, type);
                    }catch (Exception e){
                        System.err.println(value.getMethod());
                    }
                }
            }
        }
    }
    @PostConstruct
    public void pingStart() {
        addAllController();
    }
}
framework/src/main/java/com/yuanchu/mom/common/GetLook.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.yuanchu.mom.common;
import cn.hutool.json.JSONUtil;
import com.yuanchu.mom.mapper.AuthMapper;
import com.yuanchu.mom.utils.Jwt;
import com.yuanchu.mom.utils.ServletUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@Component
public class GetLook {
    @Resource
    private AuthMapper authMapper;
    public Map<String, Integer> selectPowerByMethodAndUserId(String method){
        Integer id = Integer.parseInt(JSONUtil.parseObj(new Jwt().readJWT(ServletUtils.getRequest().getHeader("token")).get("data")).get("id")+"");
        Map<String, Integer> map = new HashMap<>();
        map.put("userId", id);
        map.put("look", authMapper.countPower(id, method));
        return map;
    }
}
framework/src/main/java/com/yuanchu/mom/config/FiferConfig.java
@@ -25,8 +25,6 @@
    @Value("${server.port}")
    private String serverPort;
    private static ThreadLocal<String> threadLocal = new ThreadLocal<>();
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
@@ -35,17 +33,17 @@
        }
        String[] strs = request.getRequestURL().toString().split(serverPort);
        AtomicBoolean judge = new AtomicBoolean(false);
        list.forEach(a -> {
            if (strs[1].equals(a)) {
        for (String s : list) {
            if (strs[1].equals(s)) {
                judge.set(true);
                return;
            } else if (a.indexOf("/**") > -1) {
                if (strs[1].indexOf(a.replace("/**", "")) == 0) {
                break;
            } else if (s.indexOf("/**") > -1) {
                if (strs[1].indexOf(s.replace("/**", "")) == 0) {
                    judge.set(true);
                    return;
                    break;
                }
            }
        });
        }
        if (judge.get()) return true;
        response.setContentType(MediaType.APPLICATION_JSON_VALUE);
        response.setCharacterEncoding("UTF-8");
framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
@@ -5,15 +5,21 @@
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import javax.annotation.Resource;
@Configuration
public class OpenFifer extends WebMvcConfigurationSupport {
    @Autowired
    @Resource
    private FiferConfig fiferConfig;
    @Resource
    private PowerConfig powerConfig;
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(fiferConfig).addPathPatterns("/**");
        registry.addInterceptor(powerConfig).addPathPatterns("/**");
        super.addInterceptors(registry);
    }
}
framework/src/main/java/com/yuanchu/mom/config/PowerConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.yuanchu.mom.config;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.exception.MyFileException;
import com.yuanchu.mom.mapper.AuthMapper;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.utils.Jwt;
import com.yuanchu.mom.utils.ServletUtils;
import org.apache.catalina.User;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
@Component
public class PowerConfig implements HandlerInterceptor {
    @Resource
    private AuthMapper authMapper;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(handler instanceof HandlerMethod) {
            HandlerMethod h = (HandlerMethod)handler;
            ValueAuth annotation = h.getMethodAnnotation(ValueAuth.class);
            if(annotation!=null){
                return HandlerInterceptor.super.preHandle(request, response, handler);
            }
            JSONObject obj = JSONUtil.parseObj(new Jwt().readJWT(request.getHeader("token")).get("data"));
            Integer userId = Integer.parseInt(obj.get("id") + "");
            int i = authMapper.isPower(userId, h.getMethod().getName());
            if (i == 0){
                throw new ErrorException(obj.get("name") + " æ— æƒé™è®¿é—® " + h.getMethod().getName() + " æŽ¥å£");
            }
        }
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
framework/src/main/java/com/yuanchu/mom/exception/ErrorException.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.yuanchu.mom.exception;
public class ErrorException extends RuntimeException{
    public ErrorException(String msg){
        super(msg);
    }
}
framework/src/main/java/com/yuanchu/mom/handler/GlobalExceptionHandler.java
@@ -1,5 +1,6 @@
package com.yuanchu.mom.handler;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.exception.MyFileException;
import com.yuanchu.mom.vo.Result;
import lombok.extern.slf4j.Slf4j;
@@ -264,6 +265,12 @@
        return Result.fail("抱歉不支持【" + e.getMessage() +"】后缀的文件!");
    }
    @ExceptionHandler({ErrorException.class})
    public Result<?> errorException(Exception e) {
        log.error(e.getMessage());
        return Result.fail(e.getMessage());
    }
    /** å…¶ä»–错误 */
    /**
     * å…¶ä»–错误
framework/src/main/java/com/yuanchu/mom/mapper/AuthMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.mapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.Map;
@Mapper
@Repository
public interface AuthMapper {
    @Insert("insert menu value (#{method}, #{remark}, #{type}, now())")
    int insertPower(String method, String remark, String type);
    @Delete("delete from menu")
    int deletePower();
    @Select("select COALESCE(count(*), 0) from power p left join user u on u.role_id = p.role_id where u.id = #{userId} and p.menu_method = #{method}")
    int isPower(Integer userId, String method);
    @Select("select look from power p left join user u on u.role_id = p.role_id where u.id = #{userId} and p.menu_method = #{method}")
    int countPower(Integer userId, String method);
}
framework/src/main/java/com/yuanchu/mom/utils/QueryWrappers.java
@@ -61,7 +61,7 @@
                }
            }
        }
        System.out.println(wrapper.getExpression().getSqlSegment());
//        System.out.println(wrapper.getExpression().getSqlSegment());
        return wrapper;
    }
framework/src/main/resources/AuthMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.AuthMapper">
</mapper>
shengyun_2023_12_23_2300.sql
system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java
@@ -1,10 +1,13 @@
package com.yuanchu.mom;
import com.yuanchu.mom.common.AllController;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.Resource;
@SpringBootApplication
@MapperScan("com.yuanchu.mom.mapper")// æ‰«æMybatis中的mapper包
public class SystemRunApplication {
system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java
@@ -149,7 +149,7 @@
     * æ¯å¤©æ™šä¸Š23点0分10秒执行 ã€  0 0 4 1/1 * ? ã€‘
     * æµ‹è¯• 20 ç§’一次【  0/20 * * * * ? ã€‘
     */
    @Scheduled(cron = "6 0 23 * * ?")
//    @Scheduled(cron = "6 0 23 * * ?")
    private void TimerDeleteFile(){
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("d");
user-server/src/main/java/com/yuanchu/mom/controller/EnumController.java
@@ -44,13 +44,13 @@
    @ApiOperation(value = "删除客户列表")
    @PostMapping("/delCustomEnum")
    public Result delRole(Integer id){
    public Result delCustomEnum(Integer id){
        return Result.success(customEnumService.delCustomEnum(id));
    }
    @ApiOperation(value = "修改客户信息")
    @PostMapping("/updateCustomEnum")
    public Result<?> updateUser(@RequestBody CustomEnum customEnum) {
    public Result<?> updateCustomEnum(@RequestBody CustomEnum customEnum) {
        return Result.success(customEnumService.updateCustomEnum(customEnum));
    }
user-server/src/main/java/com/yuanchu/mom/controller/RoleController.java
@@ -1,10 +1,18 @@
package com.yuanchu.mom.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.RolePowerDto;
import com.yuanchu.mom.dto.UserPageDto;
import com.yuanchu.mom.mapper.AuthMapper;
import com.yuanchu.mom.mapper.PowerMapper;
import com.yuanchu.mom.pojo.CustomEnum;
import com.yuanchu.mom.pojo.Power;
import com.yuanchu.mom.pojo.Role;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.PowerService;
import com.yuanchu.mom.service.RoleService;
import com.yuanchu.mom.service.UserService;
import com.yuanchu.mom.utils.JackSonUtil;
@@ -14,10 +22,12 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.apache.ibatis.annotations.ResultType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RequestMapping("/role")
@@ -28,16 +38,18 @@
    private RoleService roleService;
    private PowerService powerService;
    @ApiOperation(value = "获取角色列表枚举")
    @GetMapping("/selectRoleList")
    public Result selectUserList(){
    public Result selectRoleList(){
        return Result.success(roleService.selectList());
    }
    @ApiOperation(value = "获取角色列表")
    @PostMapping("/selectRoleLists")
    public Result selectRoleList(@RequestBody Map<String, Object> data) throws Exception {
    public Result selectRoleLists(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        Role role = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), Role.class);
        return Result.success(roleService.selectUserList(page, role));
@@ -49,9 +61,30 @@
        return Result.success(roleService.delRole(id));
    }
    @ApiOperation(value = "添加角色信息")
    @ApiOperation(value = "通过角色id查询权限列表")
    @PostMapping("/selectPowerByRoleId")
    public Result<?> selectPowerByRoleId(Integer id) {
        return Result.success(powerService.selectPowerByRoleId(id));
    }
    @ApiOperation(value = "获取菜单")
    @GetMapping("/selectMenuList")
    @ValueAuth
    public Result<?> selectMenuList() {
        return Result.success(roleService.selectMenuList());
    }
    @ApiOperation(value = "添加角色")
    @PostMapping("/addRole")
    public Result<?> addRole(@RequestBody Role role) {
        return Result.success(roleService.addRole(role));
    public Result<?> addRole(String str) {
        RolePowerDto powers = JSON.parseObject(str, RolePowerDto.class);
        return Result.success(roleService.addRole(powers));
    }
    @ApiOperation(value = "修改角色信息")
    @PostMapping("/upRole")
    public Result<?> upRole(String str) {
        RolePowerDto powers = JSON.parseObject(str, RolePowerDto.class);
        return Result.success(roleService.upRole(powers));
    }
}
user-server/src/main/java/com/yuanchu/mom/controller/UserController.java
@@ -4,9 +4,11 @@
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.UserPageDto;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.PowerService;
import com.yuanchu.mom.service.UserService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.utils.Jwt;
@@ -15,6 +17,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.validation.annotation.Validated;
@@ -26,16 +29,18 @@
@RequestMapping("/user")
@RestController
@Api(tags = "用户模块")
@AllArgsConstructor
public class UserController {
    @Autowired
    UserService userService;
    private UserService userService;
    @Autowired
    private PowerService powerService;
    private Jwt jwt;
    @ApiOperation(value = "登录")
    @PostMapping("/enter")
    @ValueAuth
    public Result login(String account, String password) {
        User user = userService.selectUserByPwd(account, password);
        if (user == null) return Result.fail("登录失败");
@@ -43,15 +48,17 @@
        String jwtReToken = jwt.createJwt(user.getName(), user.getId(), 24 * 60);
        RedisUtil.set("" + user.getId(), jwtToken, 60);
        RedisUtil.set(user.getId() + "Re", jwtReToken, 24 * 60);
        Map<String, String> map = new HashMap<>();
        Map<String, Object> map = new HashMap<>();
        map.put("token", jwtToken);
        map.put("reToken", jwtReToken);
        map.put("name", user.getName());
        map.put("power", powerService.selectPowerByRoleId(user.getRoleId()));
        return Result.success("登录成功", map);
    }
    @ApiOperation(value = "token刷新")
    @PostMapping("/refresh")
    @ValueAuth
    public Result refresh(String reToken) throws Exception {
        Map<String, String> map = new Jwt().readJWT(reToken);
        Map<String, String> maps = JackSonUtil.unmarshal(map.get("data"), Map.class);
user-server/src/main/java/com/yuanchu/mom/dto/RolePowerDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.Power;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RolePowerDto implements Serializable {
    private Integer roleId2;
    private String roleName;
    private List<Power> powers;
}
user-server/src/main/java/com/yuanchu/mom/mapper/RoleMapper.java
@@ -1,12 +1,20 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.Menu;
import com.yuanchu.mom.pojo.Power;
import com.yuanchu.mom.pojo.Role;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface RoleMapper extends BaseMapper<Role> {
    List<Menu> selectMenuList();
    int addPower(Power power);
}
user-server/src/main/java/com/yuanchu/mom/service/RoleService.java
@@ -1,7 +1,9 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yuanchu.mom.dto.RolePowerDto;
import com.yuanchu.mom.dto.UserPageDto;
import com.yuanchu.mom.pojo.Menu;
import com.yuanchu.mom.pojo.Role;
import com.yuanchu.mom.pojo.User;
@@ -16,6 +18,10 @@
    int delRole(Integer id);
    int addRole(Role role);
    int addRole(RolePowerDto rolePowerDto);
    List<Menu> selectMenuList();
    int upRole(RolePowerDto rolePowerDto);
}
user-server/src/main/java/com/yuanchu/mom/service/imp/CustomEnumServiceImp.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom.service.imp;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.mapper.CustomEnumMapper;
import com.yuanchu.mom.pojo.CustomEnum;
@@ -20,10 +21,14 @@
    private CustomEnumMapper customEnumMapper;
    private GetLook getLook;
    @Override
    public Map<String, Object> selectCustomEnumList(IPage<CustomEnum> page, CustomEnum customEnum) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(CustomEnum.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) customEnum.setCreateUser(map1.get("userId"));
        map.put("body", customEnumMapper.selectPage(page, QueryWrappers.queryWrappers(customEnum)));
        return map;
    }
user-server/src/main/java/com/yuanchu/mom/service/imp/ProductEnumServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.mapper.ProductEnumMapper;
import com.yuanchu.mom.pojo.ProductEnum;
@@ -28,10 +29,14 @@
    private ProductEnumMapper productEnumMapper;
    private GetLook getLook;
    @Override
    public Map<String, Object> selectProductEnumList(IPage<ProductEnum> page, ProductEnum productEnum) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ProductEnum.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) productEnum.setCreateUser(map1.get("userId"));
        map.put("body", productEnumMapper.selectPage(page, QueryWrappers.queryWrappers(productEnum)));
        return map;
    }
user-server/src/main/java/com/yuanchu/mom/service/imp/RoleServiceImp.java
@@ -2,10 +2,16 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.RolePowerDto;
import com.yuanchu.mom.dto.UserPageDto;
import com.yuanchu.mom.mapper.PowerMapper;
import com.yuanchu.mom.mapper.RoleMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.Menu;
import com.yuanchu.mom.pojo.Power;
import com.yuanchu.mom.pojo.Role;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.RoleService;
@@ -14,6 +20,7 @@
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import java.util.HashMap;
@@ -26,6 +33,10 @@
    private RoleMapper roleMapper;
    private PowerMapper powerMapper;
    private GetLook getLook;
    @Override
    public List<Role> selectList() {
        return roleMapper.selectList(null);
@@ -35,6 +46,8 @@
    public Map<String, Object> selectUserList(IPage<Role> page, Role role) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(Role.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) role.setCreateUser(map1.get("userId"));
        map.put("body", roleMapper.selectPage(page, QueryWrappers.queryWrappers(role)));
        return map;
    }
@@ -45,7 +58,39 @@
    }
    @Override
    public int addRole(Role role) {
        return roleMapper.insert(role);
    @Transactional(rollbackFor = Exception.class)
    public int addRole(RolePowerDto rolePowerDto) {
        Role role = new Role();
        role.setName(rolePowerDto.getRoleName());
        int insert = roleMapper.insert(role);
        if (insert == 1){
            rolePowerDto.getPowers().forEach(a->{
                a.setRoleId(role.getId());
                powerMapper.insert(a);
            });
        }
        return 1;
    }
    @Override
    public List<Menu> selectMenuList() {
        return roleMapper.selectMenuList();
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int upRole(RolePowerDto rolePowerDto) {
        Role role = new Role();
        role.setName(rolePowerDto.getRoleName());
        role.setId(rolePowerDto.getRoleId2());
        int up = roleMapper.updateById(role);
        if (up == 1){
            powerMapper.delete(Wrappers.<Power>lambdaUpdate().eq(Power::getRoleId, role.getId()));
            rolePowerDto.getPowers().forEach(a->{
                a.setRoleId(role.getId());
                powerMapper.insert(a);
            });
        }
        return 1;
    }
}
user-server/src/main/java/com/yuanchu/mom/service/imp/UserServiceImp.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.UserPageDto;
import com.yuanchu.mom.mapper.UserMapper;
@@ -33,6 +34,8 @@
    Jwt jwt;
    private GetLook getLook;
    @Override
    public User selectUserByPwd(String account, String password) {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
@@ -52,6 +55,8 @@
    public Map<String, Object> selectUserList(IPage<UserPageDto> page, UserPageDto user) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(UserPageDto.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDataReportingList");
        if(map1.get("look")==1) user.setCreateUser(map1.get("userId"));
        map.put("body", userMapper.selectUserDtoPageList(page, QueryWrappers.queryWrappers(user)));
        return map;
    }
user-server/src/main/resources/mapper/RoleMapper.xml
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.RoleMapper">
    <insert id="addPower">
    </insert>
    <select id="selectMenuList" resultType="com.yuanchu.mom.pojo.Menu">
        select method,remark,type from menu
    </select>
</mapper>
user-server/src/main/resources/mapper/UserMapper.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.UserMapper">
    <select id="selectUserDtoPageList" resultType="com.yuanchu.mom.dto.UserPageDto">
        select * from (
            select u1.id, u1.account, u1.name, u1.state, u1.create_time, u1.update_time, u1.create_user, u1.update_user, u1.age, u1.email, u1.phone, u1.department, u1.company, u1.role_id, u2.name create_user_name, u3.name update_user_name, r.name role_name