PigCloud项目的使用解析五

1.mc-data-move-biz模块分析

package com.hst.mc.data.move.biz.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @author: rentw
 * @date: 2021/11/8
 */
@Mapper
//各属性返回 true 表示不走插件(在配置了插件的情况下,不填则默认表示 false),例如想多租户屏蔽某个特定mapper的方法 则使用如下
@InterceptorIgnore(tenantLine = "true")
public interface CommonMapper {
    //动态切换数据源,使用last数据库
    @DS("#last")
    List<String> getTableList(@Param(value = "tableName") String tableName,
                              String dsName);

    @DS("#last")
    List<String> getColumnList(@Param(value = "tableName") String tableName,
                               String dsName);

    @DS("#last")
    List<Map<String, Object>> getDataList(@Param(value = "tableName") String tableName,
                                          String dsName);

    @DS("#last")
    void deleteTableData(@Param(value = "tableName") String tableName,
                         @Param(value = "field") String field,
                         @Param(value = "fieldData") List<Object> fieldData,
                         String dsName);

    @DS("#last")
    void saveTableDate(@Param(value = "tableName") String tableName,
                       @Param(value = "tableData") List<Object> tableData,
                       String dsName);

}

@DS注解的作用

2.mc-wz-model模块分析

package com.hst.mc.wz.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;


/**
 * @Author: rentw
 * @Date: 2021/8/12
 */
@Data
@TableName("org")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "维者组织表")
public class Org extends Model<Org> {

    private static final long serialVersionUID = 6564479394897534420L;

    @ApiModelProperty(value = "组织ID")
    private String id;

    @ApiModelProperty(value = "组织编码")
    private String code;

    @ApiModelProperty(value = "组织名称")
    private String name;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  //在常量上面格式化时间
    @ApiModelProperty(value = "修改时间")
    @TableField(value = "updatetime__")
    private LocalDateTime updatetime;
}

@JsonFormat注解的使用

3.mc-label-biz模块分析

在这里插入图片描述
使用监听器来实现当发布订阅,监听到了变化后通知其他事件的执行。

package com.hst.mc.label.biz.event.listener;

import com.hst.mc.label.biz.event.LabelDeleteEvent;
import com.hst.mc.label.biz.event.LabelItemDeleteEvent;
import com.hst.mc.label.biz.event.LabelItemUpdateEvent;
import com.hst.mc.label.biz.event.RegisterCaculateEvent;
import com.hst.mc.label.biz.event.source.LabelItemDeleteSource;
import com.hst.mc.label.biz.event.source.LabelItemUpdateSource;
import com.hst.mc.label.biz.event.source.RegisterCaculateSource;
import com.hst.mc.label.biz.service.LabelRegisterService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

/**
 * @auther FredG.
 * @date on 2021/7/8
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class RegisterListener {

    private final LabelRegisterService labelRegisterService;

    @Async
    @Order
    @EventListener(RegisterCaculateEvent.class)
    public void calculate(RegisterCaculateEvent event) {
        RegisterCaculateSource registerCaculateSource = (RegisterCaculateSource) event.getSource();
        labelRegisterService.calculate(registerCaculateSource);
    }


    @Async
    @Order
    @EventListener(LabelDeleteEvent.class)
    public void labelDelete(LabelDeleteEvent event) {
        String labelCode = (String) event.getSource();
        labelRegisterService.labelDelete(labelCode);
    }

    @Async
    @Order
    @EventListener(LabelItemDeleteEvent.class)
    public void labelDelete(LabelItemDeleteEvent event) {
        LabelItemDeleteSource labelItemDeleteSource = (LabelItemDeleteSource) event.getSource();
        labelRegisterService.labelItemDelete(labelItemDeleteSource);
    }

    @Async
    @Order
    @EventListener(LabelItemUpdateEvent.class)
    public void labelDelete(LabelItemUpdateEvent event) {
        LabelItemUpdateSource labelItemUpdateSource = (LabelItemUpdateSource) event.getSource();
        labelRegisterService.labelItemUpdate(labelItemUpdateSource);
    }

}

当启动类启动后,监听器被执行,执行后在controller里面注入监听器,调用它,@EventListener后面指定的事件被加载为原事件,将原事件当参数传递,进行相应的逻辑处理,与@Async配合使用,实现异步执行。

@EnableDynamicDataSource 作用是开启动态数据源

后面继续完善中。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bst@微胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值